@Ian-Coog
assolutamente esatto!
Il registro $D600 serve per inviare i comandi al VDC
Mentre il registro $D601 invia il dato del comando, la cosa e' un po macchinosa e cerchero' di essere piu' chiaro possibile:
si carica in $d600 il numero del registro su cui si vuole operare
BIT $D600
serve esattamente come hai capito tu ad attendere che il VDC "agganci" il registro richiesto alla locazione $D601
$D601 ha una duplice funzione:
questa contiene il valore contenuto nel registro richiamato prima
LDA$D601 carica nell'accumulatore il valore del registro (richiamato con $d600) contenuto in $D601
oppure
STA$D601 (o STX STY ecc) INSERISCE in $D601 un valore
nel mio programma ho usato 3 registri:
$12 = ADDRESS POINTER HI
$13 = ADDRESS POINTER LOW
$1F = DATA BYTE
piccolo esempio: si carica in $D600 il valore $12: questa operazione rende disponibile alla locazione $D601 il puntatore HI BYTE dell'indirizzo della memoria del VDC
scriviamo per esempio il valore $20
si carica il valore $13 in $D600 otterremo quindi in $D601 il puntatore LOW BYTE
dell'indirizzo della memoria VDC.
scriviamoci per esempio il valore $00
in questo momento esatto il VDC punta alla locazione $2000 della sua memoria video
con il comando $1F si va a curiosare (LDA) o scrivere (STA) il valore in quella esatta locazione di memoria.
Quindi Ian-Coog ha capito perfettamente il funzionamento!
per un elenco dei registri del VDC leggete questo numero di transactor:
http://cbm.csbruce.com/~csbruce/cbm/transa...v7/i3/p057.htmlusare il monitor del c128 si puo' basta rilocare il codice da un altra parte (esempio $2000) oppure provando nell'altro banco da 64k (non so pero' se in questo caso funziona)
@eregil
Affermazione capziosa: in base alla stessa logica, si potrebbe dire di un PC con 512 MB di RAM e scheda video con 256 MB dedicati che "ha 768 MB di memoria", il che sarebbe ingannevole
il C128 ha 2 schede video... quando se ne usa 1 (VIC-II 40 colonne) beh nessuno ci vieta di usare la memoria dell'altra (VDC 80 colonne) come memoria tampone...
ciao
ps: grazie per l'ottimizzazione del codice Ian, io in LM "arranco" hehehe :lol: