[zxspectrum] Re: Micridrive format e dettagli tecnici

  • From: Luca Alimandi <luca.alimandi@xxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Mon, 15 Sep 2014 23:04:43 +0200

Enrico Maria Giordano ha scritto:


Il 15/09/2014 08:50, Luca Alimandi ha scritto:

Però da quello che ho letto nella mail che mi hai segnalato non capisco
se l'intenzione è quella di costruire un circuito che ricrei il timing
corretto, o se si vuol far fare il lavoro al processore.

Ecco, anche questo discorso del timing non lo capisco. Io, sempre se ricordo bene, mi ero stabilito il mio timing che mi era comodo e funzionava tutto bene.

In realtà credo che la strada da seguire è la prima. Le istruzioni INIR
e OTIR credo siano troppo veloci per il timing necessario alla scrittura
e lettura del tape.

Ora che mi hai fatto ricordare, sì, usavo proprio INIR e OTIR e andavano benissimo. Il resto della temporizzazione lo taravo empiricamente.

Crredo che di mezzo ci sia un grande lavoro delle ULA che, immagino
(poichè non ho trovato documentazione) si occupano di prelevare e
depositare i byte da leggere o scrivere dalla memoria in qualche sorta
di buffer, dove poi, con calma, serializzano e parallelizzano i bit
con il timing opportuno.

Io non ho trovato traccia di questo. Gestivo tutto da programma.

In ogni caso quello che veramente conta è capire con quale
temporizzazione vanno presentati o letti i bit sui due pin denominati
DATA 1 e DATA 2 (sullo schema elettrico del Microdrive).

Aspetta, forse ho capito: quei "bit alternati" sono a livello hardware e il software non deve gestirli, giusto? Per il software c'è una porta e un bit, ho capito bene?

EMG


Esatto, non dovrò scrivere una linea di codice macchina per il progetto che sto ideando. E' solo un'interfaccia hardware che "emula" la presenza della cassetta. Ecco perchè è importante sapere il timing: devo fare in modo che i dati presenti nella CF vengano inviati alla testina come se provenissero da un nastro magnetico, la cui velocità di scorrimento dipende dal motorino, e il rate con cui si susseguono i bit dipende da come sono stati scritti in precedenza. Solo che io non porterò il segnale alle testine, ma in un punto intermedio (DATA 1 e DATA 2 sul circuito del MDR) dove si trovano già a livello logico (TTL ?) di 0 e 5V. Volendo esagerare un po', non è nemmeno importante conoscere con esattezza il timing, perchè, avendo a disposizione una marea di storage, sarebbe perfino possibile impiegare più byte di seguito della CF per memorizzare un bit, e questo simulerebbe ancora meglio il nastro, facendo fare tutto al MDR. In sostanza dovrei fare questo: pilotare una CF in modo che, in un ciclo continuo, legga i dati presenti al suo interno e li presenti serialmente in uscita. Una volta arrivato a presentare tutti i byte corripondenti a quelli presenti sull'intero anello del nastro, come questo ricomincia dall'inizio, anche la CF dovrebbe ricominciare a leggere dall'indirizzo 0 e così via. Idem per quanto riguarda la registrazione.

Detto così sembra una banalità, ma la lettura (e scrittura) di una CF richiede operazioni abbastanza complesse (la scrittura di dati su alcuni registri, contenenti i comandi da fargli eseguire e gli indirizzi dei settori che si intende estrarre o scrivere, ecc.) e il tutto deve essere fatto con tempistiche precise (se la lettura dei 512 byte che costituiscono il settore non avviene con la giusta tempistica, la CF interrompe il processo di lettura e resetta il suo contatore automatico interno...).

Ma di questo parlerò meglio più avanti!

--

|_ /-\


Other related posts: