Enrico Maria Giordano ha scritto:
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.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
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! -- |_ /-\