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 >> > > >