การอ่านข้อมูลของฟลอปปี้จากดิสก์ ZX Spectrum Swift
ย้อนกลับไปในวันที่เรามี swiftdisk หกคำที่เรานำหน้าเกมใน speccy ของเราทำให้เราสามารถใช้ฟล็อปปี้ดิสก์ 3.5 นิ้วได้ ดู:
- https://www.worthpoint.com/worthopedia/swift-disc-interface-zx-spectrum-540379389
- http://www.crashonline.org.uk/44/swiftdisk.htm
- https://spectrumcomputing.co.uk/index.php?cat=96&id=1000412
- https://hardware.speccy.org/hardware/Swift_Disc-Sixword-i.html
ฉันเห็นข้อมูลจำเพาะฮาร์ดแวร์แบบเต็มและแม้แต่ rom ก็มีให้ทางออนไลน์ที่ลิงค์ hardware.speccy.org ด้านบนซึ่งน่าทึ่งมาก
ใครมีความคิดว่ารูปแบบดิสก์ที่ใช้ (เป็นภาพรวมของหน่วยความจำทั้งหมด) และวิธีการที่ฟลอปปี้เก่าของเราอาจถูกแปลงเป็นดิจิทัลสำหรับโลกย้อนยุคสมัยใหม่ เป็นไปได้ว่าเราสามารถแปลงเป็นรูปแบบ FDI ได้หรือไม่?
แรงจูงใจ:
มันจะเป็นชนิดของดีที่จะลองและอัปโหลดเกมของเราไม่เคยปล่อย Galactic ตระเวนเหมือนที่เราทำกับStarBlade ขอโทษที่ทำให้คลื่นศัตรูชั่วร้ายเกินไปที่นั่น! อาจทำได้ด้วยการทดสอบการเล่นมากกว่านี้ แต่เราทั้งคู่ยังอยู่ในโรงเรียน
สิ่งนี้ทำงานเป็นสี 'เต็ม' โดยใช้รูปแบบการสลับหน้าจออย่างรวดเร็วพี่ชายของฉันคิดขึ้นซึ่งกล่าวถึงในที่นี้ด้วยความผิด
คำตอบ
ฉันไม่พบข้อมูลทางเทคนิคหรือโปรแกรมจำลองที่มีอยู่ แต่จากลิงก์ของคุณฉันพบภาพความละเอียดสูงของบอร์ดอินเทอร์เฟซนี้
จากที่นั่นฉันสังเกตเห็นสิ่งต่อไปนี้:
- ดิสก์คอนโทรลเลอร์คือ WD1770 ซึ่งเป็นตัวใหญ่ทางด้านซ้าย
- ชิปขนาดใหญ่สองตัวทางด้านขวาทั้งสองด้านใต้ขั้วต่อ edge คือ RAM 8kb และ EPROM และ
- อย่างอื่นที่มองเห็นได้คือลอจิก 74-series
เป็นการเดิมพันที่ปลอดภัยตามสถาปัตยกรรมของสเปกตรัมที่ปุ่มขัดจังหวะสลับใน ROM ออนบอร์ดและทริกเกอร์ NMI
ภาพ ROM ที่เชื่อมโยงมีขนาด 32kb และ 16kb แต่ก่อนหน้านี้ดูเหมือนว่าจะเป็นข้อมูล 16kb ที่คัดลอกมาสองครั้งคุณยังสามารถบอกได้ว่า EPROM คือ 16kb ซึ่งในกรณีนี้อาจมีการคาดเดาบางอย่างในการหาเวลาและตำแหน่งที่ RAM 8kb ปรากฏขึ้น .
ฉันพบการกล่าวถึงเก่า ๆ ใน comp.sys.sinclair ว่าการจำลอง Microdrive ที่เพิ่มเข้ามาในเวอร์ชันที่ใหม่กว่านั้นเป็นฮาร์ดแวร์บางส่วน แต่ดูเหมือนว่าจะมาพร้อมกับการแก้ไขบอร์ด ดังนั้นผู้เขียนโปรแกรมจำลองอาจเริ่มต้นด้วย EPROM รุ่นเก่าด้วยความหวังว่าฮาร์ดแวร์เสริมยังไม่ปรากฏ
มิฉะนั้นข่าวดีก็คือตัวควบคุมดิสก์เป็นชิ้นส่วนมาตรฐานอย่างยิ่งที่เข้ารหัสวานิลลา IBM และขึ้นอยู่กับความจุฟล็อปปี้ดิสก์ที่โฆษณา "สิบสามเกม 48kb ต่อดิสก์" คุณสามารถสมมติว่ารูปแบบทางกายภาพของข้อมูลบนดิสก์คือ MFM (เช่นพีซีทั่วไป 'ความหนาแน่นสองเท่า')
ดังนั้นคุณอาจจะสามารถภาพดิสก์ของคุณโดยใช้ดิสก์ไดรฟ์ USB ธรรมดา (ยกเว้นกรณีที่คุณพบคนที่สนับสนุนความหนาแน่นสูง floppies เท่านั้น) เป็น MFM เป็นหลักสิ่งเดียวที่พวกเขาสนับสนุน - แต่พวกเขากำลังมักจะ จำกัด เฉพาะภาค 512 ไบต์ด้วย การกำหนดหมายเลขคงที่ดังนั้นจึงไม่รับประกัน อาจคุ้มค่าที่จะลองก่อนที่จะมองหาวิธีแก้ปัญหาที่ไม่ค่อยพบบ่อยหน้าเกี่ยวกับ MSX นี้ให้คำแนะนำสำหรับ Linux และ macOS แม้ว่าส่วนของ Windows จะว่างเปล่า อาจจำเป็นต้องมีการวิจัยเพิ่มเติมเล็กน้อยที่นั่น
หากล้มเหลวให้พิจารณาโซลูชันที่สามารถสร้างภาพฟลอปปี้สำหรับเครื่องเช่น Amstrad CPC ได้เนื่องจากควรรองรับขนาดเซกเตอร์และการกำหนดแอดเดรสที่แตกต่างกันและรูปแบบไฟล์ที่เกี่ยวข้องกับ CPC ทั่วไปสามารถเก็บข้อมูลทั้งหมดนั้นไว้ได้ หากคุณมีพีซีที่เก่าพอที่จะมีตัวควบคุมและไดรฟ์ฟล็อปปี้ดิสก์พรี USB และระบบปฏิบัติการเช่น DOS ที่ช่วยให้ซอฟต์แวร์เข้าถึงคอนโทรลเลอร์ได้โดยไม่ต้องกังวลสิ่งนั้นควรทำตามเคล็ดลับ หรือตัวควบคุมดิสก์ระดับต่ำมีอยู่สำหรับปัญหานี้เช่น Greaseweazle ที่กล่าวถึงโดย scruss, Kryoflux และอื่น ๆ
เริ่มต้นจากโปรแกรมจำลองสเปกตรัมที่ใช้งานได้ไม่ควรใช้ช่วงระยะการเดินทางมากเกินไปเพื่อเพิ่มอินเทอร์เฟซดิสก์ Swift และอ่านฟลอปปีของคุณ
ซอฟต์แวร์ใดที่ควรเขียนลงใน WD1770 นั้นเป็นที่รู้จักกันดีมากดังนั้นคุณจึงสามารถแยกที่อยู่เหล่านั้นได้ค่อนข้างง่ายและสิ่งแรกที่รูทีน NMI จะต้องทำก็คือการสำรองข้อมูลจอแสดงผลปัจจุบันดังนั้นคุณจะสามารถเข้าใจได้ คำถามแรมโดยไม่ต้องกระอักกระอ่วนมากเกินไป เมื่อถึงจุดนั้นมันอาจจะง่ายพอ ๆ กับการเสียบอิมเมจดิสก์ของคุณ
หลายครั้งที่อินเทอร์เฟซที่คลุมเครือเล็กน้อยเหล่านี้ไม่ได้รับการเลียนแบบเป็นเพียงเพราะไม่มีข้อมูลการทดสอบ เป็นไปได้มากที่คุณจะได้รับความสนใจจากผู้เขียนที่มีอยู่เพียงแค่มีดิสก์อิมเมจ มิฉะนั้นตัวจำลองสเปกตรัมจะล้มเหลวได้ง่ายดังนั้นคนอย่างฉันที่มีรหัสที่ถูกต้องโดยทั่วไปควรจะช่วยได้
อีกวิธีหนึ่งเนื่องจากการค้นหาของฉันไม่ละเอียดถี่ถ้วนคุณอาจพบว่ามีการเลียนแบบสิ่งนั้นอยู่แล้วซึ่งในกรณีนี้โปรดแจ้งให้เราทราบเพื่อที่ฉันจะได้เปลี่ยน 90% ของคำตอบนี้
ดูเหมือนว่าจะใช้WD1770ฉันไม่คุ้นเคย แต่ก่อนอื่นให้ตรวจสอบว่าWD1770เข้ากันได้กับรูปแบบ IBM หรือไม่ ถ้าใช่คุณสามารถอ่านดิสก์ได้โดยตรงบนพีซี ... หากไม่ต้องการHW ที่สามารถอ่านดิสก์ได้
ดังนั้นในกรณีที่เข้ากันได้กับพีซีคุณเพียงแค่สร้างภาพโดยใช้การเข้าถึงเซกเตอร์โดยตรงใน C ++ (หรือภาษาหรือยูทิลิตี้อื่น ๆ ) แทนรูปแบบไฟล์ หลังจากที่คุณได้รับภาพไบนารีของฟล็อปปี้ดิสก์ (ทางเดียวหรือทางอื่น) มีสองตัวเลือก:
เลียนแบบ FDC
ดังนั้นคุณต้องมีอีมูเลเตอร์บางตัวที่สามารถเลียนแบบอินเทอร์เฟซ FDC ของคุณหรือเพิ่มฟังก์ชันดังกล่าวให้กับโค้ดโอเพนซอร์สบางตัว
ในการเชื่อมโยงสุดท้ายของคุณเป็นภาพ ROM และยังวงจร ( แต่ที่หนึ่งไม่สามารถอ่านได้) ดังนั้นจึงอาจเป็นไปได้ที่จะเลียนแบบนี้โดยการย้อนกลับของวงจร ... ผมทำแบบนี้มาก่อนสำหรับโปรแกรมจำลองการทำงานของฉันและD40 / D80 FDCขึ้นอยู่กับWD2797 อย่างไรก็ตามสิ่งนี้ทำได้อย่างง่ายดายเฉพาะสำหรับอีมูเลเตอร์ที่ทำงานบนความละเอียดของเวลา MC (รอบเครื่อง) (เช่นของฉัน) มิฉะนั้น FDC จะต้องถูกแฮ็กโดยเชื่อมต่อกับเงื่อนไข HW และ SW โดยข้ามรหัส Z80 และฉีดรหัส FDC / การดำเนินการแทน (นั่น เป็นวิธีที่อีมูเลเตอร์ส่วนใหญ่ทำ แต่สิ่งนี้เข้ากันไม่ได้ 100% และรถตักและสิ่งของที่กำหนดเองอาจไม่ทำงาน) ซึ่งไม่มีใครที่ไม่มีความรู้อย่างลึกซึ้งเกี่ยวกับการทำงานของ FDC ที่เป็นเป้าหมาย
แตกไฟล์
หรือคุณข้าม FDC อย่างสมบูรณ์และแยกไฟล์ที่ไม่ได้บีบอัดออกจากรูปภาพให้อยู่ในรูปแบบที่ผู้เลียนแบบอ่านได้เช่น
*.tap
. ในกรณีที่คุณแบ่งปันรูปภาพบางรูป (ดีที่สุดพร้อมคำอธิบายว่าไฟล์ใดและระยะเวลาที่อยู่ในนั้น) ฉันยินดีที่จะลองสร้างตัวแปลง win32 ที่จะทำสิ่งนี้ให้กับคุณเนื่องจากไฟล์เป็นเพียงภาพรวมนี่อาจเป็นตัวเลือกที่ดีที่สุดของคุณ ตามหลักการแล้วหากคุณสามารถเข้าถึง HW ได้ด้วยคุณสามารถสร้างรูปแบบหน่วยความจำเฉพาะและบันทึกลงในฟลอปปีเพื่อให้ระบบไฟล์เข้ามาได้ง่ายขึ้น ... ตัวอย่างเช่นเติม 128K (ส่วน RAM) ด้วยที่อยู่ 32 บิต (ค่าที่เพิ่มขึ้น) ดังนั้นเรา สามารถรับเซกเตอร์เข้าด้วยกันตามลำดับที่ถูกต้องแล้วจับคู่กับ FAT หากใช้ ...