
|
[zxspectrum]
||
[Date Prev]
[07-2007 Date Index]
[Date Next]
||
[Thread Prev]
[07-2007 Thread Index]
[Thread Next]
[zxspectrum] Re: ZXMMC+
- From: "Alessandro" <apoppi@xxxxxxxx>
- To: <zxspectrum@xxxxxxxxxxxxx>
- Date: Mon, 2 Jul 2007 23:10:20 +0200
On Monday, July 02, 2007 8:48 PM [GMT+1],
Eugenio Ciceri <eugenio.ciceri@xxxxxxxxx> wrote:
Dopo circa un secondo il bordo diventa blu (a volte, più raramente
rosso, ma non l'ho mai visto diventare di altri colori) e i led si
spengono, ma lo schermo resta quadrettato e lo Speccy è bloccato.
Durante il secondo di attesa, i 16K di rom da cui lo spectrum e` partito
(flash bank 0, la bootrom) vengono copiati nell'ultimo banco di ram (usa
l'ultimo per interferire il meno possibile con la ram usata dal residos, che
in futuro permettera` di definire un numero di banchi da non usare) e poi
l'esecuzione prosegue da li`. Il motivo e` che in questo modo il programma
dispone anche di ram privata per le variabili e puo` funzionare senza
sporcare minimamente quella dello spectrum (usa l'ultimo KB in rd/wr), cosa
molto utile quando si prende uno snapshot in NMI. Ho fatto cosi` perche`
ovviamente non e` possibile cambiare continuamente banco per accedere ad una
zona rd/wr, anche perche` ogni volta andrebbe in crash l'esecuzione del
programma :-)
La copia ROM -> RAM che avviene al power-on utilizza 16K di ram spectrum
come area temporanea. La ram utilizzata e` all'indirizzo $4000 (schermo) e
questo spiega perche` ti sembra che il pattern sia costante: lo e`. E` il
contenuto della rom che viene copiata. Successivamente viene chiamata la
subroutine "set_vars" (che inizializza le variabili) e poi subito la "cls".
Se lo schermo non viene pulito significa che quasi sicuramente non e`
tornato dalla prima chiamata, cosa che probabilmente dipende dalla ram
difettosa (lo stack pointer usa proprio quella).
Tu che sei un esperto, prova ad aprire bootrom.asm e cerca la label
"reset_vector" cosi ti rendi conto di quello che succede.
Puoi anche scrivere una tua routine di test: il comando 'join.exe' genera il
file .TAP del binario header.bin+bootrom.bin. L'header.asm contiene la
routine in grado di programmare il firmware "appeso in coda" nella flashrom,
RAND USR 30100. Se invece usi RAND USR 30000 il firmware viene semplicemente
testato direttamente in ram, senza flashare la rom (debug veloce).
Ciao!
|

|