Spiegazione del listato precedente
Poichè il registro di scrolling verticale del C64 è a 3 bit (bit 210 di $d011) lo schermo può oscillare su e giù,per uno scostamento massimo di 7 pixel.
Per questo motivo,è possibile aggiungere una riga di testo alle 25 già presenti (a dire il vero una riga di soli 7 pixel,quindi non proprio una riga completa).
In pratica,genero un'interruzione del raster alla linea 248,commutando il bit 3 di $d011;poi,prima della linea 48,shifto lo schermo caratteri tutto verso l'alto,setto il registro $d018 (bit 7-4) in modo che il chip video prelevi la matrice caratteri dalle locazioni $3c00-$3fe7,e tengo aperti i bordi commutando di nuovo il bit 3 di $d011.
Infine,alla linea 53 (o 54,in questo caso non c'e' problema perchè non è richiesto un timing ultra-preciso) shifto lo schermo tutto verso il basso e ripristino i bit 7-4 del registro $d018,in modo che il VIC-II prenda i codici sulla matrice video dalla consueta zona $400-$7e7 (1024-2023).
Il processo si ripete ad ogni frame.
Notare due cose:
Dopo l'interrupt alla linea 53 ripristino il normale IRQ saltando alla routine $ea31 per permettere il lampeggio del cursore,etc.
La matrice caratteri non è da confondere col set di caratteri,che indica al chip video la locazione da cui prendere i byte per le forme delle lettere e dei numeri
(bit 3-1 di $d018).
A chi è interessato:
Provare a far scorrere orizzontalmente le scritte sulle righe aggiunte nei listati precedenti.
Bye