Dear All
Finally I Edit/Compile an ESC-PAGE.TXT as a short Hand Summary for myself,
After surfing on internet more than 200 hours,
I am wondering why EPSON do not post this protocol on its web,
although it got patent and copyright,
and there are many revisions still go on and under development,
I think post this file won't violate the copyright, and
hope helpful to anybody still deal with old DOS program.
If anyone has a Printed/Published/File form ESC/PAGE reference manual,
I am still interested to have it or but it. TKS.
Zence Chen
(e-mail address removed)
Kaohsiung, Taiwan
2005/01/14 Fri
Abstract:
there is one program MST_MAIN.EXE for MELVEC Driver by Mitsubishi,
used in Hot Press Iron Factory Taiwan, using EPSON LP-1500 Laser
with Japanese Font Support,
the Printer Language is ESC/Page with 2 bytes code font support,
I wrote a TSR program EPAGEI17.ASM to swap 2 byte code font
into 1 byte code font,(only Valid ASCII code set),
after that, the program MST_MAIN.EXE can run with EPL-5800(and later)
ESC/Page supported Laser w/o Japanese Font embedded,
then I try to find full EPSON ESC/Page Reference manual but fail,
It has just been Published by EPSON and hard to buy locally,
after collect pieces of information thru internet, most from Japan,
I think this is enough for my interest and service job.
Maybe some later day, I'll write/improve my TSR program to do
Protocol Translation from ESC/Page to HP-GL or HP-PCL,
(seems someone wrote before, But Not easy to find out)
then total get rib of ESC/Page Printer, Ha-Ha.
and SEIKO EPSON won't be happy with this result, Ha-Ha-Ha.
----------------------------------------------------------------------------
---------
"Zence Chen" (e-mail address removed)
Dear ALL
I have encounter a OLD DOS/V program using page Language ESC/Page(TM)
protocal
to drive EPSON LP-1500 LASER PRINETR / Japanese,
(Support Two Byte FONT CODE, (<GS>1;2ssF),
AS I survay and buy more than 10 pieces EPSON LASER printer,
I found there is some difference between just ESC/Pages,
ESC/PageK,ESC/PageC,ESC/PageJ,..
Except buy from Japan, EDRJ(EPSON Developer Relation JAPANl) online,
http://edrj.i-love-espon.co.jp
CAN I download this ESC/Page Instruction/Command-Set Reference Manual?
(AS for ESC/P, ESC/P2 command summary was usually attatched within user
manual)
why ESC/PAGE do not included in user manual or CD as before,
although I buy and use more 100 pieces of EPSON printer thru work carrer,
when search "ESC/PAGE" using Google, you can find many EPSON Laser has
this
Emulation and emphasis its function, but no more than that, what's the
problem,
Is ESC/Page just a LOGO in new tech product?
Most helpful infomation was found in OpenSource especially Linux Group,
I don't like this, and funny to i-love-eposn
following was my experience,
ESC/Page,Page2-B&W,Color,ESC/PageJ,ESC/PageC,ESC/PageK seem not all the
same,
all not support 2 Byte Code Font except PageJ/K/C ?
1.EPL-3000,5700,5700L,5800L,5900L,6100L,6200L,C900:NO SUPPORT ESC/Page
2.EPL-5800,5900,6100,6200,N2750,C1900:SUPPROT ESC/Page, But 1 Byte Font Code
Only,"(1Dh)1;1ssF", NG
3.EPL-5500C/EPL-N1200C : Tranditional Chinese, ESC/PageC, seems support 2
Byte Code Font? mot test yet?
4.EPL-5500K : Simpified Chinese, ESC/PageK, seems support 2 Byte Code Font?
5.JAPANESE EPL-LP800,1000,1500,1600,1700,1800,1900, :- 2 Byte Font Code : OK
Zence Chen
(e-mail address removed)
Taiwan
----------------------------------------------------------------------------
---------
----------------------------------------------------------
ESC-PAGE.TXT : Zence Chen, 2005/01/13
----------------------------------------------------------
ES:ESC: $1B : ESC/P Leading Character
FS: $1C : For Double Byte Font Control Code
GS: $1D : ESC/Page Leading Character
Reference : EPSON ESC/Page reference Manual , But I don't have it.
\MSTOOL\MST_MAIN.EXE : for Mitsubishi MELVEC Driver : using HEX Viewer
\GRA2EPGC\EXTPAGEL.PAS
Support Printer :
2 Byte Font Code EPSON Laser LP-1500 and serires
1 Byte Font Code ESC/Page Laser : EPL-5800/5900/6100/6200/N2750
with Zence's EPAGEI17.ASM
following function call declaration in EXTPAGEL.PAS unit
within cpmpressed file GRA2EPGC.LZH
download from
http://www.vector.co.jp/download/file/dos/business/ff005144.html
Modified by Matsubayashi(94/03-)
Compiled by TURBO PASCAL 5.0
idx Code Function Declaration
--- ------ -----------------------------------------------------------------
--------
01 pmE z function SetPrinterMode(mode: integer): string;
02 owE function EPage_OverWriteMode(owm: integer): string;
03 rhE function EPage_HardReset: string;
04 rpE function EPage_ParamReset: string;
05 poE function EPage_PaperDirection(d: integer): string;
06 muE function EPage_SetUnit(unitsys: integer; min_val: double):
string;
07 mmE function EPage_MemoryMode(mode: integer): string;
08 tsE function EPage_ScreenMode(mode: integer): string;
09 spE function EPage_ScreenPattern(obj, graymode, grayscale: integer):
string;
10 spE function EPage_GrayScale(obj, gray: integer): string;
11 loE function EPage_Offset(xoff, yoff: longint): string;
12 psE function EPage_PaperType(pt: integer): string;
13 psE function EPage_PaperSize(w, l: longint): string;
14 caE function EPage_ClipAria(left, top, right, bottom: longint):
string;
15 cmE function EPage_ClipMode(mode: integer): string;
16 X function EPage_LocateX(x: longint): string;
17 xP function EPage_LocateC(c: integer): string;
18 Y function EPage_LocateY(y: longint): string;
19 yP function EPage_LocateL(l: integer): string;
20 H function EPage_LocateRelX(x: longint): string;
21 hP function EPage_LocateRelC(c: integer): string;
22 V function EPage_LocateRelY(y: longint): string;
23 alfP function EPage_AutoLF(mode: integer): string;
24 vP function EPage_LocateRelL(l: integer): string;
25 ppP function EPage_Push_Pop(l: integer): string;
26 pmP function EPage_PitchMode(pm: integer): string;
27 pP function EPage_Pitch(px, py: integer): string;
28 spF function EPage_Spacing(sp: integer): string;
29 coP function EPage_ChOffset(x, y: longint): string;
30 ssF function EPage_SymbolSet(ss, b: integer): string;
31 wmF function EPage_ChWidth(w: integer): string;
32 wcF function EPage_ChWidthC(w: integer): string;
33 hmF function EPage_ChHight(h: integer): string;
34 hpF function EPage_ChHightP(h: integer): string;
35 weF function EPage_ChLineWidth(fw: integer): string;
36 roF function EPage_ChRotation(a: integer): string;
37 slF function EPage_ChSlant(a: integer): string;
38 tfF function EPage_Font(f: integer): string;
39 vpC function EPage_TateMode(mode: integer): string;
40 lG function EPage_Line(x1, y1, x2, y2: longint): string;
41 cG function EPage_Circle(x, y, r: longint): string;
42 rG function EPage_Rectangle(x1, y1, x2, y2, r: longint): string;
43 lpG function EPage_LineType(p, lt: integer): string;
44 lwG function EPage_LineWidth(lw, ed, jc: integer): string;
45 dmG function EPage_DrawMode(fm: integer): string;
----------------------------------------------------------------------------
--------
Note: Lowercase and UpperCase Char is different, just like ESC/P definition
Sorted By ESC/PAGE GS Tail Command Code
ps. all n/s/x/y, n1/n2/s1/s2/x1/x2/y1/y2: is string
all command last Char seemd to be Uppercase, donate end of
GS-Command-Code
* : Used ESC/Page GS-Code in MST_MAIN.EXE, about 20 set
$ : ESC/Page GS-Code in MST_MAIN.EXE, about set
Tail-Code : Syntax Idx/Name Description
Example
---------- ------------------ ----------------- ------------------- ------
------
abP $ : GS+n+'abP' :Unknown n:? 1abP
2abP
affP : GS+n+'affP' :AutoFF n='1'/'0' Set/Clr 0affP
alfP : GS+n+'alfP' 25:AutoLF n='1'/'0' Set/Clr 0alfP
boP : GS+n+'boP' :Unknown n:? 0boP
caE : GS+x;y;x2;y2+'caE' 14:ClipArea x:left,y:Top
x2:right,y2:bottom
cG : GS+x;y;r+'cG' 41:Circle
clfP : GS+n1;n2;n3+'clfP' :Unknown
0;0;1clfP
coP : GS+x;y+'coP' 29:ChOffset x,y
ixel 0;0coP
char offset Adjustment
cmE : GS+n+'cmE' 15:ClipMode n='1'/'0' Set/Clr
dcF : GS+n+'dcF' :SelDownloadFont n: ndcF
dh{F : GS+b;n+'dh{F'+DS
ownloadFont b:134 DS(42+54+28)
134;ndh{F
followed by 134 bytes data structure
DataStructure(42)+FontName(54)+SymbolSetName(28)
dmG : GS+n+'dmG' 45
rawModeGraphx n='1'/'0' Set/Clr? 1dmG |
0dmG
drE $ : GS+n1;n2;n3+'drE' :Unknown
0;n;ndrE
0;80,80drE
H : GS+x+'H' 20:LocateRelX x
ixel/point rel
move hor
hmF * : GS+n+'hmF' 32:ChHigth n:char-Height(min) 40hmF
hP : GS+x+'hP' 21:LocateRelC x:unit column rel
move hor
hpF * : GS+n+'hpF' 34:ChHightP n
oint
iaF : GS+n+'boP' :Unknown n:? 511iaF
ifF : GS+n+'boP' :Unknown n:? 511ifF
lG * : GS+x1;y1;x2;y2+'lG' 40:Line (x1,y1) to (x2,y2)
lpP : GS+n1;n2+'lpP' :Unknown n1: 8;0lpP
n2: 8;nlpP
iuE : GS+n1;n2+'iuE' :Unknown n1:? kyu-ushi
n2:? bin
lmE : GS+n+'lmE' :LeftMargin n:bottom 0lmE
nrmE
followed by n+'rmE'
n:MarginMax
loE : GS+x;y+'loE' 11:Offset Set ref/Home Point
usually followed by set
Top/Bottom/Left/Right Margin
0tmE/xxbmE/0lmE/xxrmE
lpG * : GS+n1;n2+'lpG' 43:LineType n1
? 0;0lpG
n2:lt 0/1/2/3/4
0:Solid 1
ot 2:? 3
ash
4
ot-Dash
lwG * : GS+n1;n2;n3+'lwG' 44:LineWidth n1:width
5;0;3lwG
n2:line-end-mode
2;0;3lwG
n3:line-junction-mode
mcF ? * : GS+n1;n2+'mcF' :Unknown n1: 0;0mcF
n2
efine UserSet? 0;1mcf
0;2mcf
1;3mcF
followed by spF/ssF/tfF/wmF/hmF/slF
mmE : GS+n+'mmE' 07:MemoryMode n='1'/'0' Set/Clr 1mmE
muE * : GS+n1;n2+'muE' 06:SetUnit n1:Unit System
2;0.1muE
0
oint(1/72")/1:inch/2:mm
1;0.24muE
Note Point & Pixel is different
n2:Min_val 0.1, xxx.xx
owE : GS+n+'owE' 02:OverWriteMode n='1'/'0' Set/Clr 1owE
pG : GS+x;y;..xn;yn+'pG'
olygonGraphDraw
used inside 1tsE/0tsE
pmE * : GS+'1pmE' 01:SetPrinterMode ESC/Page -> ESC/P 1pmE
pmP : GS+n+'pmP' 26
itchMode Movement Mode 1pmP
poE * : GS+n+'poE' 05
aperDirection '0':Horizon 0poE
pP : GS+n1;n2+'pP' 27
itch n1:? 0,0pP
n2:?
ppP : 25
ushPopPosn 1ppP
ushPosn 1ppP
2ppP
opPosn 2ppP
psE : GS+n+'psE' 12
aperType n
apae_type npsE
: GS+n;;+'psE' 12
aperType n;;psE
: GS+'-1';w;h+'psE' 13
apaerSize w:width
? -1;w;lpsE
l:length(height)
rG * ; GS+x;y;x2;y2;n+'rG' 42:Rectangle n:fill_enable?
0;0;1950,2750,0rG
rhE * : GS+'rHE' 03:HardReset rhE
rmE : GS+n+'rmE' :RightMargin n:RightMargin nrmE
roF : GS+n+'roF' 37:ChRotation n:Char rotate Angle
0-359
rpE : GS+'rpE' 04
aramReset n:RightMargin rpE
sc{F : GS+b;c+'dh{F'+DS
ownloadRaster b:size(16+datalenght)
c:char_code
used after dcF
DataStructure(16)+RasterDataLenght(..)
slF * : GS+n+'slF' 37:ChSlant n:Char Slant Angle 330slF
0-359
spE * : GS+n1;n2;n3+'spE' 09:ScreenPattern n1
bj
1;1;5spE
n2:graymode
1;1;80spE
n3:grayscall 0(WT)-100(BK)
10:GrayScale n2=0, n3:grayscall
1;0;20spE
spF * : GS+n1+'spF' 28:Spaceing 0spF
ssF * : GS+s1+';'+s2+'ssF' 30:SymbolSet s1:SymbolSet,
s1='1',..
s2:1/2-Byte Code,
s2='0','1','2'
1;2ssF
S2=0:UserSymbolBase n;0ssF
tfF * : GS+n+'tfF' 38:Font n:Font Selection 10tfF
9tfF
tmE : GS+n+'tmE' :Top Margin n:Top 0tmE
nbmE
followed by n+'bmE'
n:MarginMax
tsE * : GS+n+'tsE' 08:ScreenMode n='1'/'0' Set/Clr 1tsE
set befopre mass Line(lG)
clr after done
V : GS+y+'H' 22:LocateRelY y
ixel/point rel
move ver
vP : GS+y+'vP' 24:LocateRelL x:unit Line/Row rel
move ver
vpC : GS+n+'vpC' 39:TateMode n='1'/'0' Set/Clr
Text Vertial writing 1
ortrait/Vertical
0:Lanscape/Hortizontal
X * : GS+x+'X' 16:LocateX x
ixel
x:'0'..8.5x300
x:mm 8.5"x2.54x100=2159
xP : GS+x+'xP' 24:LocateC x:unit Column move
hor
Y * : GS+y+'Y' 18:LocateY y
ixel
y:'0'..11.5x300
y:mm 11.5"x2.54x100=2921
yP : GS+y+'yP' 24:LocateL y:unit line/row move
ver
wcF * : GS+n+'wcF' 33:ChWidthC n:CPI
weF * : GS+n+'weF' 35:ChLineWidth n:char Line Width sel
wmF * : GS+n+'wmF' 31:ChWidth n:char-Width(min) 40wmF
z+NULx2 * : GS+'z'+$00+$00 01:SetPrinterMode ESC/P -> ESC/Page
$0C * : FormFeed Valid in ESC/Page
#X ($23) : 2byte ASCII => X
!X ($21) : Punctualable Chars.
change/swap rule
$21 !! => ' ' $20
$3F !? => '/' $2F
$27 !' => ':' $3A
$25 !% => '.' $2E
$6f !o => '\' $5C
$4A !J => '(' $28
$4B !K => ')' $29
$5D !] => '-' $2D Guess
------- End of File:ESC-PAGE.TXT ------------------