[zxspectrum] Re: AEON demo

  • From: "Alessandro" <alessandro.poppi@xxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Sun, 11 Jan 2009 12:20:32 +0100

On Sunday, January 11, 2009 11:49 AM [GMT+1],
Eugenio Ciceri <eugenio.ciceri@xxxxxxxxx> wrote:

Pino, mi puoi aiutare con i settaggi delle mie ZXMMCUSB che sono
sicuramente sbagliati?

Ottimo, mi risulta che la zxmmcusb sia stata testata anche su operazioni del genere, quindi forse scopriamo qualche modifica ai parametri necessaria in casi particolari.

Ho provato anche con la snap presa dalla mia ZXMMC+ e anche in questo
caso dopo la modifica del registro funziona perfettamente.
FYI il registro incriminato conteneva il valore 67h.

Meraviglioso :-) tra parentesi una piccola modifica presente nell'accoppiata zx-com 5.2 e bootrom 2.21e e' proprio il fatto che il registro di fastpage ($7F) viene ora riportato correttamente ds zx-com, si tratta del registro spacciato per $54DF perche' quello e' l'indirizzo nel badaloc. Se controlli in alto a DX quando fai il Login, vedrai che viene riportato un valore consono al banco di ram/rom attivo in quel momento.

Il registro $7F (fastpage) serve a controllare cosa viene mappato nella zona 0 - $3FFF. Il significato degli 8 bit e' il seguente:

D7 = '1' = abilita la scrittura del banco selezionato (quindi e' un ram wr protect)

D6 = '1' = Paging attivo: se e' zero, il ROMCS del pettine resta intonso e viene usata la ROM interna della macchina. In caso contrario, viene mappato un banco da ram o rom (vedi bit seguente)

D5: '0' = Usa la RAM (512K = 32 banchi); '1' = Flash (sempre 512K)

D4:D0 = seleziona uno fra 32 possibili banchi.

Se usi la rom 48K/NMI (che risiede nel banco 2 di flashrom) ed entri con zx-com, vedrai che il registro $54DF ($7F sulla zxmmc+) contiene $62, ovvero fastpage attivo (rom interna fuori dalle balle), flashrom, banco 2.

Nelle versioni precedenti veniva letto il vero contenuto del registro, che ovviamente non poteva essere altro che $DF (e' il banco di ram n. 31, che viene attivato su NMI visto che dobbiamo saltare nella bootrom per servirlo). Questo andava bene sul badaloc perche' grazie al context_switch il banco viene forzato a prescindere dal contenuto del fastpage, quindi quest'ultimo conserva il valore 'operativo'. Nella zxmmc+ non ci sono risorse per implementare il context_switch e quindi bisogna cambiare il registro.

La nuova versione invia il contenuto che e' stato trovato in $7F (che per l'occasione e' un registro leggibile, come tutti gli altri nella zxmmc+) e salvato sullo stack nelle fasi preliminari del servizio NMI. Non solo: se lo modifichi a mano e premi "Update", il comando viene ora accettato e modifica il dato salvato senza alterare subito il $7F: in questo modo puoi realmente modificare il contenuto che $7F avra' al momento del LogOut. Se vuoi fare qualche esperimento, potrai constatare l'effetto che ha rientrare nel banco sbagliato :-)

Ora sputa il rospo! ;-)

Questo e' gia' abbastanza lungo e la spiegazione sara' ricca di particolari, anche perche' ho bisogno di voi per capire il motivo. Rimando quindi al prossimo messaggio.

Ciao!


Other related posts: