Amstrad CPC, come si programmava in Basic

Cenno Storico


Negli anni 80
, con molte probabilità molti, moltissimi di noi avevano il Commodore 64 o lo ZX Spectrum (per citarne alcuni).
Forse, pochi avevano l‘Amstrad CPC ben più conosciuto in Francia, Spagna ed Inghilterra.
Ricordo che ricevetti in regalo il mio Amstrad CPC 6128 nel lontano 1989 mentre la quasi totalità dei miei coetanei, possedeva un computer Commodore.

Non potendo scambiare giochi (dovendoli per forza di cosa acquistare), mi cimentai nella programmazione con il Locomotive Basic fornito assieme all’Amstrad.
Il CP/M lo scoprii più avanti e sicuramente il nostro Francesco Sblendorio ne sa molto più di me 🙂

Oggi, vorrei iniziare con voi un percorso “didattico” che ci porterà allo sviluppo di un gioco attraverso questa magnifica macchina.
Motivo? Il suo Basic per l’epoca era molto avanzato e potente avendo nel suo set di istruzioni, comandi per la gestione della grafica, del suono e delle periferiche.

Come alcuni sanno, il basic non veniva compilato ma interpretato (lo spiegheremo più avanti) il che rendeva, in molte occasioni tutto il sistema molto lento.
Immaginate di dialogare con un amico di un’altra lingua e dover aspettare che un altro amico finisca di tradurvi. Ecco il concetto è simile.

Ogni riga di istruzioni richiede di essere definita da un numero progressivo a differenza dei linguaggi moderni.
così un semplice:

printf (“Hello world!\n”);

diventa:

10 print “Hello world”

Uno dei classici programmini che veniva realizzato da tutti (su tutte le piattaforme) era costituito da due righe con due semplicissimi comandi:

10 print “Ciao”
20 goto 10

amstrad-cpc-locomotive-basic-print-goto

che, se eseguito attraverso il comando RUN, dava luogo ad una ripetizione della parola Ciao all’infinito.

amstrad-cpc-locomotive-basic-print-goto2

Il semplice programma non fa altro che stampare a video la parola “Ciao” attraverso il comando Print e successivamente, attraverso il comando Goto, torna alla linea 10.
E così all’infinito finchè non veniva premuto un tasto di break; su C64 il Run/Stop e su Amstrad, ESC.

Passiamo adesso a qualcosa di più “complesso”.
Proviamo a disegnare un oggetto a schermo.

10 MODE 0:CLS:INK 0,0:BORDER 0
20 SYMBOL AFTER 245
30 SYMBOL 245,&X001111,&X0111111,&X11010111,&X11111111,&X11111111,&X11000011,&X0110011,&X001111
40 PEN 3:PRINT CHR$(245):PEN 5

amstrad-cpc-locomotive-basic-list

Alla linea 10 cosa facciamo:
– impostiamo la modalità video 0 del CPC (bassa risoluzione) col comando MODE
– cancelliamo lo schermo con il comando CLS (clear screen)
– coloriamo di nero lo schermo centrale col comando INK 0,0
– ed anche il bordo lo facciamo diventare nero col comando BORDER

Alla linea 20 diciamo al CPC di modificare i caratteri partendo dal 245 con il comando SYMBOL AFTER.
E’ possibile modificare tutto il set di caratteri ma per adesso, ci limitiamo a quelli “speciali”.

Alla linea 30 ridefiniamo il carattere 245, attraverso 8 parametri che definiscono le righe verticali del carattere.
E’ possibile, chiaramente, inserire valori numeri o, come nel mio caso, dirattamente binari per semplicità.

Se mettessimo uno sotto l’altro tutti i parametri avremmo questo:
&X001111
&X0111111
&X11010111
&X11111111
&X11111111
&X11000011
&X0110011
&X001111

come potete notare è una faccina che ride 😀

Alla linea 40 definiamo:
– il colore di penna per il carattere con il comando PEN seguito da un valore che va da 0 a 15 (a seconda della risoluzione)
– stampiamo con il comando PRINT (ricordate prima “ciao”?) CHR$ il carattere ascii 255, ridefinito prima.
– riportiamo la penna con il colore precedente.

Una volta digitato il listato scrivete RUN e date INVIO per avviare il programma.
Avrete una cosa simile.

amstrad-cpc-locomotive-basic

Vedi il prossimo capitolo, dove proveremo a muovere la faccina sorridente per lo schermo.

Per fare le prove di programmazione, potere usare sotto Windows l’emulatore WinAPE oppure sotto Mac JavaCPC

Seguiteci come sempre anche sul gruppo Facebook e a presto per la prossima guida!
Ciao!!!

Fabrizio Radica

Fabrizio Radica nasce nel '75. Appassionato di Computers, Videogames, Musica ed Arte. Ormai ha fatto pace con se stesso ammettendo di essere un Nerd :D

Potrebbero interessarti anche...