MSX#

MSX Specifications#

Lifespan

1983-1995

Media

ROM cartridge, cassette tape, floppy disk

CPU

Zilog Z80A

Memory

16K video RAM, 8K-64K main RAM

Controllers

two joystick controllers, keyboard

Best-selling game

Aleste (pack-in in some regions)

History#

MSX was a standardized home computer architecture, announced by Microsoft and ASCII Corporation in Japan in 1983. The name MSX originally stood for “MicroSoft eXtended” or “Machines with Software eXchangeability.” Unlike proprietary systems, MSX was an open standard that allowed different manufacturers to produce compatible machines.

The MSX standard was primarily promoted in Japan, Europe, and Brazil, with limited success in North America. Major manufacturers included Yamaha, Sony, Panasonic, Philips, and many others, each producing their own MSX-compatible computers. This approach allowed for healthy competition while maintaining software compatibility across different brands.

MSX computers were positioned as affordable home computers that could run games, educational software, and productivity applications. The built-in BASIC interpreter made programming accessible to users, while the cartridge slot allowed for easy game loading.

The original MSX was followed by MSX2 in 1985, MSX2+ in 1988, and MSX turbo R in 1990, each adding enhanced capabilities. While the platform was eventually superseded by more advanced systems, MSX maintained a dedicated following, particularly in Japan and Europe.

Hardware#

The MSX standard defined a common hardware specification that all compatible machines had to meet:

  • CPU : Zilog Z80A at 3.58 MHz

  • Video : Texas Instruments TMS9918A Video Display Controller (VDP)

  • Sound : General Instrument AY-3-8910 Programmable Sound Generator

  • Video RAM : 16 KB

  • Main RAM : 8 KB minimum (most machines had 32-64 KB)

  • ROM BIOS : 32 KB

  • Cartridge slots : 2 slots for ROM cartridges

MSX computers also featured a built-in keyboard and could connect to television sets or monitors for display. Most machines included cassette tape interfaces for data storage, with many later models adding floppy disk drives.

The MSX BIOS contained Microsoft MSX-BASIC, providing a programming environment and disk operating system routines. This standardized BIOS ensured software compatibility across different MSX machines from various manufacturers.

Video#

The MSX video system uses the same TMS-9918A Video Display Controller found in the ColecoVision and early Sega consoles. This chip generates a 256×192 display at 60 FPS (50 FPS for PAL systems).

The VDP supports several video modes:

  • Screen 0 (Text) : 40 columns by 24 rows of text. Each character is 6x8 pixels with two colors (foreground and background).

  • Screen 1 (Graphics I) : 32 columns by 24 rows of characters. Each 8x8 character can have its own foreground and background colors.

  • Screen 2 (Graphics II) : High-resolution mode with 32×24 character cells, but each cell can be uniquely defined with its own pattern and colors.

  • Screen 3 (Multicolor) : Low-resolution 64×48 mode with 4×4 pixel blocks, each block can be one of 16 colors.

The MSX color palette consists of 16 fixed colors:

Index

Color

0

Transparent

1

Black

2

Medium Green

3

Light Green

4

Dark Blue

5

Light Blue

6

Dark Red

7

Cyan

8

Medium Red

9

Light Red

10

Dark Yellow

11

Light Yellow

12

Dark Green

13

Magenta

14

Gray

15

White

The system supports up to 32 sprites (16×16 or 8×8 pixels), with a maximum of 4 sprites per scanline. Each sprite can use any color from the palette, with transparent pixels allowing background graphics to show through.

Sound#

MSX computers use the General Instrument AY-3-8910 Programmable Sound Generator (PSG). This chip was also used in many arcade games and home computers of the era.

The AY-3-8910 provides:

  • 3 square wave tone generators with 12-bit frequency control

  • 1 noise generator with 5-bit frequency control

  • 6-bit amplitude control per channel

  • Two 8-bit I/O ports (often used for joystick input)

The sound capabilities allow for music and sound effects, with each channel capable of producing tones from very low bass notes to high frequencies. The noise generator can create percussion effects and sound effects like explosions or wind.

Controllers#

MSX systems typically included two joystick ports supporting digital joysticks with one or two fire buttons. The built-in keyboard provided full computer functionality for typing and programming.

Many MSX games were designed to work with either keyboard or joystick input, giving users flexibility in how they played. Some specialized controllers were also available, including paddles for certain games.

Memory Map#

The MSX memory map is more complex than simple game consoles:

Start

End

Description

Read/Write?

$0000

$7FFF

Cartridge ROM (Slot 1)

read

$8000

$BFFF

Cartridge ROM (Slot 2)

read

$C000

$FFFF

Main RAM

read/write

$0000

$7FFF

BIOS ROM (when no cart)

read

The MSX uses a slot system that allows different memory configurations. The BIOS ROM occupies the lower memory when no cartridge is present, but cartridges can override this space when inserted.

I/O ports control various hardware functions:

Start

End

Description

Read/Write?

$98

$99

Video (VDP) registers

read/write

$A0

$A3

Sound (PSG) registers

write

$A8

$A9

Primary slot register

read/write

$AA

$AB

Keyboard matrix

read/write

The 16 KB of video RAM is accessed through the VDP ports and contains:

  • Pattern tables for character and sprite definitions

  • Image tables for screen layout

  • Color tables for palette assignments

  • Sprite attribute tables for sprite positioning

Programming#

MSX software development typically used either MSX-BASIC (built into every machine) or Z80 assembly language for more advanced programs. The built-in BASIC interpreter made programming accessible to home users, while assembly language provided the performance needed for action games.

Commercial MSX software was usually distributed on ROM cartridges, which plugged into the cartridge slots and could start immediately when the computer was powered on. Homebrew software and utilities were often distributed on cassette tapes or floppy disks.

Modern MSX development often uses cross-development tools that run on contemporary computers, with the final programs tested on MSX emulators or real hardware. The MSX Developer community has created numerous tools and libraries to assist with game and application development.

Note: The 8bitworkshop IDE supports MSX development using the LibCV library. This C library simplifies hardware access and provides convenient functions for graphics, sound, and input handling.

Comments