
|
[zxspectrum]
||
[Date Prev]
[12-2004 Date Index]
[Date Next]
||
[Thread Prev]
[12-2004 Thread Index]
[Thread Next]
[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
|

|