Deriva dal Microsoft BASIC versione 4.5 anche se è stato influenzato dal GW-BASIC, un interprete BASIC per le macchine MS-DOS a 16 bit. L'MSX include il supporto per la gestione della grafica, dell'audio e delle periferiche collegate ai computer ed è stato sviluppato per essere flessibile ed espandibile.
Caratteristiche
L'MSX BASIC era integrato nella ROM di tutti i computer MSX, che lo richiamavano al loro avvio se nessun altro software residente su ROM era presente sulla macchina, come una cartuccia giochi o un'interfacciadischi: in questi casi il sistema avviava o il gioco presente sulla cartuccia oppure il sistema operativo presente sul floppy, l'MSX-DOS.
Quando l'MSX BASIC veniva avviato, la ROM del BIOS e dell'interprete BASIC veniva mappata nei primi 32 kB dello spazio indirizzi della CPUZilog Z80 mentre i restanti 32 kB venivano mappati in RAM: di questi, erano disponibili all'utente per il programma ed i dati dai 23 ai 28 kB, a seconda della presenza o meno del controller per il disco (4 kB) e del kernel dell'MSX-DOS (5 kB).
L'ambiente di sviluppo (IDE) dell'MSX BASIC era molto simile a quello del Dartmouth BASIC del Dartmouth Time Sharing System, vale a dire un'interfaccia a riga di comando in cui inserire i comandi e le istruzioni. Se la riga immessa iniziava con un numero, veniva considerata facente parte del programma dell'utente e memorizzata in RAM; in caso contrario, era considerata un comando da eseguire immediatamente (modalità diretta). L'IDE presentava un messaggio iniziale con il contenuto di memoria libera ed in basso un promemoria dei comandi associati ai tasti funzione del computer.
Versioni
Ogni nuova versione dei computer MSX veniva offerta con una versione aggiornata dell'MSX BASIC. Tutte le versioni erano compatibili con le precedenti e fornivano le caratteristiche necessarie all'utilizzo dell'hardware rinnovato o aggiunto presente nei nuovi computer.
Nessun supporto nativo ai dischi floppy: in presenza di un'unità dischi era necessario dotarsi della cartuccia di espansione "Disk BASIC" (che sottraeva 4 kB alla RAM disponibile);
Supporto per tutte le modalità grafiche gestibili dal coprocessore video:
Screen 0: modalità testuale 40×24 caratteri
Screen 1: modalità testuale mista 32×24 caratteri con caratteri colorati e supporto agli sprite
Screen 2: modalità grafica ad alta risoluzione 256×192 pixel, 16 colori
Screen 3: modalità grafica a bassa risoluzione con blocchi grafici di 64×44 - 4×4 pixel sulla risoluzione dello Screen 2
Pieno supporto agli sprite hardware, compresa la gestione delle collisioni tramite interrupt
*: le grafiche a 424 linee erano disponibili solo in modalità interlacciata
Aggiunto il supporto per gli sprite multicolore (16 colori)
Aggiunto il supporto per le funzioni grafiche accelerate in hardware (copia, riempimento, blitter, ecc.)
Aggiunto il supporto per poter usare i primi 32 kB di RAM del computer (non direttamente visibili perché mappati sulle ROM del BIOS e dell'interprete BASIC) come un RAM disk dall'utilizzo limitato (poteva contenere solo alcuni determinati tipi di file).
Dimensione dell'interprete: 32 kB (i primi 16 kB direttamente disponibili, i secondi 16 kB accessibili tramite bank switching)
Aggiunto il comando SET SCROLL per gestire tramite BASIC lo scorrimento hardware dolce del video
Aggiunto il supporto per le nuove modalità grafiche:
Screen 10: modalità grafica 256×212/424 pixel con 12499 tonalità in codifica YJK* e 16 colori da una tavolozza di 512 in codifica RGB (modalità interlacciata)+
Screen 11: modalità grafica 256×212/424 pixel con 12499 tonalità in codifica YJK* e 16 colori da una tavolozza di 512 in codifica RGB+
Screen 12: modalità grafica 256×212/424 pixel con 19268 tonalità in codifica YJK*
*: modalità e codifiche colori permesse dal nuovo chip grafico Yamaha V9958 +: tecnicamente identiche, l'MSX BASIC trattava queste 2 modalità come differenti, usando lo Screen 11 per correggere il problema della sbavatura del colore nelle righe verticali mediante l'impiego dei colori RGB[1]
Grazie al fatto che l'MSX BASIC fu progettato per essere espandibile, fu possibile realizzare delle estensioni al linguaggio in maniera relativamente facile. Il supporto per uno specifico hardware era aggiunto tramite l'utilizzo di cartucce di espansione, che servivano anche come interfaccia per l'hardware in questione. Il Disk BASIC ne è un esempio: integrato nella cartuccia che forniva l'interfaccia per collegare le unità dischi, aggiungeva dei comandi per accedere alle stesse.
Era possibile espandere l'MSX BASIC anche via software: un'estensione alle versioni 1.0/1.1 era "Screen IV", una modifica che aggiungeva la modalità mista grafica/testuale Screen 4 (da cui il nome) con 64×24 caratteri e la risoluzione Screen 2 per la grafica (256×192 pixel, 16 colori).
Esempio di codice
Quello che segue è un esempio di codice scritto in MSX BASIC:[2]