Changes

Jump to: navigation, search

Amstrad/Schneider Printer Character Sets

3,630 bytes added, 00:35, 17 December 2010
[[Category:Peripherals]] [[Category:Printers and printer ports]]
{{AmstradPrinterLinks}}
<br>
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.
The red arrow indicates underlengths (where the 8bit data is shifted down to the lower 8-pins). The blue line indicates the pre-defined width for use in proportional mode.
<gallery>
File:DMP2000 Charset.png|DMP2000/DMP2160(incomplete)File:DMP3000 Charset.png|DMP3000(incomplete)File:DMP3160 Charset.png|DMP3160 (complete)File:NLQ401 Charset.png|NLQ401(complete)
</gallery>
* 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).<br>
'''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.<br>'''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 [[Amstrad/Schneider Printer Control Codes|ESC "&" command]]), 2-pass NLQ characters are defined identically as two draft characters (the prefix byte is having the same value in both definitions)<br>
'''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 ===* Draft fontCharacter set memory map: 00C0 Draft chr(00h..7Fh), ASCII chars probably somewhere in uPD7811 ROM & International (not dumpednormal) 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 chars at EPROM offset 5000h" symbols 5390 Draft chr(14Ch..5xxxh16Ch), 33 alternate variants of ASCII & International symbols* 5600 Draft-pass-2 lower half of IBM draft symbols 5C00 NLQ font: circa 330 characters-pass-1 chr(00h..7Fh), at EPROM offset 5C00hASCII & International (normal) 6200 NLQ-pass-1 chr(00h..6BFFh 7Fh), ASCII & International (pass1italics) and 6C00h 6800 NLQ-pass-1 chr(100h..7BFFh 140h), 76 special "IBM" symbols 6C00 NLQ-pass-2 chr(pass200h..7Fh); , ASCII& International (normal) 7200 NLQ-pass-2 chr(00h..7Fh), ItalicsASCII & International (italics) 7800 NLQ-pass-2 chr(100h..14Bh), 76 special "IBM characters" symbols 7C00 NLQ-pass-3+4 lower half of IBM NLQ symbols (same data used for both passes) 2E38 Table for translating IBM chr(80h..FFh) to internal chr(100h..14Bh/00h..1Fh)'''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).<br>'''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 ==
|}
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) ==
 
{|{{Prettytable|width: 700px; font-size: 2em;}}
|colspan=17|''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|| || || || || || § || || || || || || || || || ||
|-
|...||colspan=16|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 Ports|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.
4,585
edits