lee@uhccux.UUCP (Greg Lee) (08/28/87)
This is assembler source code for a screen-only PostScript language interpreter. Suggestions to: Greg Lee, U. of Hawaii Linguistics Dept. ARPA: uhccux!lee@nosc.ARPA I will post a binary to comp.binaries.amiga . # This is a shell archive. Remove anything before this line # then unpack it by saving it in a file and typing "sh file" # (Files unpacked will be owned by you and have default permissions). # This archive contains the following files: # ./ps.doc # ./ps.link # ./psedit # ./rmath.a # ./rotate-box # ./show-fonts # ./simplex.chr # ./tletters # if `test ! -s ./ps.doc` then echo "writing ./ps.doc" sed 's/^X//' > ./ps.doc << '\Rogue\Monster\' X X* X* This program is in the public domain. PostScript is a trademark X* of Adobe Systems. X* Greg Lee, July, 1987. X* U.S. mail: 562 Moore Hall, Dept. of Linguistics X* University of Hawaii, Honolulu, HI 96822 X* ARPA: uhccux!lee@nosc.ARPA X* XPS document XGreg Lee, April, 1986 X XPs emulates PostScript () Adobe Systems), in a small way. X XInteractive input and output takes place in a small window. XThe page being composed is shown behind the window in an interlaced Xscreen with 16 colors. When input is Xredirected to come from a file with "ps < programfile", the ps program Xin this file is executed before interaction begins. X XThere is no prompt shown when ps is ready to receive console input. X XDefault screen coordinates are x = 0 to 639 from the left to the Xright of the screen, and y = 0 to 511 from the bottom to the top Xof the screen. Considering the units to be points, Xthat makes the display a nominal 8 8/9" across and 7 1/9" up and down. X XOperators do more or less what they do in PostScript, except as Xnoted below. See PostScript Language: Reference Manual, Adobe XSystems Incorporated, Addison-Wesley, 1985. X XPs has one built-in font named 'simplex', which is stroked. (Data Xcame from Alan Hershey's data base.) X XTypes implemented: X X integer, real, boolean, string, name, operator X array, mark, dictionary, save, fontID X XOperators: X X *** stack manipulation *** X pop, exch, dup, copy X index, roll, clear, count X mark X X *** math *** X add, div, idiv, mod X mul, sub, abs, neg X ceiling, floor, round [round gives floor of -ddddd.5] X truncate, sqrt X pow, tan, tanh, cosh, sinh (non-standard) X atan, cos, sin X exp, ln, log X X *** array *** X array, [, ] X length, get, put X X *** dictionary *** X dict X length, maxlength X begin, end X def defined operators are simple objects, not arrays; X "key" must be a name X X *** string *** X string the '<..>' syntax is not implemented X length, get, put X X *** relational, Boolean *** X eq, ne, ge X gt, le, lt comparisons for numbers only, not strings X true, false X X *** control *** X exec leaves anything but an operator on the stack X if, ifelse X for integers only X repeat, loop X exit X stop, stopped untested X countexectack always gives 0, since there is no exec stack X execstack does nothing X quit exit to AmigaDos X start does nothing X X *** type, attribute, conversion *** X cvi, cvr no conversion from strings X cvs no range-check is done X X *** file *** X file, read, write implemented only for %stdout and %stdin (which X are always the console) X run can't nest run files or have 2 'run' commands X on same line; use in defined procedures will not X work properly, since 'run' merely redirects input X print, = X X *** virtual memory *** X save, restore restore merely destroys objects created since X the last save and reuses the memory space they X occupied (in addition to doing a grestore) X X *** graphics state *** X gsave, grestore colors are not saved or restored X setlinewidth you get butt linecaps and bevel joins; the joins X are not done properly for concave figures; when X there is non-uniform scaling of the axes, rotation X of the axes is not taken account of X currentlinewidth X setflat, currentflat X setgray there are only 5 levels of grey available, set by X argument: n = 0, 0 < n < .25, .25 <= n < .5, .5 <= n X < .75, .75 <= n <= 1 X currentgray X setrgbcolor affects only current foreground pen color; X takes 3 arguments in range 0-15 X currentrgbcolor components of current foreground pen color X X *** coordinate system *** X translate X scale for Amiga fonts, does not affect sizes of letters; X moves currentpoint (bug) X rotate for Amiga fonts, does not affect orientation X concat, concatmatrix X transform, dtransform X X *** path construction *** X newpath, currentpoint X moveto, rmoveto X lineto, rlineto X curveto, rcurveto X closepath X charpath only for simplex font X strokepath affects entire path; lines will always be X one pixel wide X X *** painting *** X erasepage X fill, stroke X X *** character and font *** X findfont fonts are simple objects, not dictionaries; X 'key' can be a string or a name X scalefont for Amiga fonts, must be an available size -- X largest is chosen if not scaled -- and also the X font returned is not a new font, just a different X size of the same font (for simplex the font is X new) X makefont only for simplex font X setfont X currentfont X show X stringwidth for Amiga fonts, does not take account of scaling X or rotation; the y coordinate returned is always 0 X X X XNon-standard operators: X X i {0-7} pencolor set foreground color X i {0-7} penbcolor set background color X i {0-4} penmode jam1, jam2, complement,, inverse X i penpattern X pixel set pixel at currentpoint X i1 i2 i3 i4 box display box with top left corner X at (i1,i2) and lower right at (i3,i4) X any hex name name has value in hex X i1 i2 flood fill area surrounding (i1,i2) with X color, to boundaries of same color; X bombs system if area not enclosed X num greyline argument is in range 0 to 1; 0 causes X Amiga line drawing routine to be used X -- other values set the intensity of X lines drawn by an anti-aliasing X routine, which works best when X rgb colors 0 to 3 are progressively X darker or lighter X XAssembly X X ps.a main procedure X dict.a systemdict X files.a file io, screen and window initialization X console.a console io for interactive window X ffpa.a conversion between strings and reals X lmath.a 32 bit division and multiplication X control.a 'if', 'repeat', etc. X rmath.a 'add', 'mul', etc.; resident font routines X simplex.chr simplex font data X graphics.a graphics operators X X ps.h header for most modules X ps.link 'with' file for linking X \Rogue\Monster\ else echo "will not over write ./ps.doc" fi if [ `wc -c ./ps.doc | awk '{printf $1}'` -ne 7261 ] then echo `wc -c ./ps.doc | awk '{print "Got " $1 ", Expected " 7261}'` fi if `test ! -s ./ps.link` then echo "writing ./ps.link" sed 's/^X//' > ./ps.link << '\Rogue\Monster\' X XFROM sys:p/ps.o * X sys:p/dict.o * X sys:p/files.o * X sys:p/console.o * X sys:p/control.o * X sys:p/ffpa.o * X sys:p/lmath.o * X sys:p/rmath.o * X sys:p/simplex.o * X sys:p/graphics.o XTO ps X \Rogue\Monster\ else echo "will not over write ./ps.link" fi if [ `wc -c ./ps.link | awk '{printf $1}'` -ne 259 ] then echo `wc -c ./ps.link | awk '{print "Got " $1 ", Expected " 259}'` fi if `test ! -s ./psedit` then echo "writing ./psedit" sed 's/^X//' > ./psedit << '\Rogue\Monster\' X Xsave X X/infile (%stdin) (r) file def X/conin { infile read pop } def X X/char 1 string def X/buf 80 string def X X/leftmargin 50 def X/lineheight 20 def X/cursorheight lineheight 5 sub def X X/hpos 50 def X/vpos 300 def X X/cursoron { X currentpoint X 3 pencolor 2 penmode X currentpoint cursorheight add X 2 copy X exch 10 add exch lineheight sub X box X moveto X 1 pencolor 1 penmode X} def X X/newline { currentpoint exch pop leftmargin exch X lineheight sub moveto } def X X/edit { X{ Xnewpath Xcursoron Xchar 0 conin put Xcursoron Xchar 0 get 27 eq {exit} if Xchar 0 get 13 eq {newline} if Xchar 0 get 32 ge {char show} if X} Xloop X} def X X /simplex findfont 15 scalefont setfont X hpos vpos moveto X edit X Xrestore X \Rogue\Monster\ else echo "will not over write ./psedit" fi if [ `wc -c ./psedit | awk '{printf $1}'` -ne 718 ] then echo `wc -c ./psedit | awk '{print "Got " $1 ", Expected " 718}'` fi if `test ! -s ./rmath.a` then echo "writing ./rmath.a" sed 's/^X//' > ./rmath.a << '\Rogue\Monster\' X X* link with lmath.o X xref lmulu X xref ldivu X xref ldivs X xref lmoddivu X X xref ipop X xref popnum X xref r.ipush X xref mathffpbase X xref mathtransbase X xref _fontalloc X X xref msg for 'print' macro X xref reinterp X xref type_mismatch X X xref xmoveto,xlineto,xclosepath X xref ymoveto,ylineto,_closepath X xref ggsave,ggrestore X X xref simplex X xref strokepathflag X xref currfont X X section one X X include "ps.h" X X Xmath macro X move.l A6,-(SP) X move.l mathffpbase,A6 X jsr _LVO\1(A6) X move.l (SP)+,A6 X endm X Xieee macro X move.l A6,-(SP) X move.l mathtransbase,A6 X jsr _LVO\1(A6) X move.l (SP)+,A6 X endm X X X X lref SPFix,1 X lref SPFlt,2 X lref SPCmp,3 X lref SPTst,4 X lref SPAbs,5 X lref SPNeg,6 X lref SPAdd,7 X lref SPSub,8 X lref SPMul,9 X lref SPDiv,10 X X lref fieee,14 X lref tieee,13 X lref sqrt,12 X lref ln,10 X lref exp,9 X lref pow,11 X lref tanh,8 X lref cosh,7 X lref sinh,6 X lref sincos,5 X lref tan,4 X lref cos,3 X lref sin,2 X lref atan,1 X X ifne HiRes XMaxY equ 399 XVFactor equ $C8000040 X endc X ifeq HiRes XMaxY equ 199 XVFactor equ $C800003F X endc X X XGsaveSize equ 11 X X Xpopri X bsr ipop X move.l D0,D1 X cmp.w #Real,D2 X bne 1$ X bsr ipop X cmp.w #Real,D2 X beq 7$ X cmp.w #Integer,D2 X bne type_mismatch X move.l D1,D3 X math SPFlt X move.l D3,D1 X move.w #Real,D2 X bra 7$ X X1$ cmp.w #Integer,D2 X bne type_mismatch X bsr ipop X cmp.w #Integer,D2 X beq 8$ X cmp.w #Real,D2 X bne type_mismatch X move.l D0,D3 X move.l D1,D0 X math SPFlt X move.l D0,D1 X move.l D3,D0 X X7$ moveq #-1,D3 ret neq with 2 reals X8$ rts ret eq with 2 integers X Xpopr X bsr ipop X cmp.w #Real,D2 X beq 1$ X cmp.w #Integer,D2 X bne type_mismatch X move.l D1,-(SP) X math SPFlt X move.l (SP)+,D1 X move.w #Real,D2 X1$ rts X X DEF eq X bsr compare X beq is_true X rts X X DEF ne X bsr compare X bne is_true X rts X X DEF ge X bsr compare X bge is_true X rts X X DEF gt X bsr compare X bgt is_true X rts X X DEF le X bsr compare X ble is_true X rts X X DEF lt X bsr compare X blt is_true X rts X X Xcompare X move.l (SP)+,A0 X pea is_false X move.l A0,-(SP) X bsr popri X beq 1$ X math SPCmp X rts X1$ cmp.l D1,D0 X rts X Xis_false X moveq #0,D0 X RETURN Boolean X Xis_true X addq.l #4,SP X moveq #-1,D0 X RETURN Boolean X X X X DEF add X bsr popri X bne 1$ X add.l D1,D0 X bra r.ipush X1$ math SPAdd X bra r.ipush X X DEF sub X bsr popri X bne 1$ X sub.l D1,D0 X bra r.ipush X1$ math SPSub X bra r.ipush X X DEF mul X bsr popri X bne 1$ X jsr lmulu X bra r.ipush X1$ math SPMul X bra r.ipush X X DEF div X bsr popr X move.l D0,D1 X bsr popr X tst.b D1 X beq diverr X math SPDiv X bra r.ipush X X DEF idiv X bsr popnum X move.l D0,D1 X bsr popnum X tst.l D1 X beq diverr X jsr ldivs X bra r.ipush X Xdiverr X ERR divzero X X DEF mod X bsr popnum X move.l D0,D1 X bsr popnum X move.l D0,D3 X tst.l D0 X bpl 1$ X neg.l D0 X1$ tst.l D1 X bpl 2$ X neg.l D1 X2$ move.l D1,D2 X move.l D0,D1 X jsr lmoddivu X tst.l D3 X bpl 3$ X neg.l D0 X3$ bra retinteger X X DEF abs X bsr ipop X cmp.w #Integer,D2 X bne 2$ X tst.l D0 X bpl 1$ X neg.l D0 X1$ bra r.ipush X2$ cmp.w #Real,D2 X bne type_mismatch X math SPAbs X bra retreal X X DEF neg X bsr ipop X cmp.w #Integer,D2 X bne 2$ X bra r.ipush X2$ cmp.w #Real,D2 X bne type_mismatch X math SPNeg X bra retreal X X DEF floor X moveq #-1,D4 X bra ..clng X DEF ceiling X moveq #0,D4 X..clng X bsr ipop X cmp.w #Integer,D2 X beq r.ipush X cmp.w #Real,D2 X bne type_mismatch X move.l D0,D3 X math SPFix X move.l D0,D2 X math SPFlt X move.l D3,D1 X math SPCmp X beq 3$ X X tst.l D4 X bne 1$ X tst.l D2 X bmi 3$ X addq.l #1,D2 X bra 3$ X1$ tst.l D2 X bpl 3$ X subq.l #1,D2 X X3$ move.l D2,D0 X bra retinteger X X DEF round X bsr ipop X cmp.w #Integer,D2 X beq r.ipush X cmp.w #Real,D2 X bne type_mismatch X move.l D0,D3 X and.b #$7F,D0 X move.l #PointFive,D1 X math SPAdd X math SPFix X and.b #$80,D3 X beq retinteger X neg.l D0 X bra retinteger X X DEF truncate X bsr ipop X cmp.w #Integer,D2 X beq r.ipush X cmp.w #Real,D2 X bne type_mismatch X math SPFix X bra retinteger X Xretinteger X RETURN Integer X Xretreal X RETURN Real X X X Xief macro X xdef _\1 X_\1 X bsr popr X ieee \1 X bra retreal X endm X X Xiefa macro X xdef _\1 X_\1 X bsr popr X move.l #$8EFA353B,D1 X math SPMul X ieee \1 X bra retreal X endm X X ief fieee X ief tieee X ief sqrt X ief ln X ief exp X ief pow X iefa tanh X iefa cosh X iefa sinh X* ief sincos X iefa tan X iefa cos X iefa sin X X X DEF log X bsr popr X ieee ln X move.l #$935D8D42,D1 X math SPDiv X bra retreal X X X DEF atan X bsr popr x X move.l D0,D1 X bsr popr y X moveq #0,D3 X tst.b D1 X beq ..vrt X bpl 1$ X move.w #180,D3 +y/-x X tst.b D0 X bpl 2$ X move.w #270,D3 -y/-x X bra 2$ X1$ tst.b D0 X bpl 2$ X move.w #360,D3 -y/+x X2$ X math SPDiv X and.b #$7F,D0 X ieee atan X move.l #$8EFA353B,D1 X math SPDiv X tst.l D3 X beq retreal X or.b #$80,D0 subtr. from 180,270, or 360 X exg D0,D3 X math SPFlt X move.l D3,D1 X math SPAdd X bra retreal X..vrt X move.l D0,D1 X move.l #90,D0 X tst.b D1 X beq diverr X bpl retinteger X move.w #270,D0 X bra retinteger X X X DEF gsave X lea gsavecnt,A0 X cmp.w #PstackSize,(A0) X beq 2$ X move.w (A0),D0 X addq.w #1,(A0) X mulu #GsaveSize*4,D0 X moveq #GsaveSize-1,D1 X lea CTM,A0 X lea sCTM,A1 X add.l D0,A1 X1$ move.l (A0)+,(A1)+ X dbra D1,1$ X bra ggsave X2$ ERR gsov X X X DEF grestore X lea gsavecnt,A0 X tst.w (A0) X beq 2$ X subq.w #1,(A0) X move.w (A0),D0 X mulu #GsaveSize*4,D0 X X moveq #GsaveSize-1,D1 X lea CTM,A0 X lea sCTM,A1 X add.l D0,A1 X1$ move.l (A1)+,(A0)+ X dbra D1,1$ X bra ggrestore X2$ ERR gsuv X X XmatA equ 0 XmatB equ 4 XmatC equ 8 XmatD equ 12 XmatTx equ 16 XmatTy equ 20 X X* convert array of 6 numbers at D0 to matrix Xarrayto2matrix X lea temp2matrix,A1 X bra ..arrtm Xarraytomatrix X lea tempmatrix,A1 X..arrtm X move.l D0,A0 X cmp.w #6,(A0)+ X bne materr X moveq #5,D3 X1$ X move.w (A0)+,D2 X move.l (A0)+,D0 X cmp.w #Real,D2 X beq 2$ X cmp.w #Integer,D2 X bne materr X math SPFlt X2$ X move.l D0,(A1)+ X dbra D3,1$ X rts X Xmaterr X ERR materror X X X DEF translate X lea v_translate,A0 Xdomatrix X move.l A4,-(SP) X move.l A0,A4 X bsr ipop X cmp.w #Array,D2 X bne 1$ X move.l D0,-(SP) X bsr arraytomatrix X lea tempmatrix,A2 X move.l A2,-(SP) X jsr (A4) X move.l (SP)+,A2 X move.l (SP),D0 X bsr matrixtoarray X move.l (SP)+,D0 X move.l (SP)+,A4 X RETURN Array X1$ X bsr r.ipush X lea CTM,A2 X jsr (A4) X move.l (SP)+,A4 X rts X Xmatrixtoarray X move.l D0,A0 X lea 2(A0),A0 past length X moveq #5,D3 X move.w #Real,D2 X1$ move.w D2,(A0)+ X move.l (A2)+,(A0)+ X dbra D3,1$ X rts X Xv_translate X bsr popr X move.l D0,D3 X bsr popr X* lea CTM,A2 Xxtranslate X move.l matTx(A2),D1 X math SPAdd X move.l D0,matTx(A2) X move.l D3,D0 X move.l matTy(A2),D1 X math SPAdd X move.l D0,matTy(A2) X rts X X DEF scale X lea v_scale,A0 X bra domatrix Xv_scale X bsr popr X tst.b D0 X beq diverr X move.l D0,D3 X bsr popr X tst.b D0 X beq diverr X move.l D0,D2 X* lea CTM,A2 X bsr xscale X X exg D2,D3 X move.l currx,D0 X move.l D2,D1 X math SPDiv X move.l D0,D2 X X move.l curry,D0 X move.l D3,D1 X math SPDiv X move.l D0,D3 X X bra xy X X Xxscale X move.l (A2),D1 X bsr rmul X move.l D0,(A2) sx * a X X move.l matB(A2),D1 X bsr rmul X move.l D0,matB(A2) sx * b X X exg D3,D2 X move.l matC(A2),D1 X bsr rmul X move.l D0,matC(A2) sy * c X X move.l matD(A2),D1 X bsr rmul X move.l D0,matD(A2) sy * d X X rts X X DEF rotate X lea v_rotate,A0 X bra domatrix Xv_rotate X bsr popr X move.l #$8EFA353B,D1 X math SPMul X move.l D0,D3 X ieee sin X exg D0,D3 X ieee cos X move.l D0,D4 X* D3 = sin, D4 = cos X X* lea CTM,A2 X bsr rot1 X X lea 4(A2),A2 Xrot1 X move.l (A2),D0 X move.l D0,-(SP) X move.l D4,D1 X math SPMul X move.l D0,D2 a * cos (b * cos) X X move.l matC(A2),D0 X move.l D0,-(SP) c (d) X move.l D3,D1 X math SPMul c * sin (d * sin) X move.l D2,D1 X math SPAdd X move.l D0,(A2) a * cos + c * sin (b * cos + d * sin) X X move.l (SP)+,D0 c (d) X move.l D4,D1 X math SPMul X move.l D0,D2 c * cos X move.l (SP)+,D0 a (b) X move.l D3,D1 X math SPMul a * sin X move.l D2,D1 X exg D0,D1 X math SPSub c * cos - a * sin (d * cos - b * sin) X move.l D0,matC(A2) X rts X Xrmul X beq 2$ X move.l D2,D0 X beq 1$ X math SPMul X1$ rts X2$ moveq #0,D0 X rts X X DEF concatmatrix X ARG Array X move.l D0,-(SP) save result matrix to return X move.l D0,A0 X cmp.w #6,(A0) right size? X bne materr X ARG Array X bsr arrayto2matrix matrix2 X ARG Array X bsr arraytomatrix matrix1 X X lea tempmatrix,A0 X lea temp2matrix,A2 X move.l A2,-(SP) X bsr y_concat X move.l (SP)+,A2 X move.l (SP),D0 X bsr matrixtoarray X move.l (SP)+,D0 X RETURN Array X X DEF concat X ARG Array X bsr arraytomatrix X lea tempmatrix,A0 X lea CTM,A2 X X* matrix at A2 = matrix at A0 X matrix at A2 Xy_concat X movem.l D4/A3,-(SP) X move.l A0,A3 X bsr halfmul X lea 4(A2),A2 X bsr halfmul X movem.l (SP)+,D4/A3 X rts X X* uses D2 = a2 D3 = c2 D4 = multiplicand Xhalfmul X move.l (A2),D2 X move.l matC(A2),D3 X X move.l (A3),D0 X move.l D2,D1 X math SPMul X move.l D0,D4 X X move.l matB(A3),D0 X move.l D3,D1 X math SPMul X move.l D4,D1 X math SPAdd X move.l D0,(A2) X X move.l matC(A3),D0 X move.l D2,D1 X math SPMul X move.l D0,D4 X X move.l matD(A3),D0 X move.l D3,D1 X math SPMul X move.l D4,D1 X math SPAdd X move.l D0,matC(A2) X X move.l matTx(A3),D0 X move.l D2,D1 X math SPMul X move.l D0,D4 X X move.l matTy(A3),D0 X move.l D3,D1 X math SPMul X move.l D4,D1 X math SPAdd X move.l matTx(A2),D1 X math SPAdd X move.l D0,matTx(A2) X X rts X X DEF dtransform X lea y_dtransform,A0 X bra domatrix Xy_dtransform X bsr popr X move.l D0,D3 X bsr popr X move.l D0,D2 X bsr xxy X move.l vcurrx,D0 X move.l matTx(A2),D1 X math SPSub X move.w #Real,D2 X bsr r.ipush X move.l vcurry,D0 X move.l matTy(A2),D1 X math SPSub X bra r.ipush X X DEF transform X lea y_transform,A0 X bra domatrix Xy_transform X bsr popr X move.l D0,D3 X bsr popr X move.l D0,D2 X bsr xxy X move.w #Real,D2 X move.l vcurrx,D0 X bsr r.ipush X move.l vcurry,D0 X bra r.ipush X X X DEF currentpoint X move.w #Real,D2 X move.l currx,D0 X bsr r.ipush X move.l curry,D0 X bra r.ipush X X xdef poprxy Xpoprxy X bsr popr X move.l curry,D1 X math SPAdd X move.l D0,D3 X bsr popr X move.l currx,D1 X math SPAdd X move.l D0,D2 X bra xy X X X xdef popxy X* get coordinate from stack and convert X* to screen address in D0=x and D1=y X* also, in real form, D2=x and D3=y Xpopxy X bsr popr X move.l D0,D3 X bsr popr X move.l D0,D2 Xxy X movem.l D2/D3,currx X lea CTM,A2 Xxxy X move.l (A2),D1 X bsr rmul ax X move.l matTx(A2),D1 X math SPAdd + tx X move.l D0,D4 X exg D2,D3 X move.l matC(A2),D1 X bsr rmul cy X move.l D4,D1 X math SPAdd + cy X move.l D0,vcurrx X X move.l #PointFive,D1 X math SPAdd X math SPFix X move.l D0,-(SP) X X exg D2,D3 X move.l matB(A2),D1 X bsr rmul bx X move.l matTy(A2),D1 X math SPAdd + ty X move.l D0,D4 X exg D2,D3 X move.l matD(A2),D1 X bsr rmul dy X move.l D4,D1 X exg D2,D3 X math SPAdd + dy X move.l D0,vcurry X X* times 200/512 = 25/64 = .390625 X move.l #VFactor,D1 X math SPMul X X move.l D0,D3 for antiraster lineto X move.l vcurrx,D2 X X move.l #PointFive,D1 X math SPAdd X math SPFix X move.l #MaxY,D1 X sub.l D0,D1 X X move.l (SP)+,D0 X rts X X DEF currentlinewidth X move.l linewidth,D0 X bra retreal X X DEF setlinewidth X bsr popr X tst.b D0 X bmi type_mismatch X move.l D0,linewidth X rts X X* called by stroke to see if lines currently have width X* should return D0=1 if so, D0=0 if not X xdef checklwidth Xchecklwidth X move.l linewidth,D0 X move.l #PointFive,D1 X math SPMul X move.l D0,D2 X move.l D2,D3 X bsr deltaxy X or.l D2,D3 X bne 1$ X moveq #0,D0 X rts X1$ moveq #1,D0 X rts X Xdeltaxy X move.l A2,-(SP) X lea CTM,A2 X* move.l matB(A2),-(SP) X* move.l matC(A2),-(SP) X move.l matTx(A2),-(SP) X move.l matTy(A2),-(SP) X* clr.l matB(A2) X* clr.l matC(A2) X clr.l matTx(A2) X clr.l matTy(A2) X bsr xxy X move.l (SP)+,matTy(A2) X move.l (SP)+,matTx(A2) X* move.l (SP)+,matC(A2) X* move.l (SP)+,matB(A2) X move.l (SP)+,A2 X X move.l D0,D2 X bpl 1$ X neg.l D2 X1$ X move.l D3,D0 X and.b #$7F,D0 X move.l #PointFive,D1 X math SPAdd X math SPFix X move.l D0,D3 X X rts X X* called by stroke routine to calculate X* x and y components of linewidth X* A3 -> source: (int,int) (real,real) X* A4 -> dest: ditto X* returns D2=dx D3=dy X xdef xywidth Xxywidth X move.l linewidth,D0 X move.l #PointFive,D1 X math SPMul X move.l D0,-(SP) X X move.l 12(A4),D0 y1 X move.l 12(A3),D1 y0 X math SPSub y1 - y0 X move.l #VFactor,D1 X math SPDiv X move.l D0,D2 X X move.l 8(A4),D0 x1 X move.l 8(A3),D1 x0 X math SPSub x1 - x0 X X tst.b D0 X bne 1$ X moveq #0,D3 cos = 0 X move.l (SP),D0 sin = 1 X bra 2$ X1$ X move.l D0,D1 X move.l D2,D0 X math SPDiv (y1-y0)/(x1-x0) X and.b #$7F,D0 X X ieee atan X move.l D0,D2 X ieee cos X move.l D0,D3 X move.l D2,D0 X ieee sin X X move.l (SP),D1 X math SPMul X2$ X move.l D0,D2 X X move.l (SP)+,D1 X move.l D3,D0 X math SPMul X move.l D0,D3 X X movem.l D2/D3,-(SP) X exg D2,D3 X bsr deltaxy X exg D2,D3 X X bsr 22$ X move.l D2,D0 X move.l D3,D1 X movem.l (SP)+,D2/D3 X X movem.l D0/D1,-(SP) X bsr 21$ X movem.l (SP)+,D0/D1 X rts X X21$ X bsr deltaxy X22$ X X move.l (A4),D0 X cmp.l (A3),D0 X bne 3$ X moveq #0,D3 X bra 4$ X3$ bpl 4$ X neg.l D3 X4$ move.l 4(A4),D0 X cmp.l 4(A3),D0 X bne 5$ X moveq #0,D2 X bra 6$ X5$ blt 6$ X neg.l D2 X6$ X rts X X X X xdef xadvance Xxadvance X math SPFlt X move.l currx,D1 X math SPAdd X move.l D0,D2 X move.l curry,D3 X bra xy X X DEF setflat X bsr popr X and.b #$7F,D0 X cmp.b #$42,D0 X bcs type_mismatch X move.l D0,flatness X rts X DEF currentflat X move.l flatness,D0 X RETURN Real X X Xctx0 equ 0 Xcty0 equ 4 Xctx1 equ 8 Xcty1 equ 12 Xctx2 equ 16 Xcty2 equ 20 Xctx3 equ 24 Xcty3 equ 28 X Xctax equ 0 Xctbx equ 8 Xctcx equ 16 X X DEF rcurveto X moveq #-1,D0 X bra ..crvt X X DEF curveto X moveq #0,D0 X..crvt X movem.l D6/D7/A3/A4,-(SP) X move.l D0,D6 X lea ct_xy,A4 X lea currx,A3 X bsr ctxystow X bsr popxy X lea 16(A4),A4 X bsr ctxystow X bsr popxy X lea -16(A4),A4 X bsr ctxystow X bsr popxy X lea -16(A4),A4 X bsr ctxystow X X lea ct_xy,A3 X tst.l D6 X beq 11$ X X lea ctx1(A3),A4 X moveq #2,D3 X10$ X move.l (A3),D0 X move.l (A4),D1 X math SPAdd X move.l D0,(A4)+ X move.l cty0(A3),D0 X move.l (A4),D1 X math SPAdd X move.l D0,(A4)+ X dbra D3,10$ X X11$ X lea ct_abc,A4 X bsr ctabcfigure X movem.l D4/A3/A4,-(SP) X lea 4(A3),A3 X lea 4(A4),A4 X bsr ctabcfigure X move.l D4,D3 X movem.l (SP)+,D4/A3/A4 X* D3 = y3 - y0; D4 = x3 - x0 X and.b #$7F,D4 X and.b #$7F,D3 X move.l D4,D0 X move.l D3,D1 X math SPCmp X bgt 1$ X move.l D3,D4 X1$ X move.l D4,D1 X move.l flatness,D0 (make setable) X math SPDiv dt = 4/dx or 4/dy X tst.b D0 X beq 100$ X X move.l D0,D7 X move.l D7,D3 X X moveq #-1,D4 X move.l (A3),D0 X move.l cty0(A3),D1 X bsr ctto X X2$ X cmp.b #$41,D3 X blt 3$ X move.l ctx3(A3),D0 X move.l cty3(A3),D1 X clr.l D4 X bsr ctto X bra 100$ X3$ X bsr ctxfigure X movem.l D0/A3/A4,-(SP) X lea 4(A3),A3 X lea 4(A4),A4 X bsr ctxfigure X move.l D0,D1 X movem.l (SP)+,D0/A3/A4 X X clr.l D4 X bsr ctto X X move.l D7,D0 X move.l D3,D1 X math SPAdd X move.l D0,D3 X bra 2$ X X100$ X movem.l (SP)+,D6/D7/A3/A4 X rts X Xctto X movem.l D3/A3/A4,-(SP) X move.l D0,D2 X move.l D1,D3 X bsr xy X tst.l D4 X bne 1$ X bsr ylineto X bra 2$ X1$ bsr ymoveto X2$ movem.l (SP)+,D3/A3/A4 X rts X Xctabcfigure X move.l ctx1(A3),D0 X move.l ctx0(A3),D1 X math SPSub X move.l #ThreePoint,D1 X move.l D1,D2 X math SPMul X move.l D0,ctcx(A4) X move.l D0,D3 X X move.l ctx2(A3),D0 X move.l ctx1(A3),D1 X math SPSub X move.l D2,D1 X math SPMul X move.l D3,D1 X math SPSub X move.l D0,ctbx(A4) X move.l D0,D2 X X move.l ctx3(A3),D0 X move.l ctx0(A3),D1 X math SPSub X move.l D0,D4 X move.l D2,D1 X math SPSub X move.l D3,D1 X math SPSub X move.l D0,ctax(A4) X X rts X X* D3 = t Xctxfigure X move.l ctax(A4),D0 X move.l D3,D1 X math SPMul X move.l ctbx(A4),D1 X math SPAdd X move.l D3,D1 X math SPMul X move.l ctcx(A4),D1 X math SPAdd X move.l D3,D1 X math SPMul X move.l (A3),D1 X math SPAdd X rts X X Xctxystow X move.l A3,-(SP) X move.l (A3)+,(A4)+ X move.l (A3)+,(A4)+ X move.l (SP)+,A3 X rts X X Xct_xy dcb.l 8,0 Xct_abc dcb.l 6,0 X X X DEF makefont X ARG Array X bsr _fontalloc X move.l A0,D1 X move.w #-1,(A0)+ X move.w #Array,(A0)+ X move.l D0,(A0)+ X ARG FontID X move.l D0,A0 X tst.w (A0) X bpl type_mismatch X move.l D1,D0 X RETURN FontID X X X DEF scaleg X bsr popr X bsr _fontalloc X move.l A0,D1 X move.w #-1,(A0)+ X move.w #Real,(A0)+ X move.l D0,(A0)+ X ARG FontID X move.l D1,D0 X RETURN FontID X X Xinitfctm X X* copy current CTM to fCTM X moveq #5,D1 X lea CTM,A0 X lea fCTM,A1 X move.l A0,A2 X1$ move.l (A0)+,(A1)+ X dbra D1,1$ X X* translate to current position X move.l curry,D3 X move.l currx,D2 X bsr xxy X lea fCTM,A2 X move.l vcurry,matTy(A2) X move.l vcurrx,matTx(A2) X X* zero temp matrix X lea tempmatrix,A0 X moveq #5,D1 X moveq #0,D0 X2$ move.l D0,(A0)+ X dbra D1,2$ X X move.l currfont,A0 X tst.w (A0)+ X bmi 3$ X move.l #OnePoint,D0 ?? X bra 4$ X3$ X move.w (A0)+,D2 X move.l (A0),D0 X cmp.w #Real,D2 X bne 5$ X4$ X lea tempmatrix,A0 X move.l D0,(A0) X move.l D0,matD(A0) X bra 6$ X5$ X cmp.w #Array,D2 X bne type_mismatch X bsr arraytomatrix X X6$ X lea tempmatrix,A2 X move.w simplex_base,D0 X ext.l D0 X math SPFlt X move.l matTy(A2),D1 X math SPAdd X move.l D0,matTy(A2) X X* scale down by nominal height X move.w simplex_height,D0 X ext.l D0 X math SPFlt X move.l D0,D1 X move.l #OnePoint,D0 X math SPDiv X move.l D0,D2 X move.l D0,D3 X bsr xscale X X* save 'a' for currentpoint update X move.l (A2),simplex_scale X X* concat with copy of CTM X lea tempmatrix,A0 X lea fCTM,A2 X bsr y_concat X X lea fCTM,A2 X X rts X X X xdef _lengthg X_lengthg X movem.l D5/D6,-(SP) X moveq #0,D6 X bra ..shwg X X DEF charpath X ARG Boolean X beq 1$ X move.b #1,strokepathflag X1$ X movem.l D5/D6,-(SP) X moveq #-1,D6 X bra ..shwg X X DEF showg X movem.l D5/D6,-(SP) X moveq #1,D6 X..shwg X bsr initfctm henceforth A2 -> fCTM X X ARG String X X move.l D0,A0 X moveq #0,D0 X move.l D0,lastx X move.l D0,xoffset X move.w (A0)+,D3 X1$ X subq.w #1,D3 X bpl 2$ X X move.l lastx,D0 X math SPFlt X X move.l simplex_scale,D1 X math SPMul X X move.l D6,D4 X movem.l (SP)+,D5/D6 X X tst.l D4 X bne 10$ X move.w #Real,D2 X bsr r.ipush X moveq #0,D0 X bra r.ipush X X10$ X move.l currx,D1 X math SPAdd X move.l D0,D2 X move.l curry,D3 X bsr xy X tst.l D4 X bpl xmoveto X bra ymoveto X X2$ X moveq #0,D0 X move.b (A0)+,D0 X movem.l D3/A0,-(SP) X bsr drawchar X movem.l (SP)+,D3/A0 X bra 1$ X X Xdrawchar X cmp.b #' ',D0 X bcs ..dcret X cmp.b #$7F,D0 X bhi ..dcret X X sub.b #' ',D0 X add.l D0,D0 X lea simplex,A0 X move.l A0,A3 X add.l D0,A0 X add.w (A0),A3 X X X* x-offset to center of character X X move.b (A3)+,D0 left bound X ext.w D0 X ext.l D0 X neg.l D0 X move.l lastx,D1 X add.l D1,D0 X move.l D0,xoffset X move.l D0,D2 save to update currx X X* update currx X move.b (A3)+,D0 right bound X ext.w D0 X ext.l D0 X add.l D2,D0 X move.l D0,lastx X X tst.l D6 X beq ..dcret X X clr.l D5 pen is up X Xf_endchar equ 0 Xf_penup equ 1 Xf_closepath equ 2 X X X* start drawing Xnextpoint X move.b (A3)+,D0 x X move.b (A3)+,D3 y X cmp.b #64,D0 special command? X bne dopoint X cmp.b #f_endchar,D3 X bne ..dc1 X..dcret X rts X X..dc1 X cmp.b #f_closepath,D3 X bne ..dc2 X tst.l D6 X bpl 1$ X bsr _closepath X bra 2$ X1$ bsr xclosepath X2$ clr.l D5 pen up X bra nextpoint X X..dc2 X cmp.b #f_penup,D3 X bne nextpoint unknown X clr.l D5 pen up X bra nextpoint X Xdopoint X ext.w D0 X ext.l D0 X move.l xoffset,D1 X add.l D1,D0 X math SPFlt X move.l D0,D2 X X move.b D3,D0 X ext.w D0 X ext.l D0 X neg.l D0 X math SPFlt X move.l D0,D3 X bsr xxy get device coordinates X tst.l D5 X bmi 3$ X X tst.l D6 X bpl 1$ X bsr ymoveto X bra 2$ X1$ bsr xmoveto X2$ moveq #-1,D5 now pen is down X bra nextpoint X X3$ tst.l D6 X bpl 4$ X bsr ylineto X bra nextpoint X X4$ bsr xlineto X bra nextpoint X X X X section three,data X X XCTM X dc.l OnePoint X dc.l 0 X dc.l 0 X dc.l OnePoint X dc.l 0 X dc.l 0 Xcurrx X dc.l 0 Xcurry X dc.l 0 Xvcurrx X dc.l 0 Xvcurry X dc.l 0 Xlinewidth X dc.l 0 Xflatness X dc.l FourPoint not saved X X X XfCTM X dc.l OnePoint X dc.l 0 X dc.l 0 X dc.l OnePoint X dc.l 0 X dc.l 0 X Xlastx dc.l 0 Xxoffset dc.l 0 X Xsimplex_scale dc.l $BA2E8C3C 1/22 Xsimplex_base dc.w 9 Xsimplex_height dc.w 22 X Xgsavecnt dc.w 0 X X bstr gsov,<gsave overflow> X bstr gsuv,<grestore underflow> X bstr divzero,<divide by zero> X bstr materror,<matrix error> X X section mroom,bss X Xtempmatrix ds.l 6 Xtemp2matrix ds.l 6 XsCTM ds.l PstackSize*GsaveSize X X end X X \Rogue\Monster\ else echo "will not over write ./rmath.a" fi if [ `wc -c ./rmath.a | awk '{printf $1}'` -ne 25500 ] then echo `wc -c ./rmath.a | awk '{print "Got " $1 ", Expected " 25500}'` fi if `test ! -s ./rotate-box` then echo "writing ./rotate-box" sed 's/^X//' > ./rotate-box << '\Rogue\Monster\' X X3 pencolor X2 penmode Xsave X X/b {-10 -10 moveto X -10 10 lineto X 10 10 lineto X 10 -10 lineto X -10 -10 lineto X} def X X400 200 translate X X20 { b X fill X 5 rotate X 1.1 1.1 scale X } repeat X Xrestore X0 penmode X \Rogue\Monster\ else echo "will not over write ./rotate-box" fi if [ `wc -c ./rotate-box | awk '{printf $1}'` -ne 236 ] then echo `wc -c ./rotate-box | awk '{print "Got " $1 ", Expected " 236}'` fi if `test ! -s ./show-fonts` then echo "writing ./show-fonts" sed 's/^X//' > ./show-fonts << '\Rogue\Monster\' X Xsave X X/psize 20 string def X X/Fsample { X 2 copy X /simplex findfont 12 scalefont setfont X exch show X ( ) show X psize cvs show X exch findfont exch scalefont setfont X currentpoint exch pop 145 exch moveto X (abcdef ABCDEF ) show X } def X X/newline { X currentpoint exch pop 30 exch 30 sub X moveto X } def X X30 350 moveto X X(topaz) 8 Fsample newline X(topaz) 9 Fsample newline X(diamond) 12 Fsample newline X(garnet) 9 Fsample newline X(garnet) 16 Fsample newline X(ruby) 8 Fsample newline X(ruby) 12 Fsample newline X(sapphire)19 Fsample newline X(emerald) 20 Fsample newline X X restore X \Rogue\Monster\ else echo "will not over write ./show-fonts" fi if [ `wc -c ./show-fonts | awk '{printf $1}'` -ne 622 ] then echo `wc -c ./show-fonts | awk '{print "Got " $1 ", Expected " 622}'` fi if `test ! -s ./simplex.chr` then echo "writing ./simplex.chr" sed 's/^X//' > ./simplex.chr << '\Rogue\Monster\' X X X xdef simplex X X section font,data X Xrefchar macro X dc.w .\1-fbase X endm X Xendchar macro X dc.b 64,0 X endm X Xpenup macro X dc.b 64,1 X endm X Xclosepath macro X dc.b 64,2 X endm X Xsimplex X Xfbase X X refchar h20 X refchar h21 X refchar h22 X refchar h23 X refchar h24 X refchar h25 X refchar h26 X refchar h27 X refchar h28 X refchar h29 X refchar h2A X refchar h2B X refchar h2C X refchar h2D X refchar h2E X refchar h2F X refchar d0 X refchar d1 X refchar d2 X refchar d3 X refchar d4 X refchar d5 X refchar d6 X refchar d7 X refchar d8 X refchar d9 X refchar h3A X refchar h3B X refchar h3C X refchar h3D X refchar h3E X refchar h3F X refchar h40 X X X X refchar A X refchar B X refchar C X refchar D X refchar E X refchar F X refchar G X refchar H X refchar I X refchar J X refchar K X refchar L X refchar M X refchar N X refchar O X refchar P X refchar Q X refchar R X refchar S X refchar T X refchar U X refchar V X refchar W X refchar X X refchar Y X refchar Z X X refchar h5B X refchar h5C X refchar h5D X refchar h5E X refchar h5F X refchar h60 X X refchar a X refchar b X refchar c X refchar d X refchar e X refchar f X refchar g X refchar h X refchar i X refchar j X refchar k X refchar l X refchar m X refchar n X refchar o X refchar p X refchar q X refchar r X refchar s X refchar t X refchar u X refchar v X refchar w X refchar x X refchar y X refchar z X X refchar h7B X refchar h7C X refchar h7D X refchar h7E X refchar h7F X X*********************** X X.h20 X dc.b -6,6 X endchar X X.h21 X dc.b -5,5 X dc.b 0,-12 X dc.b 0,2 X penup X dc.b 0,7 X dc.b -1,8 X dc.b 0,9 X dc.b 1,8 X dc.b 0,7 X endchar X X.h22 X dc.b -8,8 X dc.b -4,-12 X dc.b -4,-5 X penup X dc.b 4,-12 X dc.b 4,-5 X endchar X X.h23 X dc.b -10,11 X dc.b 1,-12 X dc.b -6,16 X penup X dc.b 7,-12 X dc.b 0,16 X penup X dc.b -6,-1 X dc.b 8,-1 X dc.b -7,5 X dc.b 7,5 X endchar X X.h24 X dc.b -10,10 X dc.b -2,-12 X dc.b -2,11 X penup X dc.b 2,-12 X dc.b 2,11 X penup X dc.b 7,-7 X dc.b 5,-9 X dc.b 2,-10 X dc.b -5,-9 X dc.b -7,-7 X dc.b -7,-6 X dc.b -6,-4 X dc.b -5,-3 X dc.b -3,-2 X dc.b 3,0 X dc.b 5,1 X dc.b 6,2 X dc.b 7,4 X dc.b 7,6 X dc.b 5,8 X dc.b 2,9 X dc.b -2,9 X dc.b -5,8 X dc.b -7,6 X endchar X X.h25 X dc.b -12,12 X dc.b 9,-12 X dc.b -9,9 X penup X dc.b -4,-12 X dc.b -2,-10 X dc.b -2,-8 X dc.b -3,-6 X dc.b -5,-5 X dc.b -7,-5 X dc.b -9,-7 X dc.b -9,-9 X dc.b -8,-11 X dc.b -6,-12 X dc.b -4,-12 X dc.b -2,-11 X dc.b 1,-10 X dc.b 4,-10 X dc.b 7,-11 X dc.b 9,-12 X penup X dc.b 5,2 X dc.b 3,3 X dc.b 2,5 X dc.b 2,7 X dc.b 4,9 X dc.b 6,9 X dc.b 8,8 X dc.b 9,6 X dc.b 9,4 X dc.b 7,2 X dc.b 5,2 X endchar X X.h26 X dc.b -13,13 X dc.b 10,-3 X dc.b 10,-4 X dc.b 9,-5 X dc.b 8,-5 X dc.b 7,-4 X dc.b 6,-2 X dc.b 4,3 X dc.b 2,6 X dc.b 0,8 X dc.b -2,9 X dc.b -6,9 X dc.b -8,8 X dc.b -9,7 X dc.b -10,5 X dc.b -10,3 X dc.b -9,1 X dc.b -8,0 X dc.b -1,-4 X dc.b 0,-5 X dc.b 1,-7 X dc.b 1,-9 X dc.b 0,-11 X dc.b -2,-12 X dc.b -4,-11 X dc.b -5,-9 X dc.b -5,-7 X dc.b -4,-4 X dc.b -2,-1 X dc.b 3,6 X dc.b 5,8 X dc.b 7,9 X dc.b 9,9 X dc.b 10,8 X dc.b 10,7 X endchar X X.h27 X dc.b -4,4 X dc.b 3,-12 X dc.b 0,-5 X endchar X X.h28 X dc.b -7,7 X dc.b 4,-12 X dc.b 2,-10 X dc.b 0,-8 X dc.b -2,-5 X dc.b -3,0 X dc.b -3,4 X dc.b -2,9 X dc.b 0,12 X dc.b 2,14 X dc.b 4,16 X endchar X X.h29 X dc.b -7,7 X dc.b -4,-12 X dc.b -2,-10 X dc.b 0,-8 X dc.b 2,-5 X dc.b 3,0 X dc.b 3,4 X dc.b 2,9 X dc.b 0,12 X dc.b -2,14 X dc.b -4,16 X endchar X X.h2A X dc.b -8,8 X dc.b 0,-6 X dc.b 0,6 X penup X dc.b -5,-3 X dc.b 5,3 X penup X dc.b 5,-3 X dc.b -5,3 X endchar X X.h2B X dc.b -13,13 X dc.b 0,-9 X dc.b 0,9 X penup X dc.b -9,0 X dc.b 9,0 X endchar X X.h2C X dc.b -5,5 X dc.b 1,8 X dc.b 0,9 X dc.b -1,8 X dc.b 0,7 X dc.b 1,8 X dc.b 1,10 X dc.b 0,12 X dc.b -1,13 X endchar X X.h2D X dc.b -13,13 X dc.b -4,0 X dc.b 4,0 X endchar X X.h2E X dc.b -5,5 X dc.b 0,7 X dc.b -1,8 X dc.b 0,9 X dc.b 1,8 X dc.b 0,7 X endchar X X.h2F X dc.b -11,11 X dc.b 9,-12 X dc.b -9,16 X endchar X X.d0 X dc.b -10,10 X dc.b -1,-12 X dc.b -4,-11 X dc.b -6,-8 X dc.b -7,-3 X dc.b -7,0 X dc.b -6,5 X dc.b -4,8 X dc.b -1,9 X dc.b 1,9 X dc.b 4,8 X dc.b 6,5 X dc.b 7,0 X dc.b 7,-3 X dc.b 6,-8 X dc.b 4,-11 X dc.b 1,-12 X dc.b -1,-12 X endchar X X.d1 X dc.b -10,10 X dc.b -4,-8 X dc.b -2,-9 X dc.b 1,-12 X dc.b 1,9 X endchar X X.d2 X dc.b -10,10 X dc.b -6,-7 X dc.b -6,-8 X dc.b -5,-10 X dc.b -4,-11 X dc.b -2,-12 X dc.b 2,-12 X dc.b 4,-11 X dc.b 5,-10 X dc.b 6,-8 X dc.b 6,-6 X dc.b 5,-4 X dc.b 3,-1 X dc.b -7,9 X dc.b 7,9 X endchar X X.d3 X dc.b -10,10 X dc.b -5,-12 X dc.b 6,-12 X dc.b 0,-4 X dc.b 3,-4 X dc.b 5,-3 X dc.b 6,-2 X dc.b 7,1 X dc.b 7,3 X dc.b 6,6 X dc.b 4,8 X dc.b 1,9 X dc.b -2,9 X dc.b -5,8 X dc.b -6,7 X dc.b -7,5 X endchar X X.d4 X dc.b -10,10 X dc.b 3,-12 X dc.b -7,2 X dc.b 8,2 X penup X dc.b 3,-12 X dc.b 3,9 X endchar X X.d5 X dc.b -10,10 X dc.b 5,-12 X dc.b -5,-12 X dc.b -6,-3 X dc.b -5,-4 X dc.b -2,-5 X dc.b 1,-5 X dc.b 4,-4 X dc.b 6,-2 X dc.b 7,1 X dc.b 7,3 X dc.b 6,6 X dc.b 4,8 X dc.b 1,9 X dc.b -2,9 X dc.b -5,8 X dc.b -6,7 X dc.b -7,5 X endchar X X.d6 X dc.b -10,10 X dc.b 6,-9 X dc.b 5,-11 X dc.b 2,-12 X dc.b 0,-12 X dc.b -3,-11 X dc.b -5,-8 X dc.b -6,-3 X dc.b -6,2 X dc.b -5,6 X dc.b -3,8 X dc.b 0,9 X dc.b 1,9 X dc.b 4,8 X dc.b 6,6 X dc.b 7,3 X dc.b 7,2 X dc.b 6,-1 X dc.b 4,-3 X dc.b 1,-4 X dc.b 0,-4 X dc.b -3,-3 X dc.b -5,-1 X dc.b -6,2 X endchar X X.d7 X dc.b -10,10 X dc.b 7,-12 X dc.b -3,9 X penup X dc.b -7,-12 X dc.b 7,-12 X endchar X X.d8 X dc.b -10,10 X dc.b -2,-12 X dc.b -5,-11 X dc.b -6,-9 X dc.b -6,-7 X dc.b -5,-5 X dc.b -3,-4 X dc.b 1,-3 X dc.b 4,-2 X dc.b 6,0 X dc.b 7,2 X dc.b 7,5 X dc.b 6,7 X dc.b 5,8 X dc.b 2,9 X dc.b -2,9 X dc.b -5,8 X dc.b -6,7 X dc.b -7,5 X dc.b -7,2 X dc.b -6,0 X dc.b -4,-2 X dc.b -1,-3 X dc.b 3,-4 X dc.b 5,-5 X dc.b 6,-7 X dc.b 6,-9 X dc.b 5,-11 X dc.b 2,-12 X dc.b -2,-12 X endchar X X.d9 X dc.b -10,10 X dc.b 6,-5 X dc.b 5,-2 X dc.b 3,0 X dc.b 0,1 X dc.b -1,1 X dc.b -4,0 X dc.b -6,-2 X dc.b -7,-5 X dc.b -7,-6 X dc.b -6,-9 X dc.b -4,-11 X dc.b -1,-12 X dc.b 0,-12 X dc.b 3,-11 X dc.b 5,-9 X dc.b 6,-5 X dc.b 6,0 X dc.b 5,5 X dc.b 3,8 X dc.b 0,9 X dc.b -2,9 X dc.b -5,8 X dc.b -6,6 X endchar X X.h3A X dc.b -5,5 X dc.b 0,-5 X dc.b -1,-4 X dc.b 0,-3 X dc.b 1,-4 X dc.b 0,-5 X penup X dc.b 0,7 X dc.b -1,8 X dc.b 0,9 X dc.b 1,8 X dc.b 0,7 X endchar X X.h3B X dc.b -5,5 X dc.b 0,-5 X dc.b -1,-4 X dc.b 0,-3 X dc.b 1,-4 X dc.b 0,-5 X penup X dc.b 1,8 X dc.b 0,9 X dc.b -1,8 X dc.b 0,7 X dc.b 1,8 X dc.b 1,10 X dc.b 0,12 X dc.b -1,13 X endchar X X.h3C X dc.b -12,12 X dc.b 8,-9 X dc.b -8,0 X dc.b 8,9 X endchar X X.h3D X dc.b -13,13 X dc.b -9,-3 X dc.b 9,-3 X penup X dc.b -9,3 X dc.b 9,3 X endchar X X.h3E X dc.b -12,12 X dc.b -8,-9 X dc.b 8,0 X dc.b -8,9 X endchar X X.h3F X dc.b -9,9 X dc.b -6,-7 X dc.b -6,-8 X dc.b -5,-10 X dc.b -4,-11 X dc.b -2,-12 X dc.b 2,-12 X dc.b 4,-11 X dc.b 5,-10 X dc.b 6,-8 X dc.b 6,-6 X dc.b 5,-4 X dc.b 4,-3 X dc.b 0,-1 X dc.b 0,2 X penup X dc.b 0,7 X dc.b -1,8 X dc.b 0,9 X dc.b 1,8 X dc.b 0,7 X endchar X X.h40 X dc.b -13,14 X dc.b 5,-4 X dc.b 4,-6 X dc.b 2,-7 X dc.b -1,-7 X dc.b -3,-6 X dc.b -4,-5 X dc.b -5,-2 X dc.b -5,1 X dc.b -4,3 X dc.b -2,4 X dc.b 1,4 X dc.b 3,3 X dc.b 4,1 X penup X dc.b -1,-7 X dc.b -3,-5 X dc.b -4,-2 X dc.b -4,1 X dc.b -3,3 X dc.b -2,4 X penup X dc.b 5,-7 X dc.b 4,1 X dc.b 4,3 X dc.b 6,4 X dc.b 8,4 X dc.b 10,2 X dc.b 11,-1 X dc.b 11,-3 X dc.b 10,-6 X dc.b 9,-8 X dc.b 7,-10 X dc.b 5,-11 X dc.b 2,-12 X dc.b -1,-12 X dc.b -4,-11 X dc.b -6,-10 X dc.b -8,-8 X dc.b -9,-6 X dc.b -10,-3 X dc.b -10,0 X dc.b -9,3 X dc.b -8,5 X dc.b -6,7 X dc.b -4,8 X dc.b -1,9 X dc.b 2,9 X dc.b 5,8 X dc.b 7,7 X dc.b 8,6 X penup X dc.b 6,-7 X dc.b 5,1 X dc.b 5,3 X dc.b 6,4 X endchar X X X X.A X dc.b -9,9 X* dc.b 0,-12 X dc.b -8,9 X* penup X dc.b 0,-12 X dc.b 8,9 X penup X dc.b -5,2 X dc.b 5,2 X endchar X X.B X dc.b -11,10 X* dc.b -7,-12 X dc.b -7,9 X* penup X dc.b -7,-12 X dc.b 2,-12 X dc.b 5,-11 X dc.b 6,-10 X dc.b 7,-8 X dc.b 7,-6 X dc.b 6,-4 X dc.b 5,-3 X dc.b 2,-2 X* penup X dc.b -7,-2 X dc.b 2,-2 X dc.b 5,-1 X dc.b 6,0 X dc.b 7,2 X dc.b 7,5 X dc.b 6,7 X dc.b 5,8 X dc.b 2,9 X* dc.b -7,9 X closepath X endchar X X.C X dc.b -10,11 X dc.b 8,-7 X dc.b 7,-9 X dc.b 5,-11 X dc.b 3,-12 X dc.b -1,-12 X dc.b -3,-11 X dc.b -5,-9 X dc.b -6,-7 X dc.b -7,-4 X dc.b -7,1 X dc.b -6,4 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 3,9 X dc.b 5,8 X dc.b 7,6 X dc.b 8,4 X endchar X X.D X dc.b -11,10 X dc.b -7,-12 X dc.b -7,9 X penup X dc.b -7,-12 X dc.b 0,-12 X dc.b 3,-11 X dc.b 5,-9 X dc.b 6,-7 X dc.b 7,-4 X dc.b 7,1 X dc.b 6,4 X dc.b 5,6 X dc.b 3,8 X dc.b 0,9 X dc.b -7,9 X endchar X X.E X dc.b -10,9 X dc.b -6,-12 X dc.b -6,9 X penup X dc.b -6,-12 X dc.b 7,-12 X penup X dc.b -6,-2 X dc.b 2,-2 X penup X dc.b -6,9 X dc.b 7,9 X endchar X X.F X dc.b -10,8 X dc.b -6,-12 X dc.b -6,9 X penup X dc.b -6,-12 X dc.b 7,-12 X penup X dc.b -6,-2 X dc.b 2,-2 X endchar X X.G X dc.b -10,11 X dc.b 8,-7 X dc.b 7,-9 X dc.b 5,-11 X dc.b 3,-12 X dc.b -1,-12 X dc.b -3,-11 X dc.b -5,-9 X dc.b -6,-7 X dc.b -7,-4 X dc.b -7,1 X dc.b -6,4 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 3,9 X dc.b 5,8 X dc.b 7,6 X dc.b 8,4 X dc.b 8,1 X penup X dc.b 3,1 X dc.b 8,1 X endchar X X.H X dc.b -11,11 X dc.b -7,-12 X dc.b -7,9 X penup X dc.b 7,-12 X dc.b 7,9 X penup X dc.b -7,-2 X dc.b 7,-2 X endchar X X.I X dc.b -4,4 X dc.b 0,-12 X dc.b 0,9 X endchar X X.J X dc.b -8,8 X dc.b 4,-12 X dc.b 4,4 X dc.b 3,7 X dc.b 2,8 X dc.b 0,9 X dc.b -2,9 X dc.b -4,8 X dc.b -5,7 X dc.b -6,4 X dc.b -6,2 X endchar X X.K X dc.b -11,10 X dc.b -7,-12 X dc.b -7,9 X penup X dc.b 7,-12 X dc.b -7,2 X penup X dc.b -2,-3 X dc.b 7,9 X endchar X X.L X dc.b -10,7 X dc.b -6,-12 X dc.b -6,9 X penup X dc.b -6,9 X dc.b 6,9 X endchar X X.M X dc.b -12,12 X dc.b -8,-12 X dc.b -8,9 X penup X dc.b -8,-12 X dc.b 0,9 X penup X dc.b 8,-12 X dc.b 0,9 X penup X dc.b 8,-12 X dc.b 8,9 X endchar X X.N X dc.b -11,11 X dc.b -7,-12 X dc.b -7,9 X penup X dc.b -7,-12 X dc.b 7,9 X penup X dc.b 7,-12 X dc.b 7,9 X endchar X X.O X dc.b -11,11 X dc.b -2,-12 X dc.b -4,-11 X dc.b -6,-9 X dc.b -7,-7 X dc.b -8,-4 X dc.b -8,1 X dc.b -7,4 X dc.b -6,6 X dc.b -4,8 X dc.b -2,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X dc.b 7,4 X dc.b 8,1 X dc.b 8,-4 X dc.b 7,-7 X dc.b 6,-9 X dc.b 4,-11 X dc.b 2,-12 X* dc.b -2,-12 X closepath X endchar X X.P X dc.b -11,10 X* dc.b -7,-12 X dc.b -7,9 X* penup X dc.b -7,-12 X dc.b 2,-12 X dc.b 5,-11 X dc.b 6,-10 X dc.b 7,-8 X dc.b 7,-5 X dc.b 6,-3 X dc.b 5,-2 X dc.b 2,-1 X dc.b -7,-1 X endchar X X.Q X dc.b -11,11 X dc.b -2,-12 X dc.b -4,-11 X dc.b -6,-9 X dc.b -7,-7 X dc.b -8,-4 X dc.b -8,1 X dc.b -7,4 X dc.b -6,6 X dc.b -4,8 X dc.b -2,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X dc.b 7,4 X dc.b 8,1 X dc.b 8,-4 X dc.b 7,-7 X dc.b 6,-9 X dc.b 4,-11 X dc.b 2,-12 X* dc.b -2,-12 X closepath X penup X dc.b 1,5 X dc.b 7,11 X endchar X X.R X dc.b -11,10 X dc.b -7,-12 X dc.b -7,9 X penup X dc.b -7,-12 X dc.b 2,-12 X dc.b 5,-11 X dc.b 6,-10 X dc.b 7,-8 X dc.b 7,-6 X dc.b 6,-4 X dc.b 5,-3 X dc.b 2,-2 X dc.b -7,-2 X penup X dc.b 0,-2 X dc.b 7,9 X endchar X X.S X dc.b -10,10 X dc.b 7,-9 X dc.b 5,-11 X dc.b 2,-12 X dc.b -2,-12 X dc.b -5,-11 X dc.b -7,-9 X dc.b -7,-7 X dc.b -6,-5 X dc.b -5,-4 X dc.b -3,-3 X dc.b 3,-1 X dc.b 5,0 X dc.b 6,1 X dc.b 7,3 X dc.b 7,6 X dc.b 5,8 X dc.b 2,9 X dc.b -2,9 X dc.b -5,8 X dc.b -7,6 X endchar X X.T X dc.b -8,8 X dc.b 0,-12 X dc.b 0,9 X penup X dc.b -7,-12 X dc.b 7,-12 X endchar X X.U X dc.b -11,11 X dc.b -7,-12 X dc.b -7,3 X dc.b -6,6 X dc.b -4,8 X dc.b -1,9 X dc.b 1,9 X dc.b 4,8 X dc.b 6,6 X dc.b 7,3 X dc.b 7,-12 X endchar X X.V X dc.b -9,9 X dc.b -8,-12 X dc.b 0,9 X penup X dc.b 8,-12 X dc.b 0,9 X endchar X X.W X dc.b -12,12 X dc.b -10,-12 X dc.b -5,9 X penup X dc.b 0,-12 X dc.b -5,9 X penup X dc.b 0,-12 X dc.b 5,9 X penup X dc.b 10,-12 X dc.b 5,9 X endchar X X.X X dc.b -10,10 X dc.b -7,-12 X dc.b 7,9 X penup X dc.b 7,-12 X dc.b -7,9 X endchar X X.Y X dc.b -9,9 X dc.b -8,-12 X dc.b 0,-2 X dc.b 0,9 X penup X dc.b 8,-12 X dc.b 0,-2 X endchar X X.Z X dc.b -10,10 X dc.b 7,-12 X dc.b -7,9 X penup X dc.b -7,-12 X dc.b 7,-12 X penup X dc.b -7,9 X dc.b 7,9 X endchar X X X.h5B X dc.b -7,7 X dc.b -3,-12 X dc.b -3,16 X penup X dc.b -3,-12 X dc.b 4,-12 X penup X dc.b -3,16 X dc.b 4,16 X endchar X X.h5C X dc.b -11,11 X dc.b -9,-12 X dc.b 9,16 X endchar X X.h5D X dc.b -7,7 X dc.b 3,-12 X dc.b 3,16 X penup X dc.b -4,-12 X dc.b 3,-12 X penup X dc.b -4,16 X dc.b 3,16 X endchar X X.h5E X dc.b -8,8 X dc.b -2,-6 X dc.b 0,-9 X dc.b 2,-6 X penup X dc.b -5,-3 X dc.b 0,-8 X dc.b 5,-3 X penup X dc.b 0,-8 X dc.b 0,9 X endchar X X.h5F X dc.b -13,13 X dc.b -9,16 X dc.b 9,16 X endchar X X.h60 X dc.b -4,4 X dc.b -3,-12 X dc.b 0,-5 X endchar X X.a X dc.b -9,10 X dc.b 6,-5 X dc.b 6,9 X penup X dc.b 6,-2 X dc.b 4,-4 X dc.b 2,-5 X dc.b -1,-5 X dc.b -3,-4 X dc.b -5,-2 X dc.b -6,1 X dc.b -6,3 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X endchar X X.b X dc.b -10,9 X dc.b -6,-12 X dc.b -6,9 X penup X dc.b -6,-2 X dc.b -4,-4 X dc.b -2,-5 X dc.b 1,-5 X dc.b 3,-4 X dc.b 5,-2 X dc.b 6,1 X dc.b 6,3 X dc.b 5,6 X dc.b 3,8 X dc.b 1,9 X dc.b -2,9 X dc.b -4,8 X dc.b -6,6 X endchar X X.c X dc.b -9,9 X dc.b 6,-2 X dc.b 4,-4 X dc.b 2,-5 X dc.b -1,-5 X dc.b -3,-4 X dc.b -5,-2 X dc.b -6,1 X dc.b -6,3 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X endchar X X.d X dc.b -9,10 X dc.b 6,-12 X dc.b 6,9 X penup X dc.b 6,-2 X dc.b 4,-4 X dc.b 2,-5 X dc.b -1,-5 X dc.b -3,-4 X dc.b -5,-2 X dc.b -6,1 X dc.b -6,3 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X endchar X X.e X dc.b -9,9 X dc.b -6,1 X dc.b 6,1 X dc.b 6,-1 X dc.b 5,-3 X dc.b 4,-4 X dc.b 2,-5 X dc.b -1,-5 X dc.b -3,-4 X dc.b -5,-2 X dc.b -6,1 X dc.b -6,3 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X endchar X X.f X dc.b -5,7 X dc.b 5,-12 X dc.b 3,-12 X dc.b 1,-11 X dc.b 0,-8 X dc.b 0,9 X penup X dc.b -3,-5 X dc.b 4,-5 X endchar X X.g X dc.b -9,10 X dc.b 6,-5 X dc.b 6,11 X dc.b 5,14 X dc.b 4,15 X dc.b 2,16 X dc.b -1,16 X dc.b -3,15 X penup X dc.b 6,-2 X dc.b 4,-4 X dc.b 2,-5 X dc.b -1,-5 X dc.b -3,-4 X dc.b -5,-2 X dc.b -6,1 X dc.b -6,3 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X endchar X X.h X dc.b -9,10 X dc.b -5,-12 X dc.b -5,9 X penup X dc.b -5,-1 X dc.b -2,-4 X dc.b 0,-5 X dc.b 3,-5 X dc.b 5,-4 X dc.b 6,-1 X dc.b 6,9 X endchar X X.i X dc.b -4,4 X dc.b -1,-12 X dc.b 0,-11 X dc.b 1,-12 X dc.b 0,-13 X dc.b -1,-12 X penup X dc.b 0,-5 X dc.b 0,9 X endchar X X.j X dc.b -5,5 X dc.b 0,-12 X dc.b 1,-11 X dc.b 2,-12 X dc.b 1,-13 X dc.b 0,-12 X penup X dc.b 1,-5 X dc.b 1,12 X dc.b 0,15 X dc.b -2,16 X dc.b -4,16 X endchar X X.k X dc.b -9,8 X dc.b -5,-12 X dc.b -5,9 X penup X dc.b 5,-5 X dc.b -5,5 X penup X dc.b -1,1 X dc.b 6,9 X endchar X X.l X dc.b -4,4 X dc.b 0,-12 X dc.b 0,9 X endchar X X.m X dc.b -15,15 X dc.b -11,-5 X dc.b -11,9 X penup X dc.b -11,-1 X dc.b -8,-4 X dc.b -6,-5 X dc.b -3,-5 X dc.b -1,-4 X dc.b 0,-1 X dc.b 0,9 X penup X dc.b 0,-1 X dc.b 3,-4 X dc.b 5,-5 X dc.b 8,-5 X dc.b 10,-4 X dc.b 11,-1 X dc.b 11,9 X endchar X X.n X dc.b -9,10 X dc.b -5,-5 X dc.b -5,9 X penup X dc.b -5,-1 X dc.b -2,-4 X dc.b 0,-5 X dc.b 3,-5 X dc.b 5,-4 X dc.b 6,-1 X dc.b 6,9 X endchar X X.o X dc.b -9,10 X dc.b -1,-5 X dc.b -3,-4 X dc.b -5,-2 X dc.b -6,1 X dc.b -6,3 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X dc.b 7,3 X dc.b 7,1 X dc.b 6,-2 X dc.b 4,-4 X dc.b 2,-5 X dc.b -1,-5 X endchar X X.p X dc.b -10,9 X dc.b -6,-5 X dc.b -6,16 X penup X dc.b -6,-2 X dc.b -4,-4 X dc.b -2,-5 X dc.b 1,-5 X dc.b 3,-4 X dc.b 5,-2 X dc.b 6,1 X dc.b 6,3 X dc.b 5,6 X dc.b 3,8 X dc.b 1,9 X dc.b -2,9 X dc.b -4,8 X dc.b -6,6 X endchar X X.q X dc.b -9,10 X dc.b 6,-5 X dc.b 6,16 X penup X dc.b 6,-2 X dc.b 4,-4 X dc.b 2,-5 X dc.b -1,-5 X dc.b -3,-4 X dc.b -5,-2 X dc.b -6,1 X dc.b -6,3 X dc.b -5,6 X dc.b -3,8 X dc.b -1,9 X dc.b 2,9 X dc.b 4,8 X dc.b 6,6 X endchar X X.r X dc.b -7,6 X dc.b -3,-5 X dc.b -3,9 X penup X dc.b -3,1 X dc.b -2,-2 X dc.b 0,-4 X dc.b 2,-5 X dc.b 5,-5 X endchar X X.s X dc.b -8,9 X dc.b 6,-2 X dc.b 5,-4 X dc.b 2,-5 X dc.b -1,-5 X dc.b -4,-4 X dc.b -5,-2 X dc.b -4,0 X dc.b -2,1 X dc.b 3,2 X dc.b 5,3 X dc.b 6,5 X dc.b 6,6 X dc.b 5,8 X dc.b 2,9 X dc.b -1,9 X dc.b -4,8 X dc.b -5,6 X endchar X X.t X dc.b -5,7 X dc.b 0,-12 X dc.b 0,5 X dc.b 1,8 X dc.b 3,9 X dc.b 5,9 X penup X dc.b -3,-5 X dc.b 4,-5 X endchar X X.u X dc.b -9,10 X dc.b -5,-5 X dc.b -5,5 X dc.b -4,8 X dc.b -2,9 X dc.b 1,9 X dc.b 3,8 X dc.b 6,5 X penup X dc.b 6,-5 X dc.b 6,9 X endchar X X.v X dc.b -8,8 X dc.b -6,-5 X dc.b 0,9 X penup X dc.b 6,-5 X dc.b 0,9 X endchar X X.w X dc.b -11,11 X dc.b -8,-5 X dc.b -4,9 X penup X dc.b 0,-5 X dc.b -4,9 X penup X dc.b 0,-5 X dc.b 4,9 X penup X dc.b 8,-5 X dc.b 4,9 X endchar X X.x X dc.b -8,9 X dc.b -5,-5 X dc.b 6,9 X penup X dc.b 6,-5 X dc.b -5,9 X endchar X X.y X dc.b -8,8 X dc.b -6,-5 X dc.b 0,9 X penup X dc.b 6,-5 X dc.b 0,9 X dc.b -2,13 X dc.b -4,15 X dc.b -6,16 X dc.b -7,16 X endchar X X.z X dc.b -8,9 X dc.b 6,-5 X dc.b -5,9 X penup X dc.b -5,-5 X dc.b 6,-5 X penup X dc.b -5,9 X dc.b 6,9 X endchar X X X.h7B X dc.b -7,7 X dc.b 2,-12 X dc.b 0,-11 X dc.b -1,-10 X dc.b -2,-9 X dc.b -2,-7 X dc.b -1,-6 X dc.b 0,-5 X dc.b 1,-3 X dc.b 1,-1 X dc.b -1,1 X penup X dc.b 0,-11 X dc.b -1,-9 X dc.b -1,-8 X dc.b 0,-7 X dc.b 1,-6 X dc.b 2,-4 X dc.b 2,-2 X dc.b 1,0 X dc.b -3,2 X dc.b 1,4 X dc.b 2,6 X dc.b 2,8 X dc.b 1,10 X dc.b 0,11 X dc.b -1,12 X dc.b -1,13 X dc.b 0,15 X penup X dc.b -1,3 X dc.b 1,5 X dc.b 1,7 X dc.b 0,9 X dc.b -1,10 X dc.b -2,11 X dc.b -2,13 X dc.b -1,14 X dc.b 0,15 X dc.b 2,16 X endchar X X.h7C X dc.b -4,4 X dc.b 0,-12 X dc.b 0,16 X endchar X X.h7D X dc.b -7,7 X dc.b -2,-12 X dc.b 0,-11 X dc.b 1,-10 X dc.b 2,-9 X dc.b 2,-7 X dc.b 1,-6 X dc.b 0,-5 X dc.b -1,-3 X dc.b -1,-1 X dc.b 1,1 X penup X dc.b 0,-11 X dc.b 1,-9 X dc.b 1,-8 X dc.b 0,-7 X dc.b -1,-6 X dc.b -2,-4 X dc.b -2,-2 X dc.b -1,0 X dc.b 3,2 X dc.b -1,4 X dc.b -2,6 X dc.b -2,8 X dc.b -1,10 X dc.b 0,11 X dc.b 1,12 X dc.b 1,13 X dc.b 0,15 X penup X dc.b 1,3 X dc.b -1,5 X dc.b -1,7 X dc.b 0,9 X dc.b 1,10 X dc.b 2,11 X dc.b 2,13 X dc.b 1,14 X dc.b 0,15 X dc.b -2,16 X endchar X X.h7E X dc.b -12,12 X dc.b -9,3 X dc.b -9,1 X dc.b -8,-2 X dc.b -6,-3 X dc.b -4,-3 X dc.b -2,-2 X dc.b 2,1 X dc.b 4,2 X dc.b 6,2 X dc.b 8,1 X dc.b 9,-1 X penup X dc.b -9,1 X dc.b -8,-1 X dc.b -6,-2 X dc.b -4,-2 X dc.b -2,-1 X dc.b 2,2 X dc.b 4,3 X dc.b 6,3 X dc.b 8,2 X dc.b 9,-1 X dc.b 9,-3 X endchar X X.h7F X dc.b -8,8 X dc.b 0,-12 X dc.b -1,-10 X dc.b 0,-8 X dc.b 1,-10 X dc.b 0,-12 X penup X dc.b 0,-12 X dc.b 0,16 X penup X dc.b 0,-1 X dc.b -1,2 X dc.b 0,16 X dc.b 1,2 X dc.b 0,-1 X penup X dc.b -6,-5 X dc.b 6,-5 X penup X dc.b 2,-5 X dc.b 4,-4 X dc.b 6,-5 X dc.b 4,-6 X dc.b 2,-5 X endchar X X X end X X \Rogue\Monster\ else echo "will not over write ./simplex.chr" fi if [ `wc -c ./simplex.chr | awk '{printf $1}'` -ne 20594 ] then echo `wc -c ./simplex.chr | awk '{print "Got " $1 ", Expected " 20594}'` fi if `test ! -s ./tletters` then echo "writing ./tletters" sed 's/^X//' > ./tletters << '\Rogue\Monster\' X Xsave X X2 pencolor 1 penmode X X/simplex findfont 12 scalefont setfont X X/char (x) def X X/tshow { false charpath stroke } def X X/caps { X 65 1 65 25 add % for A to Z X { char exch 0 exch put X char tshow } for X } def X X/small { X 97 1 97 25 add X { char exch 0 exch put X char tshow } for X } def X X 3 setlinewidth X X50 300 moveto small X50 250 moveto caps X X/simplex findfont 20 scalefont setfont X X50 200 moveto small X50 150 moveto caps X X Xrestore X \Rogue\Monster\ else echo "will not over write ./tletters" fi if [ `wc -c ./tletters | awk '{printf $1}'` -ne 460 ] then echo `wc -c ./tletters | awk '{print "Got " $1 ", Expected " 460}'` fi echo "Finished archive 1 of 3" # if you want to concatenate archives, remove anything after this line exit