Difference between revisions of "Amstrad/Schneider Printer Control Codes"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(DMP1 Control Codes)
(NLQ401 Control Codes: DEL isn't supported, tested with a real NLQ401 printer)
 
(26 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
[[Category:Peripherals]] [[Category:Printers and printer ports]]
 
{{AmstradPrinterLinks}}
 
{{AmstradPrinterLinks}}
 
<br>
 
<br>
Line 12: Line 13:
 
|-
 
|-
 
|0D                ||13                ||CR                ||Misc
 
|0D                ||13                ||CR                ||Misc
|CR or CR+LF (switch-selectable)
+
|CR or CR+LF (selectable via DIP-switch)
 
|-
 
|-
 
|0E                ||14                ||SO                ||Width
 
|0E                ||14                ||SO                ||Width
Line 20: Line 21:
 
|Normal Width Mode (also restores 1/6" line feed rate; after graphics printing)
 
|Normal Width Mode (also restores 1/6" line feed rate; after graphics printing)
 
|-
 
|-
|10,hi,lo          ||16,hi,lo          ||DLE "NN"          ||Misc
+
|10 hi lo          ||16 hi lo          ||DLE "NN"          ||Misc
 
|Print Position in character units (NN = two-digit ASCII, "00..79")
 
|Print Position in character units (NN = two-digit ASCII, "00..79")
 
|-
 
|-
Line 26: Line 27:
 
|CR
 
|CR
 
|-
 
|-
|1B,10,hi,lo      ||27,16,hi,lo      ||ESC DLE hi lo    ||Misc
+
|1B 10 hi lo      ||27 16 hi lo      ||ESC DLE hi lo    ||Misc
 
|Print Position in dot units (hi:lo = 9bit binary, 0..479) (lo=lower 7bit, hi=upper 2bit)
 
|Print Position in dot units (hi:lo = 9bit binary, 0..479) (lo=lower 7bit, hi=upper 2bit)
 
|-
 
|-
|1B,4B,hi,lo,gfx0,gfx1,.. ||27,75,hi,lo,gfx0,gfx1,..  ||ESC "K" ...  ||Graphics
+
|1B 4B hi lo gfx0 gfx1 .. ||27 75 hi lo gfx0 gfx1 ..  ||ESC "K" ...  ||Graphics
|Graphics Mode (hi:lo = 9bit count, 0..479) (lo=lower 7bit, hi=upper 2bit) (followed by as many bytes, with bit0=upper pixel .. bit6=lower pixel). This command additionally changes the line feed rate to 1/9 inch; the new rate is kept applied for text and graphocs (until canceled by chr 0Eh/0Fh).
+
|Graphics Mode (hi:lo = 9bit count, 0..479) (lo=lower 7bit, hi=upper 2bit) (followed by as many bytes, with bit0=upper pixel .. bit6=lower pixel). This command additionally changes the line feed rate to 1/9 inch; the new rate is kept applied for text and graphics (until canceled by chr 0Eh/0Fh).
 
|-
 
|-
|1C,num,gfx              ||28,num,gfx                ||FD,num,gfx  ||Graphics
+
|1C num gfx              ||28 num gfx                ||FD,num,gfx  ||Graphics
 
|Repetition of one byte of graphic print data (num=1..127 repeat count) (gfx: bit0=upper pixel .. bit6=lower pixel)
 
|Repetition of one byte of graphic print data (num=1..127 repeat count) (gfx: bit0=upper pixel .. bit6=lower pixel)
 +
|-
 +
|}
 +
 +
== NLQ401 Control Codes ==
 +
 +
The [[NLQ401]] supports a fraction of the Epson control code set, plus some NLQ401-specific, non-Epson codes. The missing Epson codes include both newer codes, as well as older ones (like vertical TABs, which are supported even by very old Epsons from 1981).
 +
 +
Caution: The NLQ401 firmware strips Bit7 of all incoming characters, so one is restricted to use 7bit codes, even if one does own an [[8bit Printer Ports|8bit Printer Port]]. Accordingly, only 7-pin graphics can be used, and some numeric parameters cannot be set to values with bit7=1.
 +
 +
{|{{Prettytable|width: 700px; font-size: 2em;}}
 +
|''Hex''          ||''Decimal''      ||''ASCII''        ||''Type''
 +
|''Description''
 +
|-
 +
|09                ||9                ||HT                ||Tab
 +
|Horizontal tab
 +
|-
 +
|0A                ||10                ||LF                ||Feed
 +
|Line Feed (move to next line)
 +
|-
 +
|0B                ||11                ||VT                ||Feed
 +
|'''NLQ401-specific:''' acts as mirror of LF (non-Epson code)
 +
|-
 +
|0C                ||12                ||FF                ||Feed
 +
|Form Feed (move to next page)
 +
|-
 +
|0D                ||13                ||CR                ||Misc
 +
|Carriage Return
 +
|-
 +
|0E                ||14                ||SO                ||Text Style
 +
|Select double width for one line (unlike ESC W 0/1 continous)
 +
|-
 +
|0F                ||15                ||SI                ||Text Style
 +
|Select condensed mode
 +
|-
 +
|12                ||18                ||DC2              ||Text Style
 +
|Cancel condensed mode
 +
|-
 +
|14                ||20                ||DC4              ||Text Style
 +
|Cancel one line double width mode (unlike ESC W 0/1 continous)
 +
|-
 +
|18                ||24                ||CAN              ||Misc
 +
|Cancel text in line (but not control codes)
 +
|-
 +
|1B 2D n          ||27 45 n          ||ESC "-" n        ||Text Style
 +
|Underlining ON/OFF (00h=off, 01h=on)
 +
|-
 +
|1B 30            ||27 48            ||ESC "0"          ||Feed
 +
|Select 9/72 inch aka 1/8 inch line spacing
 +
|-
 +
|1B 31            ||27 49            ||ESC "1"          ||Feed
 +
|Select 7/72 inch line spacing
 +
|-
 +
|1B 32            ||27 50            ||ESC "2"          ||Feed
 +
|Select 12/72 inch aka 1/6 inch line spacing<br>
 +
'''NLQ401-specific and Epson MX80:''' Can be DIP-switched or ESC-"A"-commanded to other spacing (on a DMP2000 or Epson FX80, it's fixed, always 1/6 inch)
 +
|-
 +
|1B 33 n          ||27 51 n          ||ESC "3" n        ||Feed
 +
|Select n/216 inch line spacing (n=0..255)<br>'''NLQ401-restriction:''' supports only 7bit (n=0..127)
 +
|-
 +
|1B 36            ||27 54            ||ESC "6"          ||Char Code
 +
|'''NLQ401-specific:''' Use German charset
 +
|-
 +
|1B 37            ||27 55            ||ESC "7"          ||Char Code
 +
|'''NLQ401-specific:''' Use US-ASCII charset
 +
|-
 +
|1B 38            ||27 56            ||ESC "8"          ||Misc
 +
|Disable paper out sensor
 +
|-
 +
|1B 39            ||27 57            ||ESC "9"          ||Misc
 +
|Enable paper out sensor
 +
|-
 +
|1B 3C            ||27 60            ||ESC "<"          ||Misc
 +
|Select unidirectional mode for one line (Move head home/parking)
 +
|-
 +
|1B 3D .. 00      ||27 61 ... 0      ||ESC "=" ... 0    ||Char Code
 +
|'''NLQ401-specifc:''' Print all following chr(01h..7Fh) as CPC-style chr(81h..FFh) symbols; use chr(00h) to return to normal mode
 +
|-
 +
|1B 41 n          ||27 65 n          ||ESC "A" n        ||Feed
 +
|'''NLQ401/MX80:''' Redefine ESC "2" to n/72 inch line spacing (applied by subsequent ESC "2" commands).<br>
 +
On a DMP2000 or FX80 it would directly select n/72 inch line spacing (n=0..85) (without needing to execute subsequent ESC "2")
 +
|-
 +
|1B 43 (00) n      ||27 67 (0) n      ||ESC "C" (NUL) n  ||Feed
 +
|Select Page length in lines or inches (n=1..127 lines, or 00h,1..22 inch)
 +
|-
 +
|1B 44 .. 00      ||27 68 .. 0        ||ESC "D" .. NUL    ||Tab
 +
|Define horizontal TAB positions
 +
|-
 +
|1B 45            ||27 69            ||ESC "E"          ||Text Style
 +
|Select emphasized (bold) mode
 +
|-
 +
|1B 46            ||27 70            ||ESC "F"          ||Text Style
 +
|Cancel emphasized (bold) mode
 +
|-
 +
|1B 47            ||27 71            ||ESC "G"          ||Text Style
 +
|Select double strike mode (also an bold-alike effect)
 +
|-
 +
|1B 48            ||27 72            ||ESC "H"          ||Text Style
 +
|Cancel double strike mode (also an bold-alike effect)
 +
|-
 +
|1B 49 n          ||27 73 n          ||ESC "I" n        ||Text Style
 +
|'''NLQ401-specific:''' Select Draft/NLQ mode (01h=Draft, 03h=NLQ) (for Epson-compatibility, better use the ESC "x" code)
 +
|-
 +
|1B 4A n          ||27 74 n          ||ESC "J" n        ||Feed
 +
|Perform One-shot n/216 inch line feed (n=0..255)<br>'''NLQ401-restriction:''' supports only 7bit (n=0..127)
 +
|-
 +
|1B 4B n1 n2 ..    ||27 75 n1 n2 ..    ||ESC "K" n1 n2 ..  ||Graphics
 +
|Single 8pin density graphics (60 dpi) (n2:n1 = num bytes following) (480 dots/line)<br>'''NLQ401-restriction:''' supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
 +
|-
 +
|1B 4C n1 n2 ..    ||27 76 n1 n2 ..    ||ESC "L" n1 n2 ..  ||Graphics
 +
|Double 8pin density graphics (120 dpi)                              (960 dots/line)<br>'''NLQ401-restriction:''' supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
 +
|-
 +
|1B 4E n          ||27 78 n          ||ESC "N" n        ||Feed
 +
|Select skip over perforation (n=1..127 lines)
 +
|-
 +
|1B 4F            ||27 79            ||ESC "O"          ||Feed
 +
|Cancel skip over perforation
 +
|-
 +
|1B 53 n          ||27 83 n          ||ESC "S" n        ||Text Style
 +
|Select superscript/subscript (00h=Superscript, 01h=Subscript)
 +
|-
 +
|1B 54            ||27 84            ||ESC "T"          ||Text Style
 +
|Cancel superscript/subscript
 +
|-
 +
|1B 55 n          ||27 85 n          ||ESC "U" n        ||Misc
 +
|Unidirectional mode (00h=Off, faster, use bidirectional printing - 01h=On, slower, left-to-right, more accurate on vertical lines)
 +
|-
 +
|1B 57 n          ||27 87 n          ||ESC "W" n        ||Text Style
 +
|Double width mode ON/OFF (continous) (unlike DC4: one line) (00h=off, 01h=on)
 +
|-
 +
|1B 59 n1 n2 ..    ||27 89 n1 n2      ||ESC "Y" n1 n2    ||Graphics
 +
|Select 8pin Hi-speed double den graphics (120 dpi)<br>'''NLQ401-restriction:''' supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
 +
|-
 +
|1B 5A n1 n2 ..    ||27 90 n1 n2      ||ESC "Z" n1 n2    ||Graphics
 +
|Select 8pin Quad density graphics (240 dpi) (1920 dots/8"line)<br>'''NLQ401-restriction:''' supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
 +
|-
 +
|1B 78 n          ||27 120 n          ||ESC "x" n        ||Text Style
 +
|Select Draft/NLQ mode (00h=Draft, 01h=NLQ)
 
|-
 
|-
 
|}
 
|}
Line 50: Line 188:
 
|-
 
|-
 
|09                ||9                ||HT                ||Tab
 
|09                ||9                ||HT                ||Tab
|Horizontal tab
+
|Horizontal tab (see ESC "D")
 
|-
 
|-
 
|0A                ||10                ||LF                ||Feed
 
|0A                ||10                ||LF                ||Feed
Line 56: Line 194:
 
|-
 
|-
 
|0B                ||11                ||VT                ||Tab
 
|0B                ||11                ||VT                ||Tab
|Vertical Tab
+
|Vertical Tab (see ESC "B", ESC "b" and ESC "/")
 
|-
 
|-
 
|0C                ||12                ||FF                ||Feed
 
|0C                ||12                ||FF                ||Feed
Line 91: Line 229:
 
|Select condensed mode (duplicate)    (not FX80, better use SI, not ESC SI)
 
|Select condensed mode (duplicate)    (not FX80, better use SI, not ESC SI)
 
|-
 
|-
|1B 21 n          ||27 33 n          ||ESC ! n           ||Text Style
+
|1B 21 n          ||27 33 n          ||ESC "!" n         ||Text Style
 
|Master select where n is a combination of:
 
|Master select where n is a combination of:
0 Pica,
+
* Bit0 - Elite/mini              (same as ESC "M" / ESC "P")
1 Elite,
+
* Bit1 - Ignored or Proportional (same as ESC "p")
4 Condensed,
+
* Bit2 - Condensed               (same as SI / DC2)
8 Emphasized,
+
* Bit3 - Emphasized/bold        (same as ESC "E" / ESC "F")
16 Double Strike,
+
* Bit4 - Double Strike           (same as ESC "G" / ESC "H")
32 Double Wide,
+
* Bit5 - Double Width            (same as ESC "W")
64 Italic,
+
* Bit6 - Ignored or Italic       (same as ESC "4" / ESC "5")
128 Underline.
+
* Bit7 - Ignored or Underline   (same as ESC "-")
Pica & Elite and Condensed/Emphasized are mutually exclusive.
+
Epson FX-80 and Amstrad DMP2000..3160 support only bit0,2-5 (Amstrad DMPs do support proportional/italics/underline, but they can be changed only via ESC "p/4/5/-", not via ESC "!").
 +
Epson LQ-500 and Star-LC10 do use/support master style bits0-7.
 +
Condensed/Emphasized are mutually exclusive.
 
|-
 
|-
|1B 23            ||27 35            ||ESC #             ||Char Code
+
|1B 23            ||27 35            ||ESC "#"          ||Char Code
 
|MSB control sequence cancel (=obtain MSB from Centronics Pin 9)  (not on LX80)
 
|MSB control sequence cancel (=obtain MSB from Centronics Pin 9)  (not on LX80)
 
|-
 
|-
|1B 25 00 00      ||27 37 0 0        ||ESC % NUL NUL    ||Charset
+
|1B 25 n 00       ||27 37 n 0        ||ESC "%" n NUL    ||Charset
|Select normal character set (ROM) (star lc10 without ending NUL)
+
|Select character set (00h=Normal/ROM, 01h=User-Defined/RAM) (Star LC10: without ending NUL)
 
|-
 
|-
|1B 25 01 00      ||27 37 1 0        ||ESC % SOH NUL    ||Charset
+
|1B 26 00 ..      ||27 38 0 ..        ||ESC "&" NUL ..   ||Charset
|Select user defined char set (RAM) (star lc10 without ending NUL)
+
|-
+
|1B 26 00 ..      ||27 38 0 ..        ||ESC & NUL ..     ||Charset
+
 
|Define user defined chars (params: first,last char (0..31 each), followed by "attr,d1..d11" per char, attr.bit7=descender flag (0=descend, 1=no descend, usuable only with 8bit printer port), attr.bit6-4=starting pos(0..7, attr.bit3-0=finishing pos i+4..11), d1..d11 are 8-pin columns) (must be enabled via DIP-switch!)
 
|Define user defined chars (params: first,last char (0..31 each), followed by "attr,d1..d11" per char, attr.bit7=descender flag (0=descend, 1=no descend, usuable only with 8bit printer port), attr.bit6-4=starting pos(0..7, attr.bit3-0=finishing pos i+4..11), d1..d11 are 8-pin columns) (must be enabled via DIP-switch!)
 
|-
 
|-
|1B 2A 00 n1 n2 .. ||27 42 0 n1 n2 ..  ||ESC * NUL n1 n2.. ||Graphics
+
|1B 2A d lo hi .. ||27 42 d lo hi ..  ||ESC "*" d lo hi.. ||Graphics
|Select 8pin single density graphics (same as ESC K) (60dpi) (480 pix per 8 inch) (n2:n1 dot columns, each 8pin, bit7=upper pin)
+
|Print 8pin Graphics (hi:lo number of dot columns (number of data bytes), each data byte defines 8-pins (bit7=upper pin), Density (d) can be:
 +
* 00h = 60 dpi, 480 pix per 8 inch, single density graphics (same as ESC K)
 +
* 01h = 120 dpi, 960 pix per 8 inch, double density graphics (same as ESC L)
 +
* 02h = 120 / 2 dpi, double speed double density (same as ESC Y)
 +
* 03h = 240 / 2 dpi, double speed quad density (same as ESC Z)
 +
* 04h = 80 dpi, 640 pix per 8 inch (for CPC/EGA/VGA screenshots)
 +
* 05h = 72 dpi, 576 pix per 8 inch (for 1:1 pixel aspect ratio)
 +
* 06h = 90 dpi, 720 pix per 8 inch (for Hercules screenshots)
 +
In the two "double speed" modes, dots can be positioned at fine resolution, but the next dot (in the same row) must be white
 
|-
 
|-
|1B 2A 01 n1 n2 .. ||27 42 1 n1 n2 ..  ||ESC * SOH n1 n2.. ||Graphics
+
|1B 2D n          ||27 45 n          ||ESC "-" n        ||Text Style
|Select 8pin double density graphics (same as ESC L) (120dpi) (960 pix per 8 inch)
+
|Underlining on/off (00h=Off, 01h=On)
 
|-
 
|-
|1B 2A 02 n1 n2 .. ||27 42 2 n1 n2 ..  ||ESC * STX n1 n2.. ||Graphics
+
|1B 2F c          ||27 47 c          ||ESC "/" c        ||Tab
|Select 8pin double d.speed graphics (same as ESC Y) (120dpi source data being output at 60dpi) (960 pix per 8 inch)
+
|Select vertical tab channel (c=0..7); channels can be defined via ESC "b"
 
|-
 
|-
|1B 2A 03 n1 n2 .. ||27 42 3 n1 n2 ..  ||ESC * ETX n1 n2.. ||Graphics
+
|1B 30            ||27 48            ||ESC "0"          ||Feed
|Select 8pin quad density graphics  (same as ESC Z) (240dpi source data being output at 120dpi) (1920 pix per 8 inch)
+
|-
+
|1B 2A 04 n1 n2 .. ||27 42 4 n1 n2 ..  ||ESC * EOT n1 n2.. ||Graphics
+
|Select 8pin 640-pix CRT graphics    (80dpi) (640 pix per 8 inch) (for CPC/EGA/VGA screenshots)
+
|-
+
|1B 2A 05 n1 n2 .. ||27 42 5 n1 n2 ..  ||ESC * ENQ n1 n2.. ||Graphics
+
|Select 8pin 576-pix plotter graphics(72dpi) (576 pix per 8 inch) (for 1:1 pixel aspect ratio)
+
|-
+
|1B 2A 06 n1 n2 .. ||27 42 6 n1 n2 ..  ||ESC * ACK n1 n2.. ||Graphics
+
|Select 8pin 720-pix CRT graphics    (90dpi) (720 pix per 8 inch) (for Hercules screenshots)
+
|-
+
|1B 2D 30          ||27 45 48          ||ESC - 0          ||Text Style
+
|Cancel underlining
+
|-
+
|1B 2D 31          ||27 45 49          ||ESC - 1          ||Text Style
+
|Select underlining
+
|-
+
|1B 2F c          ||27 47 c          ||ESC / c          ||Tab
+
|Select vertical tab channel (c=0..7)
+
|-
+
|1B 30            ||27 48            ||ESC 0             ||Feed
+
 
|Select 9/72 inch aka 1/8 inch line spacing
 
|Select 9/72 inch aka 1/8 inch line spacing
 
|-
 
|-
|1B 31            ||27 49            ||ESC 1             ||Feed
+
|1B 31            ||27 49            ||ESC "1"          ||Feed
 
|Select 7/72 inch line spacing
 
|Select 7/72 inch line spacing
 
|-
 
|-
|1B 32            ||27 50            ||ESC 2             ||Feed
+
|1B 32            ||27 50            ||ESC "2"          ||Feed
 
|Select 12/72 inch aka 1/6 inch line spacing
 
|Select 12/72 inch aka 1/6 inch line spacing
 
|-
 
|-
|1B 33 n          ||27 51 n          ||ESC 3 n           ||Feed
+
|1B 33 n          ||27 51 n          ||ESC "3" n         ||Feed
 
|Select n/216 inch line spacing (n=0..255)
 
|Select n/216 inch line spacing (n=0..255)
 
|-
 
|-
|1B 34            ||27 52            ||ESC 4             ||Text Style
+
|1B 34            ||27 52            ||ESC "4"          ||Text Style
|Select italic mode (italics can be also used by setting bit7 of the character number)
+
|Select italic mode (unclear if italics can be also used by setting bit7 of the character number?)
 
|-
 
|-
|1B 35            ||27 53            ||ESC 5             ||Text Style
+
|1B 35            ||27 53            ||ESC "5"          ||Text Style
 
|Cancel italic mode
 
|Cancel italic mode
 
|-
 
|-
|1B 36            ||27 54            ||ESC 6             ||Char Code
+
|1B 36            ||27 54            ||ESC "6"          ||Char Code
 
|Enable printing of characters (128-159,255) (Italics?)
 
|Enable printing of characters (128-159,255) (Italics?)
 
|-
 
|-
|1B 37            ||27 55            ||ESC 7             ||Char Code
+
|1B 37            ||27 55            ||ESC "7"          ||Char Code
|Cancel [ESC 6] command
+
|Cancel [ESC "6"] command
 
|-
 
|-
|1B 38            ||27 56            ||ESC 8             ||Misc
+
|1B 38            ||27 56            ||ESC "8"          ||Misc
 
|Disable paper out sensor
 
|Disable paper out sensor
 
|-
 
|-
|1B 39            ||27 57            ||ESC 9             ||Misc
+
|1B 39            ||27 57            ||ESC "9"          ||Misc
 
|Enable paper out sensor
 
|Enable paper out sensor
 
|-
 
|-
|1B 3A 00 00 00    ||27 58 0 0 0      ||ESC : NUL NUL NUL ||Charset
+
|1B 3A 00 00 00    ||27 58 0 0 0      ||ESC ":" NUL NUL NUL ||Charset
 
|Copy charset ROM into RAM (the three NULs are "for future expansion")
 
|Copy charset ROM into RAM (the three NULs are "for future expansion")
 
|-
 
|-
|1B 3C            ||27 60            ||ESC <             ||Misc
+
|1B 3C            ||27 60            ||ESC "<"          ||Misc
 
|Select unidirectional mode for one line (Move head home/parking)
 
|Select unidirectional mode for one line (Move head home/parking)
 
|-
 
|-
|1B 3D            ||27 61            ||ESC =             ||Char Code
+
|1B 3D            ||27 61            ||ESC "="          ||Char Code
 
|MSB = 0  (not on LX80)
 
|MSB = 0  (not on LX80)
 
|-
 
|-
|1B 3E            ||27 62            ||ESC >             ||Char Code
+
|1B 3E            ||27 62            ||ESC ">"          ||Char Code
 
|MSB = 1  (not on LX80)
 
|MSB = 1  (not on LX80)
 
|-
 
|-
|1B 3F s n         ||27 63 s n         ||ESC ? s n        ||Graphics
+
|1B 3F s d         ||27 63 s d         ||ESC "?" s d      ||Graphics
|Reassign graphics mode 's'=(K,L,Y or Z) to mode 'n'=(0..6) (default is ESC K=0, L=1, Y=2, Z=3) (these defaults can be reassinged here, eg. ESC K=6)
+
|Reassign density of ESC "K/L/Y/Z" codes. 's'=code name (K,L,Y or Z), 'd'=density (0..6, same as for ESC "*", see there) (defaults are ESC "K"=0, "L"=1, "Y"=2, "Z"=3)
 
|-
 
|-
|1B 40            ||27 64            ||ESC @             ||Misc
+
|1B 40            ||27 64            ||ESC "@"          ||Misc
 
|Initialize printer (Reset)
 
|Initialize printer (Reset)
 
|-
 
|-
|1B 41 n          ||27 65 n          ||ESC A n           ||Feed
+
|1B 41 n          ||27 65 n          ||ESC "A" n         ||Feed
 
|Select n/72 inch line spacing (n=0..85)
 
|Select n/72 inch line spacing (n=0..85)
 
|-
 
|-
|1B 42 00         ||27 66 0           ||ESC B NUL         ||Tab
+
|1B 42 .. 00       ||27 66 .. 0       ||ESC "B" .. NUL   ||Tab
|Clear Vertical tabs
+
|Define up to 16 vertical tabs with ascending values from 1..255; specifying an empty list (ESC "B" NUL) clears vertical tabs; used with VT aka chr(0Bh); one can also define multiple vertical tab channels (see ESC "b" and ESC "/")
 
|-
 
|-
|1B 42 tabs 00     ||27 66 tabs 0     ||ESC B tabs NUL   ||Tab
+
|1B 43 (00) n      ||27 67 (0) n      ||ESC "C" (NUL) n  ||Feed
|Select up to 16 vertical tabs where tabs are ascending values from 1..255 ending with NUL
+
|Select Page length in lines or inches (n=1..127 lines, or 00h,1..22 inch)
 
|-
 
|-
|1B 43 00 n        ||27 67 0 n        ||ESC C NUL n      ||Feed
+
|1B 44 .. 00       ||27 68 .. 0       ||ESC "D" .. NUL   ||Tab
|Select page length in inches (n=1..22)
+
|Define up to 32 horizontal tabs with ascending values from 1..137; specifying an empty list (ESC "D" NUL) clears all horizontal tabs; used with HT aka chr(09h)
 
|-
 
|-
|1B 43 n          ||27 67 n          ||ESC C n          ||Feed
+
|1B 45            ||27 69            ||ESC "E"          ||Text Style
|Select page length in lines (n=1..127)
+
|-
+
|1B 44 00          ||27 68 0          ||ESC D NUL        ||Tab
+
|Clears all horizontal tables
+
|-
+
|1B 44 tabs 00    ||27 68 tabs 0      ||ESC D tabs NUL    ||Tab
+
|Sets up to 32 horizontal tabs with ascending values 1-137. NUL or a value less than previous tab ends command.
+
|-
+
|1B 45            ||27 69            ||ESC E             ||Text Style
+
 
|Select emphasized (bold) mode
 
|Select emphasized (bold) mode
 
|-
 
|-
|1B 46            ||27 70            ||ESC F             ||Text Style
+
|1B 46            ||27 70            ||ESC "F"          ||Text Style
 
|Cancel emphasized (bold) mode
 
|Cancel emphasized (bold) mode
 
|-
 
|-
|1B 47            ||27 71            ||ESC G             ||Text Style
+
|1B 47            ||27 71            ||ESC "G"          ||Text Style
 
|Select double strike mode (also an bold-alike effect)
 
|Select double strike mode (also an bold-alike effect)
 
|-
 
|-
|1B 48            ||27 72            ||ESC H             ||Text Style
+
|1B 48            ||27 72            ||ESC "H"          ||Text Style
 
|Cancel double strike mode (also an bold-alike effect)
 
|Cancel double strike mode (also an bold-alike effect)
 
|-
 
|-
|1B 49 30          ||27 73 48          ||ESC I 0          ||Char Code
+
|1B 49 n          ||27 73 n          ||ESC "I" n        ||Char Code
|Disable Printable codes expansion (0-31,128-159)                           (not on LX80)
+
|Printable chr(0-31,128-159) (00h=Control Codes, 01h=Printable Characters) (not on LX80) ;makes some of these characters printable (unknown which ones) whilst others (like 1Bh) are always treated as control codes
 
|-
 
|-
|1B 49 31          ||27 73 49          ||ESC I 1          ||Char Code
+
|1B 4A n          ||27 74 n          ||ESC "J" n         ||Feed
|Enable Printable codes expansion (0-31,128-159) (presumably excluding 27?) (not on LX80)
+
|-
+
|1B 4A n          ||27 74 n          ||ESC J n           ||Feed
+
 
|Perform One-shot n/216 inch line feed (n=0..255)
 
|Perform One-shot n/216 inch line feed (n=0..255)
 
|-
 
|-
|1B 4B n1 n2 ..    ||27 75 n1 n2 ..    ||ESC K n1 n2 ..   ||Graphics
+
|1B 4B lo hi ..    ||27 75 lo hi ..    ||ESC "K" lo hi .. ||Graphics
|Single 8pin density graphics (60 dpi) (n2:n1 = num bytes following) (480 dots/line)
+
|Print 8-pin 60-dpi graphics (same as ESC "*" 0, see there) (density of ESC "K" can be redefined via ESC "?")
 
|-
 
|-
|1B 4C n1 n2 ..    ||27 76 n1 n2 ..    ||ESC L n1 n2 ..   ||Graphics
+
|1B 4C lo hi ..    ||27 76 lo hi ..    ||ESC "L" lo hi .. ||Graphics
|Double 8pin density graphics (120 dpi)                             (960 dots/line)
+
|Print 8-pin 120-dpi graphics (same as ESC "*" 1, see there) (density of ESC "L" can be redefined via ESC "?")
 
|-
 
|-
|1B 4D            ||27 77            ||ESC M             ||Text Style
+
|1B 4D            ||27 77            ||ESC "M"          ||Text Style
 
|Select elite width (12 cpi) (mini font)
 
|Select elite width (12 cpi) (mini font)
 
|-
 
|-
|1B 4E n          ||27 78 n          ||ESC N n           ||Feed
+
|1B 4E n          ||27 78 n          ||ESC "N" n         ||Feed
 
|Select skip over perforation (n=1..127 lines)
 
|Select skip over perforation (n=1..127 lines)
 
|-
 
|-
|1B 4F            ||27 79            ||ESC O             ||Feed
+
|1B 4F            ||27 79            ||ESC "O"          ||Feed
 
|Cancel skip over perforation
 
|Cancel skip over perforation
 
|-
 
|-
|1B 50            ||27 80            ||ESC P             ||Text Style
+
|1B 50            ||27 80            ||ESC "P"          ||Text Style
 
|Cancel elite / Select pica width (10 cpi)
 
|Cancel elite / Select pica width (10 cpi)
 
|-
 
|-
|1B 51 n          ||27 81 n          ||ESC Q n           ||Misc
+
|1B 51 n          ||27 81 n          ||ESC "Q" n         ||Misc
 
|Set right margin (n=1..255 character columns) (this is WIDTH, counted from left margin)
 
|Set right margin (n=1..255 character columns) (this is WIDTH, counted from left margin)
 
|-
 
|-
|1B 52 n          ||27 82 n          ||ESC R n           ||Charset
+
|1B 52 n          ||27 82 n          ||ESC "R" n         ||Charset
 
|Select International character set where numeric 'n' is:
 
|Select International character set where numeric 'n' is:
0 USA (ASCII),
+
* 00h USA (ASCII)
1 France,
+
* 01h France
2 Germany,
+
* 02h Germany
3 UK (Pound symbol),
+
* 03h UK (Pound symbol)
4 Denmark,
+
* 04h Denmark
5 Sweden,
+
* 05h Sweden
6 Italy,
+
* 06h Italy
7 Spain,
+
* 07h Spain
8 Japan (Yen symbol),
+
* 08h Japan (Yen symbol)
9 Norway,
+
DMP2000..3160 do support 0..8, ie. up to including Japan. The default setting is DIP-switch selectable.
10 Denmark II,
+
11 Spain II,
+
12 Latin America.
+
DMP2000..3160 do support 0..8, ie. up to including Japan.
+
The default setting is DIP-switch selectable .
+
|-
+
|1B 53 30          ||27 83 48          ||ESC S 0          ||Text Style
+
|Select superscript
+
 
|-
 
|-
|1B 53 31          ||27 83 49          ||ESC S 1          ||Text Style
+
|1B 53 n          ||27 83 n          ||ESC "S" n        ||Text Style
|Select subscript
+
|Select superscript/subscript (00h=super, 01h=sub)
 
|-
 
|-
|1B 54            ||27 84            ||ESC T             ||Text Style
+
|1B 54            ||27 84            ||ESC "T"          ||Text Style
 
|Cancel superscript/subscript
 
|Cancel superscript/subscript
 
|-
 
|-
|1B 55 30          ||27 85 48          ||ESC U 0          ||Misc
+
|1B 55 n          ||27 85 n          ||ESC "U" n        ||Misc
|Cancel unidirectional mode (faster, use bidirectional printing)
+
|Unidirectional mode On/Off (00h=Off=faster, bidirectional printing, 01h=On=slower, left-to-right, more accurate on vertical lines)
 
|-
 
|-
|1B 55 31          ||27 85 49          ||ESC U 1          ||Misc
+
|1B 57 n          ||27 87 n          ||ESC "W" n        ||Text Style
|Select unidirectional mode (slower, left-to-right, more accurate on vertical lines)
+
|Double width mode (continous) (00h=Off, 01h=On) (unlike DC4 and SO: one line)
 
|-
 
|-
|1B 57 30          ||27 87 48          ||ESC W 0          ||Text Style
+
|1B 59 lo hi ..    ||27 89 lo hi ..    ||ESC "Y" lo hi ..  ||Graphics
|Cancel double width mode (continous) (unlike DC4: one line)
+
|Print 8-pin 120/2-dpi graphics (same as ESC "*" 2, see there) (density of ESC "Y" can be redefined via ESC "?")
 
|-
 
|-
|1B 57 31          ||27 87 49          ||ESC W 1          ||Text Style
+
|1B 5A lo hi ..    ||27 90 lo hi ..    ||ESC "Z" lo hi ..  ||Graphics
|Select double width mode (continous) (unlike SO: one line)
+
|Print 8-pin 240/2-dpi graphics (same as ESC "*" 3, see there) (density of ESC "Z" can be redefined via ESC "?")
 
|-
 
|-
|1B 59 n1 n2 ..   ||27 89 n1 n2      ||ESC Y n1 n2      ||Graphics
+
|1B 5E d lo hi .. ||27 94 d lo hi ..  ||ESC "^" d lo hi ..||Graphics
|Select 8pin Hi-speed double den graphics (120 dpi)
+
|Print 9-pin graphics at selected density (similar to ESC "*" d, see there for details). Allowed density for ESC "^" is officially only d=00h..01h (unknown if 02h..06h do work, too). hi:lo specifies the number of dot columns (the number of 2-byte pairs) (byte1.bit7..bit0=upper..lower, byte2.bit7=lowest, byte2.bit6..bit0=unused)
 
|-
 
|-
|1B 5A n1 n2 ..   ||27 90 n1 n2      ||ESC Z n1 n2      ||Graphics
+
|1B 62 c .. 00    ||27 98 c .. 0      ||ESC "b" c .. NUL  ||Tab
|Select 8pin Quad density graphics (240 dpi) (1920 dots/8"line)
+
|Define up to 16 vertical tabs per channel (c=0..7) with ascending values from 1..255; specifying an empty list (ESC "b" c NUL) clears that vertical tab channel; channels are selected via ESC "/" and can be then used with chr(09h); there is also a similar command without channel-numbers (ESC "B")
 
|-
 
|-
|1B 5E d n1 n2..  ||27 94 d n1 n2    ||ESC ^ d n1 n2    ||Graphics
+
|1B 69 n          ||27 105 n          ||ESC "i" n        ||Misc
|Select 9 pin graphics mode    number of columns = n1 + (n2 * 256) (d=density, 0=single, 1=double) (specs doesn't say if 2..6 do work too) (each column is a 2-byte pair: byte1.bit7..bit0=upper..lower, byte2.bit7=lowest, byte2.bit6..bit0=unused)
+
|Instant character printing (00h=Off=default, ie. print only on LF, 01h=On=print each char immediately; also scrolls printed text into view; when buffer empty) (not on LX80)
 
|-
 
|-
|1B 62 c 00        ||27 98 c 0        ||ESC b c NUL      ||Tab
+
|1B 6A n          ||27 106 n          ||ESC "j" n        ||Feed
|Clear vertical tabs in channel (c=0..7)
+
|Perform One-shot n/216 inch reverse linefeed (not on LX80)
 
|-
 
|-
|1B 62 c tabs 00  ||27 98 c tabs 0    ||ESC b c tabs NUL  ||Tab
+
|1B 6C n          ||27 108 n          ||ESC "l" n         ||Misc
|Select up to 16 vertical tabs in channels (c=0..7) where tabs are ascending values from 1..255 ending with NUL
+
|-
+
|1B 69 00          ||27 105 48        ||ESC i 0          ||Misc
+
|Cancel instant character printing (default, ie. print on CRLF etc.)                                                        (not on LX80)
+
|-
+
|1B 69 01          ||27 105 49        ||ESC i 1          ||Misc
+
|Select instant character printing (printer each char immediately) (also scrolls printed text into view; when buffer empty) (not on LX80)
+
|-
+
|1B 6A n          ||27 106 n          ||ESC j n          ||Feed
+
|Perform One-shot reverse linefeed (n/216 inch after buffer)                                                                (not on LX80)
+
|-
+
|1B 6C n          ||27 108 n          ||ESC l n           ||Misc
+
 
|Set left margin (n=0..255 character columns)
 
|Set left margin (n=0..255 character columns)
 
|-
 
|-
|1B 6D n          ||27 109 n          ||ESC m n           ||Charset
+
|1B 6D n          ||27 109 n          ||ESC "m" n         ||Charset
 
|'''DMP3000/3160 only:''' Select charset (0=Epson, 1=IMB#1, 2=IBM#2) ([[Amstrad]] specific: not supported by Epson printers nor Epson clones nor DMP2000/2160)
 
|'''DMP3000/3160 only:''' Select charset (0=Epson, 1=IMB#1, 2=IBM#2) ([[Amstrad]] specific: not supported by Epson printers nor Epson clones nor DMP2000/2160)
 
|-
 
|-
|1B 70 30          ||27 112 48        ||ESC p 0          ||Text Style
+
|1B 70 n          ||27 112 n          ||ESC "p" n        ||Text Style
|Cancel proportional mode (not on LX80 ?)
+
|Proportional mode (00h=Off, 01h=On) (not on LX80?)
|-
+
|1B 70 31          ||27 112 49        ||ESC p 1          ||Text Style
+
|Select proportional mode  (not on LX80 ?)
+
|-
+
|1B 73 30          ||27 115 48        ||ESC s 0          ||Misc
+
|Turn half speed mode off
+
|-
+
|1B 73 31          ||27 115 49        ||ESC s 1          ||Misc
+
|Turn half speed mode on (purpose: noise-reduced silent printing)
+
 
|-
 
|-
|1B 78 30          ||27 120 48        ||ESC x 0          ||Text Style
+
|1B 73 n          ||27 115 n          ||ESC "s" n        ||Misc
|Select draft mode (LX80) (FX86e) (not FX80)
+
|Half speed mode (00h=Off=Normal, 01h=On=Slow; purpose: noise-reduced silent printing)
 
|-
 
|-
|1B 78 31          ||27 120 49        ||ESC x 1          ||Text Style
+
|1B 78 n          ||27 120 n          ||ESC "x" n        ||Text Style
|Select NLQ mode   (LX80) (FX86e) (not FX80)
+
|Select Draft/NLQ mode (00h=Draft, 01h=NLQ) (LX80) (FX86e) (not FX80)
 
|-
 
|-
 
|7F                ||127              ||DEL              ||Misc
 
|7F                ||127              ||DEL              ||Misc
|Delete last character from buffer (but not control codes) (works only when buffer isn't yet printer; printing usually starts on terminating lines via CRLF)
+
|Delete last character from buffer (but not control codes) (works only when buffer isn't yet printed; printing usually starts on terminating lines via LF)
 
|-
 
|-
 
|}
 
|}

Latest revision as of 04:31, 22 June 2022

DMP4000 Mechanics.jpg


DMP1 Control Codes

Hex Decimal ASCII Type Description
0A 10 LF Misc CR+LF
0D 13 CR Misc CR or CR+LF (selectable via DIP-switch)
0E 14 SO Width Double Width Mode (also restores 1/6" line feed rate; after graphics printing)
0F 15 SI Width Normal Width Mode (also restores 1/6" line feed rate; after graphics printing)
10 hi lo 16 hi lo DLE "NN" Misc Print Position in character units (NN = two-digit ASCII, "00..79")
14 20 DC4 Misc CR
1B 10 hi lo 27 16 hi lo ESC DLE hi lo Misc Print Position in dot units (hi:lo = 9bit binary, 0..479) (lo=lower 7bit, hi=upper 2bit)
1B 4B hi lo gfx0 gfx1 .. 27 75 hi lo gfx0 gfx1 .. ESC "K" ... Graphics Graphics Mode (hi:lo = 9bit count, 0..479) (lo=lower 7bit, hi=upper 2bit) (followed by as many bytes, with bit0=upper pixel .. bit6=lower pixel). This command additionally changes the line feed rate to 1/9 inch; the new rate is kept applied for text and graphics (until canceled by chr 0Eh/0Fh).
1C num gfx 28 num gfx FD,num,gfx Graphics Repetition of one byte of graphic print data (num=1..127 repeat count) (gfx: bit0=upper pixel .. bit6=lower pixel)

NLQ401 Control Codes

The NLQ401 supports a fraction of the Epson control code set, plus some NLQ401-specific, non-Epson codes. The missing Epson codes include both newer codes, as well as older ones (like vertical TABs, which are supported even by very old Epsons from 1981).

Caution: The NLQ401 firmware strips Bit7 of all incoming characters, so one is restricted to use 7bit codes, even if one does own an 8bit Printer Port. Accordingly, only 7-pin graphics can be used, and some numeric parameters cannot be set to values with bit7=1.

Hex Decimal ASCII Type Description
09 9 HT Tab Horizontal tab
0A 10 LF Feed Line Feed (move to next line)
0B 11 VT Feed NLQ401-specific: acts as mirror of LF (non-Epson code)
0C 12 FF Feed Form Feed (move to next page)
0D 13 CR Misc Carriage Return
0E 14 SO Text Style Select double width for one line (unlike ESC W 0/1 continous)
0F 15 SI Text Style Select condensed mode
12 18 DC2 Text Style Cancel condensed mode
14 20 DC4 Text Style Cancel one line double width mode (unlike ESC W 0/1 continous)
18 24 CAN Misc Cancel text in line (but not control codes)
1B 2D n 27 45 n ESC "-" n Text Style Underlining ON/OFF (00h=off, 01h=on)
1B 30 27 48 ESC "0" Feed Select 9/72 inch aka 1/8 inch line spacing
1B 31 27 49 ESC "1" Feed Select 7/72 inch line spacing
1B 32 27 50 ESC "2" Feed Select 12/72 inch aka 1/6 inch line spacing

NLQ401-specific and Epson MX80: Can be DIP-switched or ESC-"A"-commanded to other spacing (on a DMP2000 or Epson FX80, it's fixed, always 1/6 inch)

1B 33 n 27 51 n ESC "3" n Feed Select n/216 inch line spacing (n=0..255)
NLQ401-restriction: supports only 7bit (n=0..127)
1B 36 27 54 ESC "6" Char Code NLQ401-specific: Use German charset
1B 37 27 55 ESC "7" Char Code NLQ401-specific: Use US-ASCII charset
1B 38 27 56 ESC "8" Misc Disable paper out sensor
1B 39 27 57 ESC "9" Misc Enable paper out sensor
1B 3C 27 60 ESC "<" Misc Select unidirectional mode for one line (Move head home/parking)
1B 3D .. 00 27 61 ... 0 ESC "=" ... 0 Char Code NLQ401-specifc: Print all following chr(01h..7Fh) as CPC-style chr(81h..FFh) symbols; use chr(00h) to return to normal mode
1B 41 n 27 65 n ESC "A" n Feed NLQ401/MX80: Redefine ESC "2" to n/72 inch line spacing (applied by subsequent ESC "2" commands).

On a DMP2000 or FX80 it would directly select n/72 inch line spacing (n=0..85) (without needing to execute subsequent ESC "2")

1B 43 (00) n 27 67 (0) n ESC "C" (NUL) n Feed Select Page length in lines or inches (n=1..127 lines, or 00h,1..22 inch)
1B 44 .. 00 27 68 .. 0 ESC "D" .. NUL Tab Define horizontal TAB positions
1B 45 27 69 ESC "E" Text Style Select emphasized (bold) mode
1B 46 27 70 ESC "F" Text Style Cancel emphasized (bold) mode
1B 47 27 71 ESC "G" Text Style Select double strike mode (also an bold-alike effect)
1B 48 27 72 ESC "H" Text Style Cancel double strike mode (also an bold-alike effect)
1B 49 n 27 73 n ESC "I" n Text Style NLQ401-specific: Select Draft/NLQ mode (01h=Draft, 03h=NLQ) (for Epson-compatibility, better use the ESC "x" code)
1B 4A n 27 74 n ESC "J" n Feed Perform One-shot n/216 inch line feed (n=0..255)
NLQ401-restriction: supports only 7bit (n=0..127)
1B 4B n1 n2 .. 27 75 n1 n2 .. ESC "K" n1 n2 .. Graphics Single 8pin density graphics (60 dpi) (n2:n1 = num bytes following) (480 dots/line)
NLQ401-restriction: supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
1B 4C n1 n2 .. 27 76 n1 n2 .. ESC "L" n1 n2 .. Graphics Double 8pin density graphics (120 dpi) (960 dots/line)
NLQ401-restriction: supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
1B 4E n 27 78 n ESC "N" n Feed Select skip over perforation (n=1..127 lines)
1B 4F 27 79 ESC "O" Feed Cancel skip over perforation
1B 53 n 27 83 n ESC "S" n Text Style Select superscript/subscript (00h=Superscript, 01h=Subscript)
1B 54 27 84 ESC "T" Text Style Cancel superscript/subscript
1B 55 n 27 85 n ESC "U" n Misc Unidirectional mode (00h=Off, faster, use bidirectional printing - 01h=On, slower, left-to-right, more accurate on vertical lines)
1B 57 n 27 87 n ESC "W" n Text Style Double width mode ON/OFF (continous) (unlike DC4: one line) (00h=off, 01h=on)
1B 59 n1 n2 .. 27 89 n1 n2 ESC "Y" n1 n2 Graphics Select 8pin Hi-speed double den graphics (120 dpi)
NLQ401-restriction: supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
1B 5A n1 n2 .. 27 90 n1 n2 ESC "Z" n1 n2 Graphics Select 8pin Quad density graphics (240 dpi) (1920 dots/8"line)
NLQ401-restriction: supports only 7bit, ie. only 7-pins, and n1 cannot have bit7=1
1B 78 n 27 120 n ESC "x" n Text Style Select Draft/NLQ mode (00h=Draft, 01h=NLQ)

DMP2xxx/3xxx Printer Codes (sorted by number)

Hex Decimal ASCII Type Description
07 7 BEL Misc Beeper (produce beep sound, can be disabled via DIP-switch)
08 8 BS Misc Backspace (move print head left by one character unit, allowing to overwrite characters)
09 9 HT Tab Horizontal tab (see ESC "D")
0A 10 LF Feed Line Feed (move to next line)
0B 11 VT Tab Vertical Tab (see ESC "B", ESC "b" and ESC "/")
0C 12 FF Feed Form Feed (move to next page)
0D 13 CR Misc Carriage Return
0E 14 SO Text Style Select double width for one line (unlike ESC W 0/1 continous)
0F 15 SI Text Style Select condensed mode
11 17 DC1 Misc Select printer (online?) (FX80: DIP-switch related) (unclear if Amstrad supports or ignores this code)
12 18 DC2 Text Style Cancel condensed mode
13 19 DC3 Misc Deselect printer (offline?) (FX80: DIP-switch related) (unclear if Amstrad supports or ignores this code)
14 20 DC4 Text Style Cancel one line double width mode (unlike ESC W 0/1 continous)
18 24 CAN Misc Cancel text in line (but not control codes)
1B 0E 27 14 ESC SO Text Style Double width for one line (duplicate) (not FX80, better use SO, not ESC SO)
1B 0F 27 15 ESC SI Text Style Select condensed mode (duplicate) (not FX80, better use SI, not ESC SI)
1B 21 n 27 33 n ESC "!" n Text Style Master select where n is a combination of:
  • Bit0 - Elite/mini (same as ESC "M" / ESC "P")
  • Bit1 - Ignored or Proportional (same as ESC "p")
  • Bit2 - Condensed (same as SI / DC2)
  • Bit3 - Emphasized/bold (same as ESC "E" / ESC "F")
  • Bit4 - Double Strike (same as ESC "G" / ESC "H")
  • Bit5 - Double Width (same as ESC "W")
  • Bit6 - Ignored or Italic (same as ESC "4" / ESC "5")
  • Bit7 - Ignored or Underline (same as ESC "-")

Epson FX-80 and Amstrad DMP2000..3160 support only bit0,2-5 (Amstrad DMPs do support proportional/italics/underline, but they can be changed only via ESC "p/4/5/-", not via ESC "!"). Epson LQ-500 and Star-LC10 do use/support master style bits0-7. Condensed/Emphasized are mutually exclusive.

1B 23 27 35 ESC "#" Char Code MSB control sequence cancel (=obtain MSB from Centronics Pin 9) (not on LX80)
1B 25 n 00 27 37 n 0 ESC "%" n NUL Charset Select character set (00h=Normal/ROM, 01h=User-Defined/RAM) (Star LC10: without ending NUL)
1B 26 00 .. 27 38 0 .. ESC "&" NUL .. Charset Define user defined chars (params: first,last char (0..31 each), followed by "attr,d1..d11" per char, attr.bit7=descender flag (0=descend, 1=no descend, usuable only with 8bit printer port), attr.bit6-4=starting pos(0..7, attr.bit3-0=finishing pos i+4..11), d1..d11 are 8-pin columns) (must be enabled via DIP-switch!)
1B 2A d lo hi .. 27 42 d lo hi .. ESC "*" d lo hi.. Graphics Print 8pin Graphics (hi:lo number of dot columns (number of data bytes), each data byte defines 8-pins (bit7=upper pin), Density (d) can be:
  • 00h = 60 dpi, 480 pix per 8 inch, single density graphics (same as ESC K)
  • 01h = 120 dpi, 960 pix per 8 inch, double density graphics (same as ESC L)
  • 02h = 120 / 2 dpi, double speed double density (same as ESC Y)
  • 03h = 240 / 2 dpi, double speed quad density (same as ESC Z)
  • 04h = 80 dpi, 640 pix per 8 inch (for CPC/EGA/VGA screenshots)
  • 05h = 72 dpi, 576 pix per 8 inch (for 1:1 pixel aspect ratio)
  • 06h = 90 dpi, 720 pix per 8 inch (for Hercules screenshots)

In the two "double speed" modes, dots can be positioned at fine resolution, but the next dot (in the same row) must be white

1B 2D n 27 45 n ESC "-" n Text Style Underlining on/off (00h=Off, 01h=On)
1B 2F c 27 47 c ESC "/" c Tab Select vertical tab channel (c=0..7); channels can be defined via ESC "b"
1B 30 27 48 ESC "0" Feed Select 9/72 inch aka 1/8 inch line spacing
1B 31 27 49 ESC "1" Feed Select 7/72 inch line spacing
1B 32 27 50 ESC "2" Feed Select 12/72 inch aka 1/6 inch line spacing
1B 33 n 27 51 n ESC "3" n Feed Select n/216 inch line spacing (n=0..255)
1B 34 27 52 ESC "4" Text Style Select italic mode (unclear if italics can be also used by setting bit7 of the character number?)
1B 35 27 53 ESC "5" Text Style Cancel italic mode
1B 36 27 54 ESC "6" Char Code Enable printing of characters (128-159,255) (Italics?)
1B 37 27 55 ESC "7" Char Code Cancel [ESC "6"] command
1B 38 27 56 ESC "8" Misc Disable paper out sensor
1B 39 27 57 ESC "9" Misc Enable paper out sensor
1B 3A 00 00 00 27 58 0 0 0 ESC ":" NUL NUL NUL Charset Copy charset ROM into RAM (the three NULs are "for future expansion")
1B 3C 27 60 ESC "<" Misc Select unidirectional mode for one line (Move head home/parking)
1B 3D 27 61 ESC "=" Char Code MSB = 0 (not on LX80)
1B 3E 27 62 ESC ">" Char Code MSB = 1 (not on LX80)
1B 3F s d 27 63 s d ESC "?" s d Graphics Reassign density of ESC "K/L/Y/Z" codes. 's'=code name (K,L,Y or Z), 'd'=density (0..6, same as for ESC "*", see there) (defaults are ESC "K"=0, "L"=1, "Y"=2, "Z"=3)
1B 40 27 64 ESC "@" Misc Initialize printer (Reset)
1B 41 n 27 65 n ESC "A" n Feed Select n/72 inch line spacing (n=0..85)
1B 42 .. 00 27 66 .. 0 ESC "B" .. NUL Tab Define up to 16 vertical tabs with ascending values from 1..255; specifying an empty list (ESC "B" NUL) clears vertical tabs; used with VT aka chr(0Bh); one can also define multiple vertical tab channels (see ESC "b" and ESC "/")
1B 43 (00) n 27 67 (0) n ESC "C" (NUL) n Feed Select Page length in lines or inches (n=1..127 lines, or 00h,1..22 inch)
1B 44 .. 00 27 68 .. 0 ESC "D" .. NUL Tab Define up to 32 horizontal tabs with ascending values from 1..137; specifying an empty list (ESC "D" NUL) clears all horizontal tabs; used with HT aka chr(09h)
1B 45 27 69 ESC "E" Text Style Select emphasized (bold) mode
1B 46 27 70 ESC "F" Text Style Cancel emphasized (bold) mode
1B 47 27 71 ESC "G" Text Style Select double strike mode (also an bold-alike effect)
1B 48 27 72 ESC "H" Text Style Cancel double strike mode (also an bold-alike effect)
1B 49 n 27 73 n ESC "I" n Char Code Printable chr(0-31,128-159) (00h=Control Codes, 01h=Printable Characters) (not on LX80) ;makes some of these characters printable (unknown which ones) whilst others (like 1Bh) are always treated as control codes
1B 4A n 27 74 n ESC "J" n Feed Perform One-shot n/216 inch line feed (n=0..255)
1B 4B lo hi .. 27 75 lo hi .. ESC "K" lo hi .. Graphics Print 8-pin 60-dpi graphics (same as ESC "*" 0, see there) (density of ESC "K" can be redefined via ESC "?")
1B 4C lo hi .. 27 76 lo hi .. ESC "L" lo hi .. Graphics Print 8-pin 120-dpi graphics (same as ESC "*" 1, see there) (density of ESC "L" can be redefined via ESC "?")
1B 4D 27 77 ESC "M" Text Style Select elite width (12 cpi) (mini font)
1B 4E n 27 78 n ESC "N" n Feed Select skip over perforation (n=1..127 lines)
1B 4F 27 79 ESC "O" Feed Cancel skip over perforation
1B 50 27 80 ESC "P" Text Style Cancel elite / Select pica width (10 cpi)
1B 51 n 27 81 n ESC "Q" n Misc Set right margin (n=1..255 character columns) (this is WIDTH, counted from left margin)
1B 52 n 27 82 n ESC "R" n Charset Select International character set where numeric 'n' is:
  • 00h USA (ASCII)
  • 01h France
  • 02h Germany
  • 03h UK (Pound symbol)
  • 04h Denmark
  • 05h Sweden
  • 06h Italy
  • 07h Spain
  • 08h Japan (Yen symbol)

DMP2000..3160 do support 0..8, ie. up to including Japan. The default setting is DIP-switch selectable.

1B 53 n 27 83 n ESC "S" n Text Style Select superscript/subscript (00h=super, 01h=sub)
1B 54 27 84 ESC "T" Text Style Cancel superscript/subscript
1B 55 n 27 85 n ESC "U" n Misc Unidirectional mode On/Off (00h=Off=faster, bidirectional printing, 01h=On=slower, left-to-right, more accurate on vertical lines)
1B 57 n 27 87 n ESC "W" n Text Style Double width mode (continous) (00h=Off, 01h=On) (unlike DC4 and SO: one line)
1B 59 lo hi .. 27 89 lo hi .. ESC "Y" lo hi .. Graphics Print 8-pin 120/2-dpi graphics (same as ESC "*" 2, see there) (density of ESC "Y" can be redefined via ESC "?")
1B 5A lo hi .. 27 90 lo hi .. ESC "Z" lo hi .. Graphics Print 8-pin 240/2-dpi graphics (same as ESC "*" 3, see there) (density of ESC "Z" can be redefined via ESC "?")
1B 5E d lo hi .. 27 94 d lo hi .. ESC "^" d lo hi .. Graphics Print 9-pin graphics at selected density (similar to ESC "*" d, see there for details). Allowed density for ESC "^" is officially only d=00h..01h (unknown if 02h..06h do work, too). hi:lo specifies the number of dot columns (the number of 2-byte pairs) (byte1.bit7..bit0=upper..lower, byte2.bit7=lowest, byte2.bit6..bit0=unused)
1B 62 c .. 00 27 98 c .. 0 ESC "b" c .. NUL Tab Define up to 16 vertical tabs per channel (c=0..7) with ascending values from 1..255; specifying an empty list (ESC "b" c NUL) clears that vertical tab channel; channels are selected via ESC "/" and can be then used with chr(09h); there is also a similar command without channel-numbers (ESC "B")
1B 69 n 27 105 n ESC "i" n Misc Instant character printing (00h=Off=default, ie. print only on LF, 01h=On=print each char immediately; also scrolls printed text into view; when buffer empty) (not on LX80)
1B 6A n 27 106 n ESC "j" n Feed Perform One-shot n/216 inch reverse linefeed (not on LX80)
1B 6C n 27 108 n ESC "l" n Misc Set left margin (n=0..255 character columns)
1B 6D n 27 109 n ESC "m" n Charset DMP3000/3160 only: Select charset (0=Epson, 1=IMB#1, 2=IBM#2) (Amstrad specific: not supported by Epson printers nor Epson clones nor DMP2000/2160)
1B 70 n 27 112 n ESC "p" n Text Style Proportional mode (00h=Off, 01h=On) (not on LX80?)
1B 73 n 27 115 n ESC "s" n Misc Half speed mode (00h=Off=Normal, 01h=On=Slow; purpose: noise-reduced silent printing)
1B 78 n 27 120 n ESC "x" n Text Style Select Draft/NLQ mode (00h=Draft, 01h=NLQ) (LX80) (FX86e) (not FX80)
7F 127 DEL Misc Delete last character from buffer (but not control codes) (works only when buffer isn't yet printed; printing usually starts on terminating lines via LF)
  • Character codes 00h-FFh...
    • Codes 00h..1Fh and 7Fh contain control codes, but at least some of them can be also used as print-able characters; at least when enabled via ESC "I1" (according DMP2000 manual chap6/page7 example: chr(6) is a print-able (user defined) character. others like chr(27) are obviously not printable)
    • Codes 20h..7Eh are ASCII characters (some changed in "international" modes)
    • Codes 80h..9Fh and FFh act as mirror of control codes 00h..1Fh and 7Fh (this mirroring can be disabled via ESC "6")
    • Codes A0h..FEh are italic versions of 20h..7Eh
  • The DMP2000 (and up) supports all Epson FX80 control codes, plus some additional ones:
    • ESC SO and ESC SI (mirrors of SO and SI) (for some reason, these mirrors are often supported by Epson-clones like Star LC10, though they are rarely found in official Epson specs)
    • ESC "x" n (select NLQ/Draft mode) (the original Epson FX80 didn't support NLQ, however, the ESC x command is found in other Epson models like LX80 and FX86e)
    • ESC "m" n (select IBM charset) (this seems the be an Amstrad invention, supported only by DMP3000/3160, not supported by DMP2000/2160, nor by real Epson printers, nor by Epson-clones like Star LC10).
  • Some one-digit parameters (like on/off flags) may be recognized both is binary chr(0xh) as well as ASCII chr(3xh).