การอ่านข้อมูลของฟลอปปี้จากดิสก์ ZX Spectrum Swift

Jan 15 2021

ย้อนกลับไปในวันที่เรามี 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 ขอโทษที่ทำให้คลื่นศัตรูชั่วร้ายเกินไปที่นั่น! อาจทำได้ด้วยการทดสอบการเล่นมากกว่านี้ แต่เราทั้งคู่ยังอยู่ในโรงเรียน

สิ่งนี้ทำงานเป็นสี 'เต็ม' โดยใช้รูปแบบการสลับหน้าจออย่างรวดเร็วพี่ชายของฉันคิดขึ้นซึ่งกล่าวถึงในที่นี้ด้วยความผิด

คำตอบ

3 Tommy Jan 16 2021 at 04:11

ฉันไม่พบข้อมูลทางเทคนิคหรือโปรแกรมจำลองที่มีอยู่ แต่จากลิงก์ของคุณฉันพบภาพความละเอียดสูงของบอร์ดอินเทอร์เฟซนี้

จากที่นั่นฉันสังเกตเห็นสิ่งต่อไปนี้:

  • ดิสก์คอนโทรลเลอร์คือ 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% ของคำตอบนี้

2 Spektre Jan 16 2021 at 16:25

ดูเหมือนว่าจะใช้WD1770ฉันไม่คุ้นเคย แต่ก่อนอื่นให้ตรวจสอบว่าWD1770เข้ากันได้กับรูปแบบ IBM หรือไม่ ถ้าใช่คุณสามารถอ่านดิสก์ได้โดยตรงบนพีซี ... หากไม่ต้องการHW ที่สามารถอ่านดิสก์ได้

ดังนั้นในกรณีที่เข้ากันได้กับพีซีคุณเพียงแค่สร้างภาพโดยใช้การเข้าถึงเซกเตอร์โดยตรงใน C ++ (หรือภาษาหรือยูทิลิตี้อื่น ๆ ) แทนรูปแบบไฟล์ หลังจากที่คุณได้รับภาพไบนารีของฟล็อปปี้ดิสก์ (ทางเดียวหรือทางอื่น) มีสองตัวเลือก:

  1. เลียนแบบ FDC

    ดังนั้นคุณต้องมีอีมูเลเตอร์บางตัวที่สามารถเลียนแบบอินเทอร์เฟซ FDC ของคุณหรือเพิ่มฟังก์ชันดังกล่าวให้กับโค้ดโอเพนซอร์สบางตัว

    ในการเชื่อมโยงสุดท้ายของคุณเป็นภาพ ROM และยังวงจร ( แต่ที่หนึ่งไม่สามารถอ่านได้) ดังนั้นจึงอาจเป็นไปได้ที่จะเลียนแบบนี้โดยการย้อนกลับของวงจร ... ผมทำแบบนี้มาก่อนสำหรับโปรแกรมจำลองการทำงานของฉันและD40 / D80 FDCขึ้นอยู่กับWD2797 อย่างไรก็ตามสิ่งนี้ทำได้อย่างง่ายดายเฉพาะสำหรับอีมูเลเตอร์ที่ทำงานบนความละเอียดของเวลา MC (รอบเครื่อง) (เช่นของฉัน) มิฉะนั้น FDC จะต้องถูกแฮ็กโดยเชื่อมต่อกับเงื่อนไข HW และ SW โดยข้ามรหัส Z80 และฉีดรหัส FDC / การดำเนินการแทน (นั่น เป็นวิธีที่อีมูเลเตอร์ส่วนใหญ่ทำ แต่สิ่งนี้เข้ากันไม่ได้ 100% และรถตักและสิ่งของที่กำหนดเองอาจไม่ทำงาน) ซึ่งไม่มีใครที่ไม่มีความรู้อย่างลึกซึ้งเกี่ยวกับการทำงานของ FDC ที่เป็นเป้าหมาย

  2. แตกไฟล์

    หรือคุณข้าม FDC อย่างสมบูรณ์และแยกไฟล์ที่ไม่ได้บีบอัดออกจากรูปภาพให้อยู่ในรูปแบบที่ผู้เลียนแบบอ่านได้เช่น*.tap. ในกรณีที่คุณแบ่งปันรูปภาพบางรูป (ดีที่สุดพร้อมคำอธิบายว่าไฟล์ใดและระยะเวลาที่อยู่ในนั้น) ฉันยินดีที่จะลองสร้างตัวแปลง win32 ที่จะทำสิ่งนี้ให้กับคุณ

    เนื่องจากไฟล์เป็นเพียงภาพรวมนี่อาจเป็นตัวเลือกที่ดีที่สุดของคุณ ตามหลักการแล้วหากคุณสามารถเข้าถึง HW ได้ด้วยคุณสามารถสร้างรูปแบบหน่วยความจำเฉพาะและบันทึกลงในฟลอปปีเพื่อให้ระบบไฟล์เข้ามาได้ง่ายขึ้น ... ตัวอย่างเช่นเติม 128K (ส่วน RAM) ด้วยที่อยู่ 32 บิต (ค่าที่เพิ่มขึ้น) ดังนั้นเรา สามารถรับเซกเตอร์เข้าด้วยกันตามลำดับที่ถูกต้องแล้วจับคู่กับ FAT หากใช้ ...