Appunti di linguaggio macchina per il Commodore 64

Lezione n. 1- Stampiamo un carattere sullo schermo.


Le linee che sarannò descritte di seguito, da 10 a 60 servono al computer per scrivere e leggere in memoria il codice macchina. Quindi si useranno per ogni programma scritto in linguaggio macchina.

10 k = 49152
(In questa linea, numero 10, viene caricato nella variabile 'k' il primo indirizzo utile di memoria dove si possono iniziare a scrivere i programmi macchina.)
N.B. - Ogni programma scritto in linguaggio macchina, se viene collocato a partire da questo indirizzo non andrà mai a sovrapporsi con altre routine già presenti in memoria.

20 for n = k to k+10
(Come forse ben saprete, il comando 'for' serve per iniziare la lettura(read) e l'inserimento(poke) delle 11 caselle(data) di memoria partendo dall'inidirizzo 49152(compreso, per questo sono 11), contenuto in 'k'.)
N.B. - Ovviamente se i comandi fossero più numerosi non riporteremo più il numero '+10'(per 11 comandi) ma un valore maggiore.

30 read a
Questo comando legge il contenuto della memoria in cui è stato inserito un comando(con i data). Inserendolo nella variabile 'a'. Ciclo per ciclo.

40 poke n,a

(La linea 40 prende la lettura della memoria, avvenuta con il comando 'read' ed inserita in 'a'. Sarà poi applicata con 'poke' all'indirizzo 'n' con il relativo comando contento in 'a'.)

50 next n
(Next circoscrive il ciclo ai comandi predentemente riportati.)

60 sys k
(Ora, terminato il ciclo, con il comando 'sys', diamo il via alla lettura ed esecuzione della routine memorizzata partendo dall'inidirizzo 'k'(49152).)

70 data 169,1
(I numeri conttenuti dopo 'data' indicano: accumulatore(169), valore(1). Utilizzare il comando 169, che rappresenta l'accumulatore, è un passo obbligato per caricare un dato in memoria. In quanto non è possibile farlo direttamente. Il secondo valore rappresenta la lettera 'A' maiuscola del codice ASCHII. Se volessimo visualizzare un'altro carattere dovremmo inserire un valore diverso nell'accumulatore.)

80 data 141,0,4
(Il valore 141 immette il contenuto dell'accumulatore in una determinata posizione della memoria del computer. In questo caso nella memoria video. La sezione indicata è la riga 0 di pagina 4. La memoria video del commodore 64 in modalità testo è composta da 1000 caratteri(40x25). Quindi da altrettante caselle di memoria: da riga 0 pagina 4(angolo in alto a sinistra) a riga 231 di pagina 7(angolo in basso a destra).)

N.B. - La memoria del commodore 64 è grande 64 Kb, che corrispondono a 65536 bytes (caratteri). Che corrispondono a 256 pagine da 256 righe. Nel caso della memoria video testuale si parte dall'indirizzo 1024 (256x4) fino a 2023 (256x7+231). Corrispondenti esattamenta ai mille caratteri che compongono lo schermo.

90 data 169,7
(Ora inseriremo un nuovo valore nell'accumulatore, che indica al computer il colore del carattere(7=giallo).)

100 data 141,0,216

(Sempre grazie al comando 141 assegneremo il colore giallo al carattere spostando il valore 7, presente nell'accumulatore all'indirizzo 55296 (riga 0 pagina 216 ovvero 256*216+0). Se volessimo assegnare un
colore diverso è sofficiente cambiare il valore dell'accumulatore con un numero da 0 a 15. Visto che il commodore 64 possiede una palette di 16 colori.)

110 data 96
(L'ultima riga indica al computer di restituire il controllo al sistema operativo (Basic).)
N.B - Il commodore 64 non dispone solamente dell'accumulatore per caricare i dati in memoria. E esistono due indici, chiamati ''x' e 'y', che possono fare la stessa cosa. Così chiameremo l'accumulatore 'a' e gli indici 'x' e ' y', per risparmiare tempo.

I rispettivi comandi sono:
169,n ---> carica in 'a' un numero.
162,n ---> carica in 'x' un numero.
160,n ---> carica in 'y' un numero.

Quindi i rispettivi ordini di stampa sono:
141,r,p ---> stampa il contenuto di 'a' ad una determinata riga e pagina della memoria.
142,r,p ---> stampa il contenuto di 'x' ad una determinata riga e pagina della memoria.
140,r,p ---> stampa il contenuto di 'y' ad una determinata riga e pagina della memoria.

La deduzione logica se vogliamo stampare la solita lettera 'A' su schermo ma utilizzando gli indici anziché che l'accumulatore. Come abbiamo già visto nell'esempio precedente, dovremo inserire i seguenti numeri nei 'data':
INDICE X162,1
142,0,4
162,7
142,0,216
96

INDICE Y
160,1
140,0,4
160,7
140,0,216
96



Post popolari in questo blog

Come dumpare le cassette del Commodre 64. (How to dump the type of computer)

Nuovo AMIGA. Anno nuovo - Vita nuova per noi amighisti?

Costruiamoci il cavo per dumpare le cassette del Commodore 64