[zxspectrum] Re: x Alessandro: riguardo alla ZXMMC...
From: Paolo Ferraris <pieffe8@xxxxxxxxx>
To: zxspectrum@xxxxxxxxxxxxx
Date: Sat, 03 Feb 2007 12:24:41 -0600
Alessandro wrote:
1) La voglio !!!! :-) Possibilmente montata, ma direi che ne parliamo
quando hai le schede.
Ok, ti faccio sapere. Mi ricordo che qualcuno mi aveva chiesto qualcosa
del genere: eri tu?
Direi di no.
2) Volevo sapere quali sono le differenze, in pratica, tra la ZXMMC e
la divIDE, a parte il fatto che la divIDE supporta piu' tipi di
memoria di massa e che la ZXMMC e' interna.
La DivIDE e` molto piu` complessa della zxmmc. La zxmmc non ha alcun
chip di memoria a bordo: essenzialmente permette di accedere alla sd/mmc
mediante lettura/scrittura su di un singolo port I/O, se non si tiene
conto del secondo port che serve a selezionare uno dei due slot a bordo.
Programmando la cpld con il file "integrale", tuttavia, si implementano
le caratteristiche aggiuntive che si trovano nella corrispondente cpld
del badaloc dalla quale deriva: la porta rs-232 a 115K2 baud ed un
joystick kempston. Queste funzionalita` sono semplicemente riportate su
uno strip sul pcb, non c'e' nessun connettore seriale o joystick.
Lancaster ha preferito la versione "light" :-) perche` dice che non e`
giusto avere una roba interna che puo` andare in conflitto con una
interfaccia kempston che l'utente potrebbe infilare sul pettine.
La zxmmc non e` quindi in grado di far girare il software scritto per la
DivIDE. Data l'assoluta semplicita` dal punto di vista software (tu
scrivi un byte sulla porta I/O e questo arriva alla sd card) e grazie
agli esempi di roba gia` scritta, non e` difficilissimo (a mio parere)
modificare altri sistemi operativi (a patto di avere i sorgenti,
ovviamente).
Interessante.
Se funziona su uno spectrum a 3.5MHz, allora funziona di sicuro anche
sul badaloc a 21. Il motivo e` presto detto: e` solo una questione di
clock alla CPLD, la quale deve serializzare 8 bit ogni volta che il
processore scrive (o legge) un byte dalla porta I/O. Dato che la cpld
non puo` lavorare su entrambi i fronti del clock, ne consegue che ogni
operazione richiede 16 CPLD clocks.
> [...]
Cosi` ad occhio, temo che una serie di OUTI consecutive non lascino
abbastanza tempo. Basterebbe 1T-state in piu`, probabilmente. Faro`
sicuramente una prova!
Direi anche io. Siamo troppo al limite. Se anche funzionasse su uno
Spectrum/Badaloc potrebbe essere "di culo" e magari su un'altro potrebbe
fallire.
Si potrebbe mettere un NOP dopo ogni OUTI (20 T-states invece dei 21 del
OTIR) ma il guadagno in termine di velocita' diventerebbe ridicolo.