MSX BASIC

MSX BASIC is a dialect of the BASIC programming language developed by Microsoft for MSX home computers. It was derived from Microsoft BASIC version 4.5 and influenced by GW-BASIC, a BASIC interpreter for 16-bit MS-DOS machines. MSX includes support for graphics, audio, and peripherals connected to computers and has been developed to be flexible and expandable.

Features
MSX BASIC was integrated into the ROM of all MSX computers, calling it when they were booted if no other resident ROM software was present on the machine, such as a game cartridge or a disk interface: in these cases the system started either Play on the cartridge or the operating system on the floppy, MSX-DOS.

When the MSX BASIC was started, the BIOS ROM and the BASIC interpreter were mapped to the first 32 kB of Zilog Z80 CPU space, while the remaining 32 kB were mapped into RAM: these were available to the user for the Program and data from 23 to 28 kB, depending on whether or not the controller for the disk (4 kB) and the MSX-DOS kernel (5 kB) are present.

The development environment (IDE) of the MSX BASIC was very similar to the Dartmouth BASIC of the Dartmouth Time Sharing System, ie a command line interface where you enter commands and instructions. If the line entered started with a number, it was considered part of the user's program and stored in RAM; Otherwise, it was considered a command to be executed immediately (direct mode). The IDE had an initial message with free memory content and a reminder of commands associated with the computer's function keys at the bottom.

Versions
Each new version of MSX computers was offered with an updated version of the MSX BASIC. All versions were compatible with the previous ones and provided the features needed to use the new or added hardware on new computers.

MSX BASIC 1.0 / 1.1 / 1.2

 * Integrated on computers MSX 1.0 / 1.1 / 1.2
 * Interpreter size: 16 kB
 * No native support for floppy disks: In the presence of a disk drive, you had to have the  Disk BASIC  'expansion cartridge (which dropped 4 kB to the available RAM);
 * Support for all video modes managed by the video co-processor:
 * text mode 40 x 24 characters
 * mixed text mode 32 x 24 characters with colored characters and support for sprite
 * high resolution graphics 256 x 192 pixels, 16 colors
 * Low resolution graphics mode with 64 & times frames; 44 - 4 x 4 pixels on Screen 2 resolution
 * Full hardware sprite support, including collision management via interrupt
 * Full support for the programmable sound generator AY-3-8910

MSX BASIC 2.0

 * Integrated into MSX 2
 * Interpreter size: 32 kB (the first 16 kB available directly, the second 16 kB accessible through bank switching)
 * Added support for new graphic modes:
 * text mode 80 x 24 characters
 * 256 & times graphics; 212/424 pixels *, 16 colors from a palette of 512
 * Graphics 512 x 212/424 pixels *, 4 colors from a 512 palette
 * 512 & times graphics; 212/424 pixels *, 16 colors from a palette of 512
 * Graphics Mode 256 x 212/424 pixels*, 256 colors (no palette)
 * 424 lines were only available in interlaced mode


 * Added support for multicolored sprite (16 colors)
 * Added hardware accelerated hardware support (copy, fill, blitter, etc.)
 * Added support to be able to use the first 32 kB of RAM of the computer (not directly visible because it was mapped on BIOS ROMs and BASIC interpreter) as a RAM disk from limited use (it could only contain certain types Of files).

MSX BASIC 3.0

 * Integrated on computers MSX 2+ (plus)
 * Interpreter size: 32 kB (the first 16 kB available directly, the second 16 kB accessible through bank switching)
 * Added the  command to manage through the BASIC soft video slider of the video
 * Added support for new graphic modes:
 * Graphics Mode 256 x 212/424 pixels with 12499 Codes YJK * encoding and 16 colors from a palette of 512 in RGB encoding (interlaced mode) (+)
 * Graphics 256 x 212/424 pixels with 12499 Codes YJK * encoding and 16 colors from a palette of 512 in RGB encoding (+)
 * Graphic Mode 256 x 212/424 pixels with 19268 Codes YJK *
 * color modes and coding allowed by the new graphics chip