[zxspectrum] Re: Chrome VS Spectrum

  • From: Mario Prato <mario.prato@xxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 02 Dec 2004 19:05:36 +0100




Su quella pagina sono stato piu' vanitoso del necessario (ma questo non
ditelo a nessuno) :-) Pero' se posso essere utile per qualcosa,
riapriamo ben volentieri la discussione :-)

visto che la lista e' un po' moscia ultimamente perche' no? ;)

dunque, partiamo col dire che la ula genera 312 linee di durata ciascuna di 224 T-states.. di questi 224 solo 128 sono usati per generare i pixel a video mentre la restante parte costituisce il bordo oppure il retrace del pennello elettronico. lo Z80 viene fermato dalla ula solo quando quest'ultima e' occupata a leggere la ram video durante i 128 T-states, mentre quando genera il bordo lo Z80 e' felice di lavorare senza interruzioni.
C'e' da dire che la ula legge di seguito dalla ram video 4 byte, che serviranno a generare una fila di 16 pixels (video + attributo + video1 + attributo1) e questo lavoro dura 4 T-states. Dal punto di vista elettronico abbiamo una sequenza di 8 azioni differenti che illusto cosi':


0) lettura byte video 0
1) lettura attributo 0 e generazione primo pixel del primo byte a video
2) lettura byte video 1
3) lettura attributo 1
4)
5)generazione del primo pixel del secondo byte
6)
7)

che poi e' la stessa cosa che dicono le faq di CSS:

   *  Cycle #    Delay

   *       -------    -----

   *        14335       6 (until 14341)

   *        14336       5 (  "     "  )

   *        14337       4 (  "     "  )

   *        14338       3 (  "     "  )

   *        14339       2 (  "     "  )

   *        14340       1 (  "     "  )

   *        14341   No delay

   *        14342   No delay

   *        14343       6 (until 14349)

   *        14344       5 (  "     "  )

   *        14345       4 (  "     "  )

   *        14346       3 (  "     "  )

   *        14347       2 (  "     "  )

   *        14348       1 (  "     "  )

   *        14349   No delay

   *        14350   No delay


ciascuno stato di questa sequenza ha durata 1 T-state e la visualizzazione di un byte completo dura quindi 4 T-states.
Se lo Z80 tenta di accedere alla ram video durante gli stati da 0 a 5 la ula lo ferma togliendogli il clock..


Quello che non ho compreso bene e' cosa avviene quando la cpu tenta di accedere alla porta $FE (alla ula in definitiva) durante questo ciclo..

per citare le faq:
* If the port address being accessed has its low bit reset, the <http://www.worldofspectrum.org/faq/reference/pinouts.htm#ULA>ULA is required to supply the result, which leads to a delay if it is currently busy handling the screen.
* The address of the port being accessed is placed on the data bus. If this is in the range 0x4000 to 0x7fff, the <http://www.worldofspectrum.org/faq/reference/pinouts.htm#ULA>ULA treats this as an attempted access to contended memory and therefore introduces a delay. If the port being accessed is between 0xc000 and 0xffff, this effect does not apply, even on a 128K machine if a contended memory bank is paged into the range 0xc000 to 0xffff.
These two effects combine to lead to the following contention patterns: High byte | |


    in 40 - 7F? | Low bit | Contention pattern

    ------------+---------+-------------------

         No     |  Reset  | N:1, C:3

         No     |   Set   | N:4

        Yes     |  Reset  | C:1, C:3

        Yes     |   Set   | C:1, C:1, C:1, C:1

sara' ma io non ci capisco una mazza... :(
scusate la prolissita' del post, anche se un ripasso non fa mai male ;)
e comunque chiunque volesse intervenire e' il benvenuto..
ciaoo


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.803 / Virus Database: 546 - Release Date: 30/11/2004

Other related posts: