Amstrad/Schneider Printer Character Sets

From CPCWiki - THE Amstrad CPC encyclopedia!
Revision as of 17:39, 15 September 2010 by Nocash (Talk | contribs) (Character Set ROMs)

Jump to: navigation, search
DMP4000 Mechanics.jpg


Character Set ROMs

Here are some Draft and NLQ charsets extracted from the EPROMs. In case of the DMP2000/DMP3000, additional Draft characters are probably contained in the CPUs on-chip ROM.

NLQ401 fonts

  • Draft font: 232 characters at EPROM offset 16A6h..209Dh; ASCII characters and CPC symbols
  • NLQ font: 103 characters, at EPROM offset 209Eh..3FFFh (pass1+pass2); ASCII characters

Encoding: 11 bytes per Draft character (same as Epson chars, but without prefix byte), 39 bytes per NLQ pass (in super-high horizontal resolution; about 3-4 times better than the later DMP2000..3000 models). In lack of prefix flags, underlengths are defined by software (at ROM address 090Eh..091Ch).
Mechanical Restrictions: After drawing a draft pixel, the next ONE pixel (in the same row) must be white. After a NLQ pixel, the next THREE must be white.
Firmware Restrictions: Looking at the firmware disassembly, chr(7Fh..80h) (slashed zero and french "c") seem to be non-printable. chr(81h..FFh) are printable via ESC "=" code.

DMP2000/2160 fonts

  • Draft font: probably somewhere in uPD7811 ROM (not dumped)
  • NLQ font: 128 characters, at EPROM offset 3400h..39FFh (pass1) and 3A00h..3FFFh (pass2); ASCII characters

Encoding: 12 bytes per char (one prefix, plus eleven 8bit columns; the prefix contains underlength flag, and proportional char width info; same format as with ESC "&" command), 2-pass NLQ characters are defined identically as two draft characters (the prefix byte is having the same value in both definitions)
Mechanical Restrictions: After drawing a draft pixel, the next ONE pixel (in the same row) must be white. There is no such restriction for NLQ pixels (because they are defined in a lousy resolution).

DMP3000 fonts

  • Draft font: ASCII chars probably somewhere in uPD7811 ROM (not dumped), IBM chars at EPROM offset 5000h..5xxxh
  • NLQ font: circa 330 characters, at EPROM offset 5C00h..6BFFh (pass1) and 6C00h..7BFFh (pass2); ASCII, Italics, IBM characters

Encoding/Mechanics: Same as DMP2000/2160, see there.

International Characters

23h 24h 40h 5Bh 5Ch 5Dh 5Eh 60h 7Bh 7Ch 7Dh 7Eh
0 - USA # $ @ [ \ ] ^ ` { | } ~
1 - France # $ à ° ç § ^ ` é ù è ¨
2 - Germany # $ § Ä Ö Ü ^ ` ä ö ü ß
3 - UK £ $ @ [ \ ] ^ ` { | } ~
4 - Denmark # $ @ Æ Ø Å ^ ` æ ø å ~
5 - Sweden # ¤ É Ä Ö Å Ü é ä ö å ü
6 - Italy # $ @ ° \ é ^ ù / ` à ò è ì
7 - Spain Pt $ @ ¡ Ñ ¿ ^ ` ¨ ñ } ~
8 - Japan # $ @ [ ¥ ] ^ ` { | } ~

Italian chr(60h) is "`" (DMP1), or "ù" (DMP2xxx/3xxx). Japan (Yen symbol) is software selectable on DMP2xxx/3xxx only. All other chars are same for all DMP versions.

IBM Character Set (DMP3000/3160)

IBM Characters (DMP3000/DMP3160 in "IBM" Mode only)
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
00h crd crd crd crd
10h §
... chr(20h..7Eh) = Standard ASCII characters
80h Ç ü é â ä à å ç ê ë è ï î ì Ä Å
90h É æ Æ ô ö ò û ù ÿ Ö Ü ¢ £ ¥ Pt ƒ
A0h á í ó ú ñ Ñ ª º ¿ xx ¬ ½ ¼ ¡ «   »
B0h Blk Blk Blk lin lin lin lin lin lin lin lin lin lin lin lin lin
C0h lin lin lin lin lin lin lin lin lin lin lin lin lin lin lin lin
D0h lin lin lin lin lin lin lin lin lin lin lin Blk Blk Blk Blk Blk
E0h alp ß xx xx xx xx µ xx xx xx xx xx xx xx xx xx
F0h xx ± >= <= xx xx ÷ xx ° xx xx sqr ^n ²
  • The DMP3000..3250 has two selectable "IBM Character Sets". Set 1 omits chr(03h..06h, 15h, 80h..9Fh), Set 2 includes them (though one needs an 8bit Printer Port to use chr 80h..9Fh).
  • The IBM characters are same as the default MS DOS character set (ie. same as built-in in CGA/EGA/VGA BIOSes). However, the DMP doesn't implement all IBM characters: chr(00h..02h, 07h..14h, 16h..1Fh) are missing. Moreover, the "border/line" symbols in chr(B3h..DAh) should usually consists of single- and double-width lines, but the DMP draws all of them as single-width lines.