Computer / Programmazione / Z80 · 30 marzo 2019 0

LM80C: primi test video

Non appena sono riuscito ad avere una sorta di segnale video dal mio computer LM80C ho subito provato ad ottenere di più da esso. Volevo almeno visualizzare un semplice messaggio di saluto sulla mia TV così che potessi essere certo che stessi pilotando correttamente il TMS9918A. Così, nei giorni scorsi, ho iniziato a disegnare un set di caratteri ed a scrivere un codice di inizializzazione. Il risultato è mostrato qui sotto:

LM80C: first video tests

LM80C: primi test video

Ci sono dei problemi. I caratteri non sono renderizzati correttamente, sembrano ruotati in senso antiorario di 90°. Infatti, i caratteri usati in modalità testo dovrebbero essere di 6×8 pixel, con i 2 bit meno significativi di ogni riga impostati a 0 perché il TMS9918A, per visualizzare 40 caratteri per riga, comprime i caratteri dalla dimensione standard di 8×8 pixel alla misura ridotta di 6×8, ignorando i 2 bir all’estrema destra. Come si può vedere osservando l’immagine, ci sono delle bande orizzontali e questo non è corretto perché le bande corrispondono ai 2 bit meno significativi di ogni carattere ma non dovrebbero apparire sul video dato che il TMS9918A dovrebbe ignorare questi bit. Un altro sintomo che il TMS9918A sta ruotando i caratteri è dato dalle righe verticali bianche alternate blu e bianche che appaiono all’interno delle bande blu. Infatti ho disegnato i primi caratteri alternando linee vuote e piene che però dovrebbero apparire orizzontalmente (le celle di VRAM vuote contengono il valore $00, che il TMS9918A sta visualizzando con il motivo del carattere $00). Altro problema…

Devo esaminare i collegamenti e cercare di capire se ho invertito qualche filo. Ricordatevi che sto usando un’interfaccia SRAM al posto di usare le DRAM per le quali il TMS9918A è stato progettato. Un altro difetto, ma questo è relativamente meno importante del precedente, è il messaggio di saluto che è stampato 2 volte sullo schermo, in diverse posizioni. Sono meno preoccupato per questa cosa dato che potrebbe essere un mio errore all’interno del codice: tenete presente che questi sono i miei primi tentativi con il codice assembly dello Z80.