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