[zxspectrum] Re: Lo Z80 colpisce ancora...

  • From: Matteo Vitturi <mattsteel@xxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Mon, 6 Jun 2011 15:21:41 +0200

Però...
non si tiene conto del fatto che lo Z80 dello Spectrum esegue anche la routine 
di interrupt ogni cinquantesimo di secondo.
Ora, in un "frame" ci sono circa 70.000 cicli (T-state) e il NOP dura 4 cicli, 
dalla locazione 46578 fino alla cima dell stack ci sono più 
di 20.000 NOP.
Succede  che lo stack viene "sporcato" dall'interrupt in modo specifico per 
l'hardware che si trova ad eseguirlo.
Osservando anche l'indirizzo 46478 = B5F2, F2 è un JP, magari salta in ROM ad 
un indirizzo furiosamente ignoto...

_ Matteo

> From: stefano_bodrato@xxxxxxxxxxx
> To: zxspectrum@xxxxxxxxxxxxx
> Subject: [zxspectrum] Re: Lo Z80 colpisce ancora...
> Date: Sat, 4 Jun 2011 10:21:14 +0200
> 
> >>Chiunque abbia uno Spectrum classico (48K o Plus) può provare, occorre 
> >>spegnere e riaccendere fisicamente lo ZX e >battere: RANDOMIZE USR 46578 
> >>.. il computer dovrebbe mettersi mette in uno stato simile a quando viene 
> >>dato il LOAD "".
> >in realtà si tratta di una routine save con uscita audio tipo load ...
> 
> Ok, ok..   non è importante cosa fa ma il fatto che succede qualcosa di 
> diverso.. nella locazione 46578 dopo il reset c'è 'zero', NOP, niente !   Se 
> la chiamata USR la si fa alla locazione precedente o successiva (dove 
> naturalmente c'è sempre 'zero'), non si ottiene lo stesso effetto, mentre 
> sarebbe logico aspettarsi che lo Z80, passati tutti i NOP, arrivi in fondo 
> alla memoria, dove c'è la stack, e si comporti sempre nello stesso modo.
> 
> Il punto è che spostandosi in quella precisa locazione con il comando USR 
> *solo* subito dopo un reset il BASIC fa qualcosa di diverso, forse salta per 
> sbaglio direttamente in ROM, oppure marchia lo stack in modo differente.
> Supponendo che il problema stia nell'inizializzazione dei registri dello Z80 
> mi sembra ragionevole pensare che la Disciple inserisca del codice extra al 
> momento del reset che cambia lo stato iniziale dei registri.
> 
> 
                                          

Other related posts: