# MSX BASIC

MSX BASIC is een dialect van de programmeertaal BASIC. Het is een uitgebreide versie van Microsoft Standard BASIC Version 4.5, en omvat ondersteuning voor grafische weergaven, muziek, en diverse computerrandapparatuur die verbonden kunnen worden met MSX homecomputers. MSX BASIC is ontworpen om GW-BASIC te volgen, dat een van de standaard BASIC voor 16-bit computersystemen is. Tijdens de ontwikkeling van MSX BASIC was een van de belangrijkste doelstellingen om het systeem zo flexibel en uitbreidbaar mogelijk te maken.

## Distributie

MSX BASIC was verwerkt in het ROM van alle MSX-computers. Bij de systeemopstart wordt MSX BASIC automatisch geladen, waardoor de opdrachtprompt wordt weergegeven, tenzij andere software in het ROM de controle overneemt (dit is het typische geval van cartridges en diskette-interfaces, waarbij de laatste een MSX-DOS opdrachtprompt wordt weergegeven indien er een diskette aanwezig is die de DOS-systeembestanden bevat).
Wanneer MSX BASIC wordt geladen, is de ROM-code voor het BIOS en van de BASIC-interpreter zelf zichtbaar in de lagere 32K van de Z80 geheugenadresseringsruimte. De hogere 32K worden toegewezen aan het RAM, waarvan ongeveer 23K-28K beschikbaar zijn voor BASIC-code en gegevens (de precieze hoeveelheid hangt samen met de aanwezigheid van een schijfcontroller en van de MSX-DOS-kernelversie).

## MSX BASIC-versies

Elke nieuwe MSX-computer werd geleverd met een bijgewerkte versie van MSX BASIC. Alle versies zijn achterwaarts compatibel en voorzien van nieuwe mogelijkheden om de nieuwe en uitgebreide hardware van nieuwere MSX-computers volledig te ondersteunen.

### MSX BASIC 1.0 / 1.1

* meegeleverd met MSX 1.0- / 1.1-computers
* grootte: 16 kB
* geen standaardondersteuning van diskettestations, hiervoor is een optionele Disk BASIC-cartridgeuitbreiding benodigd (4 kB spelingsruimte)
* ondersteuning voor alle beschikbare schermmodi:
** Screen 0 (tekstmodus 40 × 24 karakters)
** Screen 1 (mixed tekstmodus 32 × 24 karakters, sprites en gekleurde custom karakters)
** Screen 2 (hoge resolutie grafische weergavemodus 256 × 192 beeldpunten, 16 kleuren)
** Screen 3 (lage resolutie grafische weergavemodus 64 × 48 - blokken van 4 × 4 beeldpunten over de screen 2-schermresolutie)
* volledige ondersteuning voor hardware sprites en interruptgestuurde automatische botsingsdetectie (collision detection)
* volledige ondersteuning van de General Instrument AY-3-8910 Programmable Sound Generator (PSG)

### MSX BASIC 2.0 / 2.1

* meegeleverd met MSX 2.0 / 2.1-computers
* grootte: 16 kB
* toegevoegde ondersteuning voor alle nieuwe beschikbare schermmodi (Opmerking: de 424 lijnen kunnen alleen in interlace-modus worden weergegeven):
** bijgewerkte Screen 0 (tekstmodus 80 × 24)
** Screen 5 (grafische weergavemodus 256 × 212/424 beeldpunten, 16 kleuren uit een palet van 512)
** Screen 6 (grafische weergavemodus 512 × 212/424 beeldpunten, 4 kleuren uit een palet van 512)
** Screen 7 (grafische weergavemodus 512 × 212/424 beeldpunten, 16 kleuren uit een palet van 512)
** Screen 8 (grafische weergavemodus 256 × 212/424 beeldpunten, 256 kleuren, geen kleurenpalet)
* toegevoegde ondersteuning voor meerkleurige sprites (16 kleuren)
* toegevoegde ondersteuning voor hardwarematige versnelling van grafische functies (copy, fill, blittering, enz.)
* toegevoegde ondersteuning om het lagere 32K RAM van de computer te gebruiken (niet direct zichtbaar omdat de BIOS en BASIC-interpreter ROMs de geheugenadresseringsruimte innemen) als een beperkte RAM-disk (slechts een beperkt aantal bestandstypen konden worden opgeslagen).

### MSX BASIC 3.0

* meegeleverd met MSX 2.0+ (MSX2+, alleen uitgebracht in Japan)
* grootte: 16 kB
* toegevoegd commando SET SCROLL voor een vloeiende, hardwaregebaseerde scrolling in BASIC
* toegevoegde ondersteuning voor alle nieuwe beschikbare schermmodi:
** Screen 10 (grafische weergavemodus 256 × 212/424 beeldpunten, 12499 YJK gelijktijdig + 16 kleuren uit een 512 RGB-kleurenpalet in ML)
** Screen 11 (grafische weergavemodus 256 × 212/424 beeldpunten, 12499 YJK gelijktijdig + 16 kleuren uit een 512 RGB-kleurenpalet)
** Screen 12 (grafische weergavemodus 256 x 212/424 beeldpunten, 19268 YJK gelijktijdig)

### MSX BASIC 4.0

* meegeleverd met Panasonic FS-A1ST MSX Turbo R (alleen uitgebracht in Japan)
* toegevoegde ondersteuning voor schermmodi van 512 × 512 (16 kleuren uit een palet van 512) en 256 × 212 (19268 kleuren)
* toegevoegd _PAUSE-commando om vertragingen in BASIC onafhankelijk te maken van de aanwezige processor en klok
* toegevoegde extra commando's voor het PCM-geluidsweergaveapparaat (_PCMPLAY, _PCMREC)

### MSX BASIC 4.1

* meegeleverd met de Panasonic FS-A1GT MSX Turbo R-computer
* toegevoegde MIDI-uitbreidingen

## Extensies

Omdat MSX BASIC was gericht op uitbreiding, werd het mogelijk om uitbreidingsmodules te ontwikkelen. Ondersteuning voor specifieke hardware werd doorgaans via cartridges uitgevoerd, die tevens werkten als de interface. MSX Disk-BASIC is een voorbeeld, dat gebundeld kwam in een cartridge voor diskettestations om deze hardware te ondersteunen, en voorzag in extra instructies binnen MSX BASIC.