[zxspectrum] Re: V6Z80p Pentagon 128K core

  • From: Alessandro Dorigatti <adorigatti@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 1 Nov 2012 21:28:38 +0100

Ciao!
Ti confermo che gli altri bit della porta $fe sono aggiornati in modo
"pressoché" istantaneo.

Volendo essere precisi al ciclo di clock, vengono aggiornati durante i
cicli "W" e "3" di una sequenza di "port write" dello Z80.

A presto!
Alessandro
 Il giorno 01/nov/2012 19:53, "Mario" <ilovez80@xxxxxxx> ha scritto:

> At 19:20 01/11/2012, you wrote:
>
>> Ciao Mario!
>> Cercherò di essere il più possibile chiaro, anche se il mio suggerimento
>> è quello di leggere il libro di Chris Smith per avere la visione completa
>> di tutta la ULA (non è pubblicità.. è solo che realmente quel libro è pura
>> "masturbazione mentale" per noi amanti dello Spectrum :-)).
>>
>
> non hai idea da quanto tempo ho intenzione di acquistare il libro della
> ula, credo che sia arrivato il momento :)
> hai spiegato perfettamente il funzionamento, unico dubbio, la porta $fe
> gestisce anche il buzzer e la porta mic, anche queste sono gestite dal
> secondo latch (quello del border) o come penso siano attivate direttamente
> dopo un out dallo z80?
>
> devo vedere se c'e' spazio per altri 3 ff nel cpld del chrome..
>
> grazie 1000
> ciaooo
>
>  Date un'occhiata al documento seguente:
>> <https://docs.google.com/open?**id=**0B4O6cuivPtLFcEJFaWQ4TkJEVFk<https://docs.google.com/open?id=0B4O6cuivPtLFcEJFaWQ4TkJEVFk>
>> >h**ttps://docs.google.com/open?**id=**0B4O6cuivPtLFcEJFaWQ4TkJEVFk<https://docs.google.com/open?id=0B4O6cuivPtLFcEJFaWQ4TkJEVFk>
>>
>> (spero sia scaricabile da tutti senza problemi... è il mio primo
>> esperimento di condivisione di un file su Google...).
>>
>> Cosa si vede nel diagramma?
>>
>> 1) Il system clock a 14MHz (riferimento per l'ULA del mio core)
>> 2) Il clock a 7MHz derivato dal system clock
>> 3) Sempre nella riga Clk7, si vede un contatore (i 4 bit meno
>> significativi di esso, in realtà) che scandisce il ridisegno delle linee
>> orizzontali
>> 4) Come il CPU Clock si "incastra" con il Clk7 (supposto che non venga
>> bloccato a causa di contesa)
>>
>> Pausa... un ciclo di ridisegno di 16 pixel, essendo il dot-cock 7MHz,
>> porta via appunto 16 cicli, e nel diagramma li vedi schematizzati come
>> C0...C15.
>> Detto questo, l'accesso alla VRAM avviene, come visibile nel diagramma
>> tra C8...C15.
>>
>> 5) Video address (VAddress) rappresenta che indirizzo viene impostato
>> sull'address bus per accedere alla VRAM. Come si vede dal diagramma in
>> pratica vengono letti in sequenza Display1, Attribute1, Display2,
>> Attribute2.
>> 6) DataLatch_n e AttributeLatch_n sono i due segnali che copiano il dato
>> ritornato dalla VRAM (all'indirizzo impostato VAddress) in due latch
>> "temporanei" che successivamente verranno ricopiati nei due latch "finali"
>> che generano pixel e colore.
>>
>> Qui sta il punto cruciale: se ci troviamo a disegnare la "PAPER" (ovvero
>> NON BORDER), come colore di sfondo viene messo nell'AttributeLatch il byte
>> prelevato dalla memoria; se ci troviamo invece a disegnare il "BORDER",
>> allora il valore dello sfondo (che in questo caso corrisponde con il
>> BORDER) viene prelevato dal registro che salva la porta 0xFE. Quindi... la
>> CPU in qualunque momento può settare il valore del border nel registro
>> della porta 0xFE, ma il valore del registro della porta viene preso in
>> considerazione dalla ULA solo quando AttributeLatch_n è "attivo basso".
>>
>> Non è finita qui, in quanto come dicevo DataLatch e AttributeLatch sono
>> due latch "temporanei". Quando essi diventano pixel o colore effettivi?
>>
>> 7) OutputLatches_n rappresenta (nell'istante del suo "rising edge") il
>> momento in cui DataLatch e AttributeLatch vengono utilizzati per disegnare
>> un nuovo ottetto di pixel (quindi nel diagramma in C13 e C5).
>>
>> 8) Nell'ultima riga PixelOut, infatti, viene schematizzato che pixel di
>> un ottetto viene buttato fuori a video... come si vede per C13 e C5 la
>> cella ha sfondo giallo e il pixel è lo 0.
>>
>> Quindi riassumendo, ci sono 2 latch temporanei (DataLatch e
>> AttributeLatch) e 2 registri per l'output definitivo; inoltre c'è il
>> registro della porta 0xFE.
>>
>> Giusto per completezza, nella riga "VCS_n" è schematizzato cosa viene
>> fornito alla CPU come valore del floating-bus (in caso di lettura di porte
>> dispari "non gestite"); il segnale VCS_n è il "chip-select" per la VRAM.
>>
>> Ehm.. non so quanto confuso sono stato nell'esposizione... ma in poche
>> righe non so fare di meglio :-)
>>
>> Ciao,
>> Alessandro
>>
>> Il giorno 01 novembre 2012 18:42, Mario <<mailto:ilovez80@xxxxxxx>ilov**
>> ez80@xxxxxxx <ilovez80@xxxxxxx>> ha scritto:
>>
>> Io una domanda te la faccio...
>> parlavi del bordo modificabile a qualunque T-state,  nello spectrum
>> originale puo' essere modificato solo ogni 4 t-states, cioe' 8 pixel video,
>> se sbagli correggimi :)
>> come hai implementato il funzionamento originale dello spectrum sulla
>> V6Z80? immagino che i tre bit del bordo siano scritti dallo z80 in un
>> registro e poi copiati ogni 4 t-states nel multiplexer di uscita del
>> video.. ma in quale fase?
>> sul chrome a causa del poco spazio nel cpld non ho mai implementato il
>> funzionamento esatto ma mi ha sempre incuriosito perche' di questo aspetto
>> della ula se ne parla poco..
>>
>> grazie
>> ciaooo
>>
>>
>>
>>
>> Nessun virus nel messaggio.
>> Controllato da AVG - <http://www.avg.com>www.avg.**com<http://www.avg.com>
>> Versione: 10.0.1427 / Database dei virus: 2441/5367 - Data di rilascio:
>> 01/11/2012
>>
>
>
>

Other related posts: