Rivista: Commodore Computer Club (IT) – N.ro: 10 / aprile 1984 – Trascrizione: David La Monaca
La rivista Commodore Computer Club in Italia rappresentò negli anni ’80 un punto di riferimento per tutti i possessori di macchine Commodore a 8-bit e, in seguito, anche dei moltissimi fan di Amiga. Il “taglio” della rivista offriva a tutti coloro che non volevano soltanto giocare o utilizzare software applicativo l’opportunità di conoscere l’hardware e la programmazione software dei loro sistemi, con articoli semplici e ben commentati, spesso accompagnati da listati in BASIC o Linguaggio Macchina / Assembly, tutti validi aiuti per chi volesse passare al lato oscuro del codice.
Un esempio fra i più rappresentativi dei contenuti che ogni mese la rivista di Systems Editoriale è senza dubbio l’articolo sulle routine grafiche I di Danilo Toma nella loro prima incarnazione, uscita nell’aprile del 1984 sul numero 10.
Le Routine Grafiche I cercavano di rimediare ad una delle mancanze più sentite del BASIC V2 del C64, ossia l’assenza di supporto per la grafica in alta risoluzione del VIC-II, cioè la modalità 320×200 pixel a 2 colori, uno per lo sfondo ed uno per il tracciamento di punti e linee. La prima versione delle routine grafiche propone la possibilità di attivare la modalità grafica, pulire lo schermo, scegliere i colori di base e tracciare punti (routine di plot) e linee (routine di draw). Il tutto tramite il caricamento delle routine e chiamate SYS alle diverse locazioni di memoria corrispondenti alle operazioni grafiche. Dal numero 10 in avanti, le routine grafiche vennero utilizzate dalla rivista come tool di riferimento per tutti gli articoli in cui si faceva uso della grafica. Almeno fino al numero 14 della rivista, nel quale venne pubblicata la versione II delle routine, molto più complete e semplici da utilizzare.
Per tutte le informazioni sulle routine grafiche, vi rimandiamo alla consultazione del numero 10 della rivista il cui PDF si trova facilmente in Rete. Qui di seguito forniamo l’immagine di un dischetto ccc10-routine-grafiche.d64 e le istruzioni base per utilizzare le routine, il cui listato principale include al suo interno un esempio d’uso. Un secondo esempio base si trova sul medesimo dischetto e può essere utilizzato per cominciare a scrivere un nuovo programma che utilizzi le routine e la pagina grafica del C64.
- Sul C64 originale, inserite il dischetto su cui avete precedentemente copiato tutti i file forniti in questo articolo. Allo scopo effettuate il download dell’immagine disco ccc10-routine-grafiche.d64. Se utilizzate un emulatore, basta assegnare al drive #8 l’immagine disco D64.
- Caricate le routine in BASIC con il comando LOAD”ROUTINE GRAFICHE”,8. Al termine del caricamento digitate RUN e premete il tasto Return per attivare le routine e visualizzare la demo inclusa.
- Al termine digitate NEW e premete invio per liberare la memoria riservata al BASIC. Le routine grafiche in Linguaggio Macchina sono a questo punto già attivate e pronte all’uso in un’area di memoria protetta a partire dalla locazione 49152 ($c000).
- Caricare poi l’esempio incluso nell’immagine disco con LOAD”ESEMPIO”,8 e, a caricamento avvenuto, digitate RUN seguito da Return. Il semplice programma di esempio partirà e la pagina grafica del C64 verrà attivata. Il programma d’esempio può essere usato come base di partenza per scrivere un programma più complesso che faccia uso della grafica in alta risoluzione.
Download link: ccc10-routine-grafiche.d64

Titolo: Routine Grafiche I
Piattaforma: Commodore 64
Genere: Tool/Estensione comandi BASIC
Linguaggio: BASIC/LM
Autore versione originale: Danilo Toma
Pubblicazione: Commodore Computer Club n. 10, aprile 1984
Digitazione/Elaborazione: David La Monaca
Anno: 2026 (marzo)
Download: file .D64 completo di programma esempio
Esempi: inclusi nel listato delle routine
Qui di seguito trovate il codice in linguaggio BASIC da copiare sul vostro Commodore 64 originale oppure su un emulatore. Per PC Windows 10/11 suggeriamo VICE con il supporto dell’editor e compilatore CBM Prg Studio.
Di seguito le istruzioni per caricare il listato sull’emulatore VICE:
– Copiare il listato qui sotto e incollatelo in CBM Prg Studio.
– I codici dei caratteri speciali presenti nel listato saranno trattati da CBM Prg Studio e convertiti nei corrispondenti simboli del BASIC V2.
– Selezionare Generate .prg (current file) per ottenere il file programma con estensione .prg (ad es. routinegrafiche.prg)
– Lanciare l’emulatore VICE e dal menu File > Smart attach… > routinegrafiche.prg
– Digitare RUN e premere il tasto Return per attivare le routine in RAM
Buon divertimento!
Download link: ccc10-routine-grafiche.d64
Attenzione – Nel listato i caratteri ‘>’ e ‘<‘ potrebbero essere stati sostituiti dai rispettivi codici di encoding HTML ‘>’ e ‘<’. Nel caso siano presenti, sostituite questi valori nel listato prima di caricarlo nell’emulatore.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 1 rem ** routines grafiche per cbm 64 **
2 rem *** di danilo toma ***
3 rem *** via pordenone 13 ***
4 rem *** milano tel. 02/2159024 ***
5 rem *** ***
6 rem ********************************
7 rem
70 print"{clear}"spc(252)"{reverse on}lettura dei dati":fori=49152to49868:reada:pokei,a:next
90 rem
95 rem *** esempio di draw e plot ***
99 rem
100 clr:x1%=0:y1%=0:x2%=0:y2%=0:rem *** variabili scelte per le coordinate
110 dr=49728:pl=49693:sc=49763:cl=49785:mo=49821:rem ** indirizzi delle routine
200 syssc:rem *** pulisce lo schermo
210 poke251,3:poke252,6:syscl:rem *** definisce i colori della pag. grafica
220 poke248,1:sysmo:rem *** passa al map mode
300 poke2,1:rem *** flag "disegna/cancella" settato per disegnare
310 x1%=110:y1%=100:fori=0to6.29step.1
320 x2%=sin(i)*108+110:y2%=cos(i)*100+100:sysdr:rem *** draw
330 next
340 fori=0to6.29step.1
350 x1%=sin(i)*32+270:y1%=i*32:syspl:rem *** plot
360 next
380 ifpeek(2)<>0thenpoke2,0:goto310:rem *** flag settato per cancellare
480 rem
500 rem *** altro esempio di draw ***
550 poke2,1
560 fori=0to40:x1%=x2%:y1%=y2%
570 x2%=rnd(1)*320:y2%=rnd(1)*200:sysdr
580 fork=0to100:next:rem *** ciclo di rallentamento
590 next
600 fork=0to2000:next
700 poke248,0:sysmo:rem *** passa al text mode
999 end
3600 data 73,255,149,250,181,249,73,255,149,249,246,249,208,2,246
3700 data 250,160,202,162,255,96
5000 data 160,17,177,45,133,93,136,177,45,133,94,160,24,177,45,133,95,136,177
5010 data 45,133,96
5020 data 160,3,177,45,133,87,136,177
5030 data 45,133,88,160,10,177,45,133,91,133,78,136,177,45,133,92,133,79,96
5040 data 234,234
5100 data 160,232,162,0,56,165,93,229,87,133,249,165,94,229,88,133,250,16,3,32
5110 data 0,192,140,55,193,142,59,193,160,198,138,208,2,160,230,140,62,193
5200 data 160,232,162,0,56,165,95,229,91,133,253,165,96,229,92,133,254,16,5
5210 data 162,4,32,0,192,140,106,193,142,110,193,134,89,134,90
5215 data 160,198,138,208,2,160,230,140
5220 data 113,193,160,56,169,229,224,0,208,4,160,24,169,101,140,72,193,141,75
5230 data 193,141,81,193,141,87,193,141,93,193,169,234,141,115,193
5450 data 165,249,208,2,165,250,208,27,169,96,141,115,193,24,144,3
5500 data 32,104,193,32,141,193,165,78,197,95,208,244,165,79,197,96,208,248,96
5600 data 230,249,208,2,230,250,230,253,208,2,230,254
5650 data 169,0,133,251,133,252,133,247,133,248,162,33,165,247,56,229,249
5700 data 168,165,248,229,250,144,5,133,248,152,133,247,38,251,38,252,38
5800 data 253,38,254,38,247,38,248,202,208,224
5850 data 165,247,208,4,165,248,240,7,162,0,232,246,250,240,251
5900 data 160,1,165,253,208,6,165,254,208,2,160,0,132,80
6000 data 24,144,11,166,87,232,134,87,224,0,208,2,230,88
6050 data 165,91,133,78,165,92,133,79
6100 data 24,165,89,101,251,133,89,165,90,101,252,133,90,165,91,101,253,133,91
6130 data 165,92,101,254,133,92
6180 data 32,141,193,165,80,240,24,166,78,232,134,78,224,0
6200 data 208,2,230,79,234,165,78,197,91,208,231,165,79,197,92,208,248
6400 data 165,87,197,93,208,175,165,88,197,94,208,248,96
7050 data 165,88,240,12,201,1,240,1,96,165,87,201,64,144,1,96
7100 data 165,79,240,1,96,165,78,201,200,144,1,96
7250 data 165,78,41,7,133,247,165,78,74,74,41,254,168
7300 data 185,235,193,56,229,247,133,247,185,236,193,24,101,88,133,248
7400 data 165,87,41,248,168,165,87,41,7,170,189,227,193,166,2,240,5
7450 data 17,247,145,247,96,73,255,49,247,145,247,96
7500 data 128,64,32,16,8,4,2,1
7600 data 7,254,199,252,135,251,71,250
7700 data 7,249,199,247,135,246,71,245
7800 data 7,244,199,242,135,241,71,240
7900 data 7,239,199,237,135,236,71,235
8000 data 7,234,199,232,135,231,71,230
8100 data 7,229,199,227,135,226,71,225
8200 data 7,224
8598 rem
8599 rem **** plot ****
8600 data 169,254,45,14,220,141,14,220,169,253,37,1,133,1
8700 data 32,43,192,32,141,193
8800 data 169,2,5,1,133,1,169,1,13,14,220,141,14,220,96
8999 rem
9000 rem **** draw ****
9100 data 169,254,45,14,220,141,14,220,169,253,37,1,133,1
9200 data 32,21,192,32,72,192
9300 data 169,2,5,1,133,1,169,1,13,14,220,141,14,220,96
58999 rem
59000 rem *** pulisce schermo ***
60000 data 169,224,133,250,169,0,133,249,162,32,168,145,249,200,208,251,230,250
60100 data 202,208,246,96
60148 rem
60149 rem *** definisce colori ***
60150 data 169,204,133,250,160,0,132,249,165,251,10,10,10,10,133,253,165,252
60200 data 41,15,24,101,253,162,4,145,249,200,208,251,230,250,202,208,246,96
60998 rem
60999 rem *** text mode/map mode ***
61000 data 165,248,240,22,169,32,13,17,208,141,17,208
61050 data 169,56,141,24,208,169,252,45,0,221,141,0,221,96
61100 data 169,223,45,17,208,141,17,208
61150 data 169,21,141,24,208,169,3,13,0,221,141,0,221,96
