Last revision on 2005/March/31 Thursday.
Notes from the revisor:
The book was scanned and converted (via O.C.R.) by someone in Europe (name omitted to preserve his anonymity), then edited and revised by me, working independently. For unknown reasons (though ponderable), Chapter 7 (currently renumbered to Chapter 9) was not scanned. Bad enough. It is also known that some lines had been on purpose modified just after the scanning. I tried to restore them to their original state, but without the original book, it was a quite hard task (the only support was a Portuguese translation). Anyway, the original text has been heavily revised, many informations corrected and new ones added, so it no longer matter (that much...)
The book was converted to HTML format for viewing. Hypertext links, CSS, JavaScript and SVG were also added to make information clearer.
This book originally only covered standard MSX. The BIOS entry points from 0000H to 01B5H should be used instead of the accessed entries described in the rest of the book, because other machines (MSX2, MSX2+, MSX turbo R and customized ones) have different positions for those routines. The use of internal BIOS routine addresses are responsible for many programs only running in some specific MSX, so it's completely deprecated.
MSX2, MSX2+ and turbo R information has been added to make this book even more useful.
Errors present in the original book were fixed, though it was tried to keep it as unaltered as possible. All page numbers match the originals, except undetected errors already present in the original.
Incoherent data and some obscure parts has been changed. New data have been added from MSX Datapack and from Japan MSX Magazine, though they are not direct translations.
0. | Forewords |
1. | Table of Contents |
2. | Introduction |
3. | Programmable Peripheral Interface |
4. | Video Display Processor (MSX2/2+ under construction) |
5. | Programmable Sound Generator (under construction) |
6. | ROM BIOS (under construction) |
7. | ROM BASIC Interpreter (under construction) |
8. | Memory Usage Map (Workspace Area) (under construction) |
9. | Machine Code Programs (missing pages, read Forewords) |
10. | MSX2+ Hardware Schematics (from MSX Datapack, under construction) |
10. | Appendices (under construction) |
11. | Index (under construction) |
Appendices Copyright Unicorn Dreams Artwork Productions. Revised 1998-2005 by Cyberknight Masao Kawata. Based on "MSX Datapack" (Japan ASCII Co.), "MSX Technical Handbook" (Japan ASCII Co.) and Japan "MSX Magazine". |
This book is about MSX computers and how they work. For technical and commercial reasons MSX computer manufacturers only make a limited amount of information available to the end user about the design of their machines. Usually this will be a fairly detailed description of Microsoft MSX BASIC together with a broad outline of the system hardware. While this level of documentation is adequate for the casual user it will inevitably prove limiting to anyone engaged in more sophisticated programming.
The aim of this book is to provide a description of the standard MSX hardware and software at a level of detail sufficient to satisfy that most demanding of users, the machine code programmer. It is not an introductory course on programming and is necessarily of a rather technical nature. It is assumed that you already possess, or intend to acquire by other means, an understanding of the Z80 Microprocessor at the machine code level. As there are so many general purpose books already in existence about the Z80 any description of its characteristics would simply duplicate widely available information.
The MSX Standard specifies the following as the major functional components in any MSX computer:
Although there are obviously a great many additional components involved in the design of an MSX computer they are all small-scale, non-programmable ones and therefore "invisible" to the user. Manufacturers generally have considerable freedom in the selection of these small-scale components. The programmable components cannot be varied and therefore all MSX machines are identical as far as the programmer is concerned.
The advent of MSX2, MSX2+, turbo R and many peripheral devices, though, added more components to a "minimal functional" MSX machine. The following table shows the minimal requirements (an actual MSX may have more memory, for example, or a different VDP, other sound IC and so on):
MSX | MSX2 | MSX2+ | turbo R | ||
CPU | Z80 (3.579545MHz±1%) |
Z80 (3.579545MHz) + R800 (28.636Mhz) |
|||
Memory | ROM (minimal) | 32KB (32KB Main ROM + MSX-BASIC v.1.0) |
48KB (32KB Main ROM + MSX-BASIC v.2.0 + 16KB SubROM) |
80KB (32KB Main ROM + MSX-BASIC v.3.0 + 16KB SubROM + 16KB Kanji Driver + 16KB Kanji Converter) |
? (32KB Main ROM + MSX-BASIC v.4.0 + 16KB SubROM + 16KB Kanji Driver + 16KB Kanji Converter + ?) |
RAM (minimal) | 8KB | 64KB | 64KB | ? | |
Video | VDP | TMS9918A | V9938 | V9958 | |
VDP Frequency | ? | ? | ? | 21.477MHz | |
VRAM | 16KB | 64KB or 128KB | 128KB | ||
Maximal Resolution | 256h x 192v x 16c | 512h x 212v x 16 256h x 212v x 256c (424v interlaced) |
512h x 212v x 16 256h x 212v x 19268c (424v interlaced) |
||
Features | 4 sprites in line | 8 sprites in line; vertical scroll |
8 sprites in line; vertical & horizontal scroll |
||
Audio | PSG | AY-3-8910 | |||
FM | - | FM-PAC (extra) | MSX-Music (optional) | MSX-Music | |
PCM | - | 8 bits | |||
CMT (Data-corder) | 1200/2400 bps | - | |||
Keyboard | 88 key matrix | ||||
Floppy Disk Drive | 1DD (180KB), 2DD (360KB) or 2HD (720KB) (optional) | 3.5" 2HD (720KB) | |||
Printer | (optional) | 8 bits parallel Centronics | |||
Cartridge Slot | At least one slot is required | ||||
Joystick | 1 (minimal) | 2 | |||
Kanji Function | Kanji ROM | (optional) | (optional) | Level 1 (Level 2 optional) |
Level 1 + 2 |
Kanji Input | Application dependent | MSX-JE | MSX-JE | ||
Real-time Clock | - | RPC5C01 |
Chapters 1, 2 and 3 describe the operation of the Programmable Peripheral Interface, Video Display Processor and Programmable Sound Generator respectively. These three devices provide the interface between the Z80 and the peripheral hardware on a standard MSX machine. All occupy positions on the Z80 I/O (Input/output) Bus.
Chapter 4 covers the software contained in the first part of the MSX ROM. This section of the ROM is concerned with controlling the machine hardware at the fine detail level and is known as the ROM BIOS (Basic Input Output System). It is structured in such a way that most of the functions a machine code programmer requires, such as keyboard and video drivers, are readily available.
Chapter 5 describes the software contained in the remainder of the ROM, the Microsoft MSX BASIC Interpreter. Although this is largely a text-driven program, and consequently of less use to the programmer, a close examination reveals many points not documented by manufacturers.
Chapter 6 is concerned with the organization of system memory. Particular attention is paid to the Workspace Area, that section of RAM from F380H to FFFFH, as this is used as a scratchpad by the BIOS and the BASIC Interpreter and contains much information of use to any application program.
Chapter 7 gives some examples of machine code programs that make use of ROM features to minimize design effort.
It is believed that this book contains zero defects, if you know otherwise the author would be delighted to hear from you. This book is dedicated to those people interested in solving problems hard to solve.
This revised version of the book is dedicated to the Light, without which we would be all blind... - The Revisor.