Home » Archimedes archive » Archimedes World » AW-1995-04-Disc1.adf » Disk1Apr95 » !AWApr95/Goodies/Draw/!DrawBasic/Utils

!AWApr95/Goodies/Draw/!DrawBasic/Utils

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1995-04-Disc1.adf » Disk1Apr95
Filename: !AWApr95/Goodies/Draw/!DrawBasic/Utils
Read OK:
File size: 3BA3 bytes
Load address: 0000
Exec address: 0000
Duplicates

There are 3 duplicate copies of this file in the archive:

File contents
   10REM > DrawBasic:Utils
   20
   30REM =======================================================
   40REM
   50REM copyright Joe Taylor June 1994
   60REM
   70REM N.B. For ERROR THROWBACK to work The first line above
   80REM      MUST have the correct pathname of this file.
   90REM      If you move the location of the file remember to
  100REM      alter this pathname.
  110REM
  120REM =======================================================
  130
  140
  150REM **************************************************************************
  160REM
  170REM 1. SETTING UP A DRAW FILE
  180REM
  190REM **************************************************************************
  200
  210REM =======================
  220REM 1.1 Memory Manipulation
  230REM =======================
  240
  250DEF FNFreeSlot
  260 REM --------------------------------------
  270 REM
  280 REM Allocates 'Free' slot for data storage
  290 REM
  300 REM Called in Library setup file
  310 REM
  320 REM --------------------------------------
  330 LOCAL Buffer%,Free_Size%
  340 SYS "Wimp_SlotSize",-1,-1 TO ,,Free_Size%
  350 IF Free_Size%<32 THEN
  360  ON ERROR OFF
  370  SYS "Wimp_CommandWindow",-1
  380  ERROR EXT 0,"DrawBasic needs a non-empty 'Free' slot to save Draw file output"
  390  ENDIF
  400 IF Free_Size%>1024*1024*4 THEN Free_Size%=1024*1024*4
  410 Buffer%=HIMEM
  420 END=Buffer%+Free_Size%
  430 !Buffer%=Buffer%+8
  440  Buffer%!4=Buffer%+Free_Size%-4 : !(Buffer%!4)=0
  450=Buffer%
  460
  470DEF PROCDraw_AddWord(x%)
  480 REM -------------------------------------
  490 REM
  500 REM Adds the word (4 bytes) x% to a
  510 REM "formatted" word array.
  520 REM
  530 REM The "pointer" is updated.
  540 REM
  550 REM -------------------------------------
  560 IF (!HIMEM)>=(!(HIMEM+4)) THEN ERROR 0,"Out of memory"
  570 !(!HIMEM)=x%  : REM write word to file at next free address
  580 !HIMEM+=4     : REM update pointer to next free byte
  590 ENDPROC
  600
  610DEF PROCDraw_AddFloat(x)
  620 REM -------------------------------------
  630 REM
  640 REM Adds the floating-point number
  650 REM (5 or 8 bytes) x .
  660 REM
  670 REM The "pointer" is updated.
  680 REM
  690 REM -------------------------------------
  700 IF (!HIMEM)+4>=(!(HIMEM+4)) THEN ERROR 0,"Out of memory"
  710 |(!HIMEM)=x   : REM write to file at next free address
  720 !HIMEM+=8     : REM update pointer to next free byte
  730 ENDPROC
  740
  750DEF PROCDraw_AddString(pointer%,x$)
  760 REM -------------------------------------------
  770 REM
  780 REM Adds string x$ to a "formatted" word array
  790 REM and adds a CHR$0.
  800 REM
  810 REM String is now aligned with word boundary
  820 REM
  830 REM ------------------------------------------
  840 LOCAL _a%,_b%
  850 _a%=LEN x$
  860 IF (!pointer%+_a%)>=(!(HIMEM+4)) THEN ERROR 0,"Out of memory"
  870 IF (_a%MOD4)<>0 THEN  x$+=STRING$(4-(_a%MOD4),CHR$0) : _a%=LEN x$
  880 _b%=pointer%!_a% : $(!pointer%)=x$
  890 !pointer%+=_a%   : pointer%!_a%=_b%
  900 ENDPROC
  910
  920DEF PROCDraw_AddCoords(x,y)
  930 REM -------------------------------------------
  940 REM
  950 REM Adds coordinates (x,y)
  960 REM
  970 REM
  980 REM ------------------------------------------
  990 PROCDraw_AddWord(FNDraw_X(x))
 1000 PROCDraw_AddWord(FNDraw_Y(y))
 1010 ENDPROC
 1020
 1030DEF PROCMoveMemory(address%,n_words%)
 1040 REM -----------------------------------
 1050 REM
 1060 REM Moves n_words% upwards starting at
 1070 REM address%
 1080 REM
 1090 REM -----------------------------------
 1100 LOCAL _i%,_n% : _n%=4*n_words% 
 1110 IF !HIMEM+_n%>=(!(HIMEM+4)) THEN ERROR 0,"Not enough memory!"
 1120 REM
 1130 REM ----------------- RESET POINTERS ---------------------------
 1140 REM 
 1150     IF FNCurrentPath>=address% THEN PROCCurrentPath(FNCurrentPath+_n%)
 1160     IF FNCurrentSubpath>=address% THEN PROCCurrentSubpath(FNCurrentSubpath+_n%)
 1170     REM ---- Path Pointers -----
 1180      _i%=!(HIMEM+4)
 1190      WHILE !_i%>=address%
 1200       !_i%+=_n% : _i%+=4 
 1210       ENDWHILE
 1220REM
 1230REM ----------------- MOVE MEMORY ---------------------------
 1240REM
 1250     _i%=!HIMEM
 1260     WHILE _i%>address% :  _i%-=4 : _i%!_n%=!_i% : ENDWHILE
 1270 REM Update main pointer
 1280     !HIMEM+=_n% 
 1290ENDPROC
 1300
 1310DEF FNObjectType(path)
 1320IF path>=!(HIMEM+4) THEN=!(!path) ELSE=!path
 1330
 1340REM ========================
 1350REM 1.2 Creating A Draw File
 1360REM ========================
 1370
 1380DEF PROCBeginDrawing
 1390 REM ---------------------
 1400 REM
 1410 REM Sets up "new" drawing
 1420 REM
 1430 REM ---------------------
 1440 PROCDraw_SetUp
 1450 PROCDraw_SetFileHeader
 1460 PROCDraw_SetFontTable
 1470ENDPROC
 1480
 1490DEF PROCDraw_SetUp
 1500 LOCAL _scale%  : _scale%=INT(180*256/2.54+.5)
 1510 PROCDraw_AddWord(0)                      : REM 8  Address of Draw File
 1520 PROCDraw_AddWord(0)                      : REM 12 Origin x         (Draw units)
 1530 PROCDraw_AddWord(0)                      : REM 16 Origin y              ""
 1540 PROCDraw_AddWord(12*_scale%)             : REM 20 Frame_size width      ""
 1550 PROCDraw_AddWord(12*_scale%)             : REM 24 Frame_size height     ""
 1560 PROCDraw_AddFloat(0)                     : REM 28 Frame Coords a   (User units)
 1570 PROCDraw_AddFloat(0)                     : REM 36 Frame Coords u        ""
 1580 PROCDraw_AddFloat(12)                    : REM 44 Frame Coords width    ""
 1590 PROCDraw_AddFloat(12)                    : REM 52 Frame Coords height   ""
 1600 PROCDraw_AddWord(_scale%)                : REM 60 Units
 1610
 1620 PROCDraw_AddWord(0)                      : REM 64 Current path
 1630 PROCDraw_AddWord(0)                      : REM 68 Current subpath
 1640
 1650 PROCDraw_AddWord(0)                      : REM 72 Symbol type
 1660 PROCDraw_AddWord(0)                      : REM 76 Dash pattern
 1670 PROCDraw_AddWord(12)                     : REM 80 Symbol size
 1680
 1690 PROCDraw_AddWord(14*640)                 : REM 84 Text Font size  (points)
 1700 PROCDraw_AddWord(0)                      : REM 88 Text colour
 1710 PROCDraw_AddWord(1)                      : REM 92 Current Font
 1720
 1730 PROCDraw_AddWord(1<<16)                  : REM 96 Translate
 1740 PROCDraw_AddWord(0)                      : REM 100
 1750 PROCDraw_AddWord(0)                      : REM 104
 1760 PROCDraw_AddWord(1<<16)                  : REM 108
 1770 PROCDraw_AddWord(256*90)                 : REM 112
 1780 PROCDraw_AddWord(256*90)                 : REM 116
 1790
 1800 PROCDraw_AddWord(_scale%)                : REM 120 Cms/Draw units
 1810
 1820 PROCDraw_AddWord(1<<16)                  : REM 124 Axes width
 1830 PROCDraw_AddWord((3<<16)+3)              : REM 128 Axes Cap Point/width
 1840 PROCDraw_AddWord(0)                      : REM 132 Axes Extend (0%)
 1850
 1860 PROCDraw_AddWord(1)                      : REM 136  Nx scales
 1870 PROCDraw_AddWord(0)                      : REM 140  nx scales
 1880 PROCDraw_AddWord(1)                      : REM 144  Ny scales
 1890 PROCDraw_AddWord(0)                      : REM 148  ny scales
 1900 PROCDraw_AddWord(10)                     : REM 152  Lx scales
 1910 PROCDraw_AddWord(7)                      : REM 156  lx scales
 1920 PROCDraw_AddWord(10)                     : REM 160  Ly scales
 1930 PROCDraw_AddWord(7)                      : REM 164  ly scales
 1940 PROCDraw_AddWord(1<<16)                  : REM 168  Wx scales
 1950 PROCDraw_AddWord(1<<15)                  : REM 172  wx scales
 1960 PROCDraw_AddWord(1<<16)                  : REM 176  Wy scales
 1970 PROCDraw_AddWord(1<<15)                  : REM 180  wy scales
 1980
 1990 PROCDraw_AddWord(1<<16)                  : REM 184  REM Current Transform
 2000 PROCDraw_AddWord(0)                      : REM 188
 2010 PROCDraw_AddWord(0)                      : REM 192
 2020 PROCDraw_AddWord(1<<16)                  : REM 196
 2030 PROCDraw_AddWord(0)                      : REM 200
 2040 PROCDraw_AddWord(0)                      : REM 204
 2050
 2060 PROCDraw_AddWord(10000)                  : REM 208 Max x resolution
 2070 PROCDraw_AddWord(100)                    : REM 212 Min x resolution
 2080 PROCDraw_AddWord(300)                    : REM 216 V resolution dots/inch
 2090
 2100 PROCDraw_AddWord(4)                      : REM 220 Bar chart scales
 2110 PROCDraw_AddWord(0)                      : REM 224 Line Colour
 2120 PROCDraw_AddWord(-1)                     : REM 228 Fill Colour (no fill)
 2130 PROCDraw_AddWord(0)                      : REM 232 Line Width
 2140 PROCDraw_AddWord(0)                      : REM 236 Line style
 2150 PROCDraw_AddWord(0)                      : REM 240 Chart factor
 2160 PROCDraw_AddWord(0)                      : REM 244      ""
 2170 |(HIMEM+240)=5/6
 2180
 2190 !(HIMEM+8)=!HIMEM                        : REM Address of Draw file
 2200ENDPROC
 2210
 2220DEF PROCDraw_SetFileHeader
 2230 REM
 2240 REM --------40 bytes------------
 2250 REM
 2260 PROCDraw_AddString(HIMEM,"Draw")         : REM Title
 2270 PROCDraw_AddWord(201)                    : REM major format number
 2280 PROCDraw_AddWord(0)                      : REM minor format number
 2290 PROCDraw_AddString(HIMEM,"DrawBasic   ") : REM Program Title
 2300 PROCDraw_AddWord(0)                      : REM BoundingBox
 2310 PROCDraw_AddWord(0)                      : REM BoundingBox
 2320 PROCDraw_AddWord(256*180*12*3*800)       : REM BoundingBox
 2330 PROCDraw_AddWord(256*180*12*3*800)       : REM BoundingBox
 2340ENDPROC
 2350
 2360DEF PROCDraw_SetFontTable
 2370 REM -------------------------------------------------
 2380 REM
 2390 REM This procedure should not be called in a program.
 2400 REM It is used  to set the Font table.
 2410 REM
 2420 REM -------------------------------------------------
 2430 LOCAL _fonts% : _fonts%=!(HIMEM+8)+40
 2440 PROCDraw_AddWord(0)                  : REM Font object type 0
 2450 PROCDraw_AddWord(0)                  : REM Font object length
 2460 PROCDraw_AddString(HIMEM,CHR$1+"Trinity.Medium"+CHR$0)
 2470 !(_fonts%+4)=!HIMEM-_fonts%          : REM Font object length
 2480ENDPROC
 2490
 2500REM ========================
 2510REM 1.3 Saving A Draw File
 2520REM ========================
 2530
 2540DEF PROCQuit
 2550 REM -------------------------------------------------------
 2560 REM
 2570 REM Saves Draw file to DrawBasic:DrawFile
 2580 REM
 2590 REM The file is then *Run so it will be loaded into !Draw
 2600 REM
 2610 REM -------------------------------------------------------
 2620 PROCPathEnd
 2630 OSCLI("Save DrawBasic:Draw.File "+STR$~(!(HIMEM+8))+" "+STR$~(!HIMEM))
 2640 *SetType DrawBasic:Draw.File DrawFile
 2650 *Filer_Run DrawBasic:Draw.File
 2660END
 2670
 2680REM ---------
 2690REM
 2700REM 1.4 Units
 2710REM
 2720REM ---------
 2730
 2740DEF FNUnits=!(HIMEM+60)
 2750
 2760DEF PROCCentimetres
 2770!(HIMEM+60)=INT(256*180/2.54+.5)
 2780PROCFrameSize(0,0,12,12)
 2790PROCFrameCoords(0,12,0,12)
 2800PROCPreview
 2810ENDPROC
 2820
 2830DEF PROCInches
 2840!(HIMEM+60)=256*180
 2850PROCFrameSize(0,0,6,6)
 2860PROCFrameCoords(0,6,0,6)
 2870PROCPreview
 2880ENDPROC
 2890
 2900DEF FNDrawUnits(a)=INT(FNUnits*a+.5)
 2910
 2920DEF PROCFrameSize(a,b,width,height)
 2930 REM -------------------------------------------
 2940 REM
 2950 REM Defines the size of the  drawing "frame".
 2960 REM
 2970 REM ------------------------------------------
 2980 PROCFrameCoords(0,width,0,height)
 2990  !(HIMEM+20)=FNDrawUnits(width)  : REM Bounding box - width
 3000  !(HIMEM+24)=FNDrawUnits(height) : REM Bounding box - height
 3010  !(HIMEM+12)=FNDrawUnits(a)      : REM Frame_x
 3020  !(HIMEM+16)=FNDrawUnits(b)      : REM Frame_y
 3030ENDPROC
 3040
 3050DEF PROCReduceFrameSize(fraction)
 3060LOCAL _w%,_h%
 3070_w%=INT(!(HIMEM+20)*fraction+.5) : _h%=INT(!(HIMEM+24)*fraction+.5)
 3080!(HIMEM+12)+=INT((!(HIMEM+20)-_w%)/2+.5)
 3090!(HIMEM+16)+=INT((!(HIMEM+24)-_h%)/2+.5)
 3100!(HIMEM+20)=_w% : !(HIMEM+24)=_h%
 3110ENDPROC
 3120
 3130DEF PROCGetFrameSize(RETURN a%,RETURN b%,RETURN width%,RETURN height%)
 3140 REM -------------------------------------------
 3150 REM
 3160 REM Gives the size of the  drawing "frame".
 3170 REM
 3180 REM ------------------------------------------
 3190  width%=!(HIMEM+20)
 3200  height%=!(HIMEM+24)
 3210  a%=!(HIMEM+12)
 3220  b%=!(HIMEM+16)
 3230ENDPROC
 3240
 3250REM -----------------
 3260REM
 3270REM 1.5 Co-ordinates
 3280REM
 3290REM -----------------
 3300
 3310DEF FNFrame_x=!(HIMEM+12)
 3320DEF FNFrame_y=!(HIMEM+16)
 3330DEF FNFrame_Width=!(HIMEM+20)
 3340DEF FNFrame_Height=!(HIMEM+24)
 3350
 3360DEF FNFRAME_x=|(HIMEM+28)
 3370DEF FNFRAME_y=|(HIMEM+36)
 3380DEF FNFRAME_Width=|(HIMEM+44)
 3390DEF FNFRAME_Height=|(HIMEM+52)
 3400
 3410DEF FNX_Scale=FNFrame_Width/FNFRAME_Width
 3420DEF FNY_Scale=FNFrame_Height/FNFRAME_Height
 3430
 3440DEF FNEpsilon=1/FNY_Scale
 3450
 3460DEF FNMaxNoofPoints=!(HIMEM+208)
 3470DEF FNMinNoofPoints=!(HIMEM+212)
 3480DEF FNDotsPerInch=!(HIMEM+216)
 3490
 3500DEF FNDraw_X(x)=INT(FNFrame_x+(x-FNFRAME_x)*FNX_Scale+.5)
 3510DEF FNDraw_Y(y)=INT(FNFrame_y+(y-FNFRAME_y)*FNY_Scale+.5)
 3520
 3530DEF PROCFrameCoords(a,b,u,v)
 3540 REM -------------------------------------------
 3550 REM
 3560 REM The bounding box in the (x,y) plane which
 3570 REM contains the drawing is a<x<b , u<y<v .
 3580 REM
 3590 REM
 3600 REM ------------------------------------------
 3610 LOCAL _frame%
 3620 _frame%=HIMEM+28
 3630 IF a>=b THEN ERROR 0, STR$ a+" < x < "+STR$ b+" is a bad x range "
 3640 IF u>=v THEN ERROR 0, STR$ u+" < y < "+STR$ v+" is a bad y range "
 3650 |(_frame%)=a      : |(_frame%+8)=u
 3660 |(_frame%+16)=b-a : |(_frame%+24)=v-u
 3670 ENDPROC
 3680
 3690DEF FNOutsideFrame(x,y)
 3700LOCAL _a,_b,_u,_v
 3710PROCGetFrameCoords(_a,_b,_u,_v)
 3720=-((x<_a)<<3)OR-((x>_b)<<2)OR-((y<_u)<<1)OR-(y>_v)
 3730
 3740DEF FNInFrame(x,y)
 3750IF FNOutsideFrame(x,y) THEN =FALSE ELSE=TRUE
 3760
 3770DEF PROCGetFrameCoords(RETURN a,RETURN b,RETURN u,RETURN v)
 3780 REM -------------------------------------------
 3790 REM
 3800 REM The bounding box in the (x,y) plane which
 3810 REM contains the drawing is a<x<b , u<y<v .
 3820 REM
 3830 REM
 3840 REM ------------------------------------------
 3850 LOCAL width,height
 3860     a=|(HIMEM+28) :      u=|(HIMEM+36)
 3870 width=|(HIMEM+44) : height=|(HIMEM+52)
 3880 b=a+width : v=u+height
 3890 ENDPROC
 3900
 3910DEF PROCShowFrame
 3920 REM -------------------------------------------
 3930 REM
 3940 REM The bounding box in the (x,y) plane which
 3950 REM contains the drawing is a<x<b , u<y<v .
 3960 REM
 3970 REM
 3980 REM ------------------------------------------
 3990 LOCAL _path%,_a,_b,_u,_v
 4000  PROCGetFrameCoords(_a,_b,_u,_v)
 4010  _path%=FNRectangle(_a,_u,_b-_a,_v-_u)
 4020  PROCFill@(_path%,1)
 4030  PROCDrawPath(_path%)
 4040ENDPROC
 4050
 4060DEF PROCOrigin(A,B)
 4070 REM --------------
 4080 REM
 4090 REM Changes origin
 4100 REM
 4110 REM --------------
 4120 LOCAL _a,_b,_u,_v
 4130 PROCGetFrameCoords(_a,_b,_u,_v)
 4140 PROCFrameCoords(_a-A,_b-A,_u-B,_v-B)
 4150ENDPROC
 4160
 4170
 4180REM -------------------
 4190REM
 4200REM 1.6 Preview Screen
 4210REM
 4220REM -------------------
 4230
 4240DEF FNDrawDx=!(HIMEM+112)
 4250
 4260DEF FNDrawDy=!(HIMEM+116)
 4270
 4280DEF FNDrawTrans=HIMEM+96
 4290
 4300DEF PROCPreview
 4310 REM ---------------------------------
 4320 REM
 4330 REM Draws any paths also to screen with
 4340 REM a white background
 4350 REM
 4360 REM ---------------------------------
 4370 VDU 26 : CLG
 4380 LOCAL _h,_max%,_x%,_y%,_I%,_font%,_n$
 4390 PROCDrawPreviewBorders(3000,12,8) 
 4400 PROCDrawPreviewHScales(3000)
 4410 PROCDrawPreviewVScales(3000)
 4420 PROCDrawPreviewTitle(14,7)
 4430ENDPROC
 4440
 4450DEF PROCDrawPreviewBorders(max%,point%,colour%)
 4460REM Draw Borders
 4470point%=point%*16
 4480SYS "ColourTrans_SetGCOL",FNDesktopColour(2)
 4490RECTANGLE FILL 0,0,FNDrawDy>>8,max%
 4500RECTANGLE FILL 0,0,max%,FNDrawDx>>8
 4510SYS "ColourTrans_SetGCOL",FNDesktopColour(7)
 4520LINE FNDrawDx>>8,FNDrawDy>>8,max%,FNDrawDy>>8
 4530LINE FNDrawDx>>8,FNDrawDy>>8,FNDrawDx>>8,max%
 4540SYS "Font_FindFont",,"Trinity.Medium"+CHR$0,point%,point%
 4550SYS "ColourTrans_SetFontColours",,FNDesktopColour(2),FNDesktopColour(colour%),14
 4560ENDPROC
 4570
 4580DEF PROCDrawPreviewTitle(point%,colour%)
 4590LOCAL _n$,_f$,i%
 4600_f$=FNReadSystemVariable("DrawBasic$Options")
 4610i%=INSTR(_f$,":") : IF i%<>0 THEN _f$=RIGHT$(_f$,LEN _f$-i%)
 4620point%=point%*16
 4630_n$="DrawBasic "+FNLeaf(_f$) 
 4640IF FNUnits=256*180 THEN  _n$+=" (Inches)"  ELSE  _n$+=" (Cms)"
 4650SYS "Font_FindFont",,"Trinity.Medium"+CHR$0,point%,point%
 4660SYS "ColourTrans_SetFontColours",,FNDesktopColour(2),FNDesktopColour(colour%),14
 4670SYS "Font_Paint",,_n$,%10000,16,12
 4680ENDPROC   
 4690
 4700DEF FNReadSystemVariable(variable$)
 4710REM
 4720REM ----------------------------
 4730REM  Reads the value of a string
 4740REM  system variable
 4750REM ----------------------------
 4760REM
 4770LOCAL _len%,_variable%
 4780DIM _variable% 256
 4790SYS "OS_ReadVarVal",variable$,_variable%,256,,3 TO ,,_len%
 4800_variable%?_len%=13
 4810=$_variable%
 4820
 4830DEF FNLeaf(x$)
 4840LOCAL _i% : _i%=INSTR(x$,".")
 4850IF _i%=0 THEN=x$ ELSE=FNLeaf(RIGHT$(x$,LEN x$-_i%))
 4860
 4870DEF PROCDrawPreviewHScales(max%)
 4880REM Draw Scales
 4890LOCAL _h,_x%,_I%,_dx%,_dy%
 4900_I%=0  : _h%=FNUnits>>8 :_dx%=FNDrawDx>>8 :  _dy%=FNDrawDy>>8
 4910REPEAT : _x%=_dx%+(FNDraw_Y(_I%)>>8)
 4920 LINE _x%,_dy%,_x%,3*_dy%/4
 4930 LINE _x%+_h%/2,_dy%,_x%+_h%/2,7*_dy%/8
 4940 SYS "Font_Paint",,STR$(_I%),%10000,_x%-8,_dy%/2
 4950 _I%+=1
 4960 UNTIL _x%>max%
 4970ENDPROC
 4980
 4990DEF PROCDrawPreviewVScales(max%)
 5000LOCAL _h,_y%,_I%,_dx%,_dy%
 5010_I%=0 : _h%=FNUnits>>8 :_dx%=FNDrawDx>>8 :  _dy%=FNDrawDy>>8
 5020REPEAT : _y%=_dy%+(FNDraw_X(_I%)>>8)
 5030 LINE  _dx%,_y%,3*_dx%/4,_y%
 5040 LINE  _dx%,_y%+_h%/2,7*_dx%/8,_y%+_h%/2
 5050 IF _I%>9 THEN
 5060  SYS "Font_Paint",,STR$(_I%),%10000,36,_y%-10
 5070 ELSE
 5080  SYS "Font_Paint",,STR$(_I%),%10000,48,_y%-10
 5090 ENDIF
 5100 _I%+=1
 5110 UNTIL _y%>max%
 5120ENDPROC

� > DrawBasic:Utils

=� =======================================================
(�
2$� copyright Joe Taylor June 1994
<�
F;� N.B. For ERROR THROWBACK to work The first line above
P7�      MUST have the correct pathname of this file.
Z;�      If you move the location of the file remember to
d�      alter this pathname.
n�
x=� =======================================================
�
�
�P� **************************************************************************
��
�� 1. SETTING UP A DRAW FILE
��
�P� **************************************************************************
�
�� =======================
�� 1.1 Memory Manipulation
�� =======================
�
�� �FreeSlot
- � --------------------------------------
 �
- � Allocates 'Free' slot for data storage
" �
,# � Called in Library setup file
6 �
@- � --------------------------------------
J � Buffer%,Free_Size%
T, ș "Wimp_SlotSize",-1,-1 � ,,Free_Size%
^ � Free_Size%<32 �
h  � � �
r   ș "Wimp_CommandWindow",-1
|N  � � 0,"DrawBasic needs a non-empty 'Free' slot to save Draw file output"
�  �
�6 � Free_Size%>1024*1024*4 � Free_Size%=1024*1024*4
� Buffer%=�
� �=Buffer%+Free_Size%
� !Buffer%=Buffer%+8
�5  Buffer%!4=Buffer%+Free_Size%-4 : !(Buffer%!4)=0
�=Buffer%
�
�� �Draw_AddWord(x%)
�, � -------------------------------------
� �
�& � Adds the word (4 bytes) x% to a
� � "formatted" word array.
 �
  � The "pointer" is updated.
 �
&, � -------------------------------------
0+ � (!�)>=(!(�+4)) � � 0,"Out of memory"
:: !(!�)=x%  : � write word to file at next free address
D3 !�+=4     : � update pointer to next free byte
N �
X
b� �Draw_AddFloat(x)
l, � -------------------------------------
v �
�% � Adds the floating-point number
� � (5 or 8 bytes) x .
� �
�  � The "pointer" is updated.
� �
�, � -------------------------------------
�- � (!�)+4>=(!(�+4)) � � 0,"Out of memory"
�5 |(!�)=x   : � write to file at next free address
�3 !�+=8     : � update pointer to next free byte
� �
�
�"� �Draw_AddString(pointer%,x$)
�2 � -------------------------------------------
 �
1 � Adds string x$ to a "formatted" word array
 � and adds a CHR$0.
  �
*/ � String is now aligned with word boundary
4 �
>1 � ------------------------------------------
H � _a%,_b%
R
 _a%=� x$
\6 � (!pointer%+_a%)>=(!(�+4)) � � 0,"Out of memory"
f2 � (_a%�4)<>0 �  x$+=�4-(_a%�4),�0) : _a%=� x$
p' _b%=pointer%!_a% : $(!pointer%)=x$
z( !pointer%+=_a%   : pointer%!_a%=_b%
� �
�
�� �Draw_AddCoords(x,y)
�2 � -------------------------------------------
� �
� � Adds coordinates (x,y)
� �
� �
�1 � ------------------------------------------
� �Draw_AddWord(�Draw_X(x))
� �Draw_AddWord(�Draw_Y(y))
� �
�
$� �MoveMemory(address%,n_words%)
* � -----------------------------------
 �
$) � Moves n_words% upwards starting at
. � address%
8 �
B* � -----------------------------------
L  � _i%,_n% : _n%=4*n_words% 
V2 � !�+_n%>=(!(�+4)) � � 0,"Not enough memory!"
` �
jC � ----------------- RESET POINTERS ---------------------------
t � 
~B     � �CurrentPath>=address% � �CurrentPath(�CurrentPath+_n%)
�K     � �CurrentSubpath>=address% � �CurrentSubpath(�CurrentSubpath+_n%)
�#     � ---- Path Pointers -----
�      _i%=!(�+4)
�      ȕ !_i%>=address%
�       !_i%+=_n% : _i%+=4 
�       �
��
�?� ----------------- MOVE MEMORY ---------------------------
��
�     _i%=!�
�5     ȕ _i%>address% :  _i%-=4 : _i%!_n%=!_i% : �
� � Update main pointer
     !�+=_n% 

�

� �ObjectType(path)
(%� path>=!(�+4) �=!(!path) �=!path
2
<� ========================
F� 1.2 Creating A Draw File
P� ========================
Z
d� �BeginDrawing
n � ---------------------
x �
� � Sets up "new" drawing
� �
� � ---------------------
� �Draw_SetUp
� �Draw_SetFileHeader
� �Draw_SetFontTable
��
�
�� �Draw_SetUp
�, � _scale%  : _scale%=�(180*256/2.54+.5)
�F �Draw_AddWord(0)                      : � 8  Address of Draw File
�O �Draw_AddWord(0)                      : � 12 Origin x         (Draw units)
�J �Draw_AddWord(0)                      : � 16 Origin y              ""
J �Draw_AddWord(12*_scale%)             : � 20 Frame_size width      ""
J �Draw_AddWord(12*_scale%)             : � 24 Frame_size height     ""
O �Draw_AddFloat(0)                     : � 28 Frame Coords a   (User units)
"J �Draw_AddFloat(0)                     : � 36 Frame Coords u        ""
,J �Draw_AddFloat(12)                    : � 44 Frame Coords width    ""
6J �Draw_AddFloat(12)                    : � 52 Frame Coords height   ""
@7 �Draw_AddWord(_scale%)                : � 60 Units
J
T> �Draw_AddWord(0)                      : � 64 Current path
^A �Draw_AddWord(0)                      : � 68 Current subpath
h
r= �Draw_AddWord(0)                      : � 72 Symbol type
|> �Draw_AddWord(0)                      : � 76 Dash pattern
�= �Draw_AddWord(12)                     : � 80 Symbol size
�
�J �Draw_AddWord(14*640)                 : � 84 Text Font size  (points)
�= �Draw_AddWord(0)                      : � 88 Text colour
�> �Draw_AddWord(1)                      : � 92 Current Font
�
�; �Draw_AddWord(1<<16)                  : � 96 Translate
�2 �Draw_AddWord(0)                      : � 100
�2 �Draw_AddWord(0)                      : � 104
�2 �Draw_AddWord(1<<16)                  : � 108
�2 �Draw_AddWord(256*90)                 : � 112
�2 �Draw_AddWord(256*90)                 : � 116
�
A �Draw_AddWord(_scale%)                : � 120 Cms/Draw units

= �Draw_AddWord(1<<16)                  : � 124 Axes width
&G �Draw_AddWord((3<<16)+3)              : � 128 Axes Cap Point/width
0C �Draw_AddWord(0)                      : � 132 Axes Extend (0%)
:
D= �Draw_AddWord(1)                      : � 136  Nx scales
N= �Draw_AddWord(0)                      : � 140  nx scales
X= �Draw_AddWord(1)                      : � 144  Ny scales
b= �Draw_AddWord(0)                      : � 148  ny scales
l= �Draw_AddWord(10)                     : � 152  Lx scales
v= �Draw_AddWord(7)                      : � 156  lx scales
�= �Draw_AddWord(10)                     : � 160  Ly scales
�= �Draw_AddWord(7)                      : � 164  ly scales
�= �Draw_AddWord(1<<16)                  : � 168  Wx scales
�= �Draw_AddWord(1<<15)                  : � 172  wx scales
�= �Draw_AddWord(1<<16)                  : � 176  Wy scales
�= �Draw_AddWord(1<<15)                  : � 180  wy scales
�
�I �Draw_AddWord(1<<16)                  : � 184  REM Current Transform
�2 �Draw_AddWord(0)                      : � 188
�2 �Draw_AddWord(0)                      : � 192
�2 �Draw_AddWord(1<<16)                  : � 196
�2 �Draw_AddWord(0)                      : � 200
�2 �Draw_AddWord(0)                      : � 204

C �Draw_AddWord(10000)                  : � 208 Max x resolution
C �Draw_AddWord(100)                    : � 212 Min x resolution
 I �Draw_AddWord(300)                    : � 216 V resolution dots/inch
*
4C �Draw_AddWord(4)                      : � 220 Bar chart scales
>> �Draw_AddWord(0)                      : � 224 Line Colour
HH �Draw_AddWord(-1)                     : � 228 Fill Colour (no fill)
R= �Draw_AddWord(0)                      : � 232 Line Width
\= �Draw_AddWord(0)                      : � 236 Line style
f? �Draw_AddWord(0)                      : � 240 Chart factor
p: �Draw_AddWord(0)                      : � 244      ""
z |(�+240)=5/6
�
�> !(�+8)=!�                        : � Address of Draw file
��
�
�� �Draw_SetFileHeader
� �
�# � --------40 bytes------------
� �
�0 �Draw_AddString(�,"Draw")         : � Title
�B �Draw_AddWord(201)                    : � major format number
�B �Draw_AddWord(0)                      : � minor format number
�8 �Draw_AddString(�,"DrawBasic   ") : � Program Title
�: �Draw_AddWord(0)                      : � BoundingBox
	: �Draw_AddWord(0)                      : � BoundingBox
	: �Draw_AddWord(256*180*12*3*800)       : � BoundingBox
	: �Draw_AddWord(256*180*12*3*800)       : � BoundingBox
	$�
	.
	8� �Draw_SetFontTable
	B8 � -------------------------------------------------
	L �
	V8 � This procedure should not be called in a program.
	`) � It is used  to set the Font table.
	j �
	t8 � -------------------------------------------------
	~" � _fonts% : _fonts%=!(�+8)+40
	�= �Draw_AddWord(0)                  : � Font object type 0
	�= �Draw_AddWord(0)                  : � Font object length
	�. �Draw_AddString(�,�1+"Trinity.Medium"+�0)
	�< !(_fonts%+4)=!�-_fonts%          : � Font object length
	��
	�
	�� ========================
	�� 1.3 Saving A Draw File
	�� ========================
	�
	�� �Quit
	�> � -------------------------------------------------------
 �

, � Saves Draw file to DrawBasic:DrawFile
 �
< � The file is then *Run so it will be loaded into !Draw
( �
2> � -------------------------------------------------------
<
 �PathEnd
F9 �("Save DrawBasic:Draw.File "+�~(!(�+8))+" "+�~(!�))
P* *SetType DrawBasic:Draw.File DrawFile
Z# *Filer_Run DrawBasic:Draw.File
d�
n
x� ---------
��
�� 1.4 Units
��
�� ---------
�
�� �Units=!(�+60)
�
�� �Centimetres
�!(�+60)=�(256*180/2.54+.5)
��FrameSize(0,0,12,12)
��FrameCoords(0,12,0,12)
��Preview
��


� �Inches
!(�+60)=256*180
"�FrameSize(0,0,6,6)
,�FrameCoords(0,6,0,6)
6�Preview
@�
J
T"� �DrawUnits(a)=�(�Units*a+.5)
^
h"� �FrameSize(a,b,width,height)
r2 � -------------------------------------------
| �
�0 � Defines the size of the  drawing "frame".
� �
�1 � ------------------------------------------
�# �FrameCoords(0,width,0,height)
�9  !(�+20)=�DrawUnits(width)  : � Bounding box - width
�:  !(�+24)=�DrawUnits(height) : � Bounding box - height
�,  !(�+12)=�DrawUnits(a)      : � Frame_x
�,  !(�+16)=�DrawUnits(b)      : � Frame_y
��
�
� � �ReduceFrameSize(fraction)
�
� _w%,_h%
�;_w%=�(!(�+20)*fraction+.5) : _h%=�(!(�+24)*fraction+.5)
"!(�+12)+=�((!(�+20)-_w%)/2+.5)
"!(�+16)+=�((!(�+24)-_h%)/2+.5)
!(�+20)=_w% : !(�+24)=_h%
&�
0
:1� �GetFrameSize(� a%,� b%,� width%,� height%)
D2 � -------------------------------------------
N �
X. � Gives the size of the  drawing "frame".
b �
l1 � ------------------------------------------
v  width%=!(�+20)
�  height%=!(�+24)
�  a%=!(�+12)
�  b%=!(�+16)
��
�
�� -----------------
��
�� 1.5 Co-ordinates
��
�� -----------------
�
�� �Frame_x=!(�+12)
�� �Frame_y=!(�+16)

� �Frame_Width=!(�+20)

� �Frame_Height=!(�+24)



 � �FRAME_x=|(�+28)

*� �FRAME_y=|(�+36)

4� �FRAME_Width=|(�+44)

>� �FRAME_Height=|(�+52)

H

R(� �X_Scale=�Frame_Width/�FRAME_Width

\*� �Y_Scale=�Frame_Height/�FRAME_Height

f

p� �Epsilon=1/�Y_Scale

z

�� �MaxNoofPoints=!(�+208)

�� �MinNoofPoints=!(�+212)

�� �DotsPerInch=!(�+216)

�

�5� �Draw_X(x)=�(�Frame_x+(x-�FRAME_x)*�X_Scale+.5)

�5� �Draw_Y(y)=�(�Frame_y+(y-�FRAME_y)*�Y_Scale+.5)

�

�� �FrameCoords(a,b,u,v)

�2 � -------------------------------------------

� �

�0 � The bounding box in the (x,y) plane which

�. � contains the drawing is a<x<b , u<y<v .

� �
 �
1 � ------------------------------------------
 � _frame%
$ _frame%=�+28
.9 � a>=b � � 0, � a+" < x < "+� b+" is a bad x range "
89 � u>=v � � 0, � u+" < y < "+� v+" is a bad y range "
B' |(_frame%)=a      : |(_frame%+8)=u
L* |(_frame%+16)=b-a : |(_frame%+24)=v-u
V �
`
j� �OutsideFrame(x,y)
t� _a,_b,_u,_v
~ �GetFrameCoords(_a,_b,_u,_v)
�3=-((x<_a)<<3)�-((x>_b)<<2)�-((y<_u)<<1)�-(y>_v)
�
�� �InFrame(x,y)
�!� �OutsideFrame(x,y) � =� �=�
�
�&� �GetFrameCoords(� a,� b,� u,� v)
�2 � -------------------------------------------
� �
�0 � The bounding box in the (x,y) plane which
�. � contains the drawing is a<x<b , u<y<v .
� �
� �
1 � ------------------------------------------

 � width,height
#     a=|(�+28) :      u=|(�+36)
# width=|(�+44) : height=|(�+52)
( b=a+width : v=u+height
2 �
<
F� �ShowFrame
P2 � -------------------------------------------
Z �
d0 � The bounding box in the (x,y) plane which
n. � contains the drawing is a<x<b , u<y<v .
x �
� �
�1 � ------------------------------------------
� � _path%,_a,_b,_u,_v
�"  �GetFrameCoords(_a,_b,_u,_v)
�*  _path%=�Rectangle(_a,_u,_b-_a,_v-_u)
�  �Fill@(_path%,1)
�  �DrawPath(_path%)
��
�
�� �Origin(A,B)
� � --------------
� �
� � Changes origin
 �
 � --------------
 � _a,_b,_u,_v
"! �GetFrameCoords(_a,_b,_u,_v)
,& �FrameCoords(_a-A,_b-A,_u-B,_v-B)
6�
@
J
T� -------------------
^�
h� 1.6 Preview Screen
r�
|� -------------------
�
�� �DrawDx=!(�+112)
�
�� �DrawDy=!(�+116)
�
�� �DrawTrans=�+96
�
�� �Preview
�( � ---------------------------------
� �
�* � Draws any paths also to screen with
� � a white background
� �
( � ---------------------------------

 � 26 : �
& � _h,_max%,_x%,_y%,_I%,_font%,_n$
&$ �DrawPreviewBorders(3000,12,8) 
0 �DrawPreviewHScales(3000)
: �DrawPreviewVScales(3000)
D �DrawPreviewTitle(14,7)
N�
X
b.� �DrawPreviewBorders(max%,point%,colour%)
l� Draw Borders
vpoint%=point%*16
�.ș "ColourTrans_SetGCOL",�DesktopColour(2)
�ȓ Ȑ 0,0,�DrawDy>>8,max%
�ȓ Ȑ 0,0,max%,�DrawDx>>8
�.ș "ColourTrans_SetGCOL",�DesktopColour(7)
�+� �DrawDx>>8,�DrawDy>>8,max%,�DrawDy>>8
�+� �DrawDx>>8,�DrawDy>>8,�DrawDx>>8,max%
�9ș "Font_FindFont",,"Trinity.Medium"+�0,point%,point%
�Qș "ColourTrans_SetFontColours",,�DesktopColour(2),�DesktopColour(colour%),14
��
�
�'� �DrawPreviewTitle(point%,colour%)
�� _n$,_f$,i%
�0_f$=�ReadSystemVariable("DrawBasic$Options")
/i%=�_f$,":") : � i%<>0 � _f$=�_f$,� _f$-i%)
point%=point%*16
 _n$="DrawBasic "+�Leaf(_f$) 
 :� �Units=256*180 �  _n$+=" (Inches)"  �  _n$+=" (Cms)"
*9ș "Font_FindFont",,"Trinity.Medium"+�0,point%,point%
4Qș "ColourTrans_SetFontColours",,�DesktopColour(2),�DesktopColour(colour%),14
>%ș "Font_Paint",,_n$,%10000,16,12
H�   
R
\$� �ReadSystemVariable(variable$)
f�
p"� ----------------------------
z"�  Reads the value of a string
��  system variable
�"� ----------------------------
��
�� _len%,_variable%
�� _variable% 256
�<ș "OS_ReadVarVal",variable$,_variable%,256,,3 � ,,_len%
�_variable%?_len%=13
�=$_variable%
�
�� �Leaf(x$)
�� _i% : _i%=�x$,".")
�'� _i%=0 �=x$ �=�Leaf(�x$,� x$-_i%))
�
� �DrawPreviewHScales(max%)
� Draw Scales
� _h,_x%,_I%,_dx%,_dy%
$>_I%=0  : _h%=�Units>>8 :_dx%=�DrawDx>>8 :  _dy%=�DrawDy>>8
."� : _x%=_dx%+(�Draw_Y(_I%)>>8)
8 � _x%,_dy%,_x%,3*_dy%/4
B( � _x%+_h%/2,_dy%,_x%+_h%/2,7*_dy%/8
L0 ș "Font_Paint",,�(_I%),%10000,_x%-8,_dy%/2
V _I%+=1
` � _x%>max%
j�
t
~� �DrawPreviewVScales(max%)
�� _h,_y%,_I%,_dx%,_dy%
�=_I%=0 : _h%=�Units>>8 :_dx%=�DrawDx>>8 :  _dy%=�DrawDy>>8
�"� : _y%=_dy%+(�Draw_X(_I%)>>8)
� �  _dx%,_y%,3*_dx%/4,_y%
�) �  _dx%,_y%+_h%/2,7*_dx%/8,_y%+_h%/2
� � _I%>9 �
�.  ș "Font_Paint",,�(_I%),%10000,36,_y%-10
� �
�.  ș "Font_Paint",,�(_I%),%10000,48,_y%-10
� �
� _I%+=1
� � _y%>max%
�
�
00000000  0d 00 0a 17 f4 20 3e 20  44 72 61 77 42 61 73 69  |..... > DrawBasi|
00000010  63 3a 55 74 69 6c 73 0d  00 14 04 0d 00 1e 3d f4  |c:Utils.......=.|
00000020  20 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  | ===============|
00000030  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
00000050  3d 3d 3d 3d 3d 3d 3d 3d  0d 00 28 05 f4 0d 00 32  |========..(....2|
00000060  24 f4 20 63 6f 70 79 72  69 67 68 74 20 4a 6f 65  |$. copyright Joe|
00000070  20 54 61 79 6c 6f 72 20  4a 75 6e 65 20 31 39 39  | Taylor June 199|
00000080  34 0d 00 3c 05 f4 0d 00  46 3b f4 20 4e 2e 42 2e  |4..<....F;. N.B.|
00000090  20 46 6f 72 20 45 52 52  4f 52 20 54 48 52 4f 57  | For ERROR THROW|
000000a0  42 41 43 4b 20 74 6f 20  77 6f 72 6b 20 54 68 65  |BACK to work The|
000000b0  20 66 69 72 73 74 20 6c  69 6e 65 20 61 62 6f 76  | first line abov|
000000c0  65 0d 00 50 37 f4 20 20  20 20 20 20 4d 55 53 54  |e..P7.      MUST|
000000d0  20 68 61 76 65 20 74 68  65 20 63 6f 72 72 65 63  | have the correc|
000000e0  74 20 70 61 74 68 6e 61  6d 65 20 6f 66 20 74 68  |t pathname of th|
000000f0  69 73 20 66 69 6c 65 2e  0d 00 5a 3b f4 20 20 20  |is file...Z;.   |
00000100  20 20 20 49 66 20 79 6f  75 20 6d 6f 76 65 20 74  |   If you move t|
00000110  68 65 20 6c 6f 63 61 74  69 6f 6e 20 6f 66 20 74  |he location of t|
00000120  68 65 20 66 69 6c 65 20  72 65 6d 65 6d 62 65 72  |he file remember|
00000130  20 74 6f 0d 00 64 1f f4  20 20 20 20 20 20 61 6c  | to..d..      al|
00000140  74 65 72 20 74 68 69 73  20 70 61 74 68 6e 61 6d  |ter this pathnam|
00000150  65 2e 0d 00 6e 05 f4 0d  00 78 3d f4 20 3d 3d 3d  |e...n....x=. ===|
00000160  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
00000190  3d 3d 3d 3d 0d 00 82 04  0d 00 8c 04 0d 00 96 50  |====...........P|
000001a0  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
000001b0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000001e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 00 a0 05  |************....|
000001f0  f4 0d 00 aa 1f f4 20 31  2e 20 53 45 54 54 49 4e  |...... 1. SETTIN|
00000200  47 20 55 50 20 41 20 44  52 41 57 20 46 49 4c 45  |G UP A DRAW FILE|
00000210  0d 00 b4 05 f4 0d 00 be  50 f4 20 2a 2a 2a 2a 2a  |........P. *****|
00000220  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000260  2a 2a 2a 2a 2a 0d 00 c8  04 0d 00 d2 1d f4 20 3d  |*****......... =|
00000270  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00000280  3d 3d 3d 3d 3d 3d 0d 00  dc 1d f4 20 31 2e 31 20  |======..... 1.1 |
00000290  4d 65 6d 6f 72 79 20 4d  61 6e 69 70 75 6c 61 74  |Memory Manipulat|
000002a0  69 6f 6e 0d 00 e6 1d f4  20 3d 3d 3d 3d 3d 3d 3d  |ion..... =======|
000002b0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
000002c0  0d 00 f0 04 0d 00 fa 0f  dd 20 a4 46 72 65 65 53  |......... .FreeS|
000002d0  6c 6f 74 0d 01 04 2d 20  f4 20 2d 2d 2d 2d 2d 2d  |lot...- . ------|
000002e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000300  0d 01 0e 06 20 f4 0d 01  18 2d 20 f4 20 41 6c 6c  |.... ....- . All|
00000310  6f 63 61 74 65 73 20 27  46 72 65 65 27 20 73 6c  |ocates 'Free' sl|
00000320  6f 74 20 66 6f 72 20 64  61 74 61 20 73 74 6f 72  |ot for data stor|
00000330  61 67 65 0d 01 22 06 20  f4 0d 01 2c 23 20 f4 20  |age..". ...,# . |
00000340  43 61 6c 6c 65 64 20 69  6e 20 4c 69 62 72 61 72  |Called in Librar|
00000350  79 20 73 65 74 75 70 20  66 69 6c 65 0d 01 36 06  |y setup file..6.|
00000360  20 f4 0d 01 40 2d 20 f4  20 2d 2d 2d 2d 2d 2d 2d  | ...@- . -------|
00000370  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000380  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00000390  01 4a 19 20 ea 20 42 75  66 66 65 72 25 2c 46 72  |.J. . Buffer%,Fr|
000003a0  65 65 5f 53 69 7a 65 25  0d 01 54 2c 20 c8 99 20  |ee_Size%..T, .. |
000003b0  22 57 69 6d 70 5f 53 6c  6f 74 53 69 7a 65 22 2c  |"Wimp_SlotSize",|
000003c0  2d 31 2c 2d 31 20 b8 20  2c 2c 46 72 65 65 5f 53  |-1,-1 . ,,Free_S|
000003d0  69 7a 65 25 0d 01 5e 16  20 e7 20 46 72 65 65 5f  |ize%..^. . Free_|
000003e0  53 69 7a 65 25 3c 33 32  20 8c 0d 01 68 0b 20 20  |Size%<32 ...h.  |
000003f0  ee 20 85 20 87 0d 01 72  20 20 20 c8 99 20 22 57  |. . ...r   .. "W|
00000400  69 6d 70 5f 43 6f 6d 6d  61 6e 64 57 69 6e 64 6f  |imp_CommandWindo|
00000410  77 22 2c 2d 31 0d 01 7c  4e 20 20 85 20 a2 20 30  |w",-1..|N  . . 0|
00000420  2c 22 44 72 61 77 42 61  73 69 63 20 6e 65 65 64  |,"DrawBasic need|
00000430  73 20 61 20 6e 6f 6e 2d  65 6d 70 74 79 20 27 46  |s a non-empty 'F|
00000440  72 65 65 27 20 73 6c 6f  74 20 74 6f 20 73 61 76  |ree' slot to sav|
00000450  65 20 44 72 61 77 20 66  69 6c 65 20 6f 75 74 70  |e Draw file outp|
00000460  75 74 22 0d 01 86 07 20  20 cd 0d 01 90 36 20 e7  |ut"....  ....6 .|
00000470  20 46 72 65 65 5f 53 69  7a 65 25 3e 31 30 32 34  | Free_Size%>1024|
00000480  2a 31 30 32 34 2a 34 20  8c 20 46 72 65 65 5f 53  |*1024*4 . Free_S|
00000490  69 7a 65 25 3d 31 30 32  34 2a 31 30 32 34 2a 34  |ize%=1024*1024*4|
000004a0  0d 01 9a 0e 20 42 75 66  66 65 72 25 3d 93 0d 01  |.... Buffer%=...|
000004b0  a4 19 20 e0 3d 42 75 66  66 65 72 25 2b 46 72 65  |.. .=Buffer%+Fre|
000004c0  65 5f 53 69 7a 65 25 0d  01 ae 17 20 21 42 75 66  |e_Size%.... !Buf|
000004d0  66 65 72 25 3d 42 75 66  66 65 72 25 2b 38 0d 01  |fer%=Buffer%+8..|
000004e0  b8 35 20 20 42 75 66 66  65 72 25 21 34 3d 42 75  |.5  Buffer%!4=Bu|
000004f0  66 66 65 72 25 2b 46 72  65 65 5f 53 69 7a 65 25  |ffer%+Free_Size%|
00000500  2d 34 20 3a 20 21 28 42  75 66 66 65 72 25 21 34  |-4 : !(Buffer%!4|
00000510  29 3d 30 0d 01 c2 0c 3d  42 75 66 66 65 72 25 0d  |)=0....=Buffer%.|
00000520  01 cc 04 0d 01 d6 17 dd  20 f2 44 72 61 77 5f 41  |........ .Draw_A|
00000530  64 64 57 6f 72 64 28 78  25 29 0d 01 e0 2c 20 f4  |ddWord(x%)..., .|
00000540  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00000550  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000560  2d 2d 2d 2d 2d 2d 0d 01  ea 06 20 f4 0d 01 f4 26  |------.... ....&|
00000570  20 f4 20 41 64 64 73 20  74 68 65 20 77 6f 72 64  | . Adds the word|
00000580  20 28 34 20 62 79 74 65  73 29 20 78 25 20 74 6f  | (4 bytes) x% to|
00000590  20 61 0d 01 fe 1e 20 f4  20 22 66 6f 72 6d 61 74  | a.... . "format|
000005a0  74 65 64 22 20 77 6f 72  64 20 61 72 72 61 79 2e  |ted" word array.|
000005b0  0d 02 08 06 20 f4 0d 02  12 20 20 f4 20 54 68 65  |.... ....  . The|
000005c0  20 22 70 6f 69 6e 74 65  72 22 20 69 73 20 75 70  | "pointer" is up|
000005d0  64 61 74 65 64 2e 0d 02  1c 06 20 f4 0d 02 26 2c  |dated..... ...&,|
000005e0  20 f4 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | . -------------|
000005f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000600  2d 2d 2d 2d 2d 2d 2d 2d  0d 02 30 2b 20 e7 20 28  |--------..0+ . (|
00000610  21 93 29 3e 3d 28 21 28  93 2b 34 29 29 20 8c 20  |!.)>=(!(.+4)) . |
00000620  85 20 30 2c 22 4f 75 74  20 6f 66 20 6d 65 6d 6f  |. 0,"Out of memo|
00000630  72 79 22 0d 02 3a 3a 20  21 28 21 93 29 3d 78 25  |ry"..:: !(!.)=x%|
00000640  20 20 3a 20 f4 20 77 72  69 74 65 20 77 6f 72 64  |  : . write word|
00000650  20 74 6f 20 66 69 6c 65  20 61 74 20 6e 65 78 74  | to file at next|
00000660  20 66 72 65 65 20 61 64  64 72 65 73 73 0d 02 44  | free address..D|
00000670  33 20 21 93 2b 3d 34 20  20 20 20 20 3a 20 f4 20  |3 !.+=4     : . |
00000680  75 70 64 61 74 65 20 70  6f 69 6e 74 65 72 20 74  |update pointer t|
00000690  6f 20 6e 65 78 74 20 66  72 65 65 20 62 79 74 65  |o next free byte|
000006a0  0d 02 4e 06 20 e1 0d 02  58 04 0d 02 62 17 dd 20  |..N. ...X...b.. |
000006b0  f2 44 72 61 77 5f 41 64  64 46 6c 6f 61 74 28 78  |.Draw_AddFloat(x|
000006c0  29 0d 02 6c 2c 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |)..l, . --------|
000006d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000006e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 02 76  |-------------..v|
000006f0  06 20 f4 0d 02 80 25 20  f4 20 41 64 64 73 20 74  |. ....% . Adds t|
00000700  68 65 20 66 6c 6f 61 74  69 6e 67 2d 70 6f 69 6e  |he floating-poin|
00000710  74 20 6e 75 6d 62 65 72  0d 02 8a 19 20 f4 20 28  |t number.... . (|
00000720  35 20 6f 72 20 38 20 62  79 74 65 73 29 20 78 20  |5 or 8 bytes) x |
00000730  2e 0d 02 94 06 20 f4 0d  02 9e 20 20 f4 20 54 68  |..... ....  . Th|
00000740  65 20 22 70 6f 69 6e 74  65 72 22 20 69 73 20 75  |e "pointer" is u|
00000750  70 64 61 74 65 64 2e 0d  02 a8 06 20 f4 0d 02 b2  |pdated..... ....|
00000760  2c 20 f4 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |, . ------------|
00000770  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000780  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 02 bc 2d 20 e7 20  |---------...- . |
00000790  28 21 93 29 2b 34 3e 3d  28 21 28 93 2b 34 29 29  |(!.)+4>=(!(.+4))|
000007a0  20 8c 20 85 20 30 2c 22  4f 75 74 20 6f 66 20 6d  | . . 0,"Out of m|
000007b0  65 6d 6f 72 79 22 0d 02  c6 35 20 7c 28 21 93 29  |emory"...5 |(!.)|
000007c0  3d 78 20 20 20 3a 20 f4  20 77 72 69 74 65 20 74  |=x   : . write t|
000007d0  6f 20 66 69 6c 65 20 61  74 20 6e 65 78 74 20 66  |o file at next f|
000007e0  72 65 65 20 61 64 64 72  65 73 73 0d 02 d0 33 20  |ree address...3 |
000007f0  21 93 2b 3d 38 20 20 20  20 20 3a 20 f4 20 75 70  |!.+=8     : . up|
00000800  64 61 74 65 20 70 6f 69  6e 74 65 72 20 74 6f 20  |date pointer to |
00000810  6e 65 78 74 20 66 72 65  65 20 62 79 74 65 0d 02  |next free byte..|
00000820  da 06 20 e1 0d 02 e4 04  0d 02 ee 22 dd 20 f2 44  |.. ........". .D|
00000830  72 61 77 5f 41 64 64 53  74 72 69 6e 67 28 70 6f  |raw_AddString(po|
00000840  69 6e 74 65 72 25 2c 78  24 29 0d 02 f8 32 20 f4  |inter%,x$)...2 .|
00000850  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00000860  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000870  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 03 02 06  |------------....|
00000880  20 f4 0d 03 0c 31 20 f4  20 41 64 64 73 20 73 74  | ....1 . Adds st|
00000890  72 69 6e 67 20 78 24 20  74 6f 20 61 20 22 66 6f  |ring x$ to a "fo|
000008a0  72 6d 61 74 74 65 64 22  20 77 6f 72 64 20 61 72  |rmatted" word ar|
000008b0  72 61 79 0d 03 16 18 20  f4 20 61 6e 64 20 61 64  |ray.... . and ad|
000008c0  64 73 20 61 20 43 48 52  24 30 2e 0d 03 20 06 20  |ds a CHR$0... . |
000008d0  f4 0d 03 2a 2f 20 f4 20  53 74 72 69 6e 67 20 69  |...*/ . String i|
000008e0  73 20 6e 6f 77 20 61 6c  69 67 6e 65 64 20 77 69  |s now aligned wi|
000008f0  74 68 20 77 6f 72 64 20  62 6f 75 6e 64 61 72 79  |th word boundary|
00000900  0d 03 34 06 20 f4 0d 03  3e 31 20 f4 20 2d 2d 2d  |..4. ...>1 . ---|
00000910  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000930  2d 2d 2d 2d 2d 2d 2d 0d  03 48 0e 20 ea 20 5f 61  |-------..H. . _a|
00000940  25 2c 5f 62 25 0d 03 52  0d 20 5f 61 25 3d a9 20  |%,_b%..R. _a%=. |
00000950  78 24 0d 03 5c 36 20 e7  20 28 21 70 6f 69 6e 74  |x$..\6 . (!point|
00000960  65 72 25 2b 5f 61 25 29  3e 3d 28 21 28 93 2b 34  |er%+_a%)>=(!(.+4|
00000970  29 29 20 8c 20 85 20 30  2c 22 4f 75 74 20 6f 66  |)) . . 0,"Out of|
00000980  20 6d 65 6d 6f 72 79 22  0d 03 66 32 20 e7 20 28  | memory"..f2 . (|
00000990  5f 61 25 83 34 29 3c 3e  30 20 8c 20 20 78 24 2b  |_a%.4)<>0 .  x$+|
000009a0  3d c4 34 2d 28 5f 61 25  83 34 29 2c bd 30 29 20  |=.4-(_a%.4),.0) |
000009b0  3a 20 5f 61 25 3d a9 20  78 24 0d 03 70 27 20 5f  |: _a%=. x$..p' _|
000009c0  62 25 3d 70 6f 69 6e 74  65 72 25 21 5f 61 25 20  |b%=pointer%!_a% |
000009d0  3a 20 24 28 21 70 6f 69  6e 74 65 72 25 29 3d 78  |: $(!pointer%)=x|
000009e0  24 0d 03 7a 28 20 21 70  6f 69 6e 74 65 72 25 2b  |$..z( !pointer%+|
000009f0  3d 5f 61 25 20 20 20 3a  20 70 6f 69 6e 74 65 72  |=_a%   : pointer|
00000a00  25 21 5f 61 25 3d 5f 62  25 0d 03 84 06 20 e1 0d  |%!_a%=_b%.... ..|
00000a10  03 8e 04 0d 03 98 1a dd  20 f2 44 72 61 77 5f 41  |........ .Draw_A|
00000a20  64 64 43 6f 6f 72 64 73  28 78 2c 79 29 0d 03 a2  |ddCoords(x,y)...|
00000a30  32 20 f4 20 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |2 . ------------|
00000a40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000a50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00000a60  03 ac 06 20 f4 0d 03 b6  1d 20 f4 20 41 64 64 73  |... ..... . Adds|
00000a70  20 63 6f 6f 72 64 69 6e  61 74 65 73 20 28 78 2c  | coordinates (x,|
00000a80  79 29 0d 03 c0 06 20 f4  0d 03 ca 06 20 f4 0d 03  |y).... ..... ...|
00000a90  d4 31 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.1 . -----------|
00000aa0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000ab0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
00000ac0  03 de 1e 20 f2 44 72 61  77 5f 41 64 64 57 6f 72  |... .Draw_AddWor|
00000ad0  64 28 a4 44 72 61 77 5f  58 28 78 29 29 0d 03 e8  |d(.Draw_X(x))...|
00000ae0  1e 20 f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |. .Draw_AddWord(|
00000af0  a4 44 72 61 77 5f 59 28  79 29 29 0d 03 f2 06 20  |.Draw_Y(y)).... |
00000b00  e1 0d 03 fc 04 0d 04 06  24 dd 20 f2 4d 6f 76 65  |........$. .Move|
00000b10  4d 65 6d 6f 72 79 28 61  64 64 72 65 73 73 25 2c  |Memory(address%,|
00000b20  6e 5f 77 6f 72 64 73 25  29 0d 04 10 2a 20 f4 20  |n_words%)...* . |
00000b30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000b50  2d 2d 2d 0d 04 1a 06 20  f4 0d 04 24 29 20 f4 20  |---.... ...$) . |
00000b60  4d 6f 76 65 73 20 6e 5f  77 6f 72 64 73 25 20 75  |Moves n_words% u|
00000b70  70 77 61 72 64 73 20 73  74 61 72 74 69 6e 67 20  |pwards starting |
00000b80  61 74 0d 04 2e 0f 20 f4  20 61 64 64 72 65 73 73  |at.... . address|
00000b90  25 0d 04 38 06 20 f4 0d  04 42 2a 20 f4 20 2d 2d  |%..8. ...B* . --|
00000ba0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000bc0  2d 0d 04 4c 20 20 ea 20  5f 69 25 2c 5f 6e 25 20  |-..L  . _i%,_n% |
00000bd0  3a 20 5f 6e 25 3d 34 2a  6e 5f 77 6f 72 64 73 25  |: _n%=4*n_words%|
00000be0  20 0d 04 56 32 20 e7 20  21 93 2b 5f 6e 25 3e 3d  | ..V2 . !.+_n%>=|
00000bf0  28 21 28 93 2b 34 29 29  20 8c 20 85 20 30 2c 22  |(!(.+4)) . . 0,"|
00000c00  4e 6f 74 20 65 6e 6f 75  67 68 20 6d 65 6d 6f 72  |Not enough memor|
00000c10  79 21 22 0d 04 60 06 20  f4 0d 04 6a 43 20 f4 20  |y!"..`. ...jC . |
00000c20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000c30  2d 20 52 45 53 45 54 20  50 4f 49 4e 54 45 52 53  |- RESET POINTERS|
00000c40  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00000c50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 04 74 07  |------------..t.|
00000c60  20 f4 20 0d 04 7e 42 20  20 20 20 20 e7 20 a4 43  | . ..~B     . .C|
00000c70  75 72 72 65 6e 74 50 61  74 68 3e 3d 61 64 64 72  |urrentPath>=addr|
00000c80  65 73 73 25 20 8c 20 f2  43 75 72 72 65 6e 74 50  |ess% . .CurrentP|
00000c90  61 74 68 28 a4 43 75 72  72 65 6e 74 50 61 74 68  |ath(.CurrentPath|
00000ca0  2b 5f 6e 25 29 0d 04 88  4b 20 20 20 20 20 e7 20  |+_n%)...K     . |
00000cb0  a4 43 75 72 72 65 6e 74  53 75 62 70 61 74 68 3e  |.CurrentSubpath>|
00000cc0  3d 61 64 64 72 65 73 73  25 20 8c 20 f2 43 75 72  |=address% . .Cur|
00000cd0  72 65 6e 74 53 75 62 70  61 74 68 28 a4 43 75 72  |rentSubpath(.Cur|
00000ce0  72 65 6e 74 53 75 62 70  61 74 68 2b 5f 6e 25 29  |rentSubpath+_n%)|
00000cf0  0d 04 92 23 20 20 20 20  20 f4 20 2d 2d 2d 2d 20  |...#     . ---- |
00000d00  50 61 74 68 20 50 6f 69  6e 74 65 72 73 20 2d 2d  |Path Pointers --|
00000d10  2d 2d 2d 0d 04 9c 14 20  20 20 20 20 20 5f 69 25  |---....      _i%|
00000d20  3d 21 28 93 2b 34 29 0d  04 a6 1b 20 20 20 20 20  |=!(.+4)....     |
00000d30  20 c8 95 20 21 5f 69 25  3e 3d 61 64 64 72 65 73  | .. !_i%>=addres|
00000d40  73 25 0d 04 b0 1e 20 20  20 20 20 20 20 21 5f 69  |s%....       !_i|
00000d50  25 2b 3d 5f 6e 25 20 3a  20 5f 69 25 2b 3d 34 20  |%+=_n% : _i%+=4 |
00000d60  0d 04 ba 0c 20 20 20 20  20 20 20 ce 0d 04 c4 05  |....       .....|
00000d70  f4 0d 04 ce 3f f4 20 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....?. ---------|
00000d80  2d 2d 2d 2d 2d 2d 2d 2d  20 4d 4f 56 45 20 4d 45  |-------- MOVE ME|
00000d90  4d 4f 52 59 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |MORY -----------|
00000da0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000db0  0d 04 d8 05 f4 0d 04 e2  0f 20 20 20 20 20 5f 69  |.........     _i|
00000dc0  25 3d 21 93 0d 04 ec 35  20 20 20 20 20 c8 95 20  |%=!....5     .. |
00000dd0  5f 69 25 3e 61 64 64 72  65 73 73 25 20 3a 20 20  |_i%>address% :  |
00000de0  5f 69 25 2d 3d 34 20 3a  20 5f 69 25 21 5f 6e 25  |_i%-=4 : _i%!_n%|
00000df0  3d 21 5f 69 25 20 3a 20  ce 0d 04 f6 1a 20 f4 20  |=!_i% : ..... . |
00000e00  55 70 64 61 74 65 20 6d  61 69 6e 20 70 6f 69 6e  |Update main poin|
00000e10  74 65 72 0d 05 00 11 20  20 20 20 20 21 93 2b 3d  |ter....     !.+=|
00000e20  5f 6e 25 20 0d 05 0a 05  e1 0d 05 14 04 0d 05 1e  |_n% ............|
00000e30  17 dd 20 a4 4f 62 6a 65  63 74 54 79 70 65 28 70  |.. .ObjectType(p|
00000e40  61 74 68 29 0d 05 28 25  e7 20 70 61 74 68 3e 3d  |ath)..(%. path>=|
00000e50  21 28 93 2b 34 29 20 8c  3d 21 28 21 70 61 74 68  |!(.+4) .=!(!path|
00000e60  29 20 8b 3d 21 70 61 74  68 0d 05 32 04 0d 05 3c  |) .=!path..2...<|
00000e70  1e f4 20 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |.. =============|
00000e80  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 0d 05 46 1e f4  |===========..F..|
00000e90  20 31 2e 32 20 43 72 65  61 74 69 6e 67 20 41 20  | 1.2 Creating A |
00000ea0  44 72 61 77 20 46 69 6c  65 0d 05 50 1e f4 20 3d  |Draw File..P.. =|
00000eb0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00000ec0  3d 3d 3d 3d 3d 3d 3d 0d  05 5a 04 0d 05 64 13 dd  |=======..Z...d..|
00000ed0  20 f2 42 65 67 69 6e 44  72 61 77 69 6e 67 0d 05  | .BeginDrawing..|
00000ee0  6e 1c 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |n. . -----------|
00000ef0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 05 78 06 20 f4  |----------..x. .|
00000f00  0d 05 82 1c 20 f4 20 53  65 74 73 20 75 70 20 22  |.... . Sets up "|
00000f10  6e 65 77 22 20 64 72 61  77 69 6e 67 0d 05 8c 06  |new" drawing....|
00000f20  20 f4 0d 05 96 1c 20 f4  20 2d 2d 2d 2d 2d 2d 2d  | ..... . -------|
00000f30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 05  |--------------..|
00000f40  a0 10 20 f2 44 72 61 77  5f 53 65 74 55 70 0d 05  |.. .Draw_SetUp..|
00000f50  aa 18 20 f2 44 72 61 77  5f 53 65 74 46 69 6c 65  |.. .Draw_SetFile|
00000f60  48 65 61 64 65 72 0d 05  b4 17 20 f2 44 72 61 77  |Header.... .Draw|
00000f70  5f 53 65 74 46 6f 6e 74  54 61 62 6c 65 0d 05 be  |_SetFontTable...|
00000f80  05 e1 0d 05 c8 04 0d 05  d2 11 dd 20 f2 44 72 61  |........... .Dra|
00000f90  77 5f 53 65 74 55 70 0d  05 dc 2c 20 ea 20 5f 73  |w_SetUp..., . _s|
00000fa0  63 61 6c 65 25 20 20 3a  20 5f 73 63 61 6c 65 25  |cale%  : _scale%|
00000fb0  3d a8 28 31 38 30 2a 32  35 36 2f 32 2e 35 34 2b  |=.(180*256/2.54+|
00000fc0  2e 35 29 0d 05 e6 46 20  f2 44 72 61 77 5f 41 64  |.5)...F .Draw_Ad|
00000fd0  64 57 6f 72 64 28 30 29  20 20 20 20 20 20 20 20  |dWord(0)        |
00000fe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
00000ff0  f4 20 38 20 20 41 64 64  72 65 73 73 20 6f 66 20  |. 8  Address of |
00001000  44 72 61 77 20 46 69 6c  65 0d 05 f0 4f 20 f2 44  |Draw File...O .D|
00001010  72 61 77 5f 41 64 64 57  6f 72 64 28 30 29 20 20  |raw_AddWord(0)  |
00001020  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001030  20 20 20 20 3a 20 f4 20  31 32 20 4f 72 69 67 69  |    : . 12 Origi|
00001040  6e 20 78 20 20 20 20 20  20 20 20 20 28 44 72 61  |n x         (Dra|
00001050  77 20 75 6e 69 74 73 29  0d 05 fa 4a 20 f2 44 72  |w units)...J .Dr|
00001060  61 77 5f 41 64 64 57 6f  72 64 28 30 29 20 20 20  |aw_AddWord(0)   |
00001070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001080  20 20 20 3a 20 f4 20 31  36 20 4f 72 69 67 69 6e  |   : . 16 Origin|
00001090  20 79 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | y              |
000010a0  22 22 0d 06 04 4a 20 f2  44 72 61 77 5f 41 64 64  |""...J .Draw_Add|
000010b0  57 6f 72 64 28 31 32 2a  5f 73 63 61 6c 65 25 29  |Word(12*_scale%)|
000010c0  20 20 20 20 20 20 20 20  20 20 20 20 20 3a 20 f4  |             : .|
000010d0  20 32 30 20 46 72 61 6d  65 5f 73 69 7a 65 20 77  | 20 Frame_size w|
000010e0  69 64 74 68 20 20 20 20  20 20 22 22 0d 06 0e 4a  |idth      ""...J|
000010f0  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 31  | .Draw_AddWord(1|
00001100  32 2a 5f 73 63 61 6c 65  25 29 20 20 20 20 20 20  |2*_scale%)      |
00001110  20 20 20 20 20 20 20 3a  20 f4 20 32 34 20 46 72  |       : . 24 Fr|
00001120  61 6d 65 5f 73 69 7a 65  20 68 65 69 67 68 74 20  |ame_size height |
00001130  20 20 20 20 22 22 0d 06  18 4f 20 f2 44 72 61 77  |    ""...O .Draw|
00001140  5f 41 64 64 46 6c 6f 61  74 28 30 29 20 20 20 20  |_AddFloat(0)    |
00001150  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001160  20 3a 20 f4 20 32 38 20  46 72 61 6d 65 20 43 6f  | : . 28 Frame Co|
00001170  6f 72 64 73 20 61 20 20  20 28 55 73 65 72 20 75  |ords a   (User u|
00001180  6e 69 74 73 29 0d 06 22  4a 20 f2 44 72 61 77 5f  |nits).."J .Draw_|
00001190  41 64 64 46 6c 6f 61 74  28 30 29 20 20 20 20 20  |AddFloat(0)     |
000011a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011b0  3a 20 f4 20 33 36 20 46  72 61 6d 65 20 43 6f 6f  |: . 36 Frame Coo|
000011c0  72 64 73 20 75 20 20 20  20 20 20 20 20 22 22 0d  |rds u        "".|
000011d0  06 2c 4a 20 f2 44 72 61  77 5f 41 64 64 46 6c 6f  |.,J .Draw_AddFlo|
000011e0  61 74 28 31 32 29 20 20  20 20 20 20 20 20 20 20  |at(12)          |
000011f0  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 34 34  |          : . 44|
00001200  20 46 72 61 6d 65 20 43  6f 6f 72 64 73 20 77 69  | Frame Coords wi|
00001210  64 74 68 20 20 20 20 22  22 0d 06 36 4a 20 f2 44  |dth    ""..6J .D|
00001220  72 61 77 5f 41 64 64 46  6c 6f 61 74 28 31 32 29  |raw_AddFloat(12)|
00001230  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001240  20 20 20 20 3a 20 f4 20  35 32 20 46 72 61 6d 65  |    : . 52 Frame|
00001250  20 43 6f 6f 72 64 73 20  68 65 69 67 68 74 20 20  | Coords height  |
00001260  20 22 22 0d 06 40 37 20  f2 44 72 61 77 5f 41 64  | ""..@7 .Draw_Ad|
00001270  64 57 6f 72 64 28 5f 73  63 61 6c 65 25 29 20 20  |dWord(_scale%)  |
00001280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
00001290  f4 20 36 30 20 55 6e 69  74 73 0d 06 4a 04 0d 06  |. 60 Units..J...|
000012a0  54 3e 20 f2 44 72 61 77  5f 41 64 64 57 6f 72 64  |T> .Draw_AddWord|
000012b0  28 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |(0)             |
000012c0  20 20 20 20 20 20 20 20  20 3a 20 f4 20 36 34 20  |         : . 64 |
000012d0  43 75 72 72 65 6e 74 20  70 61 74 68 0d 06 5e 41  |Current path..^A|
000012e0  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 30  | .Draw_AddWord(0|
000012f0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00001300  20 20 20 20 20 20 20 3a  20 f4 20 36 38 20 43 75  |       : . 68 Cu|
00001310  72 72 65 6e 74 20 73 75  62 70 61 74 68 0d 06 68  |rrent subpath..h|
00001320  04 0d 06 72 3d 20 f2 44  72 61 77 5f 41 64 64 57  |...r= .Draw_AddW|
00001330  6f 72 64 28 30 29 20 20  20 20 20 20 20 20 20 20  |ord(0)          |
00001340  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 f4 20  |            : . |
00001350  37 32 20 53 79 6d 62 6f  6c 20 74 79 70 65 0d 06  |72 Symbol type..|
00001360  7c 3e 20 f2 44 72 61 77  5f 41 64 64 57 6f 72 64  ||> .Draw_AddWord|
00001370  28 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |(0)             |
00001380  20 20 20 20 20 20 20 20  20 3a 20 f4 20 37 36 20  |         : . 76 |
00001390  44 61 73 68 20 70 61 74  74 65 72 6e 0d 06 86 3d  |Dash pattern...=|
000013a0  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 31  | .Draw_AddWord(1|
000013b0  32 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |2)              |
000013c0  20 20 20 20 20 20 20 3a  20 f4 20 38 30 20 53 79  |       : . 80 Sy|
000013d0  6d 62 6f 6c 20 73 69 7a  65 0d 06 90 04 0d 06 9a  |mbol size.......|
000013e0  4a 20 f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |J .Draw_AddWord(|
000013f0  31 34 2a 36 34 30 29 20  20 20 20 20 20 20 20 20  |14*640)         |
00001400  20 20 20 20 20 20 20 20  3a 20 f4 20 38 34 20 54  |        : . 84 T|
00001410  65 78 74 20 46 6f 6e 74  20 73 69 7a 65 20 20 28  |ext Font size  (|
00001420  70 6f 69 6e 74 73 29 0d  06 a4 3d 20 f2 44 72 61  |points)...= .Dra|
00001430  77 5f 41 64 64 57 6f 72  64 28 30 29 20 20 20 20  |w_AddWord(0)    |
00001440  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001450  20 20 3a 20 f4 20 38 38  20 54 65 78 74 20 63 6f  |  : . 88 Text co|
00001460  6c 6f 75 72 0d 06 ae 3e  20 f2 44 72 61 77 5f 41  |lour...> .Draw_A|
00001470  64 64 57 6f 72 64 28 31  29 20 20 20 20 20 20 20  |ddWord(1)       |
00001480  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3a  |               :|
00001490  20 f4 20 39 32 20 43 75  72 72 65 6e 74 20 46 6f  | . 92 Current Fo|
000014a0  6e 74 0d 06 b8 04 0d 06  c2 3b 20 f2 44 72 61 77  |nt.......; .Draw|
000014b0  5f 41 64 64 57 6f 72 64  28 31 3c 3c 31 36 29 20  |_AddWord(1<<16) |
000014c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000014d0  20 3a 20 f4 20 39 36 20  54 72 61 6e 73 6c 61 74  | : . 96 Translat|
000014e0  65 0d 06 cc 32 20 f2 44  72 61 77 5f 41 64 64 57  |e...2 .Draw_AddW|
000014f0  6f 72 64 28 30 29 20 20  20 20 20 20 20 20 20 20  |ord(0)          |
00001500  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 f4 20  |            : . |
00001510  31 30 30 0d 06 d6 32 20  f2 44 72 61 77 5f 41 64  |100...2 .Draw_Ad|
00001520  64 57 6f 72 64 28 30 29  20 20 20 20 20 20 20 20  |dWord(0)        |
00001530  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
00001540  f4 20 31 30 34 0d 06 e0  32 20 f2 44 72 61 77 5f  |. 104...2 .Draw_|
00001550  41 64 64 57 6f 72 64 28  31 3c 3c 31 36 29 20 20  |AddWord(1<<16)  |
00001560  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001570  3a 20 f4 20 31 30 38 0d  06 ea 32 20 f2 44 72 61  |: . 108...2 .Dra|
00001580  77 5f 41 64 64 57 6f 72  64 28 32 35 36 2a 39 30  |w_AddWord(256*90|
00001590  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
000015a0  20 20 3a 20 f4 20 31 31  32 0d 06 f4 32 20 f2 44  |  : . 112...2 .D|
000015b0  72 61 77 5f 41 64 64 57  6f 72 64 28 32 35 36 2a  |raw_AddWord(256*|
000015c0  39 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |90)             |
000015d0  20 20 20 20 3a 20 f4 20  31 31 36 0d 06 fe 04 0d  |    : . 116.....|
000015e0  07 08 41 20 f2 44 72 61  77 5f 41 64 64 57 6f 72  |..A .Draw_AddWor|
000015f0  64 28 5f 73 63 61 6c 65  25 29 20 20 20 20 20 20  |d(_scale%)      |
00001600  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 31 32  |          : . 12|
00001610  30 20 43 6d 73 2f 44 72  61 77 20 75 6e 69 74 73  |0 Cms/Draw units|
00001620  0d 07 12 04 0d 07 1c 3d  20 f2 44 72 61 77 5f 41  |.......= .Draw_A|
00001630  64 64 57 6f 72 64 28 31  3c 3c 31 36 29 20 20 20  |ddWord(1<<16)   |
00001640  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3a  |               :|
00001650  20 f4 20 31 32 34 20 41  78 65 73 20 77 69 64 74  | . 124 Axes widt|
00001660  68 0d 07 26 47 20 f2 44  72 61 77 5f 41 64 64 57  |h..&G .Draw_AddW|
00001670  6f 72 64 28 28 33 3c 3c  31 36 29 2b 33 29 20 20  |ord((3<<16)+3)  |
00001680  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 f4 20  |            : . |
00001690  31 32 38 20 41 78 65 73  20 43 61 70 20 50 6f 69  |128 Axes Cap Poi|
000016a0  6e 74 2f 77 69 64 74 68  0d 07 30 43 20 f2 44 72  |nt/width..0C .Dr|
000016b0  61 77 5f 41 64 64 57 6f  72 64 28 30 29 20 20 20  |aw_AddWord(0)   |
000016c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000016d0  20 20 20 3a 20 f4 20 31  33 32 20 41 78 65 73 20  |   : . 132 Axes |
000016e0  45 78 74 65 6e 64 20 28  30 25 29 0d 07 3a 04 0d  |Extend (0%)..:..|
000016f0  07 44 3d 20 f2 44 72 61  77 5f 41 64 64 57 6f 72  |.D= .Draw_AddWor|
00001700  64 28 31 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(1)            |
00001710  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 31 33  |          : . 13|
00001720  36 20 20 4e 78 20 73 63  61 6c 65 73 0d 07 4e 3d  |6  Nx scales..N=|
00001730  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 30  | .Draw_AddWord(0|
00001740  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00001750  20 20 20 20 20 20 20 3a  20 f4 20 31 34 30 20 20  |       : . 140  |
00001760  6e 78 20 73 63 61 6c 65  73 0d 07 58 3d 20 f2 44  |nx scales..X= .D|
00001770  72 61 77 5f 41 64 64 57  6f 72 64 28 31 29 20 20  |raw_AddWord(1)  |
00001780  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001790  20 20 20 20 3a 20 f4 20  31 34 34 20 20 4e 79 20  |    : . 144  Ny |
000017a0  73 63 61 6c 65 73 0d 07  62 3d 20 f2 44 72 61 77  |scales..b= .Draw|
000017b0  5f 41 64 64 57 6f 72 64  28 30 29 20 20 20 20 20  |_AddWord(0)     |
000017c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000017d0  20 3a 20 f4 20 31 34 38  20 20 6e 79 20 73 63 61  | : . 148  ny sca|
000017e0  6c 65 73 0d 07 6c 3d 20  f2 44 72 61 77 5f 41 64  |les..l= .Draw_Ad|
000017f0  64 57 6f 72 64 28 31 30  29 20 20 20 20 20 20 20  |dWord(10)       |
00001800  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
00001810  f4 20 31 35 32 20 20 4c  78 20 73 63 61 6c 65 73  |. 152  Lx scales|
00001820  0d 07 76 3d 20 f2 44 72  61 77 5f 41 64 64 57 6f  |..v= .Draw_AddWo|
00001830  72 64 28 37 29 20 20 20  20 20 20 20 20 20 20 20  |rd(7)           |
00001840  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 31  |           : . 1|
00001850  35 36 20 20 6c 78 20 73  63 61 6c 65 73 0d 07 80  |56  lx scales...|
00001860  3d 20 f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |= .Draw_AddWord(|
00001870  31 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |10)             |
00001880  20 20 20 20 20 20 20 20  3a 20 f4 20 31 36 30 20  |        : . 160 |
00001890  20 4c 79 20 73 63 61 6c  65 73 0d 07 8a 3d 20 f2  | Ly scales...= .|
000018a0  44 72 61 77 5f 41 64 64  57 6f 72 64 28 37 29 20  |Draw_AddWord(7) |
000018b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000018c0  20 20 20 20 20 3a 20 f4  20 31 36 34 20 20 6c 79  |     : . 164  ly|
000018d0  20 73 63 61 6c 65 73 0d  07 94 3d 20 f2 44 72 61  | scales...= .Dra|
000018e0  77 5f 41 64 64 57 6f 72  64 28 31 3c 3c 31 36 29  |w_AddWord(1<<16)|
000018f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001900  20 20 3a 20 f4 20 31 36  38 20 20 57 78 20 73 63  |  : . 168  Wx sc|
00001910  61 6c 65 73 0d 07 9e 3d  20 f2 44 72 61 77 5f 41  |ales...= .Draw_A|
00001920  64 64 57 6f 72 64 28 31  3c 3c 31 35 29 20 20 20  |ddWord(1<<15)   |
00001930  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3a  |               :|
00001940  20 f4 20 31 37 32 20 20  77 78 20 73 63 61 6c 65  | . 172  wx scale|
00001950  73 0d 07 a8 3d 20 f2 44  72 61 77 5f 41 64 64 57  |s...= .Draw_AddW|
00001960  6f 72 64 28 31 3c 3c 31  36 29 20 20 20 20 20 20  |ord(1<<16)      |
00001970  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 f4 20  |            : . |
00001980  31 37 36 20 20 57 79 20  73 63 61 6c 65 73 0d 07  |176  Wy scales..|
00001990  b2 3d 20 f2 44 72 61 77  5f 41 64 64 57 6f 72 64  |.= .Draw_AddWord|
000019a0  28 31 3c 3c 31 35 29 20  20 20 20 20 20 20 20 20  |(1<<15)         |
000019b0  20 20 20 20 20 20 20 20  20 3a 20 f4 20 31 38 30  |         : . 180|
000019c0  20 20 77 79 20 73 63 61  6c 65 73 0d 07 bc 04 0d  |  wy scales.....|
000019d0  07 c6 49 20 f2 44 72 61  77 5f 41 64 64 57 6f 72  |..I .Draw_AddWor|
000019e0  64 28 31 3c 3c 31 36 29  20 20 20 20 20 20 20 20  |d(1<<16)        |
000019f0  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 31 38  |          : . 18|
00001a00  34 20 20 52 45 4d 20 43  75 72 72 65 6e 74 20 54  |4  REM Current T|
00001a10  72 61 6e 73 66 6f 72 6d  0d 07 d0 32 20 f2 44 72  |ransform...2 .Dr|
00001a20  61 77 5f 41 64 64 57 6f  72 64 28 30 29 20 20 20  |aw_AddWord(0)   |
00001a30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001a40  20 20 20 3a 20 f4 20 31  38 38 0d 07 da 32 20 f2  |   : . 188...2 .|
00001a50  44 72 61 77 5f 41 64 64  57 6f 72 64 28 30 29 20  |Draw_AddWord(0) |
00001a60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001a70  20 20 20 20 20 3a 20 f4  20 31 39 32 0d 07 e4 32  |     : . 192...2|
00001a80  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 31  | .Draw_AddWord(1|
00001a90  3c 3c 31 36 29 20 20 20  20 20 20 20 20 20 20 20  |<<16)           |
00001aa0  20 20 20 20 20 20 20 3a  20 f4 20 31 39 36 0d 07  |       : . 196..|
00001ab0  ee 32 20 f2 44 72 61 77  5f 41 64 64 57 6f 72 64  |.2 .Draw_AddWord|
00001ac0  28 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |(0)             |
00001ad0  20 20 20 20 20 20 20 20  20 3a 20 f4 20 32 30 30  |         : . 200|
00001ae0  0d 07 f8 32 20 f2 44 72  61 77 5f 41 64 64 57 6f  |...2 .Draw_AddWo|
00001af0  72 64 28 30 29 20 20 20  20 20 20 20 20 20 20 20  |rd(0)           |
00001b00  20 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 32  |           : . 2|
00001b10  30 34 0d 08 02 04 0d 08  0c 43 20 f2 44 72 61 77  |04.......C .Draw|
00001b20  5f 41 64 64 57 6f 72 64  28 31 30 30 30 30 29 20  |_AddWord(10000) |
00001b30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001b40  20 3a 20 f4 20 32 30 38  20 4d 61 78 20 78 20 72  | : . 208 Max x r|
00001b50  65 73 6f 6c 75 74 69 6f  6e 0d 08 16 43 20 f2 44  |esolution...C .D|
00001b60  72 61 77 5f 41 64 64 57  6f 72 64 28 31 30 30 29  |raw_AddWord(100)|
00001b70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001b80  20 20 20 20 3a 20 f4 20  32 31 32 20 4d 69 6e 20  |    : . 212 Min |
00001b90  78 20 72 65 73 6f 6c 75  74 69 6f 6e 0d 08 20 49  |x resolution.. I|
00001ba0  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 33  | .Draw_AddWord(3|
00001bb0  30 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |00)             |
00001bc0  20 20 20 20 20 20 20 3a  20 f4 20 32 31 36 20 56  |       : . 216 V|
00001bd0  20 72 65 73 6f 6c 75 74  69 6f 6e 20 64 6f 74 73  | resolution dots|
00001be0  2f 69 6e 63 68 0d 08 2a  04 0d 08 34 43 20 f2 44  |/inch..*...4C .D|
00001bf0  72 61 77 5f 41 64 64 57  6f 72 64 28 34 29 20 20  |raw_AddWord(4)  |
00001c00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001c10  20 20 20 20 3a 20 f4 20  32 32 30 20 42 61 72 20  |    : . 220 Bar |
00001c20  63 68 61 72 74 20 73 63  61 6c 65 73 0d 08 3e 3e  |chart scales..>>|
00001c30  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 30  | .Draw_AddWord(0|
00001c40  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00001c50  20 20 20 20 20 20 20 3a  20 f4 20 32 32 34 20 4c  |       : . 224 L|
00001c60  69 6e 65 20 43 6f 6c 6f  75 72 0d 08 48 48 20 f2  |ine Colour..HH .|
00001c70  44 72 61 77 5f 41 64 64  57 6f 72 64 28 2d 31 29  |Draw_AddWord(-1)|
00001c80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001c90  20 20 20 20 20 3a 20 f4  20 32 32 38 20 46 69 6c  |     : . 228 Fil|
00001ca0  6c 20 43 6f 6c 6f 75 72  20 28 6e 6f 20 66 69 6c  |l Colour (no fil|
00001cb0  6c 29 0d 08 52 3d 20 f2  44 72 61 77 5f 41 64 64  |l)..R= .Draw_Add|
00001cc0  57 6f 72 64 28 30 29 20  20 20 20 20 20 20 20 20  |Word(0)         |
00001cd0  20 20 20 20 20 20 20 20  20 20 20 20 20 3a 20 f4  |             : .|
00001ce0  20 32 33 32 20 4c 69 6e  65 20 57 69 64 74 68 0d  | 232 Line Width.|
00001cf0  08 5c 3d 20 f2 44 72 61  77 5f 41 64 64 57 6f 72  |.\= .Draw_AddWor|
00001d00  64 28 30 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(0)            |
00001d10  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 32 33  |          : . 23|
00001d20  36 20 4c 69 6e 65 20 73  74 79 6c 65 0d 08 66 3f  |6 Line style..f?|
00001d30  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 30  | .Draw_AddWord(0|
00001d40  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00001d50  20 20 20 20 20 20 20 3a  20 f4 20 32 34 30 20 43  |       : . 240 C|
00001d60  68 61 72 74 20 66 61 63  74 6f 72 0d 08 70 3a 20  |hart factor..p: |
00001d70  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 30 29  |.Draw_AddWord(0)|
00001d80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001d90  20 20 20 20 20 20 3a 20  f4 20 32 34 34 20 20 20  |      : . 244   |
00001da0  20 20 20 22 22 0d 08 7a  11 20 7c 28 93 2b 32 34  |   ""..z. |(.+24|
00001db0  30 29 3d 35 2f 36 0d 08  84 04 0d 08 8e 3e 20 21  |0)=5/6.......> !|
00001dc0  28 93 2b 38 29 3d 21 93  20 20 20 20 20 20 20 20  |(.+8)=!.        |
00001dd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001de0  3a 20 f4 20 41 64 64 72  65 73 73 20 6f 66 20 44  |: . Address of D|
00001df0  72 61 77 20 66 69 6c 65  0d 08 98 05 e1 0d 08 a2  |raw file........|
00001e00  04 0d 08 ac 19 dd 20 f2  44 72 61 77 5f 53 65 74  |...... .Draw_Set|
00001e10  46 69 6c 65 48 65 61 64  65 72 0d 08 b6 06 20 f4  |FileHeader.... .|
00001e20  0d 08 c0 23 20 f4 20 2d  2d 2d 2d 2d 2d 2d 2d 34  |...# . --------4|
00001e30  30 20 62 79 74 65 73 2d  2d 2d 2d 2d 2d 2d 2d 2d  |0 bytes---------|
00001e40  2d 2d 2d 0d 08 ca 06 20  f4 0d 08 d4 30 20 f2 44  |---.... ....0 .D|
00001e50  72 61 77 5f 41 64 64 53  74 72 69 6e 67 28 93 2c  |raw_AddString(.,|
00001e60  22 44 72 61 77 22 29 20  20 20 20 20 20 20 20 20  |"Draw")         |
00001e70  3a 20 f4 20 54 69 74 6c  65 0d 08 de 42 20 f2 44  |: . Title...B .D|
00001e80  72 61 77 5f 41 64 64 57  6f 72 64 28 32 30 31 29  |raw_AddWord(201)|
00001e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001ea0  20 20 20 20 3a 20 f4 20  6d 61 6a 6f 72 20 66 6f  |    : . major fo|
00001eb0  72 6d 61 74 20 6e 75 6d  62 65 72 0d 08 e8 42 20  |rmat number...B |
00001ec0  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 30 29  |.Draw_AddWord(0)|
00001ed0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001ee0  20 20 20 20 20 20 3a 20  f4 20 6d 69 6e 6f 72 20  |      : . minor |
00001ef0  66 6f 72 6d 61 74 20 6e  75 6d 62 65 72 0d 08 f2  |format number...|
00001f00  38 20 f2 44 72 61 77 5f  41 64 64 53 74 72 69 6e  |8 .Draw_AddStrin|
00001f10  67 28 93 2c 22 44 72 61  77 42 61 73 69 63 20 20  |g(.,"DrawBasic  |
00001f20  20 22 29 20 3a 20 f4 20  50 72 6f 67 72 61 6d 20  | ") : . Program |
00001f30  54 69 74 6c 65 0d 08 fc  3a 20 f2 44 72 61 77 5f  |Title...: .Draw_|
00001f40  41 64 64 57 6f 72 64 28  30 29 20 20 20 20 20 20  |AddWord(0)      |
00001f50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001f60  3a 20 f4 20 42 6f 75 6e  64 69 6e 67 42 6f 78 0d  |: . BoundingBox.|
00001f70  09 06 3a 20 f2 44 72 61  77 5f 41 64 64 57 6f 72  |..: .Draw_AddWor|
00001f80  64 28 30 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(0)            |
00001f90  20 20 20 20 20 20 20 20  20 20 3a 20 f4 20 42 6f  |          : . Bo|
00001fa0  75 6e 64 69 6e 67 42 6f  78 0d 09 10 3a 20 f2 44  |undingBox...: .D|
00001fb0  72 61 77 5f 41 64 64 57  6f 72 64 28 32 35 36 2a  |raw_AddWord(256*|
00001fc0  31 38 30 2a 31 32 2a 33  2a 38 30 30 29 20 20 20  |180*12*3*800)   |
00001fd0  20 20 20 20 3a 20 f4 20  42 6f 75 6e 64 69 6e 67  |    : . Bounding|
00001fe0  42 6f 78 0d 09 1a 3a 20  f2 44 72 61 77 5f 41 64  |Box...: .Draw_Ad|
00001ff0  64 57 6f 72 64 28 32 35  36 2a 31 38 30 2a 31 32  |dWord(256*180*12|
00002000  2a 33 2a 38 30 30 29 20  20 20 20 20 20 20 3a 20  |*3*800)       : |
00002010  f4 20 42 6f 75 6e 64 69  6e 67 42 6f 78 0d 09 24  |. BoundingBox..$|
00002020  05 e1 0d 09 2e 04 0d 09  38 18 dd 20 f2 44 72 61  |........8.. .Dra|
00002030  77 5f 53 65 74 46 6f 6e  74 54 61 62 6c 65 0d 09  |w_SetFontTable..|
00002040  42 38 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |B8 . -----------|
00002050  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002070  2d 2d 2d 2d 2d 2d 0d 09  4c 06 20 f4 0d 09 56 38  |------..L. ...V8|
00002080  20 f4 20 54 68 69 73 20  70 72 6f 63 65 64 75 72  | . This procedur|
00002090  65 20 73 68 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |e should not be |
000020a0  63 61 6c 6c 65 64 20 69  6e 20 61 20 70 72 6f 67  |called in a prog|
000020b0  72 61 6d 2e 0d 09 60 29  20 f4 20 49 74 20 69 73  |ram...`) . It is|
000020c0  20 75 73 65 64 20 20 74  6f 20 73 65 74 20 74 68  | used  to set th|
000020d0  65 20 46 6f 6e 74 20 74  61 62 6c 65 2e 0d 09 6a  |e Font table...j|
000020e0  06 20 f4 0d 09 74 38 20  f4 20 2d 2d 2d 2d 2d 2d  |. ...t8 . ------|
000020f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002110  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 09 7e 22 20  |-----------..~" |
00002120  ea 20 5f 66 6f 6e 74 73  25 20 3a 20 5f 66 6f 6e  |. _fonts% : _fon|
00002130  74 73 25 3d 21 28 93 2b  38 29 2b 34 30 0d 09 88  |ts%=!(.+8)+40...|
00002140  3d 20 f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |= .Draw_AddWord(|
00002150  30 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0)              |
00002160  20 20 20 20 3a 20 f4 20  46 6f 6e 74 20 6f 62 6a  |    : . Font obj|
00002170  65 63 74 20 74 79 70 65  20 30 0d 09 92 3d 20 f2  |ect type 0...= .|
00002180  44 72 61 77 5f 41 64 64  57 6f 72 64 28 30 29 20  |Draw_AddWord(0) |
00002190  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000021a0  20 3a 20 f4 20 46 6f 6e  74 20 6f 62 6a 65 63 74  | : . Font object|
000021b0  20 6c 65 6e 67 74 68 0d  09 9c 2e 20 f2 44 72 61  | length.... .Dra|
000021c0  77 5f 41 64 64 53 74 72  69 6e 67 28 93 2c bd 31  |w_AddString(.,.1|
000021d0  2b 22 54 72 69 6e 69 74  79 2e 4d 65 64 69 75 6d  |+"Trinity.Medium|
000021e0  22 2b bd 30 29 0d 09 a6  3c 20 21 28 5f 66 6f 6e  |"+.0)...< !(_fon|
000021f0  74 73 25 2b 34 29 3d 21  93 2d 5f 66 6f 6e 74 73  |ts%+4)=!.-_fonts|
00002200  25 20 20 20 20 20 20 20  20 20 20 3a 20 f4 20 46  |%          : . F|
00002210  6f 6e 74 20 6f 62 6a 65  63 74 20 6c 65 6e 67 74  |ont object lengt|
00002220  68 0d 09 b0 05 e1 0d 09  ba 04 0d 09 c4 1e f4 20  |h.............. |
00002230  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00002240  3d 3d 3d 3d 3d 3d 3d 3d  0d 09 ce 1c f4 20 31 2e  |========..... 1.|
00002250  33 20 53 61 76 69 6e 67  20 41 20 44 72 61 77 20  |3 Saving A Draw |
00002260  46 69 6c 65 0d 09 d8 1e  f4 20 3d 3d 3d 3d 3d 3d  |File..... ======|
00002270  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00002280  3d 3d 0d 09 e2 04 0d 09  ec 0b dd 20 f2 51 75 69  |==......... .Qui|
00002290  74 0d 09 f6 3e 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |t...> . --------|
000022a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000022c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
000022d0  0a 00 06 20 f4 0d 0a 0a  2c 20 f4 20 53 61 76 65  |... ...., . Save|
000022e0  73 20 44 72 61 77 20 66  69 6c 65 20 74 6f 20 44  |s Draw file to D|
000022f0  72 61 77 42 61 73 69 63  3a 44 72 61 77 46 69 6c  |rawBasic:DrawFil|
00002300  65 0d 0a 14 06 20 f4 0d  0a 1e 3c 20 f4 20 54 68  |e.... ....< . Th|
00002310  65 20 66 69 6c 65 20 69  73 20 74 68 65 6e 20 2a  |e file is then *|
00002320  52 75 6e 20 73 6f 20 69  74 20 77 69 6c 6c 20 62  |Run so it will b|
00002330  65 20 6c 6f 61 64 65 64  20 69 6e 74 6f 20 21 44  |e loaded into !D|
00002340  72 61 77 0d 0a 28 06 20  f4 0d 0a 32 3e 20 f4 20  |raw..(. ...2> . |
00002350  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002380  2d 2d 2d 2d 2d 2d 2d 0d  0a 3c 0d 20 f2 50 61 74  |-------..<. .Pat|
00002390  68 45 6e 64 0d 0a 46 39  20 ff 28 22 53 61 76 65  |hEnd..F9 .("Save|
000023a0  20 44 72 61 77 42 61 73  69 63 3a 44 72 61 77 2e  | DrawBasic:Draw.|
000023b0  46 69 6c 65 20 22 2b c3  7e 28 21 28 93 2b 38 29  |File "+.~(!(.+8)|
000023c0  29 2b 22 20 22 2b c3 7e  28 21 93 29 29 0d 0a 50  |)+" "+.~(!.))..P|
000023d0  2a 20 2a 53 65 74 54 79  70 65 20 44 72 61 77 42  |* *SetType DrawB|
000023e0  61 73 69 63 3a 44 72 61  77 2e 46 69 6c 65 20 44  |asic:Draw.File D|
000023f0  72 61 77 46 69 6c 65 0d  0a 5a 23 20 2a 46 69 6c  |rawFile..Z# *Fil|
00002400  65 72 5f 52 75 6e 20 44  72 61 77 42 61 73 69 63  |er_Run DrawBasic|
00002410  3a 44 72 61 77 2e 46 69  6c 65 0d 0a 64 05 e0 0d  |:Draw.File..d...|
00002420  0a 6e 04 0d 0a 78 0f f4  20 2d 2d 2d 2d 2d 2d 2d  |.n...x.. -------|
00002430  2d 2d 0d 0a 82 05 f4 0d  0a 8c 0f f4 20 31 2e 34  |--.......... 1.4|
00002440  20 55 6e 69 74 73 0d 0a  96 05 f4 0d 0a a0 0f f4  | Units..........|
00002450  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 0d 0a aa 04 0d 0a  | ---------......|
00002460  b4 14 dd 20 a4 55 6e 69  74 73 3d 21 28 93 2b 36  |... .Units=!(.+6|
00002470  30 29 0d 0a be 04 0d 0a  c8 12 dd 20 f2 43 65 6e  |0)......... .Cen|
00002480  74 69 6d 65 74 72 65 73  0d 0a d2 1e 21 28 93 2b  |timetres....!(.+|
00002490  36 30 29 3d a8 28 32 35  36 2a 31 38 30 2f 32 2e  |60)=.(256*180/2.|
000024a0  35 34 2b 2e 35 29 0d 0a  dc 19 f2 46 72 61 6d 65  |54+.5).....Frame|
000024b0  53 69 7a 65 28 30 2c 30  2c 31 32 2c 31 32 29 0d  |Size(0,0,12,12).|
000024c0  0a e6 1b f2 46 72 61 6d  65 43 6f 6f 72 64 73 28  |....FrameCoords(|
000024d0  30 2c 31 32 2c 30 2c 31  32 29 0d 0a f0 0c f2 50  |0,12,0,12).....P|
000024e0  72 65 76 69 65 77 0d 0a  fa 05 e1 0d 0b 04 04 0d  |review..........|
000024f0  0b 0e 0d dd 20 f2 49 6e  63 68 65 73 0d 0b 18 13  |.... .Inches....|
00002500  21 28 93 2b 36 30 29 3d  32 35 36 2a 31 38 30 0d  |!(.+60)=256*180.|
00002510  0b 22 17 f2 46 72 61 6d  65 53 69 7a 65 28 30 2c  |."..FrameSize(0,|
00002520  30 2c 36 2c 36 29 0d 0b  2c 19 f2 46 72 61 6d 65  |0,6,6)..,..Frame|
00002530  43 6f 6f 72 64 73 28 30  2c 36 2c 30 2c 36 29 0d  |Coords(0,6,0,6).|
00002540  0b 36 0c f2 50 72 65 76  69 65 77 0d 0b 40 05 e1  |.6..Preview..@..|
00002550  0d 0b 4a 04 0d 0b 54 22  dd 20 a4 44 72 61 77 55  |..J...T". .DrawU|
00002560  6e 69 74 73 28 61 29 3d  a8 28 a4 55 6e 69 74 73  |nits(a)=.(.Units|
00002570  2a 61 2b 2e 35 29 0d 0b  5e 04 0d 0b 68 22 dd 20  |*a+.5)..^...h". |
00002580  f2 46 72 61 6d 65 53 69  7a 65 28 61 2c 62 2c 77  |.FrameSize(a,b,w|
00002590  69 64 74 68 2c 68 65 69  67 68 74 29 0d 0b 72 32  |idth,height)..r2|
000025a0  20 f4 20 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | . -------------|
000025b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000025c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 0b  |--------------..|
000025d0  7c 06 20 f4 0d 0b 86 30  20 f4 20 44 65 66 69 6e  ||. ....0 . Defin|
000025e0  65 73 20 74 68 65 20 73  69 7a 65 20 6f 66 20 74  |es the size of t|
000025f0  68 65 20 20 64 72 61 77  69 6e 67 20 22 66 72 61  |he  drawing "fra|
00002600  6d 65 22 2e 0d 0b 90 06  20 f4 0d 0b 9a 31 20 f4  |me"..... ....1 .|
00002610  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00002620  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00002630  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 0b a4 23 20  |-----------...# |
00002640  f2 46 72 61 6d 65 43 6f  6f 72 64 73 28 30 2c 77  |.FrameCoords(0,w|
00002650  69 64 74 68 2c 30 2c 68  65 69 67 68 74 29 0d 0b  |idth,0,height)..|
00002660  ae 39 20 20 21 28 93 2b  32 30 29 3d a4 44 72 61  |.9  !(.+20)=.Dra|
00002670  77 55 6e 69 74 73 28 77  69 64 74 68 29 20 20 3a  |wUnits(width)  :|
00002680  20 f4 20 42 6f 75 6e 64  69 6e 67 20 62 6f 78 20  | . Bounding box |
00002690  2d 20 77 69 64 74 68 0d  0b b8 3a 20 20 21 28 93  |- width...:  !(.|
000026a0  2b 32 34 29 3d a4 44 72  61 77 55 6e 69 74 73 28  |+24)=.DrawUnits(|
000026b0  68 65 69 67 68 74 29 20  3a 20 f4 20 42 6f 75 6e  |height) : . Boun|
000026c0  64 69 6e 67 20 62 6f 78  20 2d 20 68 65 69 67 68  |ding box - heigh|
000026d0  74 0d 0b c2 2c 20 20 21  28 93 2b 31 32 29 3d a4  |t...,  !(.+12)=.|
000026e0  44 72 61 77 55 6e 69 74  73 28 61 29 20 20 20 20  |DrawUnits(a)    |
000026f0  20 20 3a 20 f4 20 46 72  61 6d 65 5f 78 0d 0b cc  |  : . Frame_x...|
00002700  2c 20 20 21 28 93 2b 31  36 29 3d a4 44 72 61 77  |,  !(.+16)=.Draw|
00002710  55 6e 69 74 73 28 62 29  20 20 20 20 20 20 3a 20  |Units(b)      : |
00002720  f4 20 46 72 61 6d 65 5f  79 0d 0b d6 05 e1 0d 0b  |. Frame_y.......|
00002730  e0 04 0d 0b ea 20 dd 20  f2 52 65 64 75 63 65 46  |..... . .ReduceF|
00002740  72 61 6d 65 53 69 7a 65  28 66 72 61 63 74 69 6f  |rameSize(fractio|
00002750  6e 29 0d 0b f4 0d ea 20  5f 77 25 2c 5f 68 25 0d  |n)..... _w%,_h%.|
00002760  0b fe 3b 5f 77 25 3d a8  28 21 28 93 2b 32 30 29  |..;_w%=.(!(.+20)|
00002770  2a 66 72 61 63 74 69 6f  6e 2b 2e 35 29 20 3a 20  |*fraction+.5) : |
00002780  5f 68 25 3d a8 28 21 28  93 2b 32 34 29 2a 66 72  |_h%=.(!(.+24)*fr|
00002790  61 63 74 69 6f 6e 2b 2e  35 29 0d 0c 08 22 21 28  |action+.5)..."!(|
000027a0  93 2b 31 32 29 2b 3d a8  28 28 21 28 93 2b 32 30  |.+12)+=.((!(.+20|
000027b0  29 2d 5f 77 25 29 2f 32  2b 2e 35 29 0d 0c 12 22  |)-_w%)/2+.5)..."|
000027c0  21 28 93 2b 31 36 29 2b  3d a8 28 28 21 28 93 2b  |!(.+16)+=.((!(.+|
000027d0  32 34 29 2d 5f 68 25 29  2f 32 2b 2e 35 29 0d 0c  |24)-_h%)/2+.5)..|
000027e0  1c 1d 21 28 93 2b 32 30  29 3d 5f 77 25 20 3a 20  |..!(.+20)=_w% : |
000027f0  21 28 93 2b 32 34 29 3d  5f 68 25 0d 0c 26 05 e1  |!(.+24)=_h%..&..|
00002800  0d 0c 30 04 0d 0c 3a 31  dd 20 f2 47 65 74 46 72  |..0...:1. .GetFr|
00002810  61 6d 65 53 69 7a 65 28  f8 20 61 25 2c f8 20 62  |ameSize(. a%,. b|
00002820  25 2c f8 20 77 69 64 74  68 25 2c f8 20 68 65 69  |%,. width%,. hei|
00002830  67 68 74 25 29 0d 0c 44  32 20 f4 20 2d 2d 2d 2d  |ght%)..D2 . ----|
00002840  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002860  2d 2d 2d 2d 2d 2d 2d 0d  0c 4e 06 20 f4 0d 0c 58  |-------..N. ...X|
00002870  2e 20 f4 20 47 69 76 65  73 20 74 68 65 20 73 69  |. . Gives the si|
00002880  7a 65 20 6f 66 20 74 68  65 20 20 64 72 61 77 69  |ze of the  drawi|
00002890  6e 67 20 22 66 72 61 6d  65 22 2e 0d 0c 62 06 20  |ng "frame"...b. |
000028a0  f4 0d 0c 6c 31 20 f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |...l1 . --------|
000028b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000028d0  2d 2d 0d 0c 76 14 20 20  77 69 64 74 68 25 3d 21  |--..v.  width%=!|
000028e0  28 93 2b 32 30 29 0d 0c  80 15 20 20 68 65 69 67  |(.+20)....  heig|
000028f0  68 74 25 3d 21 28 93 2b  32 34 29 0d 0c 8a 10 20  |ht%=!(.+24).... |
00002900  20 61 25 3d 21 28 93 2b  31 32 29 0d 0c 94 10 20  | a%=!(.+12).... |
00002910  20 62 25 3d 21 28 93 2b  31 36 29 0d 0c 9e 05 e1  | b%=!(.+16).....|
00002920  0d 0c a8 04 0d 0c b2 17  f4 20 2d 2d 2d 2d 2d 2d  |......... ------|
00002930  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 0c bc 05 f4  |-----------.....|
00002940  0d 0c c6 16 f4 20 31 2e  35 20 43 6f 2d 6f 72 64  |..... 1.5 Co-ord|
00002950  69 6e 61 74 65 73 0d 0c  d0 05 f4 0d 0c da 17 f4  |inates..........|
00002960  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00002970  2d 2d 0d 0c e4 04 0d 0c  ee 16 dd 20 a4 46 72 61  |--......... .Fra|
00002980  6d 65 5f 78 3d 21 28 93  2b 31 32 29 0d 0c f8 16  |me_x=!(.+12)....|
00002990  dd 20 a4 46 72 61 6d 65  5f 79 3d 21 28 93 2b 31  |. .Frame_y=!(.+1|
000029a0  36 29 0d 0d 02 1a dd 20  a4 46 72 61 6d 65 5f 57  |6)..... .Frame_W|
000029b0  69 64 74 68 3d 21 28 93  2b 32 30 29 0d 0d 0c 1b  |idth=!(.+20)....|
000029c0  dd 20 a4 46 72 61 6d 65  5f 48 65 69 67 68 74 3d  |. .Frame_Height=|
000029d0  21 28 93 2b 32 34 29 0d  0d 16 04 0d 0d 20 16 dd  |!(.+24)...... ..|
000029e0  20 a4 46 52 41 4d 45 5f  78 3d 7c 28 93 2b 32 38  | .FRAME_x=|(.+28|
000029f0  29 0d 0d 2a 16 dd 20 a4  46 52 41 4d 45 5f 79 3d  |)..*.. .FRAME_y=|
00002a00  7c 28 93 2b 33 36 29 0d  0d 34 1a dd 20 a4 46 52  ||(.+36)..4.. .FR|
00002a10  41 4d 45 5f 57 69 64 74  68 3d 7c 28 93 2b 34 34  |AME_Width=|(.+44|
00002a20  29 0d 0d 3e 1b dd 20 a4  46 52 41 4d 45 5f 48 65  |)..>.. .FRAME_He|
00002a30  69 67 68 74 3d 7c 28 93  2b 35 32 29 0d 0d 48 04  |ight=|(.+52)..H.|
00002a40  0d 0d 52 28 dd 20 a4 58  5f 53 63 61 6c 65 3d a4  |..R(. .X_Scale=.|
00002a50  46 72 61 6d 65 5f 57 69  64 74 68 2f a4 46 52 41  |Frame_Width/.FRA|
00002a60  4d 45 5f 57 69 64 74 68  0d 0d 5c 2a dd 20 a4 59  |ME_Width..\*. .Y|
00002a70  5f 53 63 61 6c 65 3d a4  46 72 61 6d 65 5f 48 65  |_Scale=.Frame_He|
00002a80  69 67 68 74 2f a4 46 52  41 4d 45 5f 48 65 69 67  |ight/.FRAME_Heig|
00002a90  68 74 0d 0d 66 04 0d 0d  70 19 dd 20 a4 45 70 73  |ht..f...p.. .Eps|
00002aa0  69 6c 6f 6e 3d 31 2f a4  59 5f 53 63 61 6c 65 0d  |ilon=1/.Y_Scale.|
00002ab0  0d 7a 04 0d 0d 84 1d dd  20 a4 4d 61 78 4e 6f 6f  |.z...... .MaxNoo|
00002ac0  66 50 6f 69 6e 74 73 3d  21 28 93 2b 32 30 38 29  |fPoints=!(.+208)|
00002ad0  0d 0d 8e 1d dd 20 a4 4d  69 6e 4e 6f 6f 66 50 6f  |..... .MinNoofPo|
00002ae0  69 6e 74 73 3d 21 28 93  2b 32 31 32 29 0d 0d 98  |ints=!(.+212)...|
00002af0  1b dd 20 a4 44 6f 74 73  50 65 72 49 6e 63 68 3d  |.. .DotsPerInch=|
00002b00  21 28 93 2b 32 31 36 29  0d 0d a2 04 0d 0d ac 35  |!(.+216).......5|
00002b10  dd 20 a4 44 72 61 77 5f  58 28 78 29 3d a8 28 a4  |. .Draw_X(x)=.(.|
00002b20  46 72 61 6d 65 5f 78 2b  28 78 2d a4 46 52 41 4d  |Frame_x+(x-.FRAM|
00002b30  45 5f 78 29 2a a4 58 5f  53 63 61 6c 65 2b 2e 35  |E_x)*.X_Scale+.5|
00002b40  29 0d 0d b6 35 dd 20 a4  44 72 61 77 5f 59 28 79  |)...5. .Draw_Y(y|
00002b50  29 3d a8 28 a4 46 72 61  6d 65 5f 79 2b 28 79 2d  |)=.(.Frame_y+(y-|
00002b60  a4 46 52 41 4d 45 5f 79  29 2a a4 59 5f 53 63 61  |.FRAME_y)*.Y_Sca|
00002b70  6c 65 2b 2e 35 29 0d 0d  c0 04 0d 0d ca 1b dd 20  |le+.5)......... |
00002b80  f2 46 72 61 6d 65 43 6f  6f 72 64 73 28 61 2c 62  |.FrameCoords(a,b|
00002b90  2c 75 2c 76 29 0d 0d d4  32 20 f4 20 2d 2d 2d 2d  |,u,v)...2 . ----|
00002ba0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002bc0  2d 2d 2d 2d 2d 2d 2d 0d  0d de 06 20 f4 0d 0d e8  |-------.... ....|
00002bd0  30 20 f4 20 54 68 65 20  62 6f 75 6e 64 69 6e 67  |0 . The bounding|
00002be0  20 62 6f 78 20 69 6e 20  74 68 65 20 28 78 2c 79  | box in the (x,y|
00002bf0  29 20 70 6c 61 6e 65 20  77 68 69 63 68 0d 0d f2  |) plane which...|
00002c00  2e 20 f4 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |. . contains the|
00002c10  20 64 72 61 77 69 6e 67  20 69 73 20 61 3c 78 3c  | drawing is a<x<|
00002c20  62 20 2c 20 75 3c 79 3c  76 20 2e 0d 0d fc 06 20  |b , u<y<v ..... |
00002c30  f4 0d 0e 06 06 20 f4 0d  0e 10 31 20 f4 20 2d 2d  |..... ....1 . --|
00002c40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002c60  2d 2d 2d 2d 2d 2d 2d 2d  0d 0e 1a 0e 20 ea 20 5f  |--------.... . _|
00002c70  66 72 61 6d 65 25 0d 0e  24 11 20 5f 66 72 61 6d  |frame%..$. _fram|
00002c80  65 25 3d 93 2b 32 38 0d  0e 2e 39 20 e7 20 61 3e  |e%=.+28...9 . a>|
00002c90  3d 62 20 8c 20 85 20 30  2c 20 c3 20 61 2b 22 20  |=b . . 0, . a+" |
00002ca0  3c 20 78 20 3c 20 22 2b  c3 20 62 2b 22 20 69 73  |< x < "+. b+" is|
00002cb0  20 61 20 62 61 64 20 78  20 72 61 6e 67 65 20 22  | a bad x range "|
00002cc0  0d 0e 38 39 20 e7 20 75  3e 3d 76 20 8c 20 85 20  |..89 . u>=v . . |
00002cd0  30 2c 20 c3 20 75 2b 22  20 3c 20 79 20 3c 20 22  |0, . u+" < y < "|
00002ce0  2b c3 20 76 2b 22 20 69  73 20 61 20 62 61 64 20  |+. v+" is a bad |
00002cf0  79 20 72 61 6e 67 65 20  22 0d 0e 42 27 20 7c 28  |y range "..B' |(|
00002d00  5f 66 72 61 6d 65 25 29  3d 61 20 20 20 20 20 20  |_frame%)=a      |
00002d10  3a 20 7c 28 5f 66 72 61  6d 65 25 2b 38 29 3d 75  |: |(_frame%+8)=u|
00002d20  0d 0e 4c 2a 20 7c 28 5f  66 72 61 6d 65 25 2b 31  |..L* |(_frame%+1|
00002d30  36 29 3d 62 2d 61 20 3a  20 7c 28 5f 66 72 61 6d  |6)=b-a : |(_fram|
00002d40  65 25 2b 32 34 29 3d 76  2d 75 0d 0e 56 06 20 e1  |e%+24)=v-u..V. .|
00002d50  0d 0e 60 04 0d 0e 6a 18  dd 20 a4 4f 75 74 73 69  |..`...j.. .Outsi|
00002d60  64 65 46 72 61 6d 65 28  78 2c 79 29 0d 0e 74 11  |deFrame(x,y)..t.|
00002d70  ea 20 5f 61 2c 5f 62 2c  5f 75 2c 5f 76 0d 0e 7e  |. _a,_b,_u,_v..~|
00002d80  20 f2 47 65 74 46 72 61  6d 65 43 6f 6f 72 64 73  | .GetFrameCoords|
00002d90  28 5f 61 2c 5f 62 2c 5f  75 2c 5f 76 29 0d 0e 88  |(_a,_b,_u,_v)...|
00002da0  33 3d 2d 28 28 78 3c 5f  61 29 3c 3c 33 29 84 2d  |3=-((x<_a)<<3).-|
00002db0  28 28 78 3e 5f 62 29 3c  3c 32 29 84 2d 28 28 79  |((x>_b)<<2).-((y|
00002dc0  3c 5f 75 29 3c 3c 31 29  84 2d 28 79 3e 5f 76 29  |<_u)<<1).-(y>_v)|
00002dd0  0d 0e 92 04 0d 0e 9c 13  dd 20 a4 49 6e 46 72 61  |......... .InFra|
00002de0  6d 65 28 78 2c 79 29 0d  0e a6 21 e7 20 a4 4f 75  |me(x,y)...!. .Ou|
00002df0  74 73 69 64 65 46 72 61  6d 65 28 78 2c 79 29 20  |tsideFrame(x,y) |
00002e00  8c 20 3d a3 20 8b 3d b9  0d 0e b0 04 0d 0e ba 26  |. =. .=........&|
00002e10  dd 20 f2 47 65 74 46 72  61 6d 65 43 6f 6f 72 64  |. .GetFrameCoord|
00002e20  73 28 f8 20 61 2c f8 20  62 2c f8 20 75 2c f8 20  |s(. a,. b,. u,. |
00002e30  76 29 0d 0e c4 32 20 f4  20 2d 2d 2d 2d 2d 2d 2d  |v)...2 . -------|
00002e40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002e60  2d 2d 2d 2d 0d 0e ce 06  20 f4 0d 0e d8 30 20 f4  |----.... ....0 .|
00002e70  20 54 68 65 20 62 6f 75  6e 64 69 6e 67 20 62 6f  | The bounding bo|
00002e80  78 20 69 6e 20 74 68 65  20 28 78 2c 79 29 20 70  |x in the (x,y) p|
00002e90  6c 61 6e 65 20 77 68 69  63 68 0d 0e e2 2e 20 f4  |lane which.... .|
00002ea0  20 63 6f 6e 74 61 69 6e  73 20 74 68 65 20 64 72  | contains the dr|
00002eb0  61 77 69 6e 67 20 69 73  20 61 3c 78 3c 62 20 2c  |awing is a<x<b ,|
00002ec0  20 75 3c 79 3c 76 20 2e  0d 0e ec 06 20 f4 0d 0e  | u<y<v ..... ...|
00002ed0  f6 06 20 f4 0d 0f 00 31  20 f4 20 2d 2d 2d 2d 2d  |.. ....1 . -----|
00002ee0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002f00  2d 2d 2d 2d 2d 0d 0f 0a  13 20 ea 20 77 69 64 74  |-----.... . widt|
00002f10  68 2c 68 65 69 67 68 74  0d 0f 14 23 20 20 20 20  |h,height...#    |
00002f20  20 61 3d 7c 28 93 2b 32  38 29 20 3a 20 20 20 20  | a=|(.+28) :    |
00002f30  20 20 75 3d 7c 28 93 2b  33 36 29 0d 0f 1e 23 20  |  u=|(.+36)...# |
00002f40  77 69 64 74 68 3d 7c 28  93 2b 34 34 29 20 3a 20  |width=|(.+44) : |
00002f50  68 65 69 67 68 74 3d 7c  28 93 2b 35 32 29 0d 0f  |height=|(.+52)..|
00002f60  28 1b 20 62 3d 61 2b 77  69 64 74 68 20 3a 20 76  |(. b=a+width : v|
00002f70  3d 75 2b 68 65 69 67 68  74 0d 0f 32 06 20 e1 0d  |=u+height..2. ..|
00002f80  0f 3c 04 0d 0f 46 10 dd  20 f2 53 68 6f 77 46 72  |.<...F.. .ShowFr|
00002f90  61 6d 65 0d 0f 50 32 20  f4 20 2d 2d 2d 2d 2d 2d  |ame..P2 . ------|
00002fa0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002fc0  2d 2d 2d 2d 2d 0d 0f 5a  06 20 f4 0d 0f 64 30 20  |-----..Z. ...d0 |
00002fd0  f4 20 54 68 65 20 62 6f  75 6e 64 69 6e 67 20 62  |. The bounding b|
00002fe0  6f 78 20 69 6e 20 74 68  65 20 28 78 2c 79 29 20  |ox in the (x,y) |
00002ff0  70 6c 61 6e 65 20 77 68  69 63 68 0d 0f 6e 2e 20  |plane which..n. |
00003000  f4 20 63 6f 6e 74 61 69  6e 73 20 74 68 65 20 64  |. contains the d|
00003010  72 61 77 69 6e 67 20 69  73 20 61 3c 78 3c 62 20  |rawing is a<x<b |
00003020  2c 20 75 3c 79 3c 76 20  2e 0d 0f 78 06 20 f4 0d  |, u<y<v ...x. ..|
00003030  0f 82 06 20 f4 0d 0f 8c  31 20 f4 20 2d 2d 2d 2d  |... ....1 . ----|
00003040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003060  2d 2d 2d 2d 2d 2d 0d 0f  96 19 20 ea 20 5f 70 61  |------.... . _pa|
00003070  74 68 25 2c 5f 61 2c 5f  62 2c 5f 75 2c 5f 76 0d  |th%,_a,_b,_u,_v.|
00003080  0f a0 22 20 20 f2 47 65  74 46 72 61 6d 65 43 6f  |.."  .GetFrameCo|
00003090  6f 72 64 73 28 5f 61 2c  5f 62 2c 5f 75 2c 5f 76  |ords(_a,_b,_u,_v|
000030a0  29 0d 0f aa 2a 20 20 5f  70 61 74 68 25 3d a4 52  |)...*  _path%=.R|
000030b0  65 63 74 61 6e 67 6c 65  28 5f 61 2c 5f 75 2c 5f  |ectangle(_a,_u,_|
000030c0  62 2d 5f 61 2c 5f 76 2d  5f 75 29 0d 0f b4 16 20  |b-_a,_v-_u).... |
000030d0  20 f2 46 69 6c 6c 40 28  5f 70 61 74 68 25 2c 31  | .Fill@(_path%,1|
000030e0  29 0d 0f be 17 20 20 f2  44 72 61 77 50 61 74 68  |)....  .DrawPath|
000030f0  28 5f 70 61 74 68 25 29  0d 0f c8 05 e1 0d 0f d2  |(_path%)........|
00003100  04 0d 0f dc 12 dd 20 f2  4f 72 69 67 69 6e 28 41  |...... .Origin(A|
00003110  2c 42 29 0d 0f e6 15 20  f4 20 2d 2d 2d 2d 2d 2d  |,B).... . ------|
00003120  2d 2d 2d 2d 2d 2d 2d 2d  0d 0f f0 06 20 f4 0d 0f  |--------.... ...|
00003130  fa 15 20 f4 20 43 68 61  6e 67 65 73 20 6f 72 69  |.. . Changes ori|
00003140  67 69 6e 0d 10 04 06 20  f4 0d 10 0e 15 20 f4 20  |gin.... ..... . |
00003150  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 10  |--------------..|
00003160  18 12 20 ea 20 5f 61 2c  5f 62 2c 5f 75 2c 5f 76  |.. . _a,_b,_u,_v|
00003170  0d 10 22 21 20 f2 47 65  74 46 72 61 6d 65 43 6f  |.."! .GetFrameCo|
00003180  6f 72 64 73 28 5f 61 2c  5f 62 2c 5f 75 2c 5f 76  |ords(_a,_b,_u,_v|
00003190  29 0d 10 2c 26 20 f2 46  72 61 6d 65 43 6f 6f 72  |)..,& .FrameCoor|
000031a0  64 73 28 5f 61 2d 41 2c  5f 62 2d 41 2c 5f 75 2d  |ds(_a-A,_b-A,_u-|
000031b0  42 2c 5f 76 2d 42 29 0d  10 36 05 e1 0d 10 40 04  |B,_v-B)..6....@.|
000031c0  0d 10 4a 04 0d 10 54 19  f4 20 2d 2d 2d 2d 2d 2d  |..J...T.. ------|
000031d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 10 5e  |-------------..^|
000031e0  05 f4 0d 10 68 18 f4 20  31 2e 36 20 50 72 65 76  |....h.. 1.6 Prev|
000031f0  69 65 77 20 53 63 72 65  65 6e 0d 10 72 05 f4 0d  |iew Screen..r...|
00003200  10 7c 19 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.|.. -----------|
00003210  2d 2d 2d 2d 2d 2d 2d 2d  0d 10 86 04 0d 10 90 16  |--------........|
00003220  dd 20 a4 44 72 61 77 44  78 3d 21 28 93 2b 31 31  |. .DrawDx=!(.+11|
00003230  32 29 0d 10 9a 04 0d 10  a4 16 dd 20 a4 44 72 61  |2)......... .Dra|
00003240  77 44 79 3d 21 28 93 2b  31 31 36 29 0d 10 ae 04  |wDy=!(.+116)....|
00003250  0d 10 b8 15 dd 20 a4 44  72 61 77 54 72 61 6e 73  |..... .DrawTrans|
00003260  3d 93 2b 39 36 0d 10 c2  04 0d 10 cc 0e dd 20 f2  |=.+96......... .|
00003270  50 72 65 76 69 65 77 0d  10 d6 28 20 f4 20 2d 2d  |Preview...( . --|
00003280  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00003290  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0d  |---------------.|
000032a0  10 e0 06 20 f4 0d 10 ea  2a 20 f4 20 44 72 61 77  |... ....* . Draw|
000032b0  73 20 61 6e 79 20 70 61  74 68 73 20 61 6c 73 6f  |s any paths also|
000032c0  20 74 6f 20 73 63 72 65  65 6e 20 77 69 74 68 0d  | to screen with.|
000032d0  10 f4 19 20 f4 20 61 20  77 68 69 74 65 20 62 61  |... . a white ba|
000032e0  63 6b 67 72 6f 75 6e 64  0d 10 fe 06 20 f4 0d 11  |ckground.... ...|
000032f0  08 28 20 f4 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.( . -----------|
00003300  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00003310  2d 2d 2d 2d 2d 2d 0d 11  12 0d 20 ef 20 32 36 20  |------.... . 26 |
00003320  3a 20 da 0d 11 1c 26 20  ea 20 5f 68 2c 5f 6d 61  |: ....& . _h,_ma|
00003330  78 25 2c 5f 78 25 2c 5f  79 25 2c 5f 49 25 2c 5f  |x%,_x%,_y%,_I%,_|
00003340  66 6f 6e 74 25 2c 5f 6e  24 0d 11 26 24 20 f2 44  |font%,_n$..&$ .D|
00003350  72 61 77 50 72 65 76 69  65 77 42 6f 72 64 65 72  |rawPreviewBorder|
00003360  73 28 33 30 30 30 2c 31  32 2c 38 29 20 0d 11 30  |s(3000,12,8) ..0|
00003370  1e 20 f2 44 72 61 77 50  72 65 76 69 65 77 48 53  |. .DrawPreviewHS|
00003380  63 61 6c 65 73 28 33 30  30 30 29 0d 11 3a 1e 20  |cales(3000)..:. |
00003390  f2 44 72 61 77 50 72 65  76 69 65 77 56 53 63 61  |.DrawPreviewVSca|
000033a0  6c 65 73 28 33 30 30 30  29 0d 11 44 1c 20 f2 44  |les(3000)..D. .D|
000033b0  72 61 77 50 72 65 76 69  65 77 54 69 74 6c 65 28  |rawPreviewTitle(|
000033c0  31 34 2c 37 29 0d 11 4e  05 e1 0d 11 58 04 0d 11  |14,7)..N....X...|
000033d0  62 2e dd 20 f2 44 72 61  77 50 72 65 76 69 65 77  |b.. .DrawPreview|
000033e0  42 6f 72 64 65 72 73 28  6d 61 78 25 2c 70 6f 69  |Borders(max%,poi|
000033f0  6e 74 25 2c 63 6f 6c 6f  75 72 25 29 0d 11 6c 12  |nt%,colour%)..l.|
00003400  f4 20 44 72 61 77 20 42  6f 72 64 65 72 73 0d 11  |. Draw Borders..|
00003410  76 14 70 6f 69 6e 74 25  3d 70 6f 69 6e 74 25 2a  |v.point%=point%*|
00003420  31 36 0d 11 80 2e c8 99  20 22 43 6f 6c 6f 75 72  |16...... "Colour|
00003430  54 72 61 6e 73 5f 53 65  74 47 43 4f 4c 22 2c a4  |Trans_SetGCOL",.|
00003440  44 65 73 6b 74 6f 70 43  6f 6c 6f 75 72 28 32 29  |DesktopColour(2)|
00003450  0d 11 8a 1d c8 93 20 c8  90 20 30 2c 30 2c a4 44  |...... .. 0,0,.D|
00003460  72 61 77 44 79 3e 3e 38  2c 6d 61 78 25 0d 11 94  |rawDy>>8,max%...|
00003470  1d c8 93 20 c8 90 20 30  2c 30 2c 6d 61 78 25 2c  |... .. 0,0,max%,|
00003480  a4 44 72 61 77 44 78 3e  3e 38 0d 11 9e 2e c8 99  |.DrawDx>>8......|
00003490  20 22 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 53 65  | "ColourTrans_Se|
000034a0  74 47 43 4f 4c 22 2c a4  44 65 73 6b 74 6f 70 43  |tGCOL",.DesktopC|
000034b0  6f 6c 6f 75 72 28 37 29  0d 11 a8 2b 86 20 a4 44  |olour(7)...+. .D|
000034c0  72 61 77 44 78 3e 3e 38  2c a4 44 72 61 77 44 79  |rawDx>>8,.DrawDy|
000034d0  3e 3e 38 2c 6d 61 78 25  2c a4 44 72 61 77 44 79  |>>8,max%,.DrawDy|
000034e0  3e 3e 38 0d 11 b2 2b 86  20 a4 44 72 61 77 44 78  |>>8...+. .DrawDx|
000034f0  3e 3e 38 2c a4 44 72 61  77 44 79 3e 3e 38 2c a4  |>>8,.DrawDy>>8,.|
00003500  44 72 61 77 44 78 3e 3e  38 2c 6d 61 78 25 0d 11  |DrawDx>>8,max%..|
00003510  bc 39 c8 99 20 22 46 6f  6e 74 5f 46 69 6e 64 46  |.9.. "Font_FindF|
00003520  6f 6e 74 22 2c 2c 22 54  72 69 6e 69 74 79 2e 4d  |ont",,"Trinity.M|
00003530  65 64 69 75 6d 22 2b bd  30 2c 70 6f 69 6e 74 25  |edium"+.0,point%|
00003540  2c 70 6f 69 6e 74 25 0d  11 c6 51 c8 99 20 22 43  |,point%...Q.. "C|
00003550  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 46 6f  |olourTrans_SetFo|
00003560  6e 74 43 6f 6c 6f 75 72  73 22 2c 2c a4 44 65 73  |ntColours",,.Des|
00003570  6b 74 6f 70 43 6f 6c 6f  75 72 28 32 29 2c a4 44  |ktopColour(2),.D|
00003580  65 73 6b 74 6f 70 43 6f  6c 6f 75 72 28 63 6f 6c  |esktopColour(col|
00003590  6f 75 72 25 29 2c 31 34  0d 11 d0 05 e1 0d 11 da  |our%),14........|
000035a0  04 0d 11 e4 27 dd 20 f2  44 72 61 77 50 72 65 76  |....'. .DrawPrev|
000035b0  69 65 77 54 69 74 6c 65  28 70 6f 69 6e 74 25 2c  |iewTitle(point%,|
000035c0  63 6f 6c 6f 75 72 25 29  0d 11 ee 10 ea 20 5f 6e  |colour%)..... _n|
000035d0  24 2c 5f 66 24 2c 69 25  0d 11 f8 30 5f 66 24 3d  |$,_f$,i%...0_f$=|
000035e0  a4 52 65 61 64 53 79 73  74 65 6d 56 61 72 69 61  |.ReadSystemVaria|
000035f0  62 6c 65 28 22 44 72 61  77 42 61 73 69 63 24 4f  |ble("DrawBasic$O|
00003600  70 74 69 6f 6e 73 22 29  0d 12 02 2f 69 25 3d a7  |ptions").../i%=.|
00003610  5f 66 24 2c 22 3a 22 29  20 3a 20 e7 20 69 25 3c  |_f$,":") : . i%<|
00003620  3e 30 20 8c 20 5f 66 24  3d c2 5f 66 24 2c a9 20  |>0 . _f$=._f$,. |
00003630  5f 66 24 2d 69 25 29 0d  12 0c 14 70 6f 69 6e 74  |_f$-i%)....point|
00003640  25 3d 70 6f 69 6e 74 25  2a 31 36 0d 12 16 20 5f  |%=point%*16... _|
00003650  6e 24 3d 22 44 72 61 77  42 61 73 69 63 20 22 2b  |n$="DrawBasic "+|
00003660  a4 4c 65 61 66 28 5f 66  24 29 20 0d 12 20 3a e7  |.Leaf(_f$) .. :.|
00003670  20 a4 55 6e 69 74 73 3d  32 35 36 2a 31 38 30 20  | .Units=256*180 |
00003680  8c 20 20 5f 6e 24 2b 3d  22 20 28 49 6e 63 68 65  |.  _n$+=" (Inche|
00003690  73 29 22 20 20 8b 20 20  5f 6e 24 2b 3d 22 20 28  |s)"  .  _n$+=" (|
000036a0  43 6d 73 29 22 0d 12 2a  39 c8 99 20 22 46 6f 6e  |Cms)"..*9.. "Fon|
000036b0  74 5f 46 69 6e 64 46 6f  6e 74 22 2c 2c 22 54 72  |t_FindFont",,"Tr|
000036c0  69 6e 69 74 79 2e 4d 65  64 69 75 6d 22 2b bd 30  |inity.Medium"+.0|
000036d0  2c 70 6f 69 6e 74 25 2c  70 6f 69 6e 74 25 0d 12  |,point%,point%..|
000036e0  34 51 c8 99 20 22 43 6f  6c 6f 75 72 54 72 61 6e  |4Q.. "ColourTran|
000036f0  73 5f 53 65 74 46 6f 6e  74 43 6f 6c 6f 75 72 73  |s_SetFontColours|
00003700  22 2c 2c a4 44 65 73 6b  74 6f 70 43 6f 6c 6f 75  |",,.DesktopColou|
00003710  72 28 32 29 2c a4 44 65  73 6b 74 6f 70 43 6f 6c  |r(2),.DesktopCol|
00003720  6f 75 72 28 63 6f 6c 6f  75 72 25 29 2c 31 34 0d  |our(colour%),14.|
00003730  12 3e 25 c8 99 20 22 46  6f 6e 74 5f 50 61 69 6e  |.>%.. "Font_Pain|
00003740  74 22 2c 2c 5f 6e 24 2c  25 31 30 30 30 30 2c 31  |t",,_n$,%10000,1|
00003750  36 2c 31 32 0d 12 48 08  e1 20 20 20 0d 12 52 04  |6,12..H..   ..R.|
00003760  0d 12 5c 24 dd 20 a4 52  65 61 64 53 79 73 74 65  |..\$. .ReadSyste|
00003770  6d 56 61 72 69 61 62 6c  65 28 76 61 72 69 61 62  |mVariable(variab|
00003780  6c 65 24 29 0d 12 66 05  f4 0d 12 70 22 f4 20 2d  |le$)..f....p". -|
00003790  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000037a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 12 7a 22 f4  |-----------..z".|
000037b0  20 20 52 65 61 64 73 20  74 68 65 20 76 61 6c 75  |  Reads the valu|
000037c0  65 20 6f 66 20 61 20 73  74 72 69 6e 67 0d 12 84  |e of a string...|
000037d0  16 f4 20 20 73 79 73 74  65 6d 20 76 61 72 69 61  |..  system varia|
000037e0  62 6c 65 0d 12 8e 22 f4  20 2d 2d 2d 2d 2d 2d 2d  |ble...". -------|
000037f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00003800  2d 2d 2d 2d 2d 0d 12 98  05 f4 0d 12 a2 16 ea 20  |-----.......... |
00003810  5f 6c 65 6e 25 2c 5f 76  61 72 69 61 62 6c 65 25  |_len%,_variable%|
00003820  0d 12 ac 14 de 20 5f 76  61 72 69 61 62 6c 65 25  |..... _variable%|
00003830  20 32 35 36 0d 12 b6 3c  c8 99 20 22 4f 53 5f 52  | 256...<.. "OS_R|
00003840  65 61 64 56 61 72 56 61  6c 22 2c 76 61 72 69 61  |eadVarVal",varia|
00003850  62 6c 65 24 2c 5f 76 61  72 69 61 62 6c 65 25 2c  |ble$,_variable%,|
00003860  32 35 36 2c 2c 33 20 b8  20 2c 2c 5f 6c 65 6e 25  |256,,3 . ,,_len%|
00003870  0d 12 c0 17 5f 76 61 72  69 61 62 6c 65 25 3f 5f  |...._variable%?_|
00003880  6c 65 6e 25 3d 31 33 0d  12 ca 10 3d 24 5f 76 61  |len%=13....=$_va|
00003890  72 69 61 62 6c 65 25 0d  12 d4 04 0d 12 de 0f dd  |riable%.........|
000038a0  20 a4 4c 65 61 66 28 78  24 29 0d 12 e8 18 ea 20  | .Leaf(x$)..... |
000038b0  5f 69 25 20 3a 20 5f 69  25 3d a7 78 24 2c 22 2e  |_i% : _i%=.x$,".|
000038c0  22 29 0d 12 f2 27 e7 20  5f 69 25 3d 30 20 8c 3d  |")...'. _i%=0 .=|
000038d0  78 24 20 8b 3d a4 4c 65  61 66 28 c2 78 24 2c a9  |x$ .=.Leaf(.x$,.|
000038e0  20 78 24 2d 5f 69 25 29  29 0d 12 fc 04 0d 13 06  | x$-_i%)).......|
000038f0  1f dd 20 f2 44 72 61 77  50 72 65 76 69 65 77 48  |.. .DrawPreviewH|
00003900  53 63 61 6c 65 73 28 6d  61 78 25 29 0d 13 10 11  |Scales(max%)....|
00003910  f4 20 44 72 61 77 20 53  63 61 6c 65 73 0d 13 1a  |. Draw Scales...|
00003920  1a ea 20 5f 68 2c 5f 78  25 2c 5f 49 25 2c 5f 64  |.. _h,_x%,_I%,_d|
00003930  78 25 2c 5f 64 79 25 0d  13 24 3e 5f 49 25 3d 30  |x%,_dy%..$>_I%=0|
00003940  20 20 3a 20 5f 68 25 3d  a4 55 6e 69 74 73 3e 3e  |  : _h%=.Units>>|
00003950  38 20 3a 5f 64 78 25 3d  a4 44 72 61 77 44 78 3e  |8 :_dx%=.DrawDx>|
00003960  3e 38 20 3a 20 20 5f 64  79 25 3d a4 44 72 61 77  |>8 :  _dy%=.Draw|
00003970  44 79 3e 3e 38 0d 13 2e  22 f5 20 3a 20 5f 78 25  |Dy>>8...". : _x%|
00003980  3d 5f 64 78 25 2b 28 a4  44 72 61 77 5f 59 28 5f  |=_dx%+(.Draw_Y(_|
00003990  49 25 29 3e 3e 38 29 0d  13 38 1c 20 86 20 5f 78  |I%)>>8)..8. . _x|
000039a0  25 2c 5f 64 79 25 2c 5f  78 25 2c 33 2a 5f 64 79  |%,_dy%,_x%,3*_dy|
000039b0  25 2f 34 0d 13 42 28 20  86 20 5f 78 25 2b 5f 68  |%/4..B( . _x%+_h|
000039c0  25 2f 32 2c 5f 64 79 25  2c 5f 78 25 2b 5f 68 25  |%/2,_dy%,_x%+_h%|
000039d0  2f 32 2c 37 2a 5f 64 79  25 2f 38 0d 13 4c 30 20  |/2,7*_dy%/8..L0 |
000039e0  c8 99 20 22 46 6f 6e 74  5f 50 61 69 6e 74 22 2c  |.. "Font_Paint",|
000039f0  2c c3 28 5f 49 25 29 2c  25 31 30 30 30 30 2c 5f  |,.(_I%),%10000,_|
00003a00  78 25 2d 38 2c 5f 64 79  25 2f 32 0d 13 56 0b 20  |x%-8,_dy%/2..V. |
00003a10  5f 49 25 2b 3d 31 0d 13  60 0f 20 fd 20 5f 78 25  |_I%+=1..`. . _x%|
00003a20  3e 6d 61 78 25 0d 13 6a  05 e1 0d 13 74 04 0d 13  |>max%..j....t...|
00003a30  7e 1f dd 20 f2 44 72 61  77 50 72 65 76 69 65 77  |~.. .DrawPreview|
00003a40  56 53 63 61 6c 65 73 28  6d 61 78 25 29 0d 13 88  |VScales(max%)...|
00003a50  1a ea 20 5f 68 2c 5f 79  25 2c 5f 49 25 2c 5f 64  |.. _h,_y%,_I%,_d|
00003a60  78 25 2c 5f 64 79 25 0d  13 92 3d 5f 49 25 3d 30  |x%,_dy%...=_I%=0|
00003a70  20 3a 20 5f 68 25 3d a4  55 6e 69 74 73 3e 3e 38  | : _h%=.Units>>8|
00003a80  20 3a 5f 64 78 25 3d a4  44 72 61 77 44 78 3e 3e  | :_dx%=.DrawDx>>|
00003a90  38 20 3a 20 20 5f 64 79  25 3d a4 44 72 61 77 44  |8 :  _dy%=.DrawD|
00003aa0  79 3e 3e 38 0d 13 9c 22  f5 20 3a 20 5f 79 25 3d  |y>>8...". : _y%=|
00003ab0  5f 64 79 25 2b 28 a4 44  72 61 77 5f 58 28 5f 49  |_dy%+(.Draw_X(_I|
00003ac0  25 29 3e 3e 38 29 0d 13  a6 1d 20 86 20 20 5f 64  |%)>>8).... .  _d|
00003ad0  78 25 2c 5f 79 25 2c 33  2a 5f 64 78 25 2f 34 2c  |x%,_y%,3*_dx%/4,|
00003ae0  5f 79 25 0d 13 b0 29 20  86 20 20 5f 64 78 25 2c  |_y%...) .  _dx%,|
00003af0  5f 79 25 2b 5f 68 25 2f  32 2c 37 2a 5f 64 78 25  |_y%+_h%/2,7*_dx%|
00003b00  2f 38 2c 5f 79 25 2b 5f  68 25 2f 32 0d 13 ba 0e  |/8,_y%+_h%/2....|
00003b10  20 e7 20 5f 49 25 3e 39  20 8c 0d 13 c4 2e 20 20  | . _I%>9 .....  |
00003b20  c8 99 20 22 46 6f 6e 74  5f 50 61 69 6e 74 22 2c  |.. "Font_Paint",|
00003b30  2c c3 28 5f 49 25 29 2c  25 31 30 30 30 30 2c 33  |,.(_I%),%10000,3|
00003b40  36 2c 5f 79 25 2d 31 30  0d 13 ce 06 20 cc 0d 13  |6,_y%-10.... ...|
00003b50  d8 2e 20 20 c8 99 20 22  46 6f 6e 74 5f 50 61 69  |..  .. "Font_Pai|
00003b60  6e 74 22 2c 2c c3 28 5f  49 25 29 2c 25 31 30 30  |nt",,.(_I%),%100|
00003b70  30 30 2c 34 38 2c 5f 79  25 2d 31 30 0d 13 e2 06  |00,48,_y%-10....|
00003b80  20 cd 0d 13 ec 0b 20 5f  49 25 2b 3d 31 0d 13 f6  | ..... _I%+=1...|
00003b90  0f 20 fd 20 5f 79 25 3e  6d 61 78 25 0d 14 00 05  |. . _y%>max%....|
00003ba0  e1 0d ff                                          |...|
00003ba3