[zxspectrum] Re: R: Re: R: Re: R: Re: R: Re: DEMO PENTAGON su ZX-UNO

  • From: Stefano Donati <sd75@xxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Fri, 2 Sep 2016 14:25:23 +0200

Le specifiche dello Z80 dicono che l'indirizzo da cui prelevare il vettore di interrupt quando ha luogo un'interruzione viene composto utilizzando il contenuto del registro I per la parte alta, mentre per la parte bassa viene utilizzato quanto si trova sul bus dati. Dunque nel caso in cui siamo assolutamente sicuri che il bus dati sia sempre a livello logico alto otterremmo un indirizzo hex del tipo xxFF (dove xx è il valore del registro I)... ma in caso di dispositivi esterni che "trafficano" con il bus dati (il floating bus non può essere perché si verfica durante la lettura di pixel e attributi per il disegno dello schermo, quindi ben lontano dall'interrupt) il risultato potrebbe non essere sempre lo stesso; ecco perché per evitare rischi se ad esempio I=0xB8 viene creata una tabella di indirizzi (tipicamente tutti uguali) che prende da 0xB800 a 0xB900 (compresi).

Stefano Donati.

Il 02/09/2016 13:55, Enrico Maria Giordano ha scritto:



Il 02/09/2016 13:48, Luca Alimandi ha scritto:

Mi sembra molto strano. Il problema è ben conosciuto. Però
onestamente non ricordo se fosse solo su Plus D oppure anche su
Disciple. Ma essendo molto simili mi aspetterei che fosse su
entrambe. Qualcuno può confermare? Forse Luca Alimandi che aveva la
Disciple a suo tempo. Peccato che legge molto raramente... :-(

Se ho capito bene, ti riferisci ad una possibile differenza nella
gestione degli interrupt (in IM 1, credo) per cui la tabella andava
riposizionata in zone diverse... Beh, non ricordo a memoria niente di
simile, ma posso fare qualche ricerca (con calma e gesso!... :-D)

Sembra che il mio richiamo ti abbia improvvisamente risvegliato! :-)

No, la gestione degli interrupt con la tabella è in modo IM2 non IM1. E il problema non era il posizionamento ma l'inizializzazione dell'intera tabella. Praticamente, con lo Spectrum senza Plus D bastava inizializzare un solo elemento della tabella perché si sapeva che l'elemento usato sarebbe stato proprio quello. Mentre con la Plus D questo non è più vero e bisogna inizializzare con lo stesso indirizzo l'intera tabella.

EMG

--
EMAG Software Homepage: http://www.emagsoftware.it
The EMG Music page: http://www.emagsoftware.it/emgmusic
The EMG's ZX-Spectrum Page: http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: http://www.emagsoftware.it/tbosg



---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus


Other related posts: