Odczytywanie danych z dyskietek z dyskietki ZX Spectrum Swift

Jan 15 2021

Kiedyś mieliśmy sześć swiftdisk, w którym wyprzedziliśmy grę, pozwalając nam na dyskietki 3,5 cala. Widzieć:

  • 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

Widzę pełną specyfikację sprzętu, a nawet rom jest dostępny online pod linkiem hardware.speccy.org powyżej, co jest całkiem niesamowite.

Czy ktoś ma pojęcie, jaki format dysku został użyty (był to obraz całej pamięci) i jak można zdigitalizować nasze stare dyskietki dla współczesnego świata retro. Ewentualnie moglibyśmy przekonwertować je na format FDI ?

Motywacja:

Byłoby miło spróbować przesłać naszą nigdy nie wydaną grę Galactic Patrol, tak jak zrobiliśmy to z StarBlade . Przepraszamy za zbyt złe fale wroga! Mógłbym zrobić więcej testów, ale oboje byliśmy nadal w szkole.

To działało w „pełnym” kolorze przy użyciu schematu szybkiego przełączania ekranu, który wymyślił mój brat, o którym jest mowa tutaj w przypadku awarii .

Odpowiedzi

3 Tommy Jan 16 2021 at 04:11

Nie mogłem znaleźć informacji technicznych ani istniejącego emulatora, ale przez twoje linki znalazłem ten obraz płyty interfejsu w wysokiej rozdzielczości .

Stamtąd zauważam następujące rzeczy:

  • kontroler dysku to WD1770, ten duży po lewej;
  • dwa duże chipy po prawej stronie, w połowie pod złączem krawędziowym, to 8kb RAM i EPROM; i
  • wszystko inne, co widać, to logika serii 74.

Jest to bezpieczny zakład oparty na architekturze Spectrum, że przycisk przerwania przełącza się w wbudowanej pamięci ROM i wyzwala NMI.

Połączone obrazy ROM mają rozmiar 32kb i 16kb, ale ten pierwszy wydaje się być po prostu 16kb danymi skopiowanymi dwukrotnie.Można również dodać, że EPROM ma 16kb, w takim przypadku można zgadywać, kiedy i gdzie pojawia się ta 8kb pamięci RAM .

Znalazłem stare wzmianki w comp.sys.sinclair, że emulacja Microdrive dodana do późniejszej wersji była częściowo oparta na sprzęcie, ale wydaje się, że pochodziła z poprawką płyty. Dlatego autor emulatora prawdopodobnie zacząłby od starszej pamięci EPROM w nadziei, że dodatkowy sprzęt nie był jeszcze obecny.

W przeciwnym razie dobrą wiadomością jest to, że kontroler dysku jest niezwykle standardową częścią, która po prostu obsługuje zwykłe kodowanie IBM, a na podstawie reklamowanej pojemności dyskietki wynoszącej „trzynaście gier 48kb na dysk” można założyć, że format fizyczny danych na dysku to MFM (tj. „Podwójna gęstość” zwykłego PC).

Tak: ty może być w stanie obrazek na dysku przy użyciu dysku USB zwykły (o ile znajdziesz taki, który wspiera wysokiej gęstości dyskietki tylko) jak MFM jest w zasadzie jedyną rzeczą, którą wspiera - ale są one często ograniczone do sektorów 512-bajtowych z ustalona numeracja, więc nie jest to gwarantowane. Może warto spróbować, zanim rozejrzysz się za mniej powszechnym rozwiązaniem. Ta strona związana z MSX zawiera przewodnik dla systemów Linux i macOS, chociaż sekcja Windows jest pusta. Tam może być potrzebne trochę więcej badań.

Jeśli to się nie uda, przyjrzyj się rozwiązaniom, które mogą wyświetlać dyskietki dla maszyny takiej jak Amstrad CPC, ponieważ powinny one obsługiwać różne rozmiary sektorów i adresowanie, a popularne formaty plików związane z CPC mogą zachować wszystkie te informacje. Jeśli masz wystarczająco stary komputer, aby mieć kontroler i napęd dyskietek pre-USB oraz system operacyjny, taki jak DOS, który zapewnia programowi nieograniczony dostęp do kontrolera, to powinno załatwić sprawę. Lub niskopoziomowe kontrolery dysków istnieją teraz właśnie dla tego problemu, takie jak Greaseweazle, o którym wspomniał scruss, Kryoflux i inni.

Zaczynając od działającego emulatora Spectrum, dodanie interfejsu Swift disc i odczytanie dyskietki nie powinno być zbyt trudne.

To, jakie oprogramowanie powinno zapisywać na WD1770, jest bardzo dobrze znane, więc możesz dość łatwo wyodrębnić te adresy, a prawie pierwszą rzeczą, którą procedura NMI będzie musiała zrobić, jest wykonanie kopii zapasowej bieżącego wyświetlacza, aby prawdopodobnie był w stanie znaleźć Pytanie o pamięć RAM bez zbytniego dylematu. W tym momencie może to być równie łatwe, jak podłączenie obrazu dysku.

W większości przypadków te nieco bardziej niejasne interfejsy nie są emulowane, dzieje się tak dlatego, że nie są dostępne żadne dane testowe; bardzo możliwe, że byłbyś w stanie zainteresować istniejącego autora tylko poprzez posiadanie obrazu dysku. W przeciwnym razie emulator Spectrum można łatwo podrzucić, więc ktoś taki jak ja, który ma ogólnie poprawny rodzaj kodu, powinien być w stanie pomóc.

Alternatywnie, ponieważ moje wyszukiwanie nie było szczególnie dokładne, może się okazać, że coś jest już emulowane - w takim przypadku daj mi znać, abym mógł zmienić 90% tej odpowiedzi.

2 Spektre Jan 16 2021 at 16:25

Wygląda na to, że używa WD1770 Nie znam go, ale najpierw sprawdź, czy WD1770 jest kompatybilny z formatem IBM. Jeśli tak, to możesz czytać płyty bezpośrednio na PC ... Jeśli nie, potrzebujesz HW zdolnego do odczytu płyty .

Tak więc w przypadku kompatybilności z komputerem PC wystarczy go wyobrazić, używając bezpośredniego dostępu do sektora w C ++ (lub dowolnym innym języku lub narzędziu) zamiast formatu pliku. Po uzyskaniu binarnego obrazu dyskietki (w jedną lub drugą stronę) są dwie opcje:

  1. emulować FDC

    więc musisz mieć emulator zdolny do emulacji twojego interfejsu FDC lub dodać taką funkcjonalność do jakiegoś kodu open source.

    W twoim ostatnim łączu są obrazy ROM, a także obwód (ale ten jest nieczytelny), więc może być możliwe emulowanie tego przez odwrócenie obwodów ... Zrobiłem to wcześniej dla mojego emulatora i D40 / D80 FDC opartego na WD2797 . Jest to jednak łatwe do wykonania tylko w przypadku emulatorów, które działają na rozdzielczości czasowej MC (cykl maszynowy) (tak jak moje), w przeciwnym razie FDC musi zostać zhakowany tylko przez podłączenie do stanu HW i SW, omijając kod Z80 i zamiast tego wstrzykując kod / operacje FDC (to tak robi większość emulatorów, jednak nie jest to w 100% kompatybilne, a niestandardowe programy ładujące i inne rzeczy mogą nie działać), czego nie może zrobić nikt bez głębokiej wiedzy na temat docelowych działań FDC.

  2. Rozpakuj pliki

    lub całkowicie pomijasz FDC i wyodrębniasz nieskompresowane pliki z obrazu do formatu czytelnego dla emulatorów, takich jak *.tap. Jeśli udostępnisz jakieś obrazy (najlepiej z opisem, jakie pliki i jak długo się w nich znajdują), z przyjemnością spróbuję stworzyć konwerter win32, który zrobi to za Ciebie.

    ponieważ pliki to tylko migawki, może to być najlepsza opcja. Idealnie, jeśli masz również dostęp do HW, możesz utworzyć określony wzorzec pamięci i zapisać go na dyskietce, aby proces wprowadzania systemu plików był łatwiejszy ... na przykład wypełnij 128K (część pamięci RAM) adresami 32-bitowymi (wartość przyrostowa), więc my może zebrać sektory razem we właściwej kolejności, a następnie dopasować go do FAT, jeśli jest używany ...