# MSX BASIC

MSX BASIC es un dialecto del lenguaje de programación BASIC. Se trata de una versión ampliada del Microsoft Standard BASIC versión 4.5, e incluye soporte para gráficos, música y varios periféricos conectados a los ordenadores personales MSX. En general, el MSX BASIC ha sido diseñado para seguir el GW-BASIC, que es uno de los BASIC estándares corriendo en ordenadores de 16 bits. Durante la creación del MSX BASIC, se realizó un gran esfuerzo para que el sistema fuese lo más flexible y ampliable posible.

## Distribución

MSX BASIC viene incluido en la ROM de todos los ordenadores MSX. Al iniciar el sistema, MSX BASIC es invocado, causando la exhibición de una línea de órdenes, a no ser que otro software colocado en la memoria ROM va asumir el control (que es el caso típico de los cartuchos y las interfaces de disco, el último haciendo que la línea de comandos del MSX-DOS sea exhibida si hay un disquete que contiene los archivos de sistema del DOS).
Cuando MSX BASIC es invocado, el código ROM BIOS y el propio intérprete de BASIC son visibles en los 32 KiB inferiores del espacio de direccionamiento del Z80. Los 32 KiB superiores son destinados a la memoria RAM, de los cuales unos 23 a 28 KiB están disponibles para el código y datos del BASIC (la cantidad exacta depende de la presencia del controlador de disco y de la versión del kernel de MSX-DOS).

## Entorno de desarrollo

El entorno de desarrollo del MSX BASIC es muy similar al del Dartmouth Time Sharing System asociado al Dartmouth BASIC. Tiene una línea de comandos basada en un entorno de desarrollo integrado (IDE) del sistema; todas las líneas de programa deben estar numeradas, todas las líneas no numeradas se consideran como comandos en modo directo (es decir, que se ejecutan inmediatamente). La interfaz de usuario es casi por completo la línea de comandos, a excepción de los accesos directos a las teclas de función en la parte inferior, y un aviso de copyright inicial en la parte superior de la pantalla.

## Las versiones de MSX BASIC

A cada nueva versión del ordenador MSX fue incluida una versión actualizada del MSX BASIC. Todas las versiones son retrocompatibles y proporcionan nuevas capacidades para explorar a fondo el nuevo hardware extendido y que se encuentran en los nuevos ordenadores MSX.

### MSX BASIC 1.0 / 1.1 / 1.2

* Viene incluido con los ordenadores MSX 1
* 16 KiB de tamaño
* No hay soporte nativo para disquete, que requiere la extensión de cartucho Disk BASIC (4 KiB arriba)
* Soporte para todos los modos de pantalla disponibles:
** Screen 0 (modo texto de 40 × 24 caracteres)
** Screen 1 (modo texto mixto de 32 × 24 caracteres, sprites y caracteres personalizados coloridos)
** Screen 2 (modo de alta resolución gráfica de 256 × 192 píxeles, 16 colores)
** Screen 3 (modo de baja resolución gráfica 64 × 48 - bloques de 4×4 píxeles sobre la resolución de la «screen 2»)
* Soporte completo para los sprites de hardware y la detección automática de colisiones por interrupción
* Soporte completo para el generador de sonido programable (PSG) General Instrument AY-3-8910

### MSX BASIC 2.0

* Incluido en los ordenadores MSX 2
* 32 KiB de tamaño (primeros 16 KiB disponibles directamente, los segundos 16 KiB en otro slot y tienen que ser paginados de entrada/salida para uso)
* Añadido soporte para nuevos modos de pantalla disponibles (Nota: las 424 líneas sólo se pueden visualizar en modo entrelazado):
** Screen 0 Actualizada (modo texto 80 × 24)
** Screen 4 (modo patrones gráficos 256 × 192 píxeles, 16 colores de 512)
** Screen 5 (modo gráfico 256 × 212/424 píxeles, 16 colores de 512)
** Screen 6 (modo gráfico 512 × 212/424 píxeles, 4 colores de 512)
** Screen 7 (modo gráfico 512 × 212/424 píxeles, 16 colores de 512)
** Screen 8 (modo gráfico 256 × 212/424 píxeles, 256 colores, sin paleta)
* Añadido soporte para sprites multicolores (16 colores)
* Añadido soporte para funciones de gráficos acelerados por hardware (copiar, rellenar con color, blittering, etc)
* Añadido soporte para uso de los 32 KiB de la RAM baja del ordenador (no directamente visibles porque el BIOS y el intérprete BASIC apodéranse del espacio de direcciones) como un disco RAM limitado (sólo ciertos tipos de archivos pueden ser guardados).

### MSX BASIC 3.0

* Incluido en los ordenadores MSX 2+
* 32 KiB de tamaño (primeros 16 KiB disponibles directamente, los segundos 16 KiB en otro slot y tienen que ser paginados de entrada/salida para uso)
* Añadido comando SET SCROLL al BASIC, para desplazamiento suave basado en hardware
* Añadido soporte para nuevos modos de pantalla disponibles:
** Screen 10 (modo gráfico de 256 × 212/424 píxeles, 12499 colores YJK (interpolación de píxeles) a la vez + 16 colores de 512 RGB en ML)
** Screen 11 (graphic mode 256 × 212/424 píxeles, 12499 YJK a la vez + 16 colores de 512 RGB)
** Screen 12 (graphic mode 256 × 212/424 píxeles, 19268 YJK a la vez)

### MSX BASIC 4.0

* Incluido con los MSX Turbo R (sólo lanzado en Japón)
* Añadido soporte para los modos de pantalla de 512 × 512 (16 colores de 512) y 256 × 212 (19268 colores)
* Añadido comando _PAUSE al BASIC, para crear retrasos independientes de la CPU y del reloj
* Añadido comandos adicionales para el dispositivo PCM (_PCMPLAY, _PCMREC)

### MSX BASIC 4.1

* Incluido con el modelo Panasonic FS-A1GT (MSX Turbo R)
* Añadidas extensiones MIDI

### Palabras reservadas
#### MSX BASIC 1.0

| ABS AND AS # ASC ATN AUTO BASE BEEP BIN$ BLOAD BSAVE CALL CDBL CHR$ CINT CIRCLE CLEAR CLOAD CLOAD? CLOSE # CLS COLOR CONT COS CSAVE CSNG CSRLIN DATA DEF FN DEFDBL DEFINT DEFSNG DEFSTR DEFUSR DELETE DIM DRAW END EOF ERASE ERR ERL ERROR EQV EXP FIX FOR TO STEP FRE GOSUB GOTO HEX$ IF THEN ELSE INKEY$ IMP INP INPUT INPUT$ INSTR INT INTERVAL ON/OFF/STOP KEY KEY LIST KEY ON/OFF KEY ON/OFF/STOP FOR TO STEP NEXT LEFT$ LEN LET LINE LINE INPUT LIST LLIST LOAD LOCATE LOG | LPOS LPRINT MAXFILES MERGE MID$ MOD MOTOR NEW NOT OCT$ ON ERROR GOTO ON GOSUB ON GOTO ON INTERVAL GOSUB ON KEY GOSUB ON SPRITE GOSUB ON STOP GOSUB ON STRIG GOSUB OPEN OR OUT PAD PAINT PDL PEEK PLAY PLAY POINT POKE POS PRESET PRINT PSET PUT SPRITE READ REM RENUM RESTORE RESUME RETURN RIGHT$ RND RUN SAVE SCREEN SGN SIN SOUND SPACE$ SPC SPRITE ON/OFF/STOP SPRITE$ SQR STICK STOP STOP ON/OFF/STOP STRIG STRIG ON/OFF/STOP STR$ STRING$ SWAP TAB TAN TIME TROFF TRON USR VAL VARPTR VDP VPEEK VPOKE WAIT WIDTH XOR |

#### MSX BASIC 2.0

| COLOR SPRITE COLOR SPRITE$ COLOR= COLOR=RESTORE COLOR=NEW CALL MEMINI CALL MKILL CALL MNAME CALL MFILES SET PAGE SET VIDEO | SET ADJUST SET BEEP SET TITLE SET PASSWORD SET PROMPT SET SCREEN SET DATE SET TIME GET DATE GET TIME |

#### MSX BASIC 3.0

* SET SCROLL

#### MSX BASIC 4.0

* CALL PAUSE
* CALL PCMPLAY
* CALL PCMREC

## Extensiones del MSX BASIC

Desde que MSX BASIC fue destinado a ser expandible desde su inicio, era posible escribir módulos adicionales con bastante facilidad. Soporte para hardware específico se añadió comúnmente por medio de cartuchos de expansión, que también han servido como interfaz para el hardware en cuestión. El MSX Disk-BASIC es un ejemplo, incluido en el cartucho que proporciona la interfaz de hardware para las unidades de disco, que agrega comandos para acceder a las disqueteras.
Explorando la extensibilidad del MSX BASIC, se puede ampliarlo únicamente a través de software. Una extensión muy interesante para el MSX BASIC 1.0/1.1 fue la Screen IV, un ajuste del MSX BASIC añadiendo el modo texto/gráfico mixto Screen 4 (de ahí su nombre de Screen IV) con caracteres 64 × 24 y resolución gráfica de la Screen 2 (256 × 192 píxeles, 16 colores).