MSX font
This page was last modified 13:49, 16 December 2016 by Rderooy. Based on work by Tvalenca and Gdx and others.

Contents

General description

This page covers the MSX character set or font. The font depends on the region the machine was sold in. e.g. a Japanese machine will have a Japanese font.

Some software is dependant on the correct font, and will show incorrect characters when run on an MSX from another region. Examples are Japanese software using Hiragana, Katakana from its font, which show as various other characters on European machines. Or European software using font characters such as accented letters or math symbols which are replaced by Japanese writing characters on a Japanese machine.

The MSX character sets are all based on the 7-bit ASCII code and extended as following tables. The rows 0 and 1 as well as code 7Fh are control codes which do not appear on the screen but have the following effect.

  • GRAPH allows you to display an extended graphic character
  • CTRL B moves the cursor to the previous word
  • CTRL E deletes the line to the right of the cursor
  • CTRL F moves the cursor to the next word
  • LF descends the cursor of a line
  • HOME places the cursor at top left
  • CTRL N moves the cursor to the end of the line
  • INS switch to insert/overwrite text mode
  • CTRL U deletes the line where the cursor is located
  • SEL = Selection key
  • mounts the cursor
  • moves the cursor to the right
  • moves the cursor to the left
  • drops the cursor

Arabian

Arabic MSXs have two Main-ROMs, when the CTRL key is pressed while the MSX is booting up to its "beep", the MSX starts with the Hand-ROM with an international character set.

Arabian font


















  • The first 8 rows are the same characters as the 7-bit ASCII code.
  • Green characters are characters specific to MSX Arabic.
  • Arab MSX do not have extended characters.

International

This covers the USA, International, UK, DIN and French international character set.

International Font






















  • The first 8 rows are the same characters as the 7-bit ASCII code.
  • Green characters are characters specific to Western MSX.
  • The last character (FFh) is the cursor.
  • The bottom table, with two rows (orange characters), are extended graphic characters. To display them, each must be preceded by the character 01h. They are also specific to Western MSX.

DIN

DIN, as used in Germany has one minor deviation from the International character set. The '0' (Zero) character has a dot in the centre instead of a slash.

DIN zero

Brazilian

(WIP) Brazilian character set is clearly based on International character set, but each manufacturer (Sharp and Gradiente) made its own customizations, which caused trouble for software developers and printer manufacturers.
This issue was solved by a recall of both models, where manufacturers changed ROM version from 1.0 to 1.1, which complies to "Brazilian ASCII" specification, or BRASCII. Compared to International character set, characters 84h through 8Fh are different or may have minor graphical differences. Character "Pt" (9Eh) may be changed to "Cz", which was the currency symbol for Brazilian "Cruzados".

Newer ROMs

This applies to Gradiente v1.1 and Sharp Hot Bit 1.2 ROMs or newer

  • 84h - 8Fh contain localized or slightly changed characters
  • 90h - 9Dh is the same as the international character set
  • 9Eh contains the "Cz" symbol, which was the currency symbol for Brazilian "Cruzados".

Sharp Hot Bit 1.1 ROM

The 1.1 version of the ROM does not have the "Cz" currency symbol at 9Eh, instead it has the "Pt" symbol like the International character set. For the rest it has the same character set as newer ROM versions.

Japanese

The first 128 characters are the same characters as the ASCII code, except the character "\" (5Ch) which has been replaced by the "¥" character of the Microsoft 8-bit JIS code.

Japanese font






















  • The first 8 rows are the same characters as the 7-bit ASCII code.
  • Green Hiragana and Purple Katakana are characters that come from the 8 bit JIS code.
  • The last character (FFh) is the cursor.
  • The bottom table, with two rows (orange characters), are extended graphic characters. To display them, each must be preceded by the character 01h. They are also specific to Japanese MSX.

Korean

The first 128 characters are the same characters as the ASCII code, except the character "\" (5Ch) which has been replaced by the character "₩".

The next characters appear in a rather specific way. A Korean character (Hangul) is composed of 2 or 3 letters but takes the place of four 8x8 characters (two above and two below) on the screen.

Russian

The first 128 characters, up to 7Fh, are identical to the International character set, including the extended character set.

The range from 80h onward is different. The upper range includes some of the same drawing characters as in the international set but at different locations, and it obviously includes Russian specific characters.

  • 80h-BEh contain relocated characters from the International character set (C0h-FEh)
  • BFh-FEh contain Russian specific characters
  • FFh is the cursor

Detection

Here is an example of how to detect the character set and various other regional settings of the MSX from BASIC.

This is a translated version of a program called MSX TYPE from the Dutch MSX Computer Magazine issue 3.

10 REM MSX TYPE
20 REM
30 REM MSX Computer Magazine
40 REM issue 3
50 REM
60 CLS: LOCATE 10,0: PRINT "MSX COMPUTER TYPE"
70 LOCATE 6,5: PRINT "CHARACTER SET: ";
80 I=PEEK(43) AND 15
90 IF I=0 THEN PRINT "JAPANESE"
100 IF I=1 THEN PRINT "INTERNATIONAL"
110 IF I=2 THEN PRINT "KOREAN"
120 LOCATE 10,7: PRINT "DATE TYPE: ";
130 I=(PEEK(43) AND 112)/16
140 IF I=0 THEN PRINT "YEAR-MONTH-DAY"
150 IF I=1 THEN PRINT "MONTH-DAY-YEAR"
160 IF I=2 THEN PRINT "DAY-MONTH-YEAR"
170 LOCATE 0,9: PRINT "INTERRUPT FREQUENCY: ";
180 I=(PEEK(43) AND 128)/128
190 IF I=0 THEN PRINT "60 HERTZ"
200 IF I=1 THEN PRINT "50 HERTZ"
210 LOCATE 11,11: PRINT "KEYBOARD: ";
220 I3=PEEK(44) AND 15
230 IF I3=0 THEN PRINT "JAPANESE"
240 IF I3=1 THEN PRINT "INTERNATIONAL"
250 IF I3=2 THEN PRINT "FRENCH"
260 IF I3=3 THEN PRINT "ENGLISH"
270 IF I3=4 THEN PRINT "DIN"
280 LOCATE 14,13: PRINT "BASIC: ";
290 I=(PEEK(44) AND 240)/16
300 IF I=0 THEN PRINT "JAPANESE"
310 IF I=1 THEN PRINT "INTERNATIONAL"

Note the above is not foolproof. Arabic, Brazilian and Russian MSX computers will claim to have an International character set, keyboard and basic.