N,"NLQ Printer Draft Font"; t:cn="(c) Copyright 1988,1989 Bruce J. Patin, 8/28/88, 01/24/89"; x: df=2; {init data format to 2} x: xd=2; {double horizontal density} x: yd=1; {one pass, normal vertical density} x: to=6; x: lo=0; x: cw=11; x: ch=8; x: ep=11,"Ending Point"; x: sp=0,"Starting Point"; x: sh=1,"Shift (0=shift down,1=none)"; a: aa=1; {allow adjacent dots, but note that they are not allowed.} a: fw=11; a: fh=9; a: bl=6; a: d8=0; {d8=1 says downloading} E; {end initialization section.} Ki1,"Load font"; {start input font.} L 8; j 12:fp,ge,fs; {L12 is end of file reached} u: zz; j 8: zz,ne,$1b; {look for esc} u: zz; j 8: zz,ne,$26; {look for x'26'} u: zz; j 8: zz,ne,$00; {look for 0 } u: cc; {decimal code of character} u: cc; {decimal code of character} L 1; {label 1 to indicate start of character.} $ : cc,"Loading code (hex) "; x: df=2; {init data format to 2} x: pd=2; {double horizontal density} x: yd=1; {one pass, normal vertical density} x: cw=11; x: ch=8; u: at;{attribute data: bit 0=top offset, 1-3=left offset, 4-7=endpoint} x: sh=at/128; x: to=1-sh+6; x: lo=0; a: a1=at/16; {get hi 4 bits of at} a: a2=sh*8; {get sh bit ready for subtracting} x: sp=a1-a2; a: a1=at/16*16; {partial calc to strip off hi 4 bits of at} x: ep=at-a1; {ending proportional position} g; {character data} ESL; {end character search, character loaded.} j 8:1,eq,1; {go get next char} L 12; {end of file reached} #:**,"Font loaded."; Ei1,2,0;{end input font} KS; {start search for an input character.} z 10:fs-fp; L 9; u: zz; j 9: zz,ne,$1b; {look for esc} u: zz; j 9: zz,ne,$26; {look for x'26'} u: zz; j 9: zz,ne,$00; {look for 0 } d: zc; {decimal code of character} $: zc,"Encountered code (hex): "; #: fp,"At file position: "; j 9: zc,ne,cc; # : cc,"Found code (dec)"; j 1: 1,eq,1; {found, go get it} L 10; {char not found} ESU; {end character search program (unsuccessful search)} Ko; {start output font and/or header} L 88; {for download} #:**, "Sending Font Header "; u:$1b; {this starts rom cg copy to initialize char set to default} y:":"; u:$00; u:$00; u:$00; EO; {end output font header.} a:cc=0; {start with first possible code, zero} c; {select first valid code} j 57:1,eq,1; {bypass first code check} L 55; c; {select first valid code} j 59:cc,eq,0; {go to 59 if no more valid codes} L 57; KC; {start output character.} $ :cc,"Sending code (hex): "; u:$1b; u:$26; u:$00; u: cc; {decimal code of character} u: cc; {decimal code of character} a: a1=sh*128; {set hi bit of attribute data} a: a2=sp*16; {set starting point, bits 1-3 of attribute data} u: a1+a2+ep; {output attribute data byte} j 4: ch,gt,8; {can only output a char height of 8 bits} g; {character data} j 5: 1,eq,1; L 4; {outputs every other byte of character data, assume ch=9} {this will strip off lowest line of character, if it exists} {recommended to shift up any downshifted character on design screen} g;0,1; g;2,1; g;4,1; g;6,1; g;8,1; g;10,1; g;12,1; g;14,1; g;16,1; g;18,1; g;20,1; L 5; EC; {end output character.} a:cc=cc+1; j 55:1,eq,1; L 59; {end} j 89:d8,eq,1; {go finish download if downloading} Ez;{end output font.} KP; {start download} a:d8=1; {downloading indicator} j 88: 1,eq,1; {go save font to the printer} L 89; {now select download char set} a:d8=0; {turn off download indicator} u:$1b; u:$25; u:$01; u:$00; EP; {end download} .