Home » Archimedes archive » Archimedes World » AW-1995-04-Disc1.adf » Disk1Apr95 » !AWApr95/Goodies/Draw/!DrawBasic/Library/Logo/Example_1/Linked

!AWApr95/Goodies/Draw/!DrawBasic/Library/Logo/Example_1/Linked

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/Library/Logo/Example_1/Linked
Read OK:
File size: 3248 bytes
Load address: 0000
Exec address: 0000
File contents
    1ON ERROR ON ERROR OFF :CHAIN "Throwback:Error"
    2HIMEM =FNFreeSlot
    3PROCBeginDrawing
    4PROCCentimetres
    5circle=FNCircle(3,3,2)
    6PROCQuit
    7DEF FNFreeSlot
    8LOCAL Buffer%,Free_Size%
    9SYS "Wimp_SlotSize",-1,-1 TO ,,Free_Size%
   10IF Free_Size%<32 THEN
   11ON ERROR OFF
   12SYS "Wimp_CommandWindow",-1
   13ERROR EXT 0,"DrawBasic needs a non-empty 'Free' slot to save Draw file output"
   14ENDIF
   15IF Free_Size%>1024*1024*4 THENFree_Size%=1024*1024*4
   16Buffer%=HIMEM
   17END=Buffer%+Free_Size%
   18!Buffer%=Buffer%+8
   19Buffer%!4=Buffer%+Free_Size%-4 :!(Buffer%!4)=0
   20=Buffer%
   21DEF PROCDraw_AddWord(x%)
   22IF (!HIMEM)>=(!(HIMEM+4)) THENERROR 0,"Out of memory"
   23!(!HIMEM)=x%  
   24!HIMEM+=4     
   25ENDPROC
   26DEF PROCDraw_AddFloat(x)
   27IF (!HIMEM)+4>=(!(HIMEM+4)) THENERROR 0,"Out of memory"
   28|(!HIMEM)=x   
   29!HIMEM+=8     
   30ENDPROC
   31DEF PROCDraw_AddString(pointer%,x$)
   32LOCAL _a%,_b%
   33_a%=LEN x$
   34IF (!pointer%+_a%)>=(!(HIMEM+4)) THENERROR 0,"Out of memory"
   35IF (_a%MOD4)<>0 THENx$+=STRING$(4-(_a%MOD4),CHR$0) :_a%=LEN x$
   36_b%=pointer%!_a% :$(!pointer%)=x$
   37!pointer%+=_a%   :pointer%!_a%=_b%
   38ENDPROC
   39DEF PROCDraw_AddCoords(x,y)
   40PROCDraw_AddWord(FNDraw_X(x))
   41PROCDraw_AddWord(FNDraw_Y(y))
   42ENDPROC
   43DEF PROCMoveMemory(address%,n_words%)
   44LOCAL _i%,_n% :_n%=4*n_words% 
   45IF !HIMEM+_n%>=(!(HIMEM+4)) THENERROR 0,"Not enough memory!"
   46IF FNCurrentPath>=address% THENPROCCurrentPath(FNCurrentPath+_n%)
   47IF FNCurrentSubpath>=address% THENPROCCurrentSubpath(FNCurrentSubpath+_n%)
   48_i%=!(HIMEM+4)
   49WHILE !_i%>=address%
   50!_i%+=_n% :_i%+=4 
   51ENDWHILE
   52_i%=!HIMEM
   53WHILE _i%>address% :_i%-=4 :_i%!_n%=!_i% :ENDWHILE
   54!HIMEM+=_n% 
   55ENDPROC
   56DEF PROCBeginDrawing
   57PROCDraw_SetUp
   58PROCDraw_SetFileHeader
   59PROCDraw_SetFontTable
   60ENDPROC
   61DEF PROCDraw_SetUp
   62LOCAL _scale%  :_scale%=INT(180*256/2.54+.5)
   63PROCDraw_AddWord(0)                      
   64PROCDraw_AddWord(0)                      
   65PROCDraw_AddWord(0)                      
   66PROCDraw_AddWord(12*_scale%)             
   67PROCDraw_AddWord(12*_scale%)             
   68PROCDraw_AddFloat(0)                     
   69PROCDraw_AddFloat(0)                     
   70PROCDraw_AddFloat(12)                    
   71PROCDraw_AddFloat(12)                    
   72PROCDraw_AddWord(_scale%)                
   73PROCDraw_AddWord(0)                      
   74PROCDraw_AddWord(0)                      
   75PROCDraw_AddWord(0)                      
   76PROCDraw_AddWord(0)                      
   77PROCDraw_AddWord(12)                     
   78PROCDraw_AddWord(14*640)                 
   79PROCDraw_AddWord(0)                      
   80PROCDraw_AddWord(1)                      
   81PROCDraw_AddWord(1<<16)                  
   82PROCDraw_AddWord(0)                      
   83PROCDraw_AddWord(0)                      
   84PROCDraw_AddWord(1<<16)                  
   85PROCDraw_AddWord(256*90)                 
   86PROCDraw_AddWord(256*90)                 
   87PROCDraw_AddWord(_scale%)                
   88PROCDraw_AddWord(1<<16)                  
   89PROCDraw_AddWord((3<<16)+3)              
   90PROCDraw_AddWord(0)                      
   91PROCDraw_AddWord(1)                      
   92PROCDraw_AddWord(0)                      
   93PROCDraw_AddWord(1)                      
   94PROCDraw_AddWord(0)                      
   95PROCDraw_AddWord(10)                     
   96PROCDraw_AddWord(7)                      
   97PROCDraw_AddWord(10)                     
   98PROCDraw_AddWord(7)                      
   99PROCDraw_AddWord(1<<16)                  
  100PROCDraw_AddWord(1<<15)                  
  101PROCDraw_AddWord(1<<16)                  
  102PROCDraw_AddWord(1<<15)                  
  103PROCDraw_AddWord(1<<16)                  
  104PROCDraw_AddWord(0)                      
  105PROCDraw_AddWord(0)                      
  106PROCDraw_AddWord(1<<16)                  
  107PROCDraw_AddWord(0)                      
  108PROCDraw_AddWord(0)                      
  109PROCDraw_AddWord(10000)                  
  110PROCDraw_AddWord(100)                    
  111PROCDraw_AddWord(300)                    
  112PROCDraw_AddWord(4)                      
  113PROCDraw_AddWord(0)                      
  114PROCDraw_AddWord(-1)                     
  115PROCDraw_AddWord(0)                      
  116PROCDraw_AddWord(0)                      
  117PROCDraw_AddWord(0)                      
  118PROCDraw_AddWord(0)                      
  119|(HIMEM+240)=5/6
  120!(HIMEM+8)=!HIMEM                        
  121ENDPROC
  122DEF PROCDraw_SetFileHeader
  123PROCDraw_AddString(HIMEM,"Draw")         
  124PROCDraw_AddWord(201)                    
  125PROCDraw_AddWord(0)                      
  126PROCDraw_AddString(HIMEM,"DrawBasic   ") 
  127PROCDraw_AddWord(0)                      
  128PROCDraw_AddWord(0)                      
  129PROCDraw_AddWord(256*180*12*3*800)       
  130PROCDraw_AddWord(256*180*12*3*800)       
  131ENDPROC
  132DEF PROCDraw_SetFontTable
  133LOCAL _fonts% :_fonts%=!(HIMEM+8)+40
  134PROCDraw_AddWord(0)                  
  135PROCDraw_AddWord(0)                  
  136PROCDraw_AddString(HIMEM,CHR$1+"Trinity.Medium"+CHR$0)
  137!(_fonts%+4)=!HIMEM-_fonts%          
  138ENDPROC
  139DEF PROCQuit
  140PROCPathEnd
  141OSCLI("Save DrawBasic:Draw.File "+STR$~(!(HIMEM+8))+" "+STR$~(!HIMEM))
  142*SetType DrawBasic:Draw.File DrawFile
  143*Filer_Run DrawBasic:Draw.File
  144END
  145DEF FNUnits=!(HIMEM+60)
  146DEF PROCCentimetres
  147!(HIMEM+60)=INT(256*180/2.54+.5)
  148PROCFrameSize(0,0,12,12)
  149PROCFrameCoords(0,12,0,12)
  150PROCPreview
  151ENDPROC
  152DEF FNDrawUnits(a)=INT(FNUnits*a+.5)
  153DEF PROCFrameSize(a,b,width,height)
  154PROCFrameCoords(0,width,0,height)
  155!(HIMEM+20)=FNDrawUnits(width)  
  156!(HIMEM+24)=FNDrawUnits(height) 
  157!(HIMEM+12)=FNDrawUnits(a)      
  158!(HIMEM+16)=FNDrawUnits(b)      
  159ENDPROC
  160DEF FNFrame_x=!(HIMEM+12)
  161DEF FNFrame_y=!(HIMEM+16)
  162DEF FNFrame_Width=!(HIMEM+20)
  163DEF FNFrame_Height=!(HIMEM+24)
  164DEF FNFRAME_x=|(HIMEM+28)
  165DEF FNFRAME_y=|(HIMEM+36)
  166DEF FNFRAME_Width=|(HIMEM+44)
  167DEF FNFRAME_Height=|(HIMEM+52)
  168DEF FNX_Scale=FNFrame_Width/FNFRAME_Width
  169DEF FNY_Scale=FNFrame_Height/FNFRAME_Height
  170DEF FNDraw_X(x)=INT(FNFrame_x+(x-FNFRAME_x)*FNX_Scale+.5)
  171DEF FNDraw_Y(y)=INT(FNFrame_y+(y-FNFRAME_y)*FNY_Scale+.5)
  172DEF PROCFrameCoords(a,b,u,v)
  173LOCAL _frame%
  174_frame%=HIMEM+28
  175IF a>=b THENERROR 0, STR$ a+" < x < "+STR$ b+" is a bad x range "
  176IF u>=v THENERROR 0, STR$ u+" < y < "+STR$ v+" is a bad y range "
  177|(_frame%)=a      :|(_frame%+8)=u
  178|(_frame%+16)=b-a :|(_frame%+24)=v-u
  179ENDPROC
  180DEF FNDrawDx=!(HIMEM+112)
  181DEF FNDrawDy=!(HIMEM+116)
  182DEF FNDrawTrans=HIMEM+96
  183DEF PROCPreview
  184VDU 26 :CLG
  185LOCAL _h,_max%,_x%,_y%,_I%,_font%,_n$
  186PROCDrawPreviewBorders(3000,12,8) 
  187PROCDrawPreviewHScales(3000)
  188PROCDrawPreviewVScales(3000)
  189PROCDrawPreviewTitle(14,7)
  190ENDPROC
  191DEF PROCDrawPreviewBorders(max%,point%,colour%)
  192point%=point%*16
  193SYS "ColourTrans_SetGCOL",FNDesktopColour(2)
  194RECTANGLE FILL 0,0,FNDrawDy>>8,max%
  195RECTANGLE FILL 0,0,max%,FNDrawDx>>8
  196SYS "ColourTrans_SetGCOL",FNDesktopColour(7)
  197LINE FNDrawDx>>8,FNDrawDy>>8,max%,FNDrawDy>>8
  198LINE FNDrawDx>>8,FNDrawDy>>8,FNDrawDx>>8,max%
  199SYS "Font_FindFont",,"Trinity.Medium"+CHR$0,point%,point%
  200SYS "ColourTrans_SetFontColours",,FNDesktopColour(2),FNDesktopColour(colour%),14
  201ENDPROC
  202DEF PROCDrawPreviewTitle(point%,colour%)
  203LOCAL _n$,_f$,i%
  204_f$=FNReadSystemVariable("DrawBasic$Options")
  205i%=INSTR(_f$,":") :IF i%<>0 THEN_f$=RIGHT$(_f$,LEN _f$-i%)
  206point%=point%*16
  207_n$="DrawBasic "+FNLeaf(_f$) 
  208IF FNUnits=256*180 THEN_n$+=" (Inches)"  ELSE_n$+=" (Cms)"
  209SYS "Font_FindFont",,"Trinity.Medium"+CHR$0,point%,point%
  210SYS "ColourTrans_SetFontColours",,FNDesktopColour(2),FNDesktopColour(colour%),14
  211SYS "Font_Paint",,_n$,%10000,16,12
  212ENDPROC   
  213DEF FNReadSystemVariable(variable$)
  214LOCAL _len%,_variable%
  215DIM _variable% 256
  216SYS "OS_ReadVarVal",variable$,_variable%,256,,3 TO ,,_len%
  217_variable%?_len%=13
  218=$_variable%
  219DEF FNLeaf(x$)
  220LOCAL _i% :_i%=INSTR(x$,".")
  221IF _i%=0 THEN=x$ ELSE=FNLeaf(RIGHT$(x$,LEN x$-_i%))
  222DEF PROCDrawPreviewHScales(max%)
  223LOCAL _h,_x%,_I%,_dx%,_dy%
  224_I%=0  :_h%=FNUnits>>8 :_dx%=FNDrawDx>>8 :_dy%=FNDrawDy>>8
  225REPEAT :_x%=_dx%+(FNDraw_Y(_I%)>>8)
  226LINE _x%,_dy%,_x%,3*_dy%/4
  227LINE _x%+_h%/2,_dy%,_x%+_h%/2,7*_dy%/8
  228SYS "Font_Paint",,STR$(_I%),%10000,_x%-8,_dy%/2
  229_I%+=1
  230UNTIL _x%>max%
  231ENDPROC
  232DEF PROCDrawPreviewVScales(max%)
  233LOCAL _h,_y%,_I%,_dx%,_dy%
  234_I%=0 :_h%=FNUnits>>8 :_dx%=FNDrawDx>>8 :_dy%=FNDrawDy>>8
  235REPEAT :_y%=_dy%+(FNDraw_X(_I%)>>8)
  236LINE  _dx%,_y%,3*_dx%/4,_y%
  237LINE  _dx%,_y%+_h%/2,7*_dx%/8,_y%+_h%/2
  238IF _I%>9 THEN
  239SYS "Font_Paint",,STR$(_I%),%10000,36,_y%-10
  240ELSE
  241SYS "Font_Paint",,STR$(_I%),%10000,48,_y%-10
  242ENDIF
  243_I%+=1
  244UNTIL _y%>max%
  245ENDPROC
  246DEF FNCurrentPath=!(HIMEM+64)
  247DEF PROCCurrentPath(path%)
  248!(HIMEM+64)=path%
  249ENDPROC
  250DEF FNCurrentSubpath=!(HIMEM+68)
  251DEF PROCCurrentSubpath(path%)
  252!(HIMEM+68)=path%
  253ENDPROC
  254DEF PROCPathBegin(RETURN path)
  255IF FNCurrentPath<>0 THENPROCPathEnd
  256PROCCurrentPath(!HIMEM)
  257IF FNCurrentPath>=!(HIMEM+4) THEN
  258ERROR 0,"Out of memory. Increase the 'Free' slot."
  259ELSE
  260!(HIMEM+4)-=4
  261path=!(HIMEM+4)
  262!path=FNCurrentPath
  263PROCDraw_PathHeader
  264IF FNDash<>0 THENPROCDash@(path,FNDash)
  265ENDIF
  266ENDPROC
  267DEF PROCDraw_PathHeader
  268PROCDraw_AddWord(0)
  269PROCDraw_AddWord(44)            
  270PROCDraw_AddWord(-1<<30)        
  271PROCDraw_AddWord(-1<<30)        
  272PROCDraw_AddWord(1<<30)         
  273PROCDraw_AddWord(1<<30)         
  274PROCDraw_AddWord(FNFillColour)  
  275PROCDraw_AddWord(FNLineColour)  
  276PROCDraw_AddWord(FNLineWidth)   
  277PROCDraw_AddWord(FNStyle)       
  278ENDPROC
  279DEF PROCPathEnd
  280IF FNCurrentPath=0 ENDPROC
  281IF FNCurrentSubpath=0 OR !FNCurrentPath=0 THEN
  282!HIMEM=FNCurrentPath
  283PROCCurrentPath(0)                         :PROCCurrentSubpath(0)   
  284ELSE   
  285PROCDraw_AddWord(0)                        
  286!(FNCurrentPath+4)=(!HIMEM)-FNCurrentPath  
  287!(FNCurrentPath)=2                         
  288PROCDraw_RenderPath(FNCurrentPath,FNDrawTrans)
  289PROCCurrentPath(0)                         :PROCCurrentSubpath(0)    
  290ENDIF
  291ENDPROC
  292DEF FNDrawTrans=HIMEM+96
  293DEF PROCMove(x,y)
  294LOCAL _path
  295IF FNCurrentPath=0 THENPROCPathBegin(_path)
  296PROCDraw_AddWord(2)
  297PROCCurrentSubpath(!HIMEM)
  298PROCDraw_AddCoords(x,y)
  299MOVE (!(HIMEM+112)+FNDraw_X(x))>>8,(!(HIMEM+116)+FNDraw_Y(y))>>8
  300ENDPROC
  301DEF PROCBezier(a,b,c,d,x,y)
  302LOCAL _path%,_store% :_path%=!(HIMEM+4)
  303IF FNCurrentPath=0    ERROR EXT 1,"Can't Draw Bezier if No PathBegun"
  304IF FNCurrentSubpath=0 ERROR EXT 0,"Subpath must start with Move before Bezier"
  305_path%=!HIMEM :_path%-=12 :_store%=!_path% :!_path%=2
  306PROCDraw_AddWord(6)
  307PROCDraw_AddCoords(a,b)
  308PROCDraw_AddCoords(c,d)
  309PROCDraw_AddCoords(x,y)
  310PROCDraw_AddWord(0)
  311!HIMEM-=4
  312SYS "Draw_Stroke",_path%,,FNDrawTrans
  313!_path%=_store%
  314!(FNCurrentPath)=TRUE
  315MOVE (!(HIMEM+112)+FNDraw_X(x))>>8,(!(HIMEM+116)+FNDraw_Y(y))>>8
  316ENDPROC
  317DEF PROCCloseWithLine
  318IF  FNCurrentPath<>0 AND FNCurrentPath<>0 THEN
  319LOCAL _x%,_y%
  320_x%=!FNCurrentSubpath:_y%=!(FNCurrentSubpath+4)
  321DRAW (!(HIMEM+112)+_x%)>>8,(!(HIMEM+116)+_y%)>>8
  322PROCDraw_AddWord(5)
  323ENDIF
  324ENDPROC
  325DEF PROC@Circle(x,y,radius)
  326LOCAL _a :_a=radius*4*(SQR2-1)/3
  327PROCMove(x,y+radius)
  328PROCBezier(x+_a,y+radius,x+radius,y+_a,x+radius,y)
  329PROCBezier(x+radius,y-_a,x+_a,y-radius,x,y-radius)
  330PROCBezier(x-_a,y-radius,x-radius,y-_a,x-radius,y)
  331PROCBezier(x-radius,y+_a,x-_a,y+radius,x,y+radius)
  332PROCCloseWithLine
  333ENDPROC
  334DEF FNCircle(x,y,radius)
  335LOCAL _path%
  336PROCPathBegin(_path%)
  337PROC@Circle(x,y,radius)
  338PROCPathEnd
  339=_path%
  340DEF FNLineWidth=!(HIMEM+232)
  341DEF FNLineColour=!(HIMEM+224)
  342DEF FNFillColour=!(HIMEM+228)
  343DEF FNShade(Red%,Green%,Blue%)=(Red%<<8)+(Green%<<16)+(Blue%<<24)
  344DEF FNDesktopColour(colour%)
  345IF ABS colour%<256 THENcolour%=(ABS colour%) MOD 16
  346CASE colour% OF
  347WHEN 0 :colour%=FNShade(255,255,255)
  348WHEN 1 :colour%=FNShade(221,221,221)
  349WHEN 2 :colour%=FNShade(187,187,187)
  350WHEN 3 :colour%=FNShade(153,153,153)
  351WHEN 4 :colour%=FNShade(119,119,119)
  352WHEN 5 :colour%=FNShade(85,85,85)
  353WHEN 6 :colour%=FNShade(51,51,51)
  354WHEN 7 :colour%=%11111111
  355WHEN 8 :colour%=FNShade(0,68,153)
  356WHEN 9 :colour%=FNShade(238,238,0)
  357WHEN 10 :colour%=FNShade(0,204,0)
  358WHEN 11 :colour%=FNShade(221,0,0)
  359WHEN 12 :colour%=FNShade(238,238,187)
  360WHEN 13 :colour%=FNShade(85,136,0)
  361WHEN 14 :colour%=FNShade(255,187,0)
  362WHEN 15 :colour%=FNShade(0,187,255)
  363ENDCASE
  364=colour%
  365DEF FNStyle=!(HIMEM+236)
  366DEF FNDash=!(HIMEM+76)
  367DEF PROCDash@(Draw_Path%,pattern%)
  368LOCAL _Path%,_i%,_n%,_max%
  369_Path%=!Draw_Path%
  370IF _Path%<>0 THEN
  371_n%=pattern%!4
  372_Path%!4+=4*(_n%+2)
  373_Path%!36=((_Path%!36) AND NOT(1<<7)) EOR (1<<7)
  374_max%=!(HIMEM+4)
  375PROCMoveMemory(_Path%+40,_n%+2)
  376_i%=Draw_Path%-4
  377WHILE _i%>=_max% :!_i%+=4*(_n%+2) :_i%-=4 :ENDWHILE
  378FOR _i%=0 TO _n%+1
  379_Path%!(40+4*_i%)=(pattern%!(4*_i%))*640
  380NEXT
  381_Path%!44=_n%
  382ENDIF
  383ENDPROC
  384DEF PROCDraw_RenderPath(path%,transform)
  385IF path%<>0 THEN
  386LOCAL _Path%,_Dash%,_Thickness%,_Style%,_Flatness%,_Fill_Style%,_length%,_x%,_y%,_X%,_Y%,_col%
  387SYS "Hourglass_On"
  388_Flatness%=0
  389_x%=path%!8 :_y%=path%!12 :_X%=path%!16 :_Y%=path%!20
  390_Thickness%=path%!32
  391_Style%=path%!36
  392_Path%=path%+40
  393IF (_Style% AND (1<<7)) = 0 THEN
  394_Dash%=0
  395ELSE
  396_Dash%=_Path%
  397_Path%+=4*(_Dash%!4)+8
  398ENDIF
  399path%?8 = _Style% AND %11         
  400path%?9 =(_Style% AND %1100)>>2   
  401path%?10=(_Style% AND %110000)>>4 
  402path%?11=0
  403path%!12=10<<16           
  404_length%=path%?38           
  405path%?16=(_length%MOD16)<<4 
  406path%?17=_length%DIV16
  407path%?20=(_length%MOD16)<<4 
  408path%?21=_length%DIV16
  409_length%=path%?39           
  410path%?18=(_length%MOD16)<<4 
  411path%?19=_length%DIV16
  412path%?22=(_length%MOD16)<<4 
  413path%?23=_length%DIV16
  414IF (_Style% AND (1<<6))=0 THEN_Fill_Style%=&30 ELSE_Fill_Style%=&32
  415CASE path%!24 OF
  416WHEN -1
  417OTHERWISE
  418_col%=path%!24
  419IF !(HIMEM+20)=0 AND _col%=0 THEN_col%=(255<<8)+(255<<16)+(255<<24)
  420SYS "ColourTrans_SetGCOL",_col%,,,1<<8
  421SYS "Draw_Fill",_Path%,_Fill_Style%,transform,_Flatness%
  422ENDCASE
  423_col%=path%!28
  424IF !(HIMEM+20)=0 AND _col%=0 THEN_col%=(255<<8)+(255<<16)+(255<<24)
  425SYS "ColourTrans_SetGCOL",_col%
  426SYS "Draw_Stroke",_Path%,,transform,_Flatness%,_Thickness%,path%+8,_Dash%
  427path%!8=_x% :path%!12=_y% :path%!16=_X% :path%!20=_Y%
  428SYS "Hourglass_Off"
  429ENDIF
  430ENDPROC
"� � � � � :� "Throwback:Error"
� =�FreeSlot
�BeginDrawing
�Centimetres
circle=�Circle(3,3,2)
	�Quit
� �FreeSlot
� Buffer%,Free_Size%
	+ș "Wimp_SlotSize",-1,-1 � ,,Free_Size%

� Free_Size%<32 �
	� � �
ș "Wimp_CommandWindow",-1

L� � 0,"DrawBasic needs a non-empty 'Free' slot to save Draw file output"
�
4� Free_Size%>1024*1024*4 �Free_Size%=1024*1024*4

Buffer%=�
�=Buffer%+Free_Size%
!Buffer%=Buffer%+8
2Buffer%!4=Buffer%+Free_Size%-4 :!(Buffer%!4)=0
=Buffer%
� �Draw_AddWord(x%)
)� (!�)>=(!(�+4)) �� 0,"Out of memory"
!(!�)=x%  
!�+=4     
�
� �Draw_AddFloat(x)
+� (!�)+4>=(!(�+4)) �� 0,"Out of memory"
|(!�)=x   
!�+=8     
�
"� �Draw_AddString(pointer%,x$)
 
� _a%,_b%
!_a%=� x$
"4� (!pointer%+_a%)>=(!(�+4)) �� 0,"Out of memory"
#.� (_a%�4)<>0 �x$+=�4-(_a%�4),�0) :_a%=� x$
$%_b%=pointer%!_a% :$(!pointer%)=x$
%&!pointer%+=_a%   :pointer%!_a%=_b%
&�
'� �Draw_AddCoords(x,y)
(�Draw_AddWord(�Draw_X(x))
)�Draw_AddWord(�Draw_Y(y))
*�
+$� �MoveMemory(address%,n_words%)
,� _i%,_n% :_n%=4*n_words% 
-0� !�+_n%>=(!(�+4)) �� 0,"Not enough memory!"
.<� �CurrentPath>=address% ��CurrentPath(�CurrentPath+_n%)
/E� �CurrentSubpath>=address% ��CurrentSubpath(�CurrentSubpath+_n%)
0_i%=!(�+4)
1ȕ !_i%>=address%
2!_i%+=_n% :_i%+=4 
3�
4
_i%=!�
5,ȕ _i%>address% :_i%-=4 :_i%!_n%=!_i% :�
6!�+=_n% 
7�
8� �BeginDrawing
9�Draw_SetUp
:�Draw_SetFileHeader
;�Draw_SetFontTable
<�
=� �Draw_SetUp
>*� _scale%  :_scale%=�(180*256/2.54+.5)
?*�Draw_AddWord(0)                      
@*�Draw_AddWord(0)                      
A*�Draw_AddWord(0)                      
B*�Draw_AddWord(12*_scale%)             
C*�Draw_AddWord(12*_scale%)             
D*�Draw_AddFloat(0)                     
E*�Draw_AddFloat(0)                     
F*�Draw_AddFloat(12)                    
G*�Draw_AddFloat(12)                    
H*�Draw_AddWord(_scale%)                
I*�Draw_AddWord(0)                      
J*�Draw_AddWord(0)                      
K*�Draw_AddWord(0)                      
L*�Draw_AddWord(0)                      
M*�Draw_AddWord(12)                     
N*�Draw_AddWord(14*640)                 
O*�Draw_AddWord(0)                      
P*�Draw_AddWord(1)                      
Q*�Draw_AddWord(1<<16)                  
R*�Draw_AddWord(0)                      
S*�Draw_AddWord(0)                      
T*�Draw_AddWord(1<<16)                  
U*�Draw_AddWord(256*90)                 
V*�Draw_AddWord(256*90)                 
W*�Draw_AddWord(_scale%)                
X*�Draw_AddWord(1<<16)                  
Y*�Draw_AddWord((3<<16)+3)              
Z*�Draw_AddWord(0)                      
[*�Draw_AddWord(1)                      
\*�Draw_AddWord(0)                      
]*�Draw_AddWord(1)                      
^*�Draw_AddWord(0)                      
_*�Draw_AddWord(10)                     
`*�Draw_AddWord(7)                      
a*�Draw_AddWord(10)                     
b*�Draw_AddWord(7)                      
c*�Draw_AddWord(1<<16)                  
d*�Draw_AddWord(1<<15)                  
e*�Draw_AddWord(1<<16)                  
f*�Draw_AddWord(1<<15)                  
g*�Draw_AddWord(1<<16)                  
h*�Draw_AddWord(0)                      
i*�Draw_AddWord(0)                      
j*�Draw_AddWord(1<<16)                  
k*�Draw_AddWord(0)                      
l*�Draw_AddWord(0)                      
m*�Draw_AddWord(10000)                  
n*�Draw_AddWord(100)                    
o*�Draw_AddWord(300)                    
p*�Draw_AddWord(4)                      
q*�Draw_AddWord(0)                      
r*�Draw_AddWord(-1)                     
s*�Draw_AddWord(0)                      
t*�Draw_AddWord(0)                      
u*�Draw_AddWord(0)                      
v*�Draw_AddWord(0)                      
w|(�+240)=5/6
x%!(�+8)=!�                        
y�
z� �Draw_SetFileHeader
{&�Draw_AddString(�,"Draw")         
|*�Draw_AddWord(201)                    
}*�Draw_AddWord(0)                      
~&�Draw_AddString(�,"DrawBasic   ") 
*�Draw_AddWord(0)                      
�*�Draw_AddWord(0)                      
�*�Draw_AddWord(256*180*12*3*800)       
�*�Draw_AddWord(256*180*12*3*800)       
��
�� �Draw_SetFontTable
� � _fonts% :_fonts%=!(�+8)+40
�&�Draw_AddWord(0)                  
�&�Draw_AddWord(0)                  
�-�Draw_AddString(�,�1+"Trinity.Medium"+�0)
�%!(_fonts%+4)=!�-_fonts%          
��
�� �Quit
��PathEnd
�8�("Save DrawBasic:Draw.File "+�~(!(�+8))+" "+�~(!�))
�)*SetType DrawBasic:Draw.File DrawFile
�"*Filer_Run DrawBasic:Draw.File
��
�� �Units=!(�+60)
�� �Centimetres
�!(�+60)=�(256*180/2.54+.5)
��FrameSize(0,0,12,12)
��FrameCoords(0,12,0,12)
��Preview
��
�"� �DrawUnits(a)=�(�Units*a+.5)
�"� �FrameSize(a,b,width,height)
�"�FrameCoords(0,width,0,height)
�!(�+20)=�DrawUnits(width)  
�!(�+24)=�DrawUnits(height) 
�!(�+12)=�DrawUnits(a)      
�!(�+16)=�DrawUnits(b)      
��
�� �Frame_x=!(�+12)
�� �Frame_y=!(�+16)
�� �Frame_Width=!(�+20)
�� �Frame_Height=!(�+24)
�� �FRAME_x=|(�+28)
�� �FRAME_y=|(�+36)
�� �FRAME_Width=|(�+44)
�� �FRAME_Height=|(�+52)
�(� �X_Scale=�Frame_Width/�FRAME_Width
�*� �Y_Scale=�Frame_Height/�FRAME_Height
�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)
�
� _frame%
�_frame%=�+28
�7� a>=b �� 0, � a+" < x < "+� b+" is a bad x range "
�7� u>=v �� 0, � u+" < y < "+� v+" is a bad y range "
�%|(_frame%)=a      :|(_frame%+8)=u
�(|(_frame%+16)=b-a :|(_frame%+24)=v-u
��
�� �DrawDx=!(�+112)
�� �DrawDy=!(�+116)
�� �DrawTrans=�+96
�� �Preview
�� 26 :�
�%� _h,_max%,_x%,_y%,_I%,_font%,_n$
�#�DrawPreviewBorders(3000,12,8) 
��DrawPreviewHScales(3000)
��DrawPreviewVScales(3000)
��DrawPreviewTitle(14,7)
��
�.� �DrawPreviewBorders(max%,point%,colour%)
�point%=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$) 
�6� �Units=256*180 �_n$+=" (Inches)"  �_n$+=" (Cms)"
�9ș "Font_FindFont",,"Trinity.Medium"+�0,point%,point%
�Qș "ColourTrans_SetFontColours",,�DesktopColour(2),�DesktopColour(colour%),14
�%ș "Font_Paint",,_n$,%10000,16,12
��   
�$� �ReadSystemVariable(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%)
�� _h,_x%,_I%,_dx%,_dy%
�;_I%=0  :_h%=�Units>>8 :_dx%=�DrawDx>>8 :_dy%=�DrawDy>>8
�!� :_x%=_dx%+(�Draw_Y(_I%)>>8)
�� _x%,_dy%,_x%,3*_dy%/4
�'� _x%+_h%/2,_dy%,_x%+_h%/2,7*_dy%/8
�/ș "Font_Paint",,�(_I%),%10000,_x%-8,_dy%/2
�
_I%+=1
�� _x%>max%
��
�� �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%
��
�� �CurrentPath=!(�+64)
�� �CurrentPath(path%)
�!(�+64)=path%
��
�� �CurrentSubpath=!(�+68)
�� �CurrentSubpath(path%)
�!(�+68)=path%
��
�� �PathBegin(� path)
�� �CurrentPath<>0 ��PathEnd
�CurrentPath(!�)
� �CurrentPath>=!(�+4) �
2� 0,"Out of memory. Increase the 'Free' slot."
�

!(�+4)-=4
path=!(�+4)
!path=�CurrentPath
�Draw_PathHeader
"� �Dash<>0 ��Dash@(path,�Dash)
	�

�
� �Draw_PathHeader
�Draw_AddWord(0)

!�Draw_AddWord(44)            
!�Draw_AddWord(-1<<30)        
!�Draw_AddWord(-1<<30)        
!�Draw_AddWord(1<<30)         
!�Draw_AddWord(1<<30)         
 �Draw_AddWord(�FillColour)  
 �Draw_AddWord(�LineColour)  
 �Draw_AddWord(�LineWidth)   
 �Draw_AddWord(�Style)       
�
� �PathEnd
� �CurrentPath=0 �
+� �CurrentSubpath=0 � !�CurrentPath=0 �
!�=�CurrentPath
B�CurrentPath(0)                         :�CurrentSubpath(0)   
�   
,�Draw_AddWord(0)                        
)!(�CurrentPath+4)=(!�)-�CurrentPath  
.!(�CurrentPath)=2                         
 -�Draw_RenderPath(�CurrentPath,�DrawTrans)
!C�CurrentPath(0)                         :�CurrentSubpath(0)    
"�
#�
$� �DrawTrans=�+96
%� �Move(x,y)
&� _path
''� �CurrentPath=0 ��PathBegin(_path)
(�Draw_AddWord(2)
)�CurrentSubpath(!�)
*�Draw_AddCoords(x,y)
+7� (!(�+112)+�Draw_X(x))>>8,(!(�+116)+�Draw_Y(y))>>8
,�
-� �Bezier(a,b,c,d,x,y)
.#� _path%,_store% :_path%=!(�+4)
/A� �CurrentPath=0    � � 1,"Can't Draw Bezier if No PathBegun"
0J� �CurrentSubpath=0 � � 0,"Subpath must start with Move before Bezier"
15_path%=!� :_path%-=12 :_store%=!_path% :!_path%=2
2�Draw_AddWord(6)
3�Draw_AddCoords(a,b)
4�Draw_AddCoords(c,d)
5�Draw_AddCoords(x,y)
6�Draw_AddWord(0)
7	!�-=4
8'ș "Draw_Stroke",_path%,,�DrawTrans
9!_path%=_store%
:!(�CurrentPath)=�
;7� (!(�+112)+�Draw_X(x))>>8,(!(�+116)+�Draw_Y(y))>>8
<�
=� �CloseWithLine
>*�  �CurrentPath<>0 � �CurrentPath<>0 �
?
� _x%,_y%
@1_x%=!�CurrentSubpath:_y%=!(�CurrentSubpath+4)
A)� (!(�+112)+_x%)>>8,(!(�+116)+_y%)>>8
B�Draw_AddWord(5)
C�
D�
E� �@Circle(x,y,radius)
F� _a :_a=radius*4*(�2-1)/3
G�Move(x,y+radius)
H3�Bezier(x+_a,y+radius,x+radius,y+_a,x+radius,y)
I3�Bezier(x+radius,y-_a,x+_a,y-radius,x,y-radius)
J3�Bezier(x-_a,y-radius,x-radius,y-_a,x-radius,y)
K3�Bezier(x-radius,y+_a,x-_a,y+radius,x,y+radius)
L�CloseWithLine
M�
N� �Circle(x,y,radius)
O� _path%
P�PathBegin(_path%)
Q�@Circle(x,y,radius)
R�PathEnd
S=_path%
T� �LineWidth=!(�+232)
U� �LineColour=!(�+224)
V� �FillColour=!(�+228)
WB� �Shade(Red%,Green%,Blue%)=(Red%<<8)+(Green%<<16)+(Blue%<<24)
X� �DesktopColour(colour%)
Y-� � colour%<256 �colour%=(� colour%) � 16
ZȎ colour% �
[$� 0 :colour%=�Shade(255,255,255)
\$� 1 :colour%=�Shade(221,221,221)
]$� 2 :colour%=�Shade(187,187,187)
^$� 3 :colour%=�Shade(153,153,153)
_$� 4 :colour%=�Shade(119,119,119)
`!� 5 :colour%=�Shade(85,85,85)
a!� 6 :colour%=�Shade(51,51,51)
b� 7 :colour%=%11111111
c!� 8 :colour%=�Shade(0,68,153)
d"� 9 :colour%=�Shade(238,238,0)
e!� 10 :colour%=�Shade(0,204,0)
f!� 11 :colour%=�Shade(221,0,0)
g%� 12 :colour%=�Shade(238,238,187)
h"� 13 :colour%=�Shade(85,136,0)
i#� 14 :colour%=�Shade(255,187,0)
j#� 15 :colour%=�Shade(0,187,255)
k�
l=colour%
m� �Style=!(�+236)
n� �Dash=!(�+76)
o!� �Dash@(Draw_Path%,pattern%)
p� _Path%,_i%,_n%,_max%
q_Path%=!Draw_Path%
r� _Path%<>0 �
s_n%=pattern%!4
t_Path%!4+=4*(_n%+2)
u._Path%!36=((_Path%!36) � �(1<<7)) � (1<<7)
v_max%=!(�+4)
w �MoveMemory(_Path%+40,_n%+2)
x_i%=Draw_Path%-4
y-ȕ _i%>=_max% :!_i%+=4*(_n%+2) :_i%-=4 :�
z� _i%=0 � _n%+1
{,_Path%!(40+4*_i%)=(pattern%!(4*_i%))*640
|�
}_Path%!44=_n%
~�
�
�'� �Draw_RenderPath(path%,transform)
�� path%<>0 �
�^� _Path%,_Dash%,_Thickness%,_Style%,_Flatness%,_Fill_Style%,_length%,_x%,_y%,_X%,_Y%,_col%
�ș "Hourglass_On"
�_Flatness%=0
�9_x%=path%!8 :_y%=path%!12 :_X%=path%!16 :_Y%=path%!20
�_Thickness%=path%!32
�_Style%=path%!36
�_Path%=path%+40
�� (_Style% � (1<<7)) = 0 �
�_Dash%=0
��
�_Dash%=_Path%
�_Path%+=4*(_Dash%!4)+8
��
�$path%?8 = _Style% � %11         
�$path%?9 =(_Style% � %1100)>>2   
�$path%?10=(_Style% � %110000)>>4 
�path%?11=0
�path%!12=10<<16           
� _length%=path%?38           
�path%?16=(_length%�16)<<4 
�path%?17=_length%�16
�path%?20=(_length%�16)<<4 
�path%?21=_length%�16
� _length%=path%?39           
�path%?18=(_length%�16)<<4 
�path%?19=_length%�16
�path%?22=(_length%�16)<<4 
�path%?23=_length%�16
�>� (_Style% � (1<<6))=0 �_Fill_Style%=&30 �_Fill_Style%=&32
�Ȏ path%!24 �
�� -1
�
�_col%=path%!24
�=� !(�+20)=0 � _col%=0 �_col%=(255<<8)+(255<<16)+(255<<24)
�)ș "ColourTrans_SetGCOL",_col%,,,1<<8
�;ș "Draw_Fill",_Path%,_Fill_Style%,transform,_Flatness%
��
�_col%=path%!28
�=� !(�+20)=0 � _col%=0 �_col%=(255<<8)+(255<<16)+(255<<24)
�"ș "ColourTrans_SetGCOL",_col%
�Lș "Draw_Stroke",_Path%,,transform,_Flatness%,_Thickness%,path%+8,_Dash%
�9path%!8=_x% :path%!12=_y% :path%!16=_X% :path%!20=_Y%
�ș "Hourglass_Off"
��
��
�
00000000  0d 00 01 22 ee 20 85 20  ee 20 85 20 87 20 3a d7  |...". . . . . :.|
00000010  20 22 54 68 72 6f 77 62  61 63 6b 3a 45 72 72 6f  | "Throwback:Erro|
00000020  72 22 0d 00 02 10 d3 20  3d a4 46 72 65 65 53 6c  |r"..... =.FreeSl|
00000030  6f 74 0d 00 03 11 f2 42  65 67 69 6e 44 72 61 77  |ot.....BeginDraw|
00000040  69 6e 67 0d 00 04 10 f2  43 65 6e 74 69 6d 65 74  |ing.....Centimet|
00000050  72 65 73 0d 00 05 19 63  69 72 63 6c 65 3d a4 43  |res....circle=.C|
00000060  69 72 63 6c 65 28 33 2c  33 2c 32 29 0d 00 06 09  |ircle(3,3,2)....|
00000070  f2 51 75 69 74 0d 00 07  0f dd 20 a4 46 72 65 65  |.Quit..... .Free|
00000080  53 6c 6f 74 0d 00 08 18  ea 20 42 75 66 66 65 72  |Slot..... Buffer|
00000090  25 2c 46 72 65 65 5f 53  69 7a 65 25 0d 00 09 2b  |%,Free_Size%...+|
000000a0  c8 99 20 22 57 69 6d 70  5f 53 6c 6f 74 53 69 7a  |.. "Wimp_SlotSiz|
000000b0  65 22 2c 2d 31 2c 2d 31  20 b8 20 2c 2c 46 72 65  |e",-1,-1 . ,,Fre|
000000c0  65 5f 53 69 7a 65 25 0d  00 0a 15 e7 20 46 72 65  |e_Size%..... Fre|
000000d0  65 5f 53 69 7a 65 25 3c  33 32 20 8c 0d 00 0b 09  |e_Size%<32 .....|
000000e0  ee 20 85 20 87 0d 00 0c  1e c8 99 20 22 57 69 6d  |. . ....... "Wim|
000000f0  70 5f 43 6f 6d 6d 61 6e  64 57 69 6e 64 6f 77 22  |p_CommandWindow"|
00000100  2c 2d 31 0d 00 0d 4c 85  20 a2 20 30 2c 22 44 72  |,-1...L. . 0,"Dr|
00000110  61 77 42 61 73 69 63 20  6e 65 65 64 73 20 61 20  |awBasic needs a |
00000120  6e 6f 6e 2d 65 6d 70 74  79 20 27 46 72 65 65 27  |non-empty 'Free'|
00000130  20 73 6c 6f 74 20 74 6f  20 73 61 76 65 20 44 72  | slot to save Dr|
00000140  61 77 20 66 69 6c 65 20  6f 75 74 70 75 74 22 0d  |aw file output".|
00000150  00 0e 05 cd 0d 00 0f 34  e7 20 46 72 65 65 5f 53  |.......4. Free_S|
00000160  69 7a 65 25 3e 31 30 32  34 2a 31 30 32 34 2a 34  |ize%>1024*1024*4|
00000170  20 8c 46 72 65 65 5f 53  69 7a 65 25 3d 31 30 32  | .Free_Size%=102|
00000180  34 2a 31 30 32 34 2a 34  0d 00 10 0d 42 75 66 66  |4*1024*4....Buff|
00000190  65 72 25 3d 93 0d 00 11  18 e0 3d 42 75 66 66 65  |er%=......=Buffe|
000001a0  72 25 2b 46 72 65 65 5f  53 69 7a 65 25 0d 00 12  |r%+Free_Size%...|
000001b0  16 21 42 75 66 66 65 72  25 3d 42 75 66 66 65 72  |.!Buffer%=Buffer|
000001c0  25 2b 38 0d 00 13 32 42  75 66 66 65 72 25 21 34  |%+8...2Buffer%!4|
000001d0  3d 42 75 66 66 65 72 25  2b 46 72 65 65 5f 53 69  |=Buffer%+Free_Si|
000001e0  7a 65 25 2d 34 20 3a 21  28 42 75 66 66 65 72 25  |ze%-4 :!(Buffer%|
000001f0  21 34 29 3d 30 0d 00 14  0c 3d 42 75 66 66 65 72  |!4)=0....=Buffer|
00000200  25 0d 00 15 17 dd 20 f2  44 72 61 77 5f 41 64 64  |%..... .Draw_Add|
00000210  57 6f 72 64 28 78 25 29  0d 00 16 29 e7 20 28 21  |Word(x%)...). (!|
00000220  93 29 3e 3d 28 21 28 93  2b 34 29 29 20 8c 85 20  |.)>=(!(.+4)) .. |
00000230  30 2c 22 4f 75 74 20 6f  66 20 6d 65 6d 6f 72 79  |0,"Out of memory|
00000240  22 0d 00 17 0e 21 28 21  93 29 3d 78 25 20 20 0d  |"....!(!.)=x%  .|
00000250  00 18 0e 21 93 2b 3d 34  20 20 20 20 20 0d 00 19  |...!.+=4     ...|
00000260  05 e1 0d 00 1a 17 dd 20  f2 44 72 61 77 5f 41 64  |....... .Draw_Ad|
00000270  64 46 6c 6f 61 74 28 78  29 0d 00 1b 2b e7 20 28  |dFloat(x)...+. (|
00000280  21 93 29 2b 34 3e 3d 28  21 28 93 2b 34 29 29 20  |!.)+4>=(!(.+4)) |
00000290  8c 85 20 30 2c 22 4f 75  74 20 6f 66 20 6d 65 6d  |.. 0,"Out of mem|
000002a0  6f 72 79 22 0d 00 1c 0e  7c 28 21 93 29 3d 78 20  |ory"....|(!.)=x |
000002b0  20 20 0d 00 1d 0e 21 93  2b 3d 38 20 20 20 20 20  |  ....!.+=8     |
000002c0  0d 00 1e 05 e1 0d 00 1f  22 dd 20 f2 44 72 61 77  |........". .Draw|
000002d0  5f 41 64 64 53 74 72 69  6e 67 28 70 6f 69 6e 74  |_AddString(point|
000002e0  65 72 25 2c 78 24 29 0d  00 20 0d ea 20 5f 61 25  |er%,x$).. .. _a%|
000002f0  2c 5f 62 25 0d 00 21 0c  5f 61 25 3d a9 20 78 24  |,_b%..!._a%=. x$|
00000300  0d 00 22 34 e7 20 28 21  70 6f 69 6e 74 65 72 25  |.."4. (!pointer%|
00000310  2b 5f 61 25 29 3e 3d 28  21 28 93 2b 34 29 29 20  |+_a%)>=(!(.+4)) |
00000320  8c 85 20 30 2c 22 4f 75  74 20 6f 66 20 6d 65 6d  |.. 0,"Out of mem|
00000330  6f 72 79 22 0d 00 23 2e  e7 20 28 5f 61 25 83 34  |ory"..#.. (_a%.4|
00000340  29 3c 3e 30 20 8c 78 24  2b 3d c4 34 2d 28 5f 61  |)<>0 .x$+=.4-(_a|
00000350  25 83 34 29 2c bd 30 29  20 3a 5f 61 25 3d a9 20  |%.4),.0) :_a%=. |
00000360  78 24 0d 00 24 25 5f 62  25 3d 70 6f 69 6e 74 65  |x$..$%_b%=pointe|
00000370  72 25 21 5f 61 25 20 3a  24 28 21 70 6f 69 6e 74  |r%!_a% :$(!point|
00000380  65 72 25 29 3d 78 24 0d  00 25 26 21 70 6f 69 6e  |er%)=x$..%&!poin|
00000390  74 65 72 25 2b 3d 5f 61  25 20 20 20 3a 70 6f 69  |ter%+=_a%   :poi|
000003a0  6e 74 65 72 25 21 5f 61  25 3d 5f 62 25 0d 00 26  |nter%!_a%=_b%..&|
000003b0  05 e1 0d 00 27 1a dd 20  f2 44 72 61 77 5f 41 64  |....'.. .Draw_Ad|
000003c0  64 43 6f 6f 72 64 73 28  78 2c 79 29 0d 00 28 1d  |dCoords(x,y)..(.|
000003d0  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 a4 44  |.Draw_AddWord(.D|
000003e0  72 61 77 5f 58 28 78 29  29 0d 00 29 1d f2 44 72  |raw_X(x))..)..Dr|
000003f0  61 77 5f 41 64 64 57 6f  72 64 28 a4 44 72 61 77  |aw_AddWord(.Draw|
00000400  5f 59 28 79 29 29 0d 00  2a 05 e1 0d 00 2b 24 dd  |_Y(y))..*....+$.|
00000410  20 f2 4d 6f 76 65 4d 65  6d 6f 72 79 28 61 64 64  | .MoveMemory(add|
00000420  72 65 73 73 25 2c 6e 5f  77 6f 72 64 73 25 29 0d  |ress%,n_words%).|
00000430  00 2c 1e ea 20 5f 69 25  2c 5f 6e 25 20 3a 5f 6e  |.,.. _i%,_n% :_n|
00000440  25 3d 34 2a 6e 5f 77 6f  72 64 73 25 20 0d 00 2d  |%=4*n_words% ..-|
00000450  30 e7 20 21 93 2b 5f 6e  25 3e 3d 28 21 28 93 2b  |0. !.+_n%>=(!(.+|
00000460  34 29 29 20 8c 85 20 30  2c 22 4e 6f 74 20 65 6e  |4)) .. 0,"Not en|
00000470  6f 75 67 68 20 6d 65 6d  6f 72 79 21 22 0d 00 2e  |ough memory!"...|
00000480  3c e7 20 a4 43 75 72 72  65 6e 74 50 61 74 68 3e  |<. .CurrentPath>|
00000490  3d 61 64 64 72 65 73 73  25 20 8c f2 43 75 72 72  |=address% ..Curr|
000004a0  65 6e 74 50 61 74 68 28  a4 43 75 72 72 65 6e 74  |entPath(.Current|
000004b0  50 61 74 68 2b 5f 6e 25  29 0d 00 2f 45 e7 20 a4  |Path+_n%)../E. .|
000004c0  43 75 72 72 65 6e 74 53  75 62 70 61 74 68 3e 3d  |CurrentSubpath>=|
000004d0  61 64 64 72 65 73 73 25  20 8c f2 43 75 72 72 65  |address% ..Curre|
000004e0  6e 74 53 75 62 70 61 74  68 28 a4 43 75 72 72 65  |ntSubpath(.Curre|
000004f0  6e 74 53 75 62 70 61 74  68 2b 5f 6e 25 29 0d 00  |ntSubpath+_n%)..|
00000500  30 0e 5f 69 25 3d 21 28  93 2b 34 29 0d 00 31 15  |0._i%=!(.+4)..1.|
00000510  c8 95 20 21 5f 69 25 3e  3d 61 64 64 72 65 73 73  |.. !_i%>=address|
00000520  25 0d 00 32 16 21 5f 69  25 2b 3d 5f 6e 25 20 3a  |%..2.!_i%+=_n% :|
00000530  5f 69 25 2b 3d 34 20 0d  00 33 05 ce 0d 00 34 0a  |_i%+=4 ..3....4.|
00000540  5f 69 25 3d 21 93 0d 00  35 2c c8 95 20 5f 69 25  |_i%=!...5,.. _i%|
00000550  3e 61 64 64 72 65 73 73  25 20 3a 5f 69 25 2d 3d  |>address% :_i%-=|
00000560  34 20 3a 5f 69 25 21 5f  6e 25 3d 21 5f 69 25 20  |4 :_i%!_n%=!_i% |
00000570  3a ce 0d 00 36 0c 21 93  2b 3d 5f 6e 25 20 0d 00  |:...6.!.+=_n% ..|
00000580  37 05 e1 0d 00 38 13 dd  20 f2 42 65 67 69 6e 44  |7....8.. .BeginD|
00000590  72 61 77 69 6e 67 0d 00  39 0f f2 44 72 61 77 5f  |rawing..9..Draw_|
000005a0  53 65 74 55 70 0d 00 3a  17 f2 44 72 61 77 5f 53  |SetUp..:..Draw_S|
000005b0  65 74 46 69 6c 65 48 65  61 64 65 72 0d 00 3b 16  |etFileHeader..;.|
000005c0  f2 44 72 61 77 5f 53 65  74 46 6f 6e 74 54 61 62  |.Draw_SetFontTab|
000005d0  6c 65 0d 00 3c 05 e1 0d  00 3d 11 dd 20 f2 44 72  |le..<....=.. .Dr|
000005e0  61 77 5f 53 65 74 55 70  0d 00 3e 2a ea 20 5f 73  |aw_SetUp..>*. _s|
000005f0  63 61 6c 65 25 20 20 3a  5f 73 63 61 6c 65 25 3d  |cale%  :_scale%=|
00000600  a8 28 31 38 30 2a 32 35  36 2f 32 2e 35 34 2b 2e  |.(180*256/2.54+.|
00000610  35 29 0d 00 3f 2a f2 44  72 61 77 5f 41 64 64 57  |5)..?*.Draw_AddW|
00000620  6f 72 64 28 30 29 20 20  20 20 20 20 20 20 20 20  |ord(0)          |
00000630  20 20 20 20 20 20 20 20  20 20 20 20 0d 00 40 2a  |            ..@*|
00000640  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 30 29  |.Draw_AddWord(0)|
00000650  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000660  20 20 20 20 20 20 0d 00  41 2a f2 44 72 61 77 5f  |      ..A*.Draw_|
00000670  41 64 64 57 6f 72 64 28  30 29 20 20 20 20 20 20  |AddWord(0)      |
00000680  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000690  0d 00 42 2a f2 44 72 61  77 5f 41 64 64 57 6f 72  |..B*.Draw_AddWor|
000006a0  64 28 31 32 2a 5f 73 63  61 6c 65 25 29 20 20 20  |d(12*_scale%)   |
000006b0  20 20 20 20 20 20 20 20  20 20 0d 00 43 2a f2 44  |          ..C*.D|
000006c0  72 61 77 5f 41 64 64 57  6f 72 64 28 31 32 2a 5f  |raw_AddWord(12*_|
000006d0  73 63 61 6c 65 25 29 20  20 20 20 20 20 20 20 20  |scale%)         |
000006e0  20 20 20 20 0d 00 44 2a  f2 44 72 61 77 5f 41 64  |    ..D*.Draw_Ad|
000006f0  64 46 6c 6f 61 74 28 30  29 20 20 20 20 20 20 20  |dFloat(0)       |
00000700  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
00000710  45 2a f2 44 72 61 77 5f  41 64 64 46 6c 6f 61 74  |E*.Draw_AddFloat|
00000720  28 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |(0)             |
00000730  20 20 20 20 20 20 20 20  0d 00 46 2a f2 44 72 61  |        ..F*.Dra|
00000740  77 5f 41 64 64 46 6c 6f  61 74 28 31 32 29 20 20  |w_AddFloat(12)  |
00000750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000760  20 20 0d 00 47 2a f2 44  72 61 77 5f 41 64 64 46  |  ..G*.Draw_AddF|
00000770  6c 6f 61 74 28 31 32 29  20 20 20 20 20 20 20 20  |loat(12)        |
00000780  20 20 20 20 20 20 20 20  20 20 20 20 0d 00 48 2a  |            ..H*|
00000790  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 5f 73  |.Draw_AddWord(_s|
000007a0  63 61 6c 65 25 29 20 20  20 20 20 20 20 20 20 20  |cale%)          |
000007b0  20 20 20 20 20 20 0d 00  49 2a f2 44 72 61 77 5f  |      ..I*.Draw_|
000007c0  41 64 64 57 6f 72 64 28  30 29 20 20 20 20 20 20  |AddWord(0)      |
000007d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000007e0  0d 00 4a 2a f2 44 72 61  77 5f 41 64 64 57 6f 72  |..J*.Draw_AddWor|
000007f0  64 28 30 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(0)            |
00000800  20 20 20 20 20 20 20 20  20 20 0d 00 4b 2a f2 44  |          ..K*.D|
00000810  72 61 77 5f 41 64 64 57  6f 72 64 28 30 29 20 20  |raw_AddWord(0)  |
00000820  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000830  20 20 20 20 0d 00 4c 2a  f2 44 72 61 77 5f 41 64  |    ..L*.Draw_Ad|
00000840  64 57 6f 72 64 28 30 29  20 20 20 20 20 20 20 20  |dWord(0)        |
00000850  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
00000860  4d 2a f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |M*.Draw_AddWord(|
00000870  31 32 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |12)             |
00000880  20 20 20 20 20 20 20 20  0d 00 4e 2a f2 44 72 61  |        ..N*.Dra|
00000890  77 5f 41 64 64 57 6f 72  64 28 31 34 2a 36 34 30  |w_AddWord(14*640|
000008a0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
000008b0  20 20 0d 00 4f 2a f2 44  72 61 77 5f 41 64 64 57  |  ..O*.Draw_AddW|
000008c0  6f 72 64 28 30 29 20 20  20 20 20 20 20 20 20 20  |ord(0)          |
000008d0  20 20 20 20 20 20 20 20  20 20 20 20 0d 00 50 2a  |            ..P*|
000008e0  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 31 29  |.Draw_AddWord(1)|
000008f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000900  20 20 20 20 20 20 0d 00  51 2a f2 44 72 61 77 5f  |      ..Q*.Draw_|
00000910  41 64 64 57 6f 72 64 28  31 3c 3c 31 36 29 20 20  |AddWord(1<<16)  |
00000920  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000930  0d 00 52 2a f2 44 72 61  77 5f 41 64 64 57 6f 72  |..R*.Draw_AddWor|
00000940  64 28 30 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(0)            |
00000950  20 20 20 20 20 20 20 20  20 20 0d 00 53 2a f2 44  |          ..S*.D|
00000960  72 61 77 5f 41 64 64 57  6f 72 64 28 30 29 20 20  |raw_AddWord(0)  |
00000970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000980  20 20 20 20 0d 00 54 2a  f2 44 72 61 77 5f 41 64  |    ..T*.Draw_Ad|
00000990  64 57 6f 72 64 28 31 3c  3c 31 36 29 20 20 20 20  |dWord(1<<16)    |
000009a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
000009b0  55 2a f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |U*.Draw_AddWord(|
000009c0  32 35 36 2a 39 30 29 20  20 20 20 20 20 20 20 20  |256*90)         |
000009d0  20 20 20 20 20 20 20 20  0d 00 56 2a f2 44 72 61  |        ..V*.Dra|
000009e0  77 5f 41 64 64 57 6f 72  64 28 32 35 36 2a 39 30  |w_AddWord(256*90|
000009f0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00000a00  20 20 0d 00 57 2a f2 44  72 61 77 5f 41 64 64 57  |  ..W*.Draw_AddW|
00000a10  6f 72 64 28 5f 73 63 61  6c 65 25 29 20 20 20 20  |ord(_scale%)    |
00000a20  20 20 20 20 20 20 20 20  20 20 20 20 0d 00 58 2a  |            ..X*|
00000a30  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 31 3c  |.Draw_AddWord(1<|
00000a40  3c 31 36 29 20 20 20 20  20 20 20 20 20 20 20 20  |<16)            |
00000a50  20 20 20 20 20 20 0d 00  59 2a f2 44 72 61 77 5f  |      ..Y*.Draw_|
00000a60  41 64 64 57 6f 72 64 28  28 33 3c 3c 31 36 29 2b  |AddWord((3<<16)+|
00000a70  33 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |3)              |
00000a80  0d 00 5a 2a f2 44 72 61  77 5f 41 64 64 57 6f 72  |..Z*.Draw_AddWor|
00000a90  64 28 30 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(0)            |
00000aa0  20 20 20 20 20 20 20 20  20 20 0d 00 5b 2a f2 44  |          ..[*.D|
00000ab0  72 61 77 5f 41 64 64 57  6f 72 64 28 31 29 20 20  |raw_AddWord(1)  |
00000ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ad0  20 20 20 20 0d 00 5c 2a  f2 44 72 61 77 5f 41 64  |    ..\*.Draw_Ad|
00000ae0  64 57 6f 72 64 28 30 29  20 20 20 20 20 20 20 20  |dWord(0)        |
00000af0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
00000b00  5d 2a f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |]*.Draw_AddWord(|
00000b10  31 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |1)              |
00000b20  20 20 20 20 20 20 20 20  0d 00 5e 2a f2 44 72 61  |        ..^*.Dra|
00000b30  77 5f 41 64 64 57 6f 72  64 28 30 29 20 20 20 20  |w_AddWord(0)    |
00000b40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000b50  20 20 0d 00 5f 2a f2 44  72 61 77 5f 41 64 64 57  |  .._*.Draw_AddW|
00000b60  6f 72 64 28 31 30 29 20  20 20 20 20 20 20 20 20  |ord(10)         |
00000b70  20 20 20 20 20 20 20 20  20 20 20 20 0d 00 60 2a  |            ..`*|
00000b80  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 37 29  |.Draw_AddWord(7)|
00000b90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ba0  20 20 20 20 20 20 0d 00  61 2a f2 44 72 61 77 5f  |      ..a*.Draw_|
00000bb0  41 64 64 57 6f 72 64 28  31 30 29 20 20 20 20 20  |AddWord(10)     |
00000bc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000bd0  0d 00 62 2a f2 44 72 61  77 5f 41 64 64 57 6f 72  |..b*.Draw_AddWor|
00000be0  64 28 37 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(7)            |
00000bf0  20 20 20 20 20 20 20 20  20 20 0d 00 63 2a f2 44  |          ..c*.D|
00000c00  72 61 77 5f 41 64 64 57  6f 72 64 28 31 3c 3c 31  |raw_AddWord(1<<1|
00000c10  36 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |6)              |
00000c20  20 20 20 20 0d 00 64 2a  f2 44 72 61 77 5f 41 64  |    ..d*.Draw_Ad|
00000c30  64 57 6f 72 64 28 31 3c  3c 31 35 29 20 20 20 20  |dWord(1<<15)    |
00000c40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
00000c50  65 2a f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |e*.Draw_AddWord(|
00000c60  31 3c 3c 31 36 29 20 20  20 20 20 20 20 20 20 20  |1<<16)          |
00000c70  20 20 20 20 20 20 20 20  0d 00 66 2a f2 44 72 61  |        ..f*.Dra|
00000c80  77 5f 41 64 64 57 6f 72  64 28 31 3c 3c 31 35 29  |w_AddWord(1<<15)|
00000c90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ca0  20 20 0d 00 67 2a f2 44  72 61 77 5f 41 64 64 57  |  ..g*.Draw_AddW|
00000cb0  6f 72 64 28 31 3c 3c 31  36 29 20 20 20 20 20 20  |ord(1<<16)      |
00000cc0  20 20 20 20 20 20 20 20  20 20 20 20 0d 00 68 2a  |            ..h*|
00000cd0  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 30 29  |.Draw_AddWord(0)|
00000ce0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000cf0  20 20 20 20 20 20 0d 00  69 2a f2 44 72 61 77 5f  |      ..i*.Draw_|
00000d00  41 64 64 57 6f 72 64 28  30 29 20 20 20 20 20 20  |AddWord(0)      |
00000d10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000d20  0d 00 6a 2a f2 44 72 61  77 5f 41 64 64 57 6f 72  |..j*.Draw_AddWor|
00000d30  64 28 31 3c 3c 31 36 29  20 20 20 20 20 20 20 20  |d(1<<16)        |
00000d40  20 20 20 20 20 20 20 20  20 20 0d 00 6b 2a f2 44  |          ..k*.D|
00000d50  72 61 77 5f 41 64 64 57  6f 72 64 28 30 29 20 20  |raw_AddWord(0)  |
00000d60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000d70  20 20 20 20 0d 00 6c 2a  f2 44 72 61 77 5f 41 64  |    ..l*.Draw_Ad|
00000d80  64 57 6f 72 64 28 30 29  20 20 20 20 20 20 20 20  |dWord(0)        |
00000d90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
00000da0  6d 2a f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |m*.Draw_AddWord(|
00000db0  31 30 30 30 30 29 20 20  20 20 20 20 20 20 20 20  |10000)          |
00000dc0  20 20 20 20 20 20 20 20  0d 00 6e 2a f2 44 72 61  |        ..n*.Dra|
00000dd0  77 5f 41 64 64 57 6f 72  64 28 31 30 30 29 20 20  |w_AddWord(100)  |
00000de0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000df0  20 20 0d 00 6f 2a f2 44  72 61 77 5f 41 64 64 57  |  ..o*.Draw_AddW|
00000e00  6f 72 64 28 33 30 30 29  20 20 20 20 20 20 20 20  |ord(300)        |
00000e10  20 20 20 20 20 20 20 20  20 20 20 20 0d 00 70 2a  |            ..p*|
00000e20  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 34 29  |.Draw_AddWord(4)|
00000e30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000e40  20 20 20 20 20 20 0d 00  71 2a f2 44 72 61 77 5f  |      ..q*.Draw_|
00000e50  41 64 64 57 6f 72 64 28  30 29 20 20 20 20 20 20  |AddWord(0)      |
00000e60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000e70  0d 00 72 2a f2 44 72 61  77 5f 41 64 64 57 6f 72  |..r*.Draw_AddWor|
00000e80  64 28 2d 31 29 20 20 20  20 20 20 20 20 20 20 20  |d(-1)           |
00000e90  20 20 20 20 20 20 20 20  20 20 0d 00 73 2a f2 44  |          ..s*.D|
00000ea0  72 61 77 5f 41 64 64 57  6f 72 64 28 30 29 20 20  |raw_AddWord(0)  |
00000eb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ec0  20 20 20 20 0d 00 74 2a  f2 44 72 61 77 5f 41 64  |    ..t*.Draw_Ad|
00000ed0  64 57 6f 72 64 28 30 29  20 20 20 20 20 20 20 20  |dWord(0)        |
00000ee0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 00  |              ..|
00000ef0  75 2a f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |u*.Draw_AddWord(|
00000f00  30 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0)              |
00000f10  20 20 20 20 20 20 20 20  0d 00 76 2a f2 44 72 61  |        ..v*.Dra|
00000f20  77 5f 41 64 64 57 6f 72  64 28 30 29 20 20 20 20  |w_AddWord(0)    |
00000f30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f40  20 20 0d 00 77 10 7c 28  93 2b 32 34 30 29 3d 35  |  ..w.|(.+240)=5|
00000f50  2f 36 0d 00 78 25 21 28  93 2b 38 29 3d 21 93 20  |/6..x%!(.+8)=!. |
00000f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f70  20 20 20 20 20 20 20 0d  00 79 05 e1 0d 00 7a 19  |       ..y....z.|
00000f80  dd 20 f2 44 72 61 77 5f  53 65 74 46 69 6c 65 48  |. .Draw_SetFileH|
00000f90  65 61 64 65 72 0d 00 7b  26 f2 44 72 61 77 5f 41  |eader..{&.Draw_A|
00000fa0  64 64 53 74 72 69 6e 67  28 93 2c 22 44 72 61 77  |ddString(.,"Draw|
00000fb0  22 29 20 20 20 20 20 20  20 20 20 0d 00 7c 2a f2  |")         ..|*.|
00000fc0  44 72 61 77 5f 41 64 64  57 6f 72 64 28 32 30 31  |Draw_AddWord(201|
00000fd0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00000fe0  20 20 20 20 20 0d 00 7d  2a f2 44 72 61 77 5f 41  |     ..}*.Draw_A|
00000ff0  64 64 57 6f 72 64 28 30  29 20 20 20 20 20 20 20  |ddWord(0)       |
00001000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0d  |               .|
00001010  00 7e 26 f2 44 72 61 77  5f 41 64 64 53 74 72 69  |.~&.Draw_AddStri|
00001020  6e 67 28 93 2c 22 44 72  61 77 42 61 73 69 63 20  |ng(.,"DrawBasic |
00001030  20 20 22 29 20 0d 00 7f  2a f2 44 72 61 77 5f 41  |  ") ...*.Draw_A|
00001040  64 64 57 6f 72 64 28 30  29 20 20 20 20 20 20 20  |ddWord(0)       |
00001050  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0d  |               .|
00001060  00 80 2a f2 44 72 61 77  5f 41 64 64 57 6f 72 64  |..*.Draw_AddWord|
00001070  28 30 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |(0)             |
00001080  20 20 20 20 20 20 20 20  20 0d 00 81 2a f2 44 72  |         ...*.Dr|
00001090  61 77 5f 41 64 64 57 6f  72 64 28 32 35 36 2a 31  |aw_AddWord(256*1|
000010a0  38 30 2a 31 32 2a 33 2a  38 30 30 29 20 20 20 20  |80*12*3*800)    |
000010b0  20 20 20 0d 00 82 2a f2  44 72 61 77 5f 41 64 64  |   ...*.Draw_Add|
000010c0  57 6f 72 64 28 32 35 36  2a 31 38 30 2a 31 32 2a  |Word(256*180*12*|
000010d0  33 2a 38 30 30 29 20 20  20 20 20 20 20 0d 00 83  |3*800)       ...|
000010e0  05 e1 0d 00 84 18 dd 20  f2 44 72 61 77 5f 53 65  |....... .Draw_Se|
000010f0  74 46 6f 6e 74 54 61 62  6c 65 0d 00 85 20 ea 20  |tFontTable... . |
00001100  5f 66 6f 6e 74 73 25 20  3a 5f 66 6f 6e 74 73 25  |_fonts% :_fonts%|
00001110  3d 21 28 93 2b 38 29 2b  34 30 0d 00 86 26 f2 44  |=!(.+8)+40...&.D|
00001120  72 61 77 5f 41 64 64 57  6f 72 64 28 30 29 20 20  |raw_AddWord(0)  |
00001130  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001140  0d 00 87 26 f2 44 72 61  77 5f 41 64 64 57 6f 72  |...&.Draw_AddWor|
00001150  64 28 30 29 20 20 20 20  20 20 20 20 20 20 20 20  |d(0)            |
00001160  20 20 20 20 20 20 0d 00  88 2d f2 44 72 61 77 5f  |      ...-.Draw_|
00001170  41 64 64 53 74 72 69 6e  67 28 93 2c bd 31 2b 22  |AddString(.,.1+"|
00001180  54 72 69 6e 69 74 79 2e  4d 65 64 69 75 6d 22 2b  |Trinity.Medium"+|
00001190  bd 30 29 0d 00 89 25 21  28 5f 66 6f 6e 74 73 25  |.0)...%!(_fonts%|
000011a0  2b 34 29 3d 21 93 2d 5f  66 6f 6e 74 73 25 20 20  |+4)=!.-_fonts%  |
000011b0  20 20 20 20 20 20 20 20  0d 00 8a 05 e1 0d 00 8b  |        ........|
000011c0  0b dd 20 f2 51 75 69 74  0d 00 8c 0c f2 50 61 74  |.. .Quit.....Pat|
000011d0  68 45 6e 64 0d 00 8d 38  ff 28 22 53 61 76 65 20  |hEnd...8.("Save |
000011e0  44 72 61 77 42 61 73 69  63 3a 44 72 61 77 2e 46  |DrawBasic:Draw.F|
000011f0  69 6c 65 20 22 2b c3 7e  28 21 28 93 2b 38 29 29  |ile "+.~(!(.+8))|
00001200  2b 22 20 22 2b c3 7e 28  21 93 29 29 0d 00 8e 29  |+" "+.~(!.))...)|
00001210  2a 53 65 74 54 79 70 65  20 44 72 61 77 42 61 73  |*SetType DrawBas|
00001220  69 63 3a 44 72 61 77 2e  46 69 6c 65 20 44 72 61  |ic:Draw.File Dra|
00001230  77 46 69 6c 65 0d 00 8f  22 2a 46 69 6c 65 72 5f  |wFile..."*Filer_|
00001240  52 75 6e 20 44 72 61 77  42 61 73 69 63 3a 44 72  |Run DrawBasic:Dr|
00001250  61 77 2e 46 69 6c 65 0d  00 90 05 e0 0d 00 91 14  |aw.File.........|
00001260  dd 20 a4 55 6e 69 74 73  3d 21 28 93 2b 36 30 29  |. .Units=!(.+60)|
00001270  0d 00 92 12 dd 20 f2 43  65 6e 74 69 6d 65 74 72  |..... .Centimetr|
00001280  65 73 0d 00 93 1e 21 28  93 2b 36 30 29 3d a8 28  |es....!(.+60)=.(|
00001290  32 35 36 2a 31 38 30 2f  32 2e 35 34 2b 2e 35 29  |256*180/2.54+.5)|
000012a0  0d 00 94 19 f2 46 72 61  6d 65 53 69 7a 65 28 30  |.....FrameSize(0|
000012b0  2c 30 2c 31 32 2c 31 32  29 0d 00 95 1b f2 46 72  |,0,12,12).....Fr|
000012c0  61 6d 65 43 6f 6f 72 64  73 28 30 2c 31 32 2c 30  |ameCoords(0,12,0|
000012d0  2c 31 32 29 0d 00 96 0c  f2 50 72 65 76 69 65 77  |,12).....Preview|
000012e0  0d 00 97 05 e1 0d 00 98  22 dd 20 a4 44 72 61 77  |........". .Draw|
000012f0  55 6e 69 74 73 28 61 29  3d a8 28 a4 55 6e 69 74  |Units(a)=.(.Unit|
00001300  73 2a 61 2b 2e 35 29 0d  00 99 22 dd 20 f2 46 72  |s*a+.5)...". .Fr|
00001310  61 6d 65 53 69 7a 65 28  61 2c 62 2c 77 69 64 74  |ameSize(a,b,widt|
00001320  68 2c 68 65 69 67 68 74  29 0d 00 9a 22 f2 46 72  |h,height)...".Fr|
00001330  61 6d 65 43 6f 6f 72 64  73 28 30 2c 77 69 64 74  |ameCoords(0,widt|
00001340  68 2c 30 2c 68 65 69 67  68 74 29 0d 00 9b 1f 21  |h,0,height)....!|
00001350  28 93 2b 32 30 29 3d a4  44 72 61 77 55 6e 69 74  |(.+20)=.DrawUnit|
00001360  73 28 77 69 64 74 68 29  20 20 0d 00 9c 1f 21 28  |s(width)  ....!(|
00001370  93 2b 32 34 29 3d a4 44  72 61 77 55 6e 69 74 73  |.+24)=.DrawUnits|
00001380  28 68 65 69 67 68 74 29  20 0d 00 9d 1f 21 28 93  |(height) ....!(.|
00001390  2b 31 32 29 3d a4 44 72  61 77 55 6e 69 74 73 28  |+12)=.DrawUnits(|
000013a0  61 29 20 20 20 20 20 20  0d 00 9e 1f 21 28 93 2b  |a)      ....!(.+|
000013b0  31 36 29 3d a4 44 72 61  77 55 6e 69 74 73 28 62  |16)=.DrawUnits(b|
000013c0  29 20 20 20 20 20 20 0d  00 9f 05 e1 0d 00 a0 16  |)      .........|
000013d0  dd 20 a4 46 72 61 6d 65  5f 78 3d 21 28 93 2b 31  |. .Frame_x=!(.+1|
000013e0  32 29 0d 00 a1 16 dd 20  a4 46 72 61 6d 65 5f 79  |2)..... .Frame_y|
000013f0  3d 21 28 93 2b 31 36 29  0d 00 a2 1a dd 20 a4 46  |=!(.+16)..... .F|
00001400  72 61 6d 65 5f 57 69 64  74 68 3d 21 28 93 2b 32  |rame_Width=!(.+2|
00001410  30 29 0d 00 a3 1b dd 20  a4 46 72 61 6d 65 5f 48  |0)..... .Frame_H|
00001420  65 69 67 68 74 3d 21 28  93 2b 32 34 29 0d 00 a4  |eight=!(.+24)...|
00001430  16 dd 20 a4 46 52 41 4d  45 5f 78 3d 7c 28 93 2b  |.. .FRAME_x=|(.+|
00001440  32 38 29 0d 00 a5 16 dd  20 a4 46 52 41 4d 45 5f  |28)..... .FRAME_|
00001450  79 3d 7c 28 93 2b 33 36  29 0d 00 a6 1a dd 20 a4  |y=|(.+36)..... .|
00001460  46 52 41 4d 45 5f 57 69  64 74 68 3d 7c 28 93 2b  |FRAME_Width=|(.+|
00001470  34 34 29 0d 00 a7 1b dd  20 a4 46 52 41 4d 45 5f  |44)..... .FRAME_|
00001480  48 65 69 67 68 74 3d 7c  28 93 2b 35 32 29 0d 00  |Height=|(.+52)..|
00001490  a8 28 dd 20 a4 58 5f 53  63 61 6c 65 3d a4 46 72  |.(. .X_Scale=.Fr|
000014a0  61 6d 65 5f 57 69 64 74  68 2f a4 46 52 41 4d 45  |ame_Width/.FRAME|
000014b0  5f 57 69 64 74 68 0d 00  a9 2a dd 20 a4 59 5f 53  |_Width...*. .Y_S|
000014c0  63 61 6c 65 3d a4 46 72  61 6d 65 5f 48 65 69 67  |cale=.Frame_Heig|
000014d0  68 74 2f a4 46 52 41 4d  45 5f 48 65 69 67 68 74  |ht/.FRAME_Height|
000014e0  0d 00 aa 35 dd 20 a4 44  72 61 77 5f 58 28 78 29  |...5. .Draw_X(x)|
000014f0  3d a8 28 a4 46 72 61 6d  65 5f 78 2b 28 78 2d a4  |=.(.Frame_x+(x-.|
00001500  46 52 41 4d 45 5f 78 29  2a a4 58 5f 53 63 61 6c  |FRAME_x)*.X_Scal|
00001510  65 2b 2e 35 29 0d 00 ab  35 dd 20 a4 44 72 61 77  |e+.5)...5. .Draw|
00001520  5f 59 28 79 29 3d a8 28  a4 46 72 61 6d 65 5f 79  |_Y(y)=.(.Frame_y|
00001530  2b 28 79 2d a4 46 52 41  4d 45 5f 79 29 2a a4 59  |+(y-.FRAME_y)*.Y|
00001540  5f 53 63 61 6c 65 2b 2e  35 29 0d 00 ac 1b dd 20  |_Scale+.5)..... |
00001550  f2 46 72 61 6d 65 43 6f  6f 72 64 73 28 61 2c 62  |.FrameCoords(a,b|
00001560  2c 75 2c 76 29 0d 00 ad  0d ea 20 5f 66 72 61 6d  |,u,v)..... _fram|
00001570  65 25 0d 00 ae 10 5f 66  72 61 6d 65 25 3d 93 2b  |e%...._frame%=.+|
00001580  32 38 0d 00 af 37 e7 20  61 3e 3d 62 20 8c 85 20  |28...7. a>=b .. |
00001590  30 2c 20 c3 20 61 2b 22  20 3c 20 78 20 3c 20 22  |0, . a+" < x < "|
000015a0  2b c3 20 62 2b 22 20 69  73 20 61 20 62 61 64 20  |+. b+" is a bad |
000015b0  78 20 72 61 6e 67 65 20  22 0d 00 b0 37 e7 20 75  |x range "...7. u|
000015c0  3e 3d 76 20 8c 85 20 30  2c 20 c3 20 75 2b 22 20  |>=v .. 0, . u+" |
000015d0  3c 20 79 20 3c 20 22 2b  c3 20 76 2b 22 20 69 73  |< y < "+. v+" is|
000015e0  20 61 20 62 61 64 20 79  20 72 61 6e 67 65 20 22  | a bad y range "|
000015f0  0d 00 b1 25 7c 28 5f 66  72 61 6d 65 25 29 3d 61  |...%|(_frame%)=a|
00001600  20 20 20 20 20 20 3a 7c  28 5f 66 72 61 6d 65 25  |      :|(_frame%|
00001610  2b 38 29 3d 75 0d 00 b2  28 7c 28 5f 66 72 61 6d  |+8)=u...(|(_fram|
00001620  65 25 2b 31 36 29 3d 62  2d 61 20 3a 7c 28 5f 66  |e%+16)=b-a :|(_f|
00001630  72 61 6d 65 25 2b 32 34  29 3d 76 2d 75 0d 00 b3  |rame%+24)=v-u...|
00001640  05 e1 0d 00 b4 16 dd 20  a4 44 72 61 77 44 78 3d  |....... .DrawDx=|
00001650  21 28 93 2b 31 31 32 29  0d 00 b5 16 dd 20 a4 44  |!(.+112)..... .D|
00001660  72 61 77 44 79 3d 21 28  93 2b 31 31 36 29 0d 00  |rawDy=!(.+116)..|
00001670  b6 15 dd 20 a4 44 72 61  77 54 72 61 6e 73 3d 93  |... .DrawTrans=.|
00001680  2b 39 36 0d 00 b7 0e dd  20 f2 50 72 65 76 69 65  |+96..... .Previe|
00001690  77 0d 00 b8 0b ef 20 32  36 20 3a da 0d 00 b9 25  |w..... 26 :....%|
000016a0  ea 20 5f 68 2c 5f 6d 61  78 25 2c 5f 78 25 2c 5f  |. _h,_max%,_x%,_|
000016b0  79 25 2c 5f 49 25 2c 5f  66 6f 6e 74 25 2c 5f 6e  |y%,_I%,_font%,_n|
000016c0  24 0d 00 ba 23 f2 44 72  61 77 50 72 65 76 69 65  |$...#.DrawPrevie|
000016d0  77 42 6f 72 64 65 72 73  28 33 30 30 30 2c 31 32  |wBorders(3000,12|
000016e0  2c 38 29 20 0d 00 bb 1d  f2 44 72 61 77 50 72 65  |,8) .....DrawPre|
000016f0  76 69 65 77 48 53 63 61  6c 65 73 28 33 30 30 30  |viewHScales(3000|
00001700  29 0d 00 bc 1d f2 44 72  61 77 50 72 65 76 69 65  |).....DrawPrevie|
00001710  77 56 53 63 61 6c 65 73  28 33 30 30 30 29 0d 00  |wVScales(3000)..|
00001720  bd 1b f2 44 72 61 77 50  72 65 76 69 65 77 54 69  |...DrawPreviewTi|
00001730  74 6c 65 28 31 34 2c 37  29 0d 00 be 05 e1 0d 00  |tle(14,7).......|
00001740  bf 2e dd 20 f2 44 72 61  77 50 72 65 76 69 65 77  |... .DrawPreview|
00001750  42 6f 72 64 65 72 73 28  6d 61 78 25 2c 70 6f 69  |Borders(max%,poi|
00001760  6e 74 25 2c 63 6f 6c 6f  75 72 25 29 0d 00 c0 14  |nt%,colour%)....|
00001770  70 6f 69 6e 74 25 3d 70  6f 69 6e 74 25 2a 31 36  |point%=point%*16|
00001780  0d 00 c1 2e c8 99 20 22  43 6f 6c 6f 75 72 54 72  |...... "ColourTr|
00001790  61 6e 73 5f 53 65 74 47  43 4f 4c 22 2c a4 44 65  |ans_SetGCOL",.De|
000017a0  73 6b 74 6f 70 43 6f 6c  6f 75 72 28 32 29 0d 00  |sktopColour(2)..|
000017b0  c2 1d c8 93 20 c8 90 20  30 2c 30 2c a4 44 72 61  |.... .. 0,0,.Dra|
000017c0  77 44 79 3e 3e 38 2c 6d  61 78 25 0d 00 c3 1d c8  |wDy>>8,max%.....|
000017d0  93 20 c8 90 20 30 2c 30  2c 6d 61 78 25 2c a4 44  |. .. 0,0,max%,.D|
000017e0  72 61 77 44 78 3e 3e 38  0d 00 c4 2e c8 99 20 22  |rawDx>>8...... "|
000017f0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 47  |ColourTrans_SetG|
00001800  43 4f 4c 22 2c a4 44 65  73 6b 74 6f 70 43 6f 6c  |COL",.DesktopCol|
00001810  6f 75 72 28 37 29 0d 00  c5 2b 86 20 a4 44 72 61  |our(7)...+. .Dra|
00001820  77 44 78 3e 3e 38 2c a4  44 72 61 77 44 79 3e 3e  |wDx>>8,.DrawDy>>|
00001830  38 2c 6d 61 78 25 2c a4  44 72 61 77 44 79 3e 3e  |8,max%,.DrawDy>>|
00001840  38 0d 00 c6 2b 86 20 a4  44 72 61 77 44 78 3e 3e  |8...+. .DrawDx>>|
00001850  38 2c a4 44 72 61 77 44  79 3e 3e 38 2c a4 44 72  |8,.DrawDy>>8,.Dr|
00001860  61 77 44 78 3e 3e 38 2c  6d 61 78 25 0d 00 c7 39  |awDx>>8,max%...9|
00001870  c8 99 20 22 46 6f 6e 74  5f 46 69 6e 64 46 6f 6e  |.. "Font_FindFon|
00001880  74 22 2c 2c 22 54 72 69  6e 69 74 79 2e 4d 65 64  |t",,"Trinity.Med|
00001890  69 75 6d 22 2b bd 30 2c  70 6f 69 6e 74 25 2c 70  |ium"+.0,point%,p|
000018a0  6f 69 6e 74 25 0d 00 c8  51 c8 99 20 22 43 6f 6c  |oint%...Q.. "Col|
000018b0  6f 75 72 54 72 61 6e 73  5f 53 65 74 46 6f 6e 74  |ourTrans_SetFont|
000018c0  43 6f 6c 6f 75 72 73 22  2c 2c a4 44 65 73 6b 74  |Colours",,.Deskt|
000018d0  6f 70 43 6f 6c 6f 75 72  28 32 29 2c a4 44 65 73  |opColour(2),.Des|
000018e0  6b 74 6f 70 43 6f 6c 6f  75 72 28 63 6f 6c 6f 75  |ktopColour(colou|
000018f0  72 25 29 2c 31 34 0d 00  c9 05 e1 0d 00 ca 27 dd  |r%),14........'.|
00001900  20 f2 44 72 61 77 50 72  65 76 69 65 77 54 69 74  | .DrawPreviewTit|
00001910  6c 65 28 70 6f 69 6e 74  25 2c 63 6f 6c 6f 75 72  |le(point%,colour|
00001920  25 29 0d 00 cb 10 ea 20  5f 6e 24 2c 5f 66 24 2c  |%)..... _n$,_f$,|
00001930  69 25 0d 00 cc 30 5f 66  24 3d a4 52 65 61 64 53  |i%...0_f$=.ReadS|
00001940  79 73 74 65 6d 56 61 72  69 61 62 6c 65 28 22 44  |ystemVariable("D|
00001950  72 61 77 42 61 73 69 63  24 4f 70 74 69 6f 6e 73  |rawBasic$Options|
00001960  22 29 0d 00 cd 2d 69 25  3d a7 5f 66 24 2c 22 3a  |")...-i%=._f$,":|
00001970  22 29 20 3a e7 20 69 25  3c 3e 30 20 8c 5f 66 24  |") :. i%<>0 ._f$|
00001980  3d c2 5f 66 24 2c a9 20  5f 66 24 2d 69 25 29 0d  |=._f$,. _f$-i%).|
00001990  00 ce 14 70 6f 69 6e 74  25 3d 70 6f 69 6e 74 25  |...point%=point%|
000019a0  2a 31 36 0d 00 cf 20 5f  6e 24 3d 22 44 72 61 77  |*16... _n$="Draw|
000019b0  42 61 73 69 63 20 22 2b  a4 4c 65 61 66 28 5f 66  |Basic "+.Leaf(_f|
000019c0  24 29 20 0d 00 d0 36 e7  20 a4 55 6e 69 74 73 3d  |$) ...6. .Units=|
000019d0  32 35 36 2a 31 38 30 20  8c 5f 6e 24 2b 3d 22 20  |256*180 ._n$+=" |
000019e0  28 49 6e 63 68 65 73 29  22 20 20 8b 5f 6e 24 2b  |(Inches)"  ._n$+|
000019f0  3d 22 20 28 43 6d 73 29  22 0d 00 d1 39 c8 99 20  |=" (Cms)"...9.. |
00001a00  22 46 6f 6e 74 5f 46 69  6e 64 46 6f 6e 74 22 2c  |"Font_FindFont",|
00001a10  2c 22 54 72 69 6e 69 74  79 2e 4d 65 64 69 75 6d  |,"Trinity.Medium|
00001a20  22 2b bd 30 2c 70 6f 69  6e 74 25 2c 70 6f 69 6e  |"+.0,point%,poin|
00001a30  74 25 0d 00 d2 51 c8 99  20 22 43 6f 6c 6f 75 72  |t%...Q.. "Colour|
00001a40  54 72 61 6e 73 5f 53 65  74 46 6f 6e 74 43 6f 6c  |Trans_SetFontCol|
00001a50  6f 75 72 73 22 2c 2c a4  44 65 73 6b 74 6f 70 43  |ours",,.DesktopC|
00001a60  6f 6c 6f 75 72 28 32 29  2c a4 44 65 73 6b 74 6f  |olour(2),.Deskto|
00001a70  70 43 6f 6c 6f 75 72 28  63 6f 6c 6f 75 72 25 29  |pColour(colour%)|
00001a80  2c 31 34 0d 00 d3 25 c8  99 20 22 46 6f 6e 74 5f  |,14...%.. "Font_|
00001a90  50 61 69 6e 74 22 2c 2c  5f 6e 24 2c 25 31 30 30  |Paint",,_n$,%100|
00001aa0  30 30 2c 31 36 2c 31 32  0d 00 d4 08 e1 20 20 20  |00,16,12.....   |
00001ab0  0d 00 d5 24 dd 20 a4 52  65 61 64 53 79 73 74 65  |...$. .ReadSyste|
00001ac0  6d 56 61 72 69 61 62 6c  65 28 76 61 72 69 61 62  |mVariable(variab|
00001ad0  6c 65 24 29 0d 00 d6 16  ea 20 5f 6c 65 6e 25 2c  |le$)..... _len%,|
00001ae0  5f 76 61 72 69 61 62 6c  65 25 0d 00 d7 14 de 20  |_variable%..... |
00001af0  5f 76 61 72 69 61 62 6c  65 25 20 32 35 36 0d 00  |_variable% 256..|
00001b00  d8 3c c8 99 20 22 4f 53  5f 52 65 61 64 56 61 72  |.<.. "OS_ReadVar|
00001b10  56 61 6c 22 2c 76 61 72  69 61 62 6c 65 24 2c 5f  |Val",variable$,_|
00001b20  76 61 72 69 61 62 6c 65  25 2c 32 35 36 2c 2c 33  |variable%,256,,3|
00001b30  20 b8 20 2c 2c 5f 6c 65  6e 25 0d 00 d9 17 5f 76  | . ,,_len%...._v|
00001b40  61 72 69 61 62 6c 65 25  3f 5f 6c 65 6e 25 3d 31  |ariable%?_len%=1|
00001b50  33 0d 00 da 10 3d 24 5f  76 61 72 69 61 62 6c 65  |3....=$_variable|
00001b60  25 0d 00 db 0f dd 20 a4  4c 65 61 66 28 78 24 29  |%..... .Leaf(x$)|
00001b70  0d 00 dc 17 ea 20 5f 69  25 20 3a 5f 69 25 3d a7  |..... _i% :_i%=.|
00001b80  78 24 2c 22 2e 22 29 0d  00 dd 27 e7 20 5f 69 25  |x$,".")...'. _i%|
00001b90  3d 30 20 8c 3d 78 24 20  8b 3d a4 4c 65 61 66 28  |=0 .=x$ .=.Leaf(|
00001ba0  c2 78 24 2c a9 20 78 24  2d 5f 69 25 29 29 0d 00  |.x$,. x$-_i%))..|
00001bb0  de 1f dd 20 f2 44 72 61  77 50 72 65 76 69 65 77  |... .DrawPreview|
00001bc0  48 53 63 61 6c 65 73 28  6d 61 78 25 29 0d 00 df  |HScales(max%)...|
00001bd0  1a ea 20 5f 68 2c 5f 78  25 2c 5f 49 25 2c 5f 64  |.. _h,_x%,_I%,_d|
00001be0  78 25 2c 5f 64 79 25 0d  00 e0 3b 5f 49 25 3d 30  |x%,_dy%...;_I%=0|
00001bf0  20 20 3a 5f 68 25 3d a4  55 6e 69 74 73 3e 3e 38  |  :_h%=.Units>>8|
00001c00  20 3a 5f 64 78 25 3d a4  44 72 61 77 44 78 3e 3e  | :_dx%=.DrawDx>>|
00001c10  38 20 3a 5f 64 79 25 3d  a4 44 72 61 77 44 79 3e  |8 :_dy%=.DrawDy>|
00001c20  3e 38 0d 00 e1 21 f5 20  3a 5f 78 25 3d 5f 64 78  |>8...!. :_x%=_dx|
00001c30  25 2b 28 a4 44 72 61 77  5f 59 28 5f 49 25 29 3e  |%+(.Draw_Y(_I%)>|
00001c40  3e 38 29 0d 00 e2 1b 86  20 5f 78 25 2c 5f 64 79  |>8)..... _x%,_dy|
00001c50  25 2c 5f 78 25 2c 33 2a  5f 64 79 25 2f 34 0d 00  |%,_x%,3*_dy%/4..|
00001c60  e3 27 86 20 5f 78 25 2b  5f 68 25 2f 32 2c 5f 64  |.'. _x%+_h%/2,_d|
00001c70  79 25 2c 5f 78 25 2b 5f  68 25 2f 32 2c 37 2a 5f  |y%,_x%+_h%/2,7*_|
00001c80  64 79 25 2f 38 0d 00 e4  2f c8 99 20 22 46 6f 6e  |dy%/8.../.. "Fon|
00001c90  74 5f 50 61 69 6e 74 22  2c 2c c3 28 5f 49 25 29  |t_Paint",,.(_I%)|
00001ca0  2c 25 31 30 30 30 30 2c  5f 78 25 2d 38 2c 5f 64  |,%10000,_x%-8,_d|
00001cb0  79 25 2f 32 0d 00 e5 0a  5f 49 25 2b 3d 31 0d 00  |y%/2...._I%+=1..|
00001cc0  e6 0e fd 20 5f 78 25 3e  6d 61 78 25 0d 00 e7 05  |... _x%>max%....|
00001cd0  e1 0d 00 e8 1f dd 20 f2  44 72 61 77 50 72 65 76  |...... .DrawPrev|
00001ce0  69 65 77 56 53 63 61 6c  65 73 28 6d 61 78 25 29  |iewVScales(max%)|
00001cf0  0d 00 e9 1a ea 20 5f 68  2c 5f 79 25 2c 5f 49 25  |..... _h,_y%,_I%|
00001d00  2c 5f 64 78 25 2c 5f 64  79 25 0d 00 ea 3a 5f 49  |,_dx%,_dy%...:_I|
00001d10  25 3d 30 20 3a 5f 68 25  3d a4 55 6e 69 74 73 3e  |%=0 :_h%=.Units>|
00001d20  3e 38 20 3a 5f 64 78 25  3d a4 44 72 61 77 44 78  |>8 :_dx%=.DrawDx|
00001d30  3e 3e 38 20 3a 5f 64 79  25 3d a4 44 72 61 77 44  |>>8 :_dy%=.DrawD|
00001d40  79 3e 3e 38 0d 00 eb 21  f5 20 3a 5f 79 25 3d 5f  |y>>8...!. :_y%=_|
00001d50  64 79 25 2b 28 a4 44 72  61 77 5f 58 28 5f 49 25  |dy%+(.Draw_X(_I%|
00001d60  29 3e 3e 38 29 0d 00 ec  1c 86 20 20 5f 64 78 25  |)>>8).....  _dx%|
00001d70  2c 5f 79 25 2c 33 2a 5f  64 78 25 2f 34 2c 5f 79  |,_y%,3*_dx%/4,_y|
00001d80  25 0d 00 ed 28 86 20 20  5f 64 78 25 2c 5f 79 25  |%...(.  _dx%,_y%|
00001d90  2b 5f 68 25 2f 32 2c 37  2a 5f 64 78 25 2f 38 2c  |+_h%/2,7*_dx%/8,|
00001da0  5f 79 25 2b 5f 68 25 2f  32 0d 00 ee 0d e7 20 5f  |_y%+_h%/2..... _|
00001db0  49 25 3e 39 20 8c 0d 00  ef 2c c8 99 20 22 46 6f  |I%>9 ....,.. "Fo|
00001dc0  6e 74 5f 50 61 69 6e 74  22 2c 2c c3 28 5f 49 25  |nt_Paint",,.(_I%|
00001dd0  29 2c 25 31 30 30 30 30  2c 33 36 2c 5f 79 25 2d  |),%10000,36,_y%-|
00001de0  31 30 0d 00 f0 05 cc 0d  00 f1 2c c8 99 20 22 46  |10........,.. "F|
00001df0  6f 6e 74 5f 50 61 69 6e  74 22 2c 2c c3 28 5f 49  |ont_Paint",,.(_I|
00001e00  25 29 2c 25 31 30 30 30  30 2c 34 38 2c 5f 79 25  |%),%10000,48,_y%|
00001e10  2d 31 30 0d 00 f2 05 cd  0d 00 f3 0a 5f 49 25 2b  |-10........._I%+|
00001e20  3d 31 0d 00 f4 0e fd 20  5f 79 25 3e 6d 61 78 25  |=1..... _y%>max%|
00001e30  0d 00 f5 05 e1 0d 00 f6  1a dd 20 a4 43 75 72 72  |.......... .Curr|
00001e40  65 6e 74 50 61 74 68 3d  21 28 93 2b 36 34 29 0d  |entPath=!(.+64).|
00001e50  00 f7 19 dd 20 f2 43 75  72 72 65 6e 74 50 61 74  |.... .CurrentPat|
00001e60  68 28 70 61 74 68 25 29  0d 00 f8 11 21 28 93 2b  |h(path%)....!(.+|
00001e70  36 34 29 3d 70 61 74 68  25 0d 00 f9 05 e1 0d 00  |64)=path%.......|
00001e80  fa 1d dd 20 a4 43 75 72  72 65 6e 74 53 75 62 70  |... .CurrentSubp|
00001e90  61 74 68 3d 21 28 93 2b  36 38 29 0d 00 fb 1c dd  |ath=!(.+68).....|
00001ea0  20 f2 43 75 72 72 65 6e  74 53 75 62 70 61 74 68  | .CurrentSubpath|
00001eb0  28 70 61 74 68 25 29 0d  00 fc 11 21 28 93 2b 36  |(path%)....!(.+6|
00001ec0  38 29 3d 70 61 74 68 25  0d 00 fd 05 e1 0d 00 fe  |8)=path%........|
00001ed0  18 dd 20 f2 50 61 74 68  42 65 67 69 6e 28 f8 20  |.. .PathBegin(. |
00001ee0  70 61 74 68 29 0d 00 ff  1f e7 20 a4 43 75 72 72  |path)..... .Curr|
00001ef0  65 6e 74 50 61 74 68 3c  3e 30 20 8c f2 50 61 74  |entPath<>0 ..Pat|
00001f00  68 45 6e 64 0d 01 00 14  f2 43 75 72 72 65 6e 74  |hEnd.....Current|
00001f10  50 61 74 68 28 21 93 29  0d 01 01 1c e7 20 a4 43  |Path(!.)..... .C|
00001f20  75 72 72 65 6e 74 50 61  74 68 3e 3d 21 28 93 2b  |urrentPath>=!(.+|
00001f30  34 29 20 8c 0d 01 02 32  85 20 30 2c 22 4f 75 74  |4) ....2. 0,"Out|
00001f40  20 6f 66 20 6d 65 6d 6f  72 79 2e 20 49 6e 63 72  | of memory. Incr|
00001f50  65 61 73 65 20 74 68 65  20 27 46 72 65 65 27 20  |ease the 'Free' |
00001f60  73 6c 6f 74 2e 22 0d 01  03 05 cc 0d 01 04 0d 21  |slot.".........!|
00001f70  28 93 2b 34 29 2d 3d 34  0d 01 05 0f 70 61 74 68  |(.+4)-=4....path|
00001f80  3d 21 28 93 2b 34 29 0d  01 06 16 21 70 61 74 68  |=!(.+4)....!path|
00001f90  3d a4 43 75 72 72 65 6e  74 50 61 74 68 0d 01 07  |=.CurrentPath...|
00001fa0  14 f2 44 72 61 77 5f 50  61 74 68 48 65 61 64 65  |..Draw_PathHeade|
00001fb0  72 0d 01 08 22 e7 20 a4  44 61 73 68 3c 3e 30 20  |r...". .Dash<>0 |
00001fc0  8c f2 44 61 73 68 40 28  70 61 74 68 2c a4 44 61  |..Dash@(path,.Da|
00001fd0  73 68 29 0d 01 09 05 cd  0d 01 0a 05 e1 0d 01 0b  |sh).............|
00001fe0  16 dd 20 f2 44 72 61 77  5f 50 61 74 68 48 65 61  |.. .Draw_PathHea|
00001ff0  64 65 72 0d 01 0c 14 f2  44 72 61 77 5f 41 64 64  |der.....Draw_Add|
00002000  57 6f 72 64 28 30 29 0d  01 0d 21 f2 44 72 61 77  |Word(0)...!.Draw|
00002010  5f 41 64 64 57 6f 72 64  28 34 34 29 20 20 20 20  |_AddWord(44)    |
00002020  20 20 20 20 20 20 20 20  0d 01 0e 21 f2 44 72 61  |        ...!.Dra|
00002030  77 5f 41 64 64 57 6f 72  64 28 2d 31 3c 3c 33 30  |w_AddWord(-1<<30|
00002040  29 20 20 20 20 20 20 20  20 0d 01 0f 21 f2 44 72  |)        ...!.Dr|
00002050  61 77 5f 41 64 64 57 6f  72 64 28 2d 31 3c 3c 33  |aw_AddWord(-1<<3|
00002060  30 29 20 20 20 20 20 20  20 20 0d 01 10 21 f2 44  |0)        ...!.D|
00002070  72 61 77 5f 41 64 64 57  6f 72 64 28 31 3c 3c 33  |raw_AddWord(1<<3|
00002080  30 29 20 20 20 20 20 20  20 20 20 0d 01 11 21 f2  |0)         ...!.|
00002090  44 72 61 77 5f 41 64 64  57 6f 72 64 28 31 3c 3c  |Draw_AddWord(1<<|
000020a0  33 30 29 20 20 20 20 20  20 20 20 20 0d 01 12 20  |30)         ... |
000020b0  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 a4 46  |.Draw_AddWord(.F|
000020c0  69 6c 6c 43 6f 6c 6f 75  72 29 20 20 0d 01 13 20  |illColour)  ... |
000020d0  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 a4 4c  |.Draw_AddWord(.L|
000020e0  69 6e 65 43 6f 6c 6f 75  72 29 20 20 0d 01 14 20  |ineColour)  ... |
000020f0  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 a4 4c  |.Draw_AddWord(.L|
00002100  69 6e 65 57 69 64 74 68  29 20 20 20 0d 01 15 20  |ineWidth)   ... |
00002110  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 a4 53  |.Draw_AddWord(.S|
00002120  74 79 6c 65 29 20 20 20  20 20 20 20 0d 01 16 05  |tyle)       ....|
00002130  e1 0d 01 17 0e dd 20 f2  50 61 74 68 45 6e 64 0d  |...... .PathEnd.|
00002140  01 18 16 e7 20 a4 43 75  72 72 65 6e 74 50 61 74  |.... .CurrentPat|
00002150  68 3d 30 20 e1 0d 01 19  2b e7 20 a4 43 75 72 72  |h=0 ....+. .Curr|
00002160  65 6e 74 53 75 62 70 61  74 68 3d 30 20 84 20 21  |entSubpath=0 . !|
00002170  a4 43 75 72 72 65 6e 74  50 61 74 68 3d 30 20 8c  |.CurrentPath=0 .|
00002180  0d 01 1a 13 21 93 3d a4  43 75 72 72 65 6e 74 50  |....!.=.CurrentP|
00002190  61 74 68 0d 01 1b 42 f2  43 75 72 72 65 6e 74 50  |ath...B.CurrentP|
000021a0  61 74 68 28 30 29 20 20  20 20 20 20 20 20 20 20  |ath(0)          |
000021b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3a  |               :|
000021c0  f2 43 75 72 72 65 6e 74  53 75 62 70 61 74 68 28  |.CurrentSubpath(|
000021d0  30 29 20 20 20 0d 01 1c  08 cc 20 20 20 0d 01 1d  |0)   .....   ...|
000021e0  2c f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 30  |,.Draw_AddWord(0|
000021f0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
00002200  20 20 20 20 20 20 20 20  20 0d 01 1e 29 21 28 a4  |         ...)!(.|
00002210  43 75 72 72 65 6e 74 50  61 74 68 2b 34 29 3d 28  |CurrentPath+4)=(|
00002220  21 93 29 2d a4 43 75 72  72 65 6e 74 50 61 74 68  |!.)-.CurrentPath|
00002230  20 20 0d 01 1f 2e 21 28  a4 43 75 72 72 65 6e 74  |  ....!(.Current|
00002240  50 61 74 68 29 3d 32 20  20 20 20 20 20 20 20 20  |Path)=2         |
00002250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002260  0d 01 20 2d f2 44 72 61  77 5f 52 65 6e 64 65 72  |.. -.Draw_Render|
00002270  50 61 74 68 28 a4 43 75  72 72 65 6e 74 50 61 74  |Path(.CurrentPat|
00002280  68 2c a4 44 72 61 77 54  72 61 6e 73 29 0d 01 21  |h,.DrawTrans)..!|
00002290  43 f2 43 75 72 72 65 6e  74 50 61 74 68 28 30 29  |C.CurrentPath(0)|
000022a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000022b0  20 20 20 20 20 20 20 20  20 3a f2 43 75 72 72 65  |         :.Curre|
000022c0  6e 74 53 75 62 70 61 74  68 28 30 29 20 20 20 20  |ntSubpath(0)    |
000022d0  0d 01 22 05 cd 0d 01 23  05 e1 0d 01 24 15 dd 20  |.."....#....$.. |
000022e0  a4 44 72 61 77 54 72 61  6e 73 3d 93 2b 39 36 0d  |.DrawTrans=.+96.|
000022f0  01 25 10 dd 20 f2 4d 6f  76 65 28 78 2c 79 29 0d  |.%.. .Move(x,y).|
00002300  01 26 0b ea 20 5f 70 61  74 68 0d 01 27 27 e7 20  |.&.. _path..''. |
00002310  a4 43 75 72 72 65 6e 74  50 61 74 68 3d 30 20 8c  |.CurrentPath=0 .|
00002320  f2 50 61 74 68 42 65 67  69 6e 28 5f 70 61 74 68  |.PathBegin(_path|
00002330  29 0d 01 28 14 f2 44 72  61 77 5f 41 64 64 57 6f  |)..(..Draw_AddWo|
00002340  72 64 28 32 29 0d 01 29  17 f2 43 75 72 72 65 6e  |rd(2)..)..Curren|
00002350  74 53 75 62 70 61 74 68  28 21 93 29 0d 01 2a 18  |tSubpath(!.)..*.|
00002360  f2 44 72 61 77 5f 41 64  64 43 6f 6f 72 64 73 28  |.Draw_AddCoords(|
00002370  78 2c 79 29 0d 01 2b 37  ec 20 28 21 28 93 2b 31  |x,y)..+7. (!(.+1|
00002380  31 32 29 2b a4 44 72 61  77 5f 58 28 78 29 29 3e  |12)+.Draw_X(x))>|
00002390  3e 38 2c 28 21 28 93 2b  31 31 36 29 2b a4 44 72  |>8,(!(.+116)+.Dr|
000023a0  61 77 5f 59 28 79 29 29  3e 3e 38 0d 01 2c 05 e1  |aw_Y(y))>>8..,..|
000023b0  0d 01 2d 1a dd 20 f2 42  65 7a 69 65 72 28 61 2c  |..-.. .Bezier(a,|
000023c0  62 2c 63 2c 64 2c 78 2c  79 29 0d 01 2e 23 ea 20  |b,c,d,x,y)...#. |
000023d0  5f 70 61 74 68 25 2c 5f  73 74 6f 72 65 25 20 3a  |_path%,_store% :|
000023e0  5f 70 61 74 68 25 3d 21  28 93 2b 34 29 0d 01 2f  |_path%=!(.+4)../|
000023f0  41 e7 20 a4 43 75 72 72  65 6e 74 50 61 74 68 3d  |A. .CurrentPath=|
00002400  30 20 20 20 20 85 20 a2  20 31 2c 22 43 61 6e 27  |0    . . 1,"Can'|
00002410  74 20 44 72 61 77 20 42  65 7a 69 65 72 20 69 66  |t Draw Bezier if|
00002420  20 4e 6f 20 50 61 74 68  42 65 67 75 6e 22 0d 01  | No PathBegun"..|
00002430  30 4a e7 20 a4 43 75 72  72 65 6e 74 53 75 62 70  |0J. .CurrentSubp|
00002440  61 74 68 3d 30 20 85 20  a2 20 30 2c 22 53 75 62  |ath=0 . . 0,"Sub|
00002450  70 61 74 68 20 6d 75 73  74 20 73 74 61 72 74 20  |path must start |
00002460  77 69 74 68 20 4d 6f 76  65 20 62 65 66 6f 72 65  |with Move before|
00002470  20 42 65 7a 69 65 72 22  0d 01 31 35 5f 70 61 74  | Bezier"..15_pat|
00002480  68 25 3d 21 93 20 3a 5f  70 61 74 68 25 2d 3d 31  |h%=!. :_path%-=1|
00002490  32 20 3a 5f 73 74 6f 72  65 25 3d 21 5f 70 61 74  |2 :_store%=!_pat|
000024a0  68 25 20 3a 21 5f 70 61  74 68 25 3d 32 0d 01 32  |h% :!_path%=2..2|
000024b0  14 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 36  |..Draw_AddWord(6|
000024c0  29 0d 01 33 18 f2 44 72  61 77 5f 41 64 64 43 6f  |)..3..Draw_AddCo|
000024d0  6f 72 64 73 28 61 2c 62  29 0d 01 34 18 f2 44 72  |ords(a,b)..4..Dr|
000024e0  61 77 5f 41 64 64 43 6f  6f 72 64 73 28 63 2c 64  |aw_AddCoords(c,d|
000024f0  29 0d 01 35 18 f2 44 72  61 77 5f 41 64 64 43 6f  |)..5..Draw_AddCo|
00002500  6f 72 64 73 28 78 2c 79  29 0d 01 36 14 f2 44 72  |ords(x,y)..6..Dr|
00002510  61 77 5f 41 64 64 57 6f  72 64 28 30 29 0d 01 37  |aw_AddWord(0)..7|
00002520  09 21 93 2d 3d 34 0d 01  38 27 c8 99 20 22 44 72  |.!.-=4..8'.. "Dr|
00002530  61 77 5f 53 74 72 6f 6b  65 22 2c 5f 70 61 74 68  |aw_Stroke",_path|
00002540  25 2c 2c a4 44 72 61 77  54 72 61 6e 73 0d 01 39  |%,,.DrawTrans..9|
00002550  13 21 5f 70 61 74 68 25  3d 5f 73 74 6f 72 65 25  |.!_path%=_store%|
00002560  0d 01 3a 15 21 28 a4 43  75 72 72 65 6e 74 50 61  |..:.!(.CurrentPa|
00002570  74 68 29 3d b9 0d 01 3b  37 ec 20 28 21 28 93 2b  |th)=...;7. (!(.+|
00002580  31 31 32 29 2b a4 44 72  61 77 5f 58 28 78 29 29  |112)+.Draw_X(x))|
00002590  3e 3e 38 2c 28 21 28 93  2b 31 31 36 29 2b a4 44  |>>8,(!(.+116)+.D|
000025a0  72 61 77 5f 59 28 79 29  29 3e 3e 38 0d 01 3c 05  |raw_Y(y))>>8..<.|
000025b0  e1 0d 01 3d 14 dd 20 f2  43 6c 6f 73 65 57 69 74  |...=.. .CloseWit|
000025c0  68 4c 69 6e 65 0d 01 3e  2a e7 20 20 a4 43 75 72  |hLine..>*.  .Cur|
000025d0  72 65 6e 74 50 61 74 68  3c 3e 30 20 80 20 a4 43  |rentPath<>0 . .C|
000025e0  75 72 72 65 6e 74 50 61  74 68 3c 3e 30 20 8c 0d  |urrentPath<>0 ..|
000025f0  01 3f 0d ea 20 5f 78 25  2c 5f 79 25 0d 01 40 31  |.?.. _x%,_y%..@1|
00002600  5f 78 25 3d 21 a4 43 75  72 72 65 6e 74 53 75 62  |_x%=!.CurrentSub|
00002610  70 61 74 68 3a 5f 79 25  3d 21 28 a4 43 75 72 72  |path:_y%=!(.Curr|
00002620  65 6e 74 53 75 62 70 61  74 68 2b 34 29 0d 01 41  |entSubpath+4)..A|
00002630  29 df 20 28 21 28 93 2b  31 31 32 29 2b 5f 78 25  |). (!(.+112)+_x%|
00002640  29 3e 3e 38 2c 28 21 28  93 2b 31 31 36 29 2b 5f  |)>>8,(!(.+116)+_|
00002650  79 25 29 3e 3e 38 0d 01  42 14 f2 44 72 61 77 5f  |y%)>>8..B..Draw_|
00002660  41 64 64 57 6f 72 64 28  35 29 0d 01 43 05 cd 0d  |AddWord(5)..C...|
00002670  01 44 05 e1 0d 01 45 1a  dd 20 f2 40 43 69 72 63  |.D....E.. .@Circ|
00002680  6c 65 28 78 2c 79 2c 72  61 64 69 75 73 29 0d 01  |le(x,y,radius)..|
00002690  46 1e ea 20 5f 61 20 3a  5f 61 3d 72 61 64 69 75  |F.. _a :_a=radiu|
000026a0  73 2a 34 2a 28 b6 32 2d  31 29 2f 33 0d 01 47 15  |s*4*(.2-1)/3..G.|
000026b0  f2 4d 6f 76 65 28 78 2c  79 2b 72 61 64 69 75 73  |.Move(x,y+radius|
000026c0  29 0d 01 48 33 f2 42 65  7a 69 65 72 28 78 2b 5f  |)..H3.Bezier(x+_|
000026d0  61 2c 79 2b 72 61 64 69  75 73 2c 78 2b 72 61 64  |a,y+radius,x+rad|
000026e0  69 75 73 2c 79 2b 5f 61  2c 78 2b 72 61 64 69 75  |ius,y+_a,x+radiu|
000026f0  73 2c 79 29 0d 01 49 33  f2 42 65 7a 69 65 72 28  |s,y)..I3.Bezier(|
00002700  78 2b 72 61 64 69 75 73  2c 79 2d 5f 61 2c 78 2b  |x+radius,y-_a,x+|
00002710  5f 61 2c 79 2d 72 61 64  69 75 73 2c 78 2c 79 2d  |_a,y-radius,x,y-|
00002720  72 61 64 69 75 73 29 0d  01 4a 33 f2 42 65 7a 69  |radius)..J3.Bezi|
00002730  65 72 28 78 2d 5f 61 2c  79 2d 72 61 64 69 75 73  |er(x-_a,y-radius|
00002740  2c 78 2d 72 61 64 69 75  73 2c 79 2d 5f 61 2c 78  |,x-radius,y-_a,x|
00002750  2d 72 61 64 69 75 73 2c  79 29 0d 01 4b 33 f2 42  |-radius,y)..K3.B|
00002760  65 7a 69 65 72 28 78 2d  72 61 64 69 75 73 2c 79  |ezier(x-radius,y|
00002770  2b 5f 61 2c 78 2d 5f 61  2c 79 2b 72 61 64 69 75  |+_a,x-_a,y+radiu|
00002780  73 2c 78 2c 79 2b 72 61  64 69 75 73 29 0d 01 4c  |s,x,y+radius)..L|
00002790  12 f2 43 6c 6f 73 65 57  69 74 68 4c 69 6e 65 0d  |..CloseWithLine.|
000027a0  01 4d 05 e1 0d 01 4e 19  dd 20 a4 43 69 72 63 6c  |.M....N.. .Circl|
000027b0  65 28 78 2c 79 2c 72 61  64 69 75 73 29 0d 01 4f  |e(x,y,radius)..O|
000027c0  0c ea 20 5f 70 61 74 68  25 0d 01 50 16 f2 50 61  |.. _path%..P..Pa|
000027d0  74 68 42 65 67 69 6e 28  5f 70 61 74 68 25 29 0d  |thBegin(_path%).|
000027e0  01 51 18 f2 40 43 69 72  63 6c 65 28 78 2c 79 2c  |.Q..@Circle(x,y,|
000027f0  72 61 64 69 75 73 29 0d  01 52 0c f2 50 61 74 68  |radius)..R..Path|
00002800  45 6e 64 0d 01 53 0b 3d  5f 70 61 74 68 25 0d 01  |End..S.=_path%..|
00002810  54 19 dd 20 a4 4c 69 6e  65 57 69 64 74 68 3d 21  |T.. .LineWidth=!|
00002820  28 93 2b 32 33 32 29 0d  01 55 1a dd 20 a4 4c 69  |(.+232)..U.. .Li|
00002830  6e 65 43 6f 6c 6f 75 72  3d 21 28 93 2b 32 32 34  |neColour=!(.+224|
00002840  29 0d 01 56 1a dd 20 a4  46 69 6c 6c 43 6f 6c 6f  |)..V.. .FillColo|
00002850  75 72 3d 21 28 93 2b 32  32 38 29 0d 01 57 42 dd  |ur=!(.+228)..WB.|
00002860  20 a4 53 68 61 64 65 28  52 65 64 25 2c 47 72 65  | .Shade(Red%,Gre|
00002870  65 6e 25 2c 42 6c 75 65  25 29 3d 28 52 65 64 25  |en%,Blue%)=(Red%|
00002880  3c 3c 38 29 2b 28 47 72  65 65 6e 25 3c 3c 31 36  |<<8)+(Green%<<16|
00002890  29 2b 28 42 6c 75 65 25  3c 3c 32 34 29 0d 01 58  |)+(Blue%<<24)..X|
000028a0  1d dd 20 a4 44 65 73 6b  74 6f 70 43 6f 6c 6f 75  |.. .DesktopColou|
000028b0  72 28 63 6f 6c 6f 75 72  25 29 0d 01 59 2d e7 20  |r(colour%)..Y-. |
000028c0  94 20 63 6f 6c 6f 75 72  25 3c 32 35 36 20 8c 63  |. colour%<256 .c|
000028d0  6f 6c 6f 75 72 25 3d 28  94 20 63 6f 6c 6f 75 72  |olour%=(. colour|
000028e0  25 29 20 83 20 31 36 0d  01 5a 10 c8 8e 20 63 6f  |%) . 16..Z... co|
000028f0  6c 6f 75 72 25 20 ca 0d  01 5b 24 c9 20 30 20 3a  |lour% ...[$. 0 :|
00002900  63 6f 6c 6f 75 72 25 3d  a4 53 68 61 64 65 28 32  |colour%=.Shade(2|
00002910  35 35 2c 32 35 35 2c 32  35 35 29 0d 01 5c 24 c9  |55,255,255)..\$.|
00002920  20 31 20 3a 63 6f 6c 6f  75 72 25 3d a4 53 68 61  | 1 :colour%=.Sha|
00002930  64 65 28 32 32 31 2c 32  32 31 2c 32 32 31 29 0d  |de(221,221,221).|
00002940  01 5d 24 c9 20 32 20 3a  63 6f 6c 6f 75 72 25 3d  |.]$. 2 :colour%=|
00002950  a4 53 68 61 64 65 28 31  38 37 2c 31 38 37 2c 31  |.Shade(187,187,1|
00002960  38 37 29 0d 01 5e 24 c9  20 33 20 3a 63 6f 6c 6f  |87)..^$. 3 :colo|
00002970  75 72 25 3d a4 53 68 61  64 65 28 31 35 33 2c 31  |ur%=.Shade(153,1|
00002980  35 33 2c 31 35 33 29 0d  01 5f 24 c9 20 34 20 3a  |53,153).._$. 4 :|
00002990  63 6f 6c 6f 75 72 25 3d  a4 53 68 61 64 65 28 31  |colour%=.Shade(1|
000029a0  31 39 2c 31 31 39 2c 31  31 39 29 0d 01 60 21 c9  |19,119,119)..`!.|
000029b0  20 35 20 3a 63 6f 6c 6f  75 72 25 3d a4 53 68 61  | 5 :colour%=.Sha|
000029c0  64 65 28 38 35 2c 38 35  2c 38 35 29 0d 01 61 21  |de(85,85,85)..a!|
000029d0  c9 20 36 20 3a 63 6f 6c  6f 75 72 25 3d a4 53 68  |. 6 :colour%=.Sh|
000029e0  61 64 65 28 35 31 2c 35  31 2c 35 31 29 0d 01 62  |ade(51,51,51)..b|
000029f0  1a c9 20 37 20 3a 63 6f  6c 6f 75 72 25 3d 25 31  |.. 7 :colour%=%1|
00002a00  31 31 31 31 31 31 31 0d  01 63 21 c9 20 38 20 3a  |1111111..c!. 8 :|
00002a10  63 6f 6c 6f 75 72 25 3d  a4 53 68 61 64 65 28 30  |colour%=.Shade(0|
00002a20  2c 36 38 2c 31 35 33 29  0d 01 64 22 c9 20 39 20  |,68,153)..d". 9 |
00002a30  3a 63 6f 6c 6f 75 72 25  3d a4 53 68 61 64 65 28  |:colour%=.Shade(|
00002a40  32 33 38 2c 32 33 38 2c  30 29 0d 01 65 21 c9 20  |238,238,0)..e!. |
00002a50  31 30 20 3a 63 6f 6c 6f  75 72 25 3d a4 53 68 61  |10 :colour%=.Sha|
00002a60  64 65 28 30 2c 32 30 34  2c 30 29 0d 01 66 21 c9  |de(0,204,0)..f!.|
00002a70  20 31 31 20 3a 63 6f 6c  6f 75 72 25 3d a4 53 68  | 11 :colour%=.Sh|
00002a80  61 64 65 28 32 32 31 2c  30 2c 30 29 0d 01 67 25  |ade(221,0,0)..g%|
00002a90  c9 20 31 32 20 3a 63 6f  6c 6f 75 72 25 3d a4 53  |. 12 :colour%=.S|
00002aa0  68 61 64 65 28 32 33 38  2c 32 33 38 2c 31 38 37  |hade(238,238,187|
00002ab0  29 0d 01 68 22 c9 20 31  33 20 3a 63 6f 6c 6f 75  |)..h". 13 :colou|
00002ac0  72 25 3d a4 53 68 61 64  65 28 38 35 2c 31 33 36  |r%=.Shade(85,136|
00002ad0  2c 30 29 0d 01 69 23 c9  20 31 34 20 3a 63 6f 6c  |,0)..i#. 14 :col|
00002ae0  6f 75 72 25 3d a4 53 68  61 64 65 28 32 35 35 2c  |our%=.Shade(255,|
00002af0  31 38 37 2c 30 29 0d 01  6a 23 c9 20 31 35 20 3a  |187,0)..j#. 15 :|
00002b00  63 6f 6c 6f 75 72 25 3d  a4 53 68 61 64 65 28 30  |colour%=.Shade(0|
00002b10  2c 31 38 37 2c 32 35 35  29 0d 01 6b 05 cb 0d 01  |,187,255)..k....|
00002b20  6c 0c 3d 63 6f 6c 6f 75  72 25 0d 01 6d 15 dd 20  |l.=colour%..m.. |
00002b30  a4 53 74 79 6c 65 3d 21  28 93 2b 32 33 36 29 0d  |.Style=!(.+236).|
00002b40  01 6e 13 dd 20 a4 44 61  73 68 3d 21 28 93 2b 37  |.n.. .Dash=!(.+7|
00002b50  36 29 0d 01 6f 21 dd 20  f2 44 61 73 68 40 28 44  |6)..o!. .Dash@(D|
00002b60  72 61 77 5f 50 61 74 68  25 2c 70 61 74 74 65 72  |raw_Path%,patter|
00002b70  6e 25 29 0d 01 70 1a ea  20 5f 50 61 74 68 25 2c  |n%)..p.. _Path%,|
00002b80  5f 69 25 2c 5f 6e 25 2c  5f 6d 61 78 25 0d 01 71  |_i%,_n%,_max%..q|
00002b90  16 5f 50 61 74 68 25 3d  21 44 72 61 77 5f 50 61  |._Path%=!Draw_Pa|
00002ba0  74 68 25 0d 01 72 11 e7  20 5f 50 61 74 68 25 3c  |th%..r.. _Path%<|
00002bb0  3e 30 20 8c 0d 01 73 12  5f 6e 25 3d 70 61 74 74  |>0 ...s._n%=patt|
00002bc0  65 72 6e 25 21 34 0d 01  74 17 5f 50 61 74 68 25  |ern%!4..t._Path%|
00002bd0  21 34 2b 3d 34 2a 28 5f  6e 25 2b 32 29 0d 01 75  |!4+=4*(_n%+2)..u|
00002be0  2e 5f 50 61 74 68 25 21  33 36 3d 28 28 5f 50 61  |._Path%!36=((_Pa|
00002bf0  74 68 25 21 33 36 29 20  80 20 ac 28 31 3c 3c 37  |th%!36) . .(1<<7|
00002c00  29 29 20 82 20 28 31 3c  3c 37 29 0d 01 76 10 5f  |)) . (1<<7)..v._|
00002c10  6d 61 78 25 3d 21 28 93  2b 34 29 0d 01 77 20 f2  |max%=!(.+4)..w .|
00002c20  4d 6f 76 65 4d 65 6d 6f  72 79 28 5f 50 61 74 68  |MoveMemory(_Path|
00002c30  25 2b 34 30 2c 5f 6e 25  2b 32 29 0d 01 78 14 5f  |%+40,_n%+2)..x._|
00002c40  69 25 3d 44 72 61 77 5f  50 61 74 68 25 2d 34 0d  |i%=Draw_Path%-4.|
00002c50  01 79 2d c8 95 20 5f 69  25 3e 3d 5f 6d 61 78 25  |.y-.. _i%>=_max%|
00002c60  20 3a 21 5f 69 25 2b 3d  34 2a 28 5f 6e 25 2b 32  | :!_i%+=4*(_n%+2|
00002c70  29 20 3a 5f 69 25 2d 3d  34 20 3a ce 0d 01 7a 13  |) :_i%-=4 :...z.|
00002c80  e3 20 5f 69 25 3d 30 20  b8 20 5f 6e 25 2b 31 0d  |. _i%=0 . _n%+1.|
00002c90  01 7b 2c 5f 50 61 74 68  25 21 28 34 30 2b 34 2a  |.{,_Path%!(40+4*|
00002ca0  5f 69 25 29 3d 28 70 61  74 74 65 72 6e 25 21 28  |_i%)=(pattern%!(|
00002cb0  34 2a 5f 69 25 29 29 2a  36 34 30 0d 01 7c 05 ed  |4*_i%))*640..|..|
00002cc0  0d 01 7d 11 5f 50 61 74  68 25 21 34 34 3d 5f 6e  |..}._Path%!44=_n|
00002cd0  25 0d 01 7e 05 cd 0d 01  7f 05 e1 0d 01 80 27 dd  |%..~..........'.|
00002ce0  20 f2 44 72 61 77 5f 52  65 6e 64 65 72 50 61 74  | .Draw_RenderPat|
00002cf0  68 28 70 61 74 68 25 2c  74 72 61 6e 73 66 6f 72  |h(path%,transfor|
00002d00  6d 29 0d 01 81 10 e7 20  70 61 74 68 25 3c 3e 30  |m)..... path%<>0|
00002d10  20 8c 0d 01 82 5e ea 20  5f 50 61 74 68 25 2c 5f  | ....^. _Path%,_|
00002d20  44 61 73 68 25 2c 5f 54  68 69 63 6b 6e 65 73 73  |Dash%,_Thickness|
00002d30  25 2c 5f 53 74 79 6c 65  25 2c 5f 46 6c 61 74 6e  |%,_Style%,_Flatn|
00002d40  65 73 73 25 2c 5f 46 69  6c 6c 5f 53 74 79 6c 65  |ess%,_Fill_Style|
00002d50  25 2c 5f 6c 65 6e 67 74  68 25 2c 5f 78 25 2c 5f  |%,_length%,_x%,_|
00002d60  79 25 2c 5f 58 25 2c 5f  59 25 2c 5f 63 6f 6c 25  |y%,_X%,_Y%,_col%|
00002d70  0d 01 83 15 c8 99 20 22  48 6f 75 72 67 6c 61 73  |...... "Hourglas|
00002d80  73 5f 4f 6e 22 0d 01 84  10 5f 46 6c 61 74 6e 65  |s_On"...._Flatne|
00002d90  73 73 25 3d 30 0d 01 85  39 5f 78 25 3d 70 61 74  |ss%=0...9_x%=pat|
00002da0  68 25 21 38 20 3a 5f 79  25 3d 70 61 74 68 25 21  |h%!8 :_y%=path%!|
00002db0  31 32 20 3a 5f 58 25 3d  70 61 74 68 25 21 31 36  |12 :_X%=path%!16|
00002dc0  20 3a 5f 59 25 3d 70 61  74 68 25 21 32 30 0d 01  | :_Y%=path%!20..|
00002dd0  86 18 5f 54 68 69 63 6b  6e 65 73 73 25 3d 70 61  |.._Thickness%=pa|
00002de0  74 68 25 21 33 32 0d 01  87 14 5f 53 74 79 6c 65  |th%!32...._Style|
00002df0  25 3d 70 61 74 68 25 21  33 36 0d 01 88 13 5f 50  |%=path%!36...._P|
00002e00  61 74 68 25 3d 70 61 74  68 25 2b 34 30 0d 01 89  |ath%=path%+40...|
00002e10  1e e7 20 28 5f 53 74 79  6c 65 25 20 80 20 28 31  |.. (_Style% . (1|
00002e20  3c 3c 37 29 29 20 3d 20  30 20 8c 0d 01 8a 0c 5f  |<<7)) = 0 ....._|
00002e30  44 61 73 68 25 3d 30 0d  01 8b 05 cc 0d 01 8c 11  |Dash%=0.........|
00002e40  5f 44 61 73 68 25 3d 5f  50 61 74 68 25 0d 01 8d  |_Dash%=_Path%...|
00002e50  1a 5f 50 61 74 68 25 2b  3d 34 2a 28 5f 44 61 73  |._Path%+=4*(_Das|
00002e60  68 25 21 34 29 2b 38 0d  01 8e 05 cd 0d 01 8f 24  |h%!4)+8........$|
00002e70  70 61 74 68 25 3f 38 20  3d 20 5f 53 74 79 6c 65  |path%?8 = _Style|
00002e80  25 20 80 20 25 31 31 20  20 20 20 20 20 20 20 20  |% . %11         |
00002e90  0d 01 90 24 70 61 74 68  25 3f 39 20 3d 28 5f 53  |...$path%?9 =(_S|
00002ea0  74 79 6c 65 25 20 80 20  25 31 31 30 30 29 3e 3e  |tyle% . %1100)>>|
00002eb0  32 20 20 20 0d 01 91 24  70 61 74 68 25 3f 31 30  |2   ...$path%?10|
00002ec0  3d 28 5f 53 74 79 6c 65  25 20 80 20 25 31 31 30  |=(_Style% . %110|
00002ed0  30 30 30 29 3e 3e 34 20  0d 01 92 0e 70 61 74 68  |000)>>4 ....path|
00002ee0  25 3f 31 31 3d 30 0d 01  93 1e 70 61 74 68 25 21  |%?11=0....path%!|
00002ef0  31 32 3d 31 30 3c 3c 31  36 20 20 20 20 20 20 20  |12=10<<16       |
00002f00  20 20 20 20 0d 01 94 20  5f 6c 65 6e 67 74 68 25  |    ... _length%|
00002f10  3d 70 61 74 68 25 3f 33  38 20 20 20 20 20 20 20  |=path%?38       |
00002f20  20 20 20 20 0d 01 95 1e  70 61 74 68 25 3f 31 36  |    ....path%?16|
00002f30  3d 28 5f 6c 65 6e 67 74  68 25 83 31 36 29 3c 3c  |=(_length%.16)<<|
00002f40  34 20 0d 01 96 18 70 61  74 68 25 3f 31 37 3d 5f  |4 ....path%?17=_|
00002f50  6c 65 6e 67 74 68 25 81  31 36 0d 01 97 1e 70 61  |length%.16....pa|
00002f60  74 68 25 3f 32 30 3d 28  5f 6c 65 6e 67 74 68 25  |th%?20=(_length%|
00002f70  83 31 36 29 3c 3c 34 20  0d 01 98 18 70 61 74 68  |.16)<<4 ....path|
00002f80  25 3f 32 31 3d 5f 6c 65  6e 67 74 68 25 81 31 36  |%?21=_length%.16|
00002f90  0d 01 99 20 5f 6c 65 6e  67 74 68 25 3d 70 61 74  |... _length%=pat|
00002fa0  68 25 3f 33 39 20 20 20  20 20 20 20 20 20 20 20  |h%?39           |
00002fb0  0d 01 9a 1e 70 61 74 68  25 3f 31 38 3d 28 5f 6c  |....path%?18=(_l|
00002fc0  65 6e 67 74 68 25 83 31  36 29 3c 3c 34 20 0d 01  |ength%.16)<<4 ..|
00002fd0  9b 18 70 61 74 68 25 3f  31 39 3d 5f 6c 65 6e 67  |..path%?19=_leng|
00002fe0  74 68 25 81 31 36 0d 01  9c 1e 70 61 74 68 25 3f  |th%.16....path%?|
00002ff0  32 32 3d 28 5f 6c 65 6e  67 74 68 25 83 31 36 29  |22=(_length%.16)|
00003000  3c 3c 34 20 0d 01 9d 18  70 61 74 68 25 3f 32 33  |<<4 ....path%?23|
00003010  3d 5f 6c 65 6e 67 74 68  25 81 31 36 0d 01 9e 3e  |=_length%.16...>|
00003020  e7 20 28 5f 53 74 79 6c  65 25 20 80 20 28 31 3c  |. (_Style% . (1<|
00003030  3c 36 29 29 3d 30 20 8c  5f 46 69 6c 6c 5f 53 74  |<6))=0 ._Fill_St|
00003040  79 6c 65 25 3d 26 33 30  20 8b 5f 46 69 6c 6c 5f  |yle%=&30 ._Fill_|
00003050  53 74 79 6c 65 25 3d 26  33 32 0d 01 9f 11 c8 8e  |Style%=&32......|
00003060  20 70 61 74 68 25 21 32  34 20 ca 0d 01 a0 08 c9  | path%!24 ......|
00003070  20 2d 31 0d 01 a1 05 7f  0d 01 a2 12 5f 63 6f 6c  | -1........._col|
00003080  25 3d 70 61 74 68 25 21  32 34 0d 01 a3 3d e7 20  |%=path%!24...=. |
00003090  21 28 93 2b 32 30 29 3d  30 20 80 20 5f 63 6f 6c  |!(.+20)=0 . _col|
000030a0  25 3d 30 20 8c 5f 63 6f  6c 25 3d 28 32 35 35 3c  |%=0 ._col%=(255<|
000030b0  3c 38 29 2b 28 32 35 35  3c 3c 31 36 29 2b 28 32  |<8)+(255<<16)+(2|
000030c0  35 35 3c 3c 32 34 29 0d  01 a4 29 c8 99 20 22 43  |55<<24)...).. "C|
000030d0  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 47 43  |olourTrans_SetGC|
000030e0  4f 4c 22 2c 5f 63 6f 6c  25 2c 2c 2c 31 3c 3c 38  |OL",_col%,,,1<<8|
000030f0  0d 01 a5 3b c8 99 20 22  44 72 61 77 5f 46 69 6c  |...;.. "Draw_Fil|
00003100  6c 22 2c 5f 50 61 74 68  25 2c 5f 46 69 6c 6c 5f  |l",_Path%,_Fill_|
00003110  53 74 79 6c 65 25 2c 74  72 61 6e 73 66 6f 72 6d  |Style%,transform|
00003120  2c 5f 46 6c 61 74 6e 65  73 73 25 0d 01 a6 05 cb  |,_Flatness%.....|
00003130  0d 01 a7 12 5f 63 6f 6c  25 3d 70 61 74 68 25 21  |...._col%=path%!|
00003140  32 38 0d 01 a8 3d e7 20  21 28 93 2b 32 30 29 3d  |28...=. !(.+20)=|
00003150  30 20 80 20 5f 63 6f 6c  25 3d 30 20 8c 5f 63 6f  |0 . _col%=0 ._co|
00003160  6c 25 3d 28 32 35 35 3c  3c 38 29 2b 28 32 35 35  |l%=(255<<8)+(255|
00003170  3c 3c 31 36 29 2b 28 32  35 35 3c 3c 32 34 29 0d  |<<16)+(255<<24).|
00003180  01 a9 22 c8 99 20 22 43  6f 6c 6f 75 72 54 72 61  |..".. "ColourTra|
00003190  6e 73 5f 53 65 74 47 43  4f 4c 22 2c 5f 63 6f 6c  |ns_SetGCOL",_col|
000031a0  25 0d 01 aa 4c c8 99 20  22 44 72 61 77 5f 53 74  |%...L.. "Draw_St|
000031b0  72 6f 6b 65 22 2c 5f 50  61 74 68 25 2c 2c 74 72  |roke",_Path%,,tr|
000031c0  61 6e 73 66 6f 72 6d 2c  5f 46 6c 61 74 6e 65 73  |ansform,_Flatnes|
000031d0  73 25 2c 5f 54 68 69 63  6b 6e 65 73 73 25 2c 70  |s%,_Thickness%,p|
000031e0  61 74 68 25 2b 38 2c 5f  44 61 73 68 25 0d 01 ab  |ath%+8,_Dash%...|
000031f0  39 70 61 74 68 25 21 38  3d 5f 78 25 20 3a 70 61  |9path%!8=_x% :pa|
00003200  74 68 25 21 31 32 3d 5f  79 25 20 3a 70 61 74 68  |th%!12=_y% :path|
00003210  25 21 31 36 3d 5f 58 25  20 3a 70 61 74 68 25 21  |%!16=_X% :path%!|
00003220  32 30 3d 5f 59 25 0d 01  ac 16 c8 99 20 22 48 6f  |20=_Y%...... "Ho|
00003230  75 72 67 6c 61 73 73 5f  4f 66 66 22 0d 01 ad 05  |urglass_Off"....|
00003240  cd 0d 01 ae 05 e1 0d ff                           |........|
00003248