ttrue equ 1 false equ 0 lvers equ true CMDCH equ '\' ;/* command character (use 'li'?)*/ DOTCH equ '.' ;/* at beginning of line, same ; as CMDCH */ SOFTSP equ 0A0H ;/* WS fill sp char */ SOFTHY equ 01EH ;/* WS inactive soft hyphen */ SOFTHYA equ 01FH ;/* WS acitve soft hyphen */ NUMFTS equ 7 ;/* maximum number of graphic fonts */ LENFTN equ 14 ;00/D:12345678 NUMRULES equ 32 SECSIZ equ 128 MAXLINE equ 300 MAXCOL equ 10 BSTKSIZE equ 6*MAXCOL GBUFSIZ equ 2000 MAXSNEST equ 40 ;/* various measures in terms of dots */ PICA equ 24 POINT equ 3 INCH equ 240 VINCH equ 216 ;/* masks for mode bits */ ELITE equ 01 PRPTNL equ 02 CMPRSSD equ 04 EMPHSZD equ 08 DBLSTRK equ 10H EXPNDD equ 20H UNDRLN equ 40H ITALIC equ 80H ;/* So that's b0-b7; b8,b9,b10 are used for the ; current graphics font, which is 'fo'-1. */ SUPSCRPT equ 0800H SUBSCRPT equ 1000H BENT equ 2000H TALL equ 4000H IGNORE equ 8000H ;/* All bits are committed */ ;/* define bits for type of command value */ HZNUM equ 1 VTNUM equ 2 ;/* numerical value, vertical measure */ EPSSYN equ 4 ;/* synonym of Epson command */ BRK equ 8 ;/* causes a break */ CHARG equ 16 ;/* arg is character */ FLAGCH equ 32 ;/* value is character flag */ MCRO equ 64 ; a macro string BRKAFT equ 128 ; causes break before next input line ARGTRUE equ 1+32 ; assume true arg, but no following number ; /* All bits are committed */ ;/* character flags */ CEFLAG equ 090H RAFLAG equ 091H SPFLAG equ 092H HSFLAG equ 093H PAFLAG equ 094H FRFLAG equ 095H BCKFLAG equ 096H dseg ds 6 ;formerly used by alloc -- now not used ;/* following block matches format of data in ep.ini */ ;/* initialization data size tot.size */ ;int val[27][27]; /* 05B2 05B2 values of 'pl', etc. */ val: vlgen macro lets,lab tglet set 0ffh irpc xlet,lets if tglet q1 set '&xlet'-'`' else q2 set '&xlet'-'`' endif tglet set 0 endm org q1*54 + q2*2 + val if nul lab lets: else lab: endif endm vlgen al,align vlgen be vlgen bm vlgen bo vlgen bp vlgen ca,callig vlgen cc vlgen ch,cheight vlgen co vlgen cs vlgen cw vlgen ec vlgen ep vlgen fa vlgen fm vlgen fo vlgen gu vlgen hm vlgen ir vlgen ju vlgen ke vlgen ll vlgen mx vlgen nc vlgen pf vlgen pl vlgen pn vlgen rb ; vlgen sh vlgen sl ; vlgen st vlgen su vlgen ta vlgen tc vlgen tm vlgen uc org val+2*27*27 ;char valtp[27][27]; /* 02D9 088B type of value, e.g. numerical */ valtp: ds 27*27 ;char modelen[64]; /* 0040 08CB width of Epson built-in char's */ modelen: ds 64 ;char pmlen[256]; /* 0100 09CB width of Epson prop'l char's */ pmlen: ds 256 ;int mode; /* 0002 09CD 16 bits keep track of font, etc.*/ mode: ds 2 ;char tabwid; /* 0001 09CE nominal char width for int'g tab*/ tabwid: ds 1 ;NO LONGER USED ;char bending[7][24]; /* 00A8 0A76 bending */ bending: ds 7*24 ;char fillinit[10]; /* 000A 0A80 (not used) */ ds 10 ; /* total = 10 pp. or 21 records */ ;from FGET.C, fl at val + A80H (6686H) is array 8 by (128+6) uses 430H fl: ds 8*(128+6) ; flnum at fl + 430H (6AB6) ds 2 ;flnum now private to fget ;EPDCL equ 6AB8H (once upon a time) nospec: ds 1 ;disable special features while doing headings noprint: ds 1 ;disable printing errtype: ds 2 llength: ds 2 ;6ABCH vposition: ds 2 bkaft: ds 1 ;flag break before next input line gfflag: ds 1 ;note loading graphic font ;int pgno, ; errtype, ; llength, /* current ll minus indents */ ; vposition, /* vert'l position of printhead */ ; spdots, /* number dots to move printhead ; down before printing, even at ; the beginning of a page */ skdots: ds 2 emode: ds 2 ; skdots, /* as above, but not at beginning ; of page */ ; emode, /* what the Epson thinks the current ; mode is */ allmode: ds 2 errcode: ds 2 ; allmode, /* keep mode for } command */ ; errcode; ;(dt1,dt2 not used now -- made local to cseq) frplace: ds 2 ;remember where to put a cl space ;dt1 equ epdcl+18 ;6ACA ;dt2 equ epdcl+19 brkflag: ds 1 ;6ACCH bsflag: ds 1 epsflag: ds 1 grfflag: ds 1 unidir: ds 1 tallflag: ds 1 tabottom: ds 1 ;6AD2H scrncol: ds 1 ;char dt1, dt2, /* 1st and 2nd letter of command */ ; brkflag, /* signal don't justify this line */ ; bsflag, /* overprint next char */ ; epsflag, /* have an Epson char in output line */ ; grfflag, /* have a graphics char in output line */ ; unidir, /* Epson unidir'l print assumption */ ; tallflag, /* tall char in output line */ ; tabottom, /* last 3 passes when tall char present */ ; scrncol; /* apparent column on screen when ; line of text was edited */ fnbuf: ds 29 ;was 30 mcinok: ds 1 ;flag ok to reset indent in mc mode termcnt: ds 1 ;(formerly used for fname) nexttab: ds 1 ;next implicit 'n' value for tb command ;char fnbuf[30], *fname; /* filename buffer & ptr */ ; inpoint: ds 2 ;(6AF4) inbuf: ds MAXLINE ;int inpoint; ; char inbuf[MAXLINE]; /* one line from the text */ glen: ds 2 ;6C22H gpoint: ds 2 ;6C24H gbuf: ds GBUFSIZ ;6C26H ; ;int glen, /* cumulative length of line ; currently being formed, in dots */ ; gpoint; ; char gbuf[2000]; /* dot graphics data for one line ; of output */ outpoint: ds 2 ;73F6H xoutbuf: ds MAXLINE outbuf: ds 2 ;7524H ; ;int outpoint; ; char xoutbuf[MAXLINE], /* character data for one line of output */ ; *outbuf; xattrbuf: ds 2*MAXLINE attrbuf: ds 2 ;777EH xwidbuf: ds 2*MAXLINE widbuf: ds 2 ;79D8H ; int xattrbuf[MAXLINE], /* mode attributes for each character */ ; *attrbuf, ; xwidbuf[MAXLINE], /* width of each character */ ; *widbuf; ; /* the pointers above are used so that the buffers ; can be used temporarily for the page number (I ; painted myself into a corner) */ ; brccount: ds 2 ds 2 ;not used brcstk: ds 2*MAXCOL*6 ;int brccount, /* count unpaired left braces */ ; nubrcpt, /* brace stack pointer */ ; brcstk[MAXCOL][6]; /* brace stack */ ftp: ds 2*NUMFTS ;7A56H fix: ds 2*NUMFTS*128 ;7A64H ftlen: ds NUMFTS*128 ;8164H ;/* font data */ ;unsigned ftp[NUMFTS]; /* memory addresses where fonts ; begin in 'fnt' */ ;int fix[NUMFTS][128]; /* for each font, indices of ; individual character definition */ ;char ftlen[NUMFTS][128], /* character widths - determined ; by values in 'fix' */ ftname: ds NUMFTS*LENFTN ;(84E4) nextft: ds 1 ;(8523) ; ftname[NUMFTS][9], /* names - e.g. MODERN */ ; nextft; /* number of next font to load */ begovr: ds 2 ;8524H endovr: ds 2 ;8526H ;int begovr, endovr; brcpt: ds 2*MAXCOL lindent: ds 2*MAXCOL ;853CH ;int brcpt[MAXCOL], lindent[MAXCOL]; pendc: ds 1 ;8550H ;char pendc; attach: ds 2*32 ;int attach[32]; duplflag: ds 1 ;char duplflag hycorrect: ds 1 ;/* for processline: */ ; char hycorrect; gargc: ds 2 gargv: ds 2 ;used in loadft fullname: ds 17 ;st and sh now done indirectly -- moved to here ;(cf stowc, gchr, cseq) st: ds 2 sh: ds 2 ;$$$ from GCHR pass: ds 1 ch: ds 1 c0: ds 1 c1: ds 1 c2: ds 1 bx: ds 1 ftn: ds 1 charft: ds 1 len: ds 2 lstlen: ds 2 pix: ds 1 power: ds 1 gindex: ds 2 dtgindex: ds 2 ix: ds 2 widix: ds 2 ptft: ds 2 ptft0: ds 2 ptft1: ds 2 ptft2: ds 2 gcj: ds 2 cx48: ds 6 _st: ds 2 _sh: ds 2 ;$$$ from GSTR afterdup: ds 1 _savheight: ds 2 tduplex: ds 1 tripleh: ds 1 _gpass: ds 1 maxgpt: ds 2 nvdots: ds 1 spare1: ds 2 spare2: ds 2 spare3: ds 2 ;kerning strings for each font -- stowc & cseq klist: ds NUMFTS*2 ;misc. used from cseq rlpoint: ds 2 ;also from process mcoloffset: ds 2 ;also from gstr rulist: ds NUMRULES*4 ;also from gstr, prtsbuf, gotocol if lvers NUMLINES equ 32 lilist: ds NUMLINES*8 endif utabs: ds 32*2 gname: ds 13 _$stack: ds MAXSNEST*2 _$buf: ds 1024 ..freram: CSEG