Lettura dei dati dei floppy da un disco ZX Spectrum Swift

Jan 15 2021

In passato, avevamo uno swiftdisk a sei parole, eravamo in vantaggio sul nostro gioco, permettendoci di utilizzare floppy disk da 3,5 pollici. Vedere:

  • 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

Vedo le specifiche hardware complete e persino la rom è disponibile online al collegamento hardware.speccy.org sopra, il che è piuttosto sorprendente.

Qualcuno ha un'idea del formato del disco utilizzato (era un'istantanea dell'intera memoria) e di come i nostri vecchi floppy potrebbero essere digitalizzati per il moderno mondo retrò. Forse potremmo convertirli in formato FDI ?

Motivazione:

Sarebbe carino provare a caricare il nostro gioco mai pubblicato Galactic Patrol come abbiamo fatto con StarBlade . Mi scuso per aver reso le onde nemiche troppo malvagie lì! Avremmo potuto fare ancora un po 'di playtest, ma eravamo ancora entrambi a scuola.

Funzionava a colori "pieni" utilizzando lo schema di cambio rapido dello schermo ideato da mio fratello, menzionato qui in crash .

Risposte

3 Tommy Jan 16 2021 at 04:11

Non sono riuscito a trovare informazioni tecniche o un emulatore esistente ma tramite i tuoi link ho trovato questa immagine ad alta risoluzione della scheda dell'interfaccia .

Da lì noto le seguenti cose:

  • il controller del disco è un WD1770, quello più grande a sinistra;
  • i due grandi chip a destra, entrambe le metà sotto il connettore sul bordo, sono una RAM da 8kb e una EPROM; e
  • tutto il resto visibile è la logica della serie 74.

È una scommessa sicura, basata sull'architettura dello spettro, che il pulsante di interruzione si attivi nella ROM di bordo e attivi un NMI.

Le immagini ROM collegate hanno una dimensione di 32kb e 16kb ma la prima sembra essere solo 16kb di dati copiati due volte, puoi anche addurre che l'EPROM è 16kb, nel qual caso ci potrebbero essere delle congetture nel capire quando e dove appaiono quegli 8kb di RAM .

Ho trovato vecchie menzioni in comp.sys.sinclair secondo cui l'emulazione Microdrive aggiunta a una versione successiva era in parte basata sull'hardware, ma sembra essere arrivata con una revisione della scheda. Quindi un autore di emulatore probabilmente inizierebbe con la vecchia EPROM nella speranza che l'hardware extra non fosse ancora presente.

Altrimenti, la buona notizia è che il controller del disco è una parte estremamente standard che esegue solo la codifica IBM vanilla e, in base alla capacità del floppy pubblicizzata di "tredici giochi da 48 kb per disco", puoi presumere che il formato fisico dei dati sul disco sia MFM (cioè normale PC "doppia densità").

Quindi: potresti essere in grado di visualizzare il tuo disco utilizzando una semplice unità disco USB (a meno che non ne trovi una che supporti solo floppy ad alta densità) poiché MFM è essenzialmente l'unica cosa che supportano, ma sono spesso limitati a settori da 512 byte con numerazione fissa quindi non è garantita. Potrebbe valere la pena provare prima di cercare una soluzione meno comune. Questa pagina relativa a MSX fornisce una guida per Linux e macOS anche se la sezione Windows è vuota. Potrebbe essere necessaria qualche ricerca in più lì.

In caso contrario, cerca soluzioni che possano visualizzare i floppy per una macchina come Amstrad CPC, poiché dovrebbero gestire diverse dimensioni di settore e indirizzamento, ei formati di file comuni relativi a CPC possono conservare tutte queste informazioni. Se hai un PC abbastanza vecchio per avere un controller e un'unità floppy pre-USB e un sistema operativo come DOS che fornisce al software l'accesso illimitato al controller, allora dovrebbe funzionare. O ora esistono controller di disco di basso livello proprio per questo problema, come il Greaseweazle menzionato da scruss, il Kryoflux e altri.

Partendo da un emulatore Spectrum funzionante, non dovrebbe essere troppo complicato aggiungere l'interfaccia del disco Swift e leggere il tuo floppy.

Quale software dovrebbe scrivere su un WD1770 è molto noto, quindi potresti isolare quegli indirizzi abbastanza facilmente, e praticamente la prima cosa che la routine NMI dovrà fare è eseguire il backup del display corrente in modo da poter probabilmente capire il Domanda RAM senza troppi dilemmi. A quel punto potrebbe essere facile come collegare semplicemente l'immagine del disco.

La maggior parte delle volte in cui queste interfacce leggermente più oscure non vengono emulate è solo perché non sono disponibili dati di test; è molto probabile che tu sia in grado di attirare l'interesse di un autore esistente semplicemente avendo un'immagine disco. Altrimenti un emulatore Spectrum è facile da mettere fuori uso, quindi qualcuno come me che ha il tipo di codice generalmente corretto dovrebbe essere in grado di aiutare.

In alternativa, poiché la mia ricerca non è stata particolarmente approfondita, potresti scoprire che la cosa è già emulata, nel qual caso fammelo sapere in modo che io possa cambiare il 90% di questa risposta.

2 Spektre Jan 16 2021 at 16:25

Sembra che utilizzi WD1770 Non ho familiarità con esso, ma prima controlla se WD1770 è compatibile con il formato IBM. Se sì, puoi leggere i dischi direttamente sul PC ... In caso contrario, è necessario un HW in grado di leggere il disco .

Quindi, in caso di PC compatibile, è sufficiente immaginarlo utilizzando l'accesso diretto al settore in C ++ (o qualsiasi altro linguaggio o utilità) invece del formato di file. Dopo aver ottenuto l'immagine binaria del floppy (in un modo o nell'altro) ci sono due opzioni:

  1. emulare FDC

    quindi è necessario disporre di un emulatore in grado di emulare la tua interfaccia FDC o aggiungere tale funzionalità a qualche codice open source.

    Nel tuo ultimo link ci sono le immagini ROM e anche il circuito (ma quello è illeggibile) quindi potrebbe essere possibile emularlo invertendo il circuito ... L'ho fatto prima per il mio emulatore e D40 / D80 FDC basato su WD2797 . Tuttavia questo è facilmente realizzabile solo per emulatori che funzionano con risoluzione di temporizzazione MC (ciclo macchina) (come il mio) altrimenti l'FDC deve essere hackerato solo collegandosi alle condizioni HW e SW bypassando il codice Z80 e iniettando invece codice / operazioni FDC (che è il modo in cui lo fa la maggior parte degli emulatori, tuttavia questo non è compatibile al 100% e caricatori personalizzati e cose potrebbero non funzionare) che nessuno senza una profonda conoscenza del funzionamento FDC mirato può fare.

  2. estrai i file

    oppure aggiri completamente l'FDC ed estrai i file non compressi dall'immagine in un formato leggibile da emulatori come *.tap. Nel caso in cui condividi alcune immagini (meglio con la descrizione di quali file e quanto tempo ci sono) sarei felice di provare a creare un convertitore win32 che lo farebbe per te.

    poiché i file sono solo istantanee, questa potrebbe essere la tua migliore opzione. Idealmente se hai anche accesso all'HW potresti creare uno specifico modello di memoria e salvarlo su floppy in modo che l'inffering del filesystem sia più facile ... per esempio riempire la 128K (parte RAM) con indirizzi a 32 bit (valore incrementale) può riunire i settori nell'ordine corretto e quindi abbinarlo a FAT se viene utilizzato ...