# Locomotive BASIC

Il Locomotive BASIC è un interprete BASIC scritto da Locomotive Software per l'uso esclusivo sui computer Amstrad CPC, dov'era preinstallato in ROM. Dal Locomotive BASIC è derivato il Mallard BASIC, presente nel sistema operativo CP/M fornito con l'Amstrad PCW e successivamente nello ZX Spectrum +3 di Amstrad.
È stato pubblicato in 2 versioni: la 1.0, presente solo nel CPC modello 464, e la 1.1, presente in tutti gli altri modelli, compresi quelli della serie Plus.

## Caratteristiche

Il Locomotive BASIC era un interprete semplice ma potente, con dei comandi dedicati alla gestione della grafica come DRAW, PLOT, INK, PAPER FILL(quest'ultimo nella versione 1.1) e per creare schermi multipli o finestre. Nonostante la sua semplicità, surclassava gli interpreti BASIC degli altri computer con alcune peculiarità quali la gestione di interrupt software basati sul tempo: usando i comandi EVERY e AFTER si poteva far eseguire una riga del listato ad intervalli regolari oppure dopo un certo lasso di tempo, rispettivamente.
Forniva inoltre il pieno controllo sul chip sonoro del CPC, un AY-3-8912 dotato di 3 generatori musicali ed 1 generatore di rumore. Questo chip fu usato anche negli ultimi modelli dello ZX Spectrum così come negli Atari ST e nei computer MSX, anche se nessuno degli interpreti BASIC di queste macchine aveva i comandi per gestirlo pienamente come invece faceva il Locomotive BASIC tramite il comando SOUND: questo accettava 7 parametri per definire ogni aspetto del suono da riprodurre, dai canali da usare al volume alle caratteristiche dell'onda sonora.
L'interprete offriva anche comandi per la gestione dei file, dei dischi e delle cassette con comandi come GET, PUT, ERASE, SAVE, LOAD, RUN, MERGE, ma si trattava di un fattore comune a molti BASIC per sistemi ad 8 bit dato che spesso questi interpreti assolvevano anche al compito di sistema operativo del computer.
La gestione della memoria era affidata a comandi quali MEMORY, per impostare la memoria da riservare al BASIC, LOAD/SAVE, per caricare/salvare dei dati direttamente a partire da uno specifico indirizzo RAM, CALL, per chiamare delle routine presenti in particolari punti della memoria del computer, PEEK e POKE per modificare/leggere il contenuto di una cella di RAM.

## I rivali dell'epoca

Se comparato con il Commodore BASIC del Commodore 64, che non aveva comandi per la gestione della grafica e del suono, il Locomotive BASIC permetteva di sfruttare quasi tutte le caratteristiche del computer, compresi gli sprite, la grafica e l'audio, che nel C64 potevano essere gestite solo tramite una complicata sequela di POKE oppure ricorrendo al linguaggio macchina. Gli MSX e lo Spectrum offrivano invece dei BASIC con potenzialità simili e con un set di comandi più o meno completo per la gestione della grafica e del suono.
Le uniche cose non gestibili dal Locomotive BASIC erano la modalità overscan, usata in alcuni giochi, i modi grafici a 27 colori, la riproduzione di audio in sottofondo, e lo scorrimento dell'immagine.
A differenza del Sinclair BASIC o del BASIC del C64, che usavano molte abbreviazioni da tastiera per l'inserimento dei comandi o dei tasti speciali per la selezione di simboli e colori, il Locomotive BASIC richiedeva la digitazione completa di quasi tutte le parole chiave, che erano poi processate dall'interprete e rese in forma di token, usando solo pochissime abbreviazioni, come "?" per PRINT. I programmi potevano essere memorizzati su dischetto o su cassetta, sia in forma binaria che ASCII.