Il basic 7.0 implementato di default sul Commodore 128 consentiva egregie soluzioni applicative; non da ultimo la possibilità di creare videogames con la ridefinizione del set di caratteri. Di cosa si tratta? "Semplicemente" di far corrispondere delle immagini create ad arte ai comuni caratteri della tastiera. Una lettera A può così diventare un omino stilizzato, una B la ruota di una macchina e così via.... Un simpatico esempio è quello di seguito che produce a schermo una immagine del classico pac-man che apre e chiude la bocca.

10 FAST

20 FOR R=53248 TO 57344

30 BANK 14

40 E=PEEK(R)

50 BANK 15

60 POKE R-45056,E

70 NEXT

80 BANK 15

90 POKE 2604,24

100 FOR I=8192 TO 8255

110 READ X: POKE I,X: NEXT I

120 DATA 7,15,31,60,56,124,127,127

130 DATA 248,252,254,255,127,252,240,192

140 DATA 127,127,127,63,63,31,15,7

150 DATA 240,252,252,255,255,254,252,248

160 DATA 7,15,31,60,56,124,127,127

170 DATA 248,252,254,255,127,255,255,255

180 DATA 127,127,127,63,63,31,15,7

190 DATA 255,255,255,255,255,254,252,248

200 SLOW

210 PRINT CHR$(147)

220 POKE 1024,0:POKE 1025,1: POKE 1064,2: POKE 1065,3

230 FOR I=1 TO 150:NEXT I

240 POKE 1024,4: POKE 1025,5: POKE 1064,6: POKE 1065,7

250 FOR I=1 TO 150:NEXT I

260 GOTO 220

 

Il ciclo è infinito e per terminare occorre premere RUN/STOP. Da notare l'impiego delle istruzioni FAST e SLOW. L'istruzione FAST accelera la velocità del clock a 2 Mhz (rispetto all' 1 originale), SLOW torna nella condizione iniziale (1 Mhz di clock). L'istruzione FAST è incompatibile con lo schermo a 40 colonne pertanto produce uno schermo di colore uniforme e non è utilizzabile per accelerare la grafica. Utile però nel velocizzare le operazioni di calcolo. La ridefinizione del set dei caratteri che utilizza questo esempio basic difatti senza la combinazione FAST-SLOW richiede un tempo di elaborazione di 1 minuto e 30 secondi. Tale tempo di dimezza (45 secondi) raddoppiando nel momento di elaborazione la velocità del processore.

 

Ed ecco di seguito il risultato a schermo:

 

worm per sitoControlla un serpente che cresce mangiando bonus....attenzione però ai bordi del campo, agli antibonus ed a non mordersi la coda!!! Tutto da scoprire...


Serpentone

 

10 dim x(201), y(201)
20 e=0:tt=0
30 p=1:q=1:t=0:e=e+10:if e>200 then e=200
40 dx=0:dy=-1:x(1)=17:y(1)=12:b=0
50 print chr$(147):poke53280,5:poke53281,5:print chr$(144)
60 for i=1 to 37
70 poke 214,1:print:print tab(i);chr$(166);
80 poke 214,23:print:print tab(i);chr$(166);
90 if i>23 then 110
100 poke 214,I:print: print " ";chr$(166);tab(37);chr$(166);
110 next i
120 for i=1 to e
130 x=1146+int(rnd(1)*35)+int(rnd(1)*21)*40
140 if peek(x)<>32 then 130
150 if i>e/2 then poke x,88:poke 54272+x,4:goto 170
160 poke x,83:poke54272+x,2
170 next i
180 poke214,0:print:print   PUNTI:";tab(27);"BONUS:"
190 poke 1024+x(p)+y(p)*40,81:poke55296+x(p)+y(p)*40,0
200 get a$:if a$="" then 190
210 goto 230
220 get d$:if d$="" then 300
230 if dy=0 then 270
240 if d$="q" then dx=dy:goto 260
250 dx=-dy
260 dy=0: goto 300
270 if d$="p" then dy=dx:goto 290
280 dy=-dx
290 dx=0
300 ap=p:p=p+1:if p=202 then p=1
310 x(p)=x(ap)+dx:y(p)=y(ap)+dy
320 if peek(1024+x(p)+y(p)*40)<>32 then 370
330 poke 1024+x(q)+y(q)*40,32
340 q=q+1:if q=202 then q=1
350 poke 1024+x(p)+y(p)*40,81:poke55296+x(p)+y(p)*40,0
360 goto 220
370 a=peek(1024+x(p)+y(p)*40)
380 if a=102 or a=81 then 460
390 if a=83 then b=b+1:goto 420
400 if b=0 then 460
410 b=b-1
420 t=t+1:tt=tt+1
430 poke 214,0:print:print tab(10);tt;tab(33);b;chr$(125)
440 if t=e then 30
450 goto 350
460 poke214,0:print:print tab(10);tt;tab(33);chr$(125)
470 poke 1024+x(q)+y(q)*40,32
480 q=q+1:if q=202 then q=1
490 if q<>p then 470
500 get a$:if a$="" then 500
510 goto 20

 

c65 retrocommodore
 
Le capacità grafiche del Commodore 65 risultano assai superiori rispetto al suo predecessore Commodore 64. Sorprendente è anche la facilità con la quale è possibile accedere alle schermate grafiche mediante i potenti comandi del Basic 10.0 . L'esempio che segue disegna su uno schermo grafico 320x200 una semplice animazione con comandi grafici. Un cerchio di colore rosso si muove da sinistra verso destra sullo schermo.
 
10 GRAPHIC CLR
20 SCREEN DEF 0,0,0,2
30 SCREEN OPEN 0
40 PALETTE 0,1,10,0,0
50 SCREEN SET 0,0
60 SCNCLR 0
70 FOR I= 0 TO 100
80 PEN 0,1
90 CIRCLE 160+I,100,5
100 PEN 0,0
110 CIRCLE 160+I,100,5
120 NEXT I
 

 


 


commodore buttonProgramma creato da Carlo Pastore

Cari Amici, ecco un esempio di utilizzo degli interrupt per la riprogrammazione della funzione del tasto restore e di altri tasti del C64.....

Buon divertimento!!

1 clr: print chr$ (147): poke 53280,0 : poke 53281,0 : x = 49152 : b= 49273
10 for i = x to b: read d : poke i,d : next : poke 775,167 : sys x : end
15 data 169,1,141,134,2
20 data 169,16,141,24,3,169,192,141,25,3,96,72,169,1,141,2,134,169,0,141,32
30 data 208,141,33,208,169,127,141,0,220,173,1,220,201,127,240,11,201,239,240,27
35 data 201,253,240,45
40 data 76,17,192,169,14,141,134,2,169,254,141,32,208,169,246,141,33,208
41 data 234,234,76,252,252,169,254,141,32
50 data 208,169,246,141,33,208,169,1,141,134,2,169,0,141,198,0,104,64
55 data 169,71,141,24,3,169,254,141,25,3,169,246,141,33,208,169,254,141,33,208
56 data 169,14,141,134,2,104,64

restore : attiva la routine
spazio : disattiva
run/stop : resetta il c64
? :  elimina l'effetto di restore