- Amstrad/Schneider Printer Models
- Amstrad/Schneider Printer Technical Specifications
- Amstrad/Schneider Printer Control Codes
- Amstrad/Schneider Printer Support for 7bit Printer Ports
- Amstrad/Schneider Printer Character Sets
- Amstrad/Schneider Printer Buttons and DIP Switches
- Amstrad/Schneider Printer Resources (User and Service Manuals, Datasheets, ROM-images)
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/DMP3160 fonts
Character set memory map:
00C0 Draft chr(00h..7Fh), ASCII & International (normal) 06C0 Draft chr(00h..7Fh), ASCII & International (italics) 0CC0 Draft chr(100h..140h), 65 special symbols (undocumented) 5000 Draft chr(100h..14Bh), 76 special "IBM" symbols 5390 Draft chr(14Ch..16Ch), 33 alternate variants of ASCII & International symbols 5600 Draft-pass-2 lower half of IBM draft symbols 5C00 NLQ-pass-1 chr(00h..7Fh), ASCII & International (normal) 6200 NLQ-pass-1 chr(00h..7Fh), ASCII & International (italics) 6800 NLQ-pass-1 chr(100h..140h), 76 special "IBM" symbols 6C00 NLQ-pass-2 chr(00h..7Fh), ASCII & International (normal) 7200 NLQ-pass-2 chr(00h..7Fh), ASCII & International (italics) 7800 NLQ-pass-2 chr(100h..14Bh), 76 special "IBM" symbols 7C00 NLQ-pass-3+4 lower half of IBM NLQ symbols (same data used for both passes)
Notes:The draft symbols in first 4K of DMP3000 aren't yet dumped (though they are likely to be same as in DMP3160). In the DMP3160 BIOS Dump, the NLQ "á" is damaged; NLQ-pass-2 chr(13Fh), address 7AF8h is 00h (it's intact, 2Ah, in DMP3000 BIOS Dump) Encoding/Mechanics: Same as DMP2000/2160, see there. A special case are the IBM symbols which are defined as two characters each (one holding the upper half, one the lower half, which is required for block graphic and border symbols) (accordingly it takes 4 passes for IBM-NLQ symbols, and 2 passes for IBM-Draft symbols).
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.