Home » Archimedes archive » Archimedes World » AW-1994-12-Disc1.adf » Disk1Dec94 » !AWDec94/Goodies/DrawBasic/!DrawBasic/Resources/Fonts

!AWDec94/Goodies/DrawBasic/!DrawBasic/Resources/Fonts

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-1994-12-Disc1.adf » Disk1Dec94
Filename: !AWDec94/Goodies/DrawBasic/!DrawBasic/Resources/Fonts
Read OK:
File size: 0DFD bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
    1REM >DrawBasic:Resources.Fonts
    2REM *********
    3REM
    4REM 1 FONTS
    5REM
    6REM *********
    7
    8DEF FNFontSize=!(HIMEM+84)
    9DEF FNFontColour=!(HIMEM+88)
   10DEF FNCurrentFont=!(HIMEM+92)
   11
   12DEF PROCFontSize(font_size%)
   13!(HIMEM+84)=font_size%*640
   14ENDPROC
   15
   16DEF PROCTextColour(colour%)
   17IF ABS(colour%)<16 THEN colour%=FNDesktopColour(colour%)
   18!(HIMEM+88)=colour%
   19SYS "ColourTrans_SetFontColours",,FNDesktopColour(0),colour%,14
   20ENDPROC
   21
   22DEF PROCCurrentFont(font%)
   23!(HIMEM+92)=font%
   24ENDPROC
   25
   26DEF PROCFont(font$,font_size%)
   27LOCAL _addr%,_font%,_font$,_end%
   28 _addr%=(!(HIMEM+8)+40) : _end%=_addr%+(_addr%!4) : _addr%+=8
   29REPEAT
   30  _font%=_addr%?0
   31  _addr%+=1 : _font$=""
   32   WHILE _addr%?0<>0 : _font$+=CHR$(_addr%?0) : _addr%+=1 : ENDWHILE
   33   _addr%+=1
   34UNTIL (_addr%?0)=0 OR _addr%>=_end% OR font$=_font$
   35IF font$=_font$ THEN PROCCurrentFont(_font%) ELSE PROCAddFont(font$)
   36!(HIMEM+84)=font_size%*640
   37_point_size%=16*FNFontSize/640
   38SYS "Font_FindFont",,font$,_point_size%,_point_size% 
   39ENDPROC
   40
   41DEF PROCAddFont(font$)
   42 REM ------------------------------------------
   43 REM
   44 REM Adds the font to the current list of fonts
   45 REM Making it the current font
   46 REM
   47 REM ------------------------------------------
   48 LOCAL _Fonts%,_length%,_end%,_pointer%,_noofzeros%,_bytes%,_font%
   49 _Fonts%=!(HIMEM+8) : _Fonts%+=40
   50 _length%=_Fonts%!4  : _end%=_Fonts%+_length%
   51 REPEAT : _pointer%-=1 : UNTIL _end%?_pointer%<>0
   52 _noofzeros%=_pointer%+2
   53 REPEAT : _pointer%-=1 : UNTIL _end%?_pointer%=0
   54 _font%=_end%?(_pointer%+1) : _font%+=1 : PROCCurrentFont(_font%)
   55 font$=CHR$_font%+font$+STRING$(4,CHR$0)
   56 _bytes%=LENfont$+_noofzeros%
   57 font$=LEFT$(font$,LENfont$-(_bytes% MOD 4))
   58 PROCMoveMemory(_end%,_bytes% DIV 4)
   59 $(_end%+_noofzeros%)=font$
   60 _Fonts%!4+=_bytes%-(_bytes% MOD 4) 
   61 ENDPROC
   62
   63REM *********
   64REM
   65REM 2 Text
   66REM
   67REM *********
   68
   69DEF PROCAddText(text$,x,y)
   70 PROCDraw_AddWord(FNFontColour)  : REM text colour
   71 PROCDraw_AddWord(0)            : REM text background colour hint
   72 PROCDraw_AddWord(FNCurrentFont): REM text style
   73 PROCDraw_AddWord(FNFontSize)
   74 PROCDraw_AddWord(FNFontSize)
   75 PROCDraw_AddCoords(x,y)
   76 PROCDraw_AddString(HIMEM,text$+CHR$0) 
   77ENDPROC
   78
   79
   80DEF PROCPrint(text$,x,y)
   81 LOCAL _bytes% ,_x%,_y% : _bytes%=24+28+LENtext$+1
   82 IF _bytes%MOD4<>0 THEN _bytes%+=4-(_bytes%MOD4)
   83 PROCDraw_AddWord(1)        : REM Object type 1
   84 PROCDraw_AddWord(_bytes%)  : REM Object size
   85 PROCDraw_AddWord(-1<<30)
   86 PROCDraw_AddWord(-1<<30)
   87 PROCDraw_AddWord(1<<30)
   88 PROCDraw_AddWord(1<<30)
   89 PROCAddText(text$,x,y)
   90 _x%=FNDraw_X(x):_y%=FNDraw_Y(y)
   91 SYS "Font_Paint",,text$,%10000,(!(HIMEM+112)+_x%)>>8,(!(HIMEM+116)+_y%)>>8
   92ENDPROC
   93
   94DEF PROCAnglePrint(text$,x,y,angle)
   95LOCAL _text% : _text%=FNText(text$,x,y)
   96PROCRotate(_text%,x,y,angle)
   97ENDPROC
   98
   99DEF FNAnglePrint(text$,x,y,angle)
  100LOCAL _text%,_handle% : _text%=FNText(text$,x,y)
  101_handle%=FNRotate(_text%,x,y,angle)
  102=_handle%
  103
  104DEF FNText(text$,x,y)
  105LOCAL _bytes%,_handle%,_transform%      : _bytes%=24+28+LENtext$+1+28
  106 _handle%=!HIMEM
  107 IF _bytes%MOD4<>0 THEN _bytes%+=4-(_bytes%MOD4) 
  108 PROCDraw_AddWord(12)       : REM Object type 1
  109 PROCDraw_AddWord(_bytes%)  : REM Object size 
  110 PROCDraw_AddWord(-2^30)
  111 PROCDraw_AddWord(-2^30)
  112 PROCDraw_AddWord(1<<30)
  113 PROCDraw_AddWord(1<<30)
  114 _transform%=!HIMEM
  115 PROCDraw_AddWord(1<<16)    : REM Transform
  116 PROCDraw_AddWord(0)        :
  117 PROCDraw_AddWord(0)        :
  118 PROCDraw_AddWord(1<<16)    :
  119 PROCDraw_AddWord(0)        :
  120 PROCDraw_AddWord(0)        :
  121 PROCDraw_AddWord(0)        : REM FontFlags
  122 PROCAddText(text$,x,y)
  123=_handle%
  124
  125
  126DEF FNPrint(text$,x,y)
  127LOCAL _handle% : _handle%=FNText(text$,x,y)
  128 SYS "Font_Paint",,text$,%10000,(!(HIMEM+112)+FNDraw_X(x))>>8,(!(HIMEM+116)+FNDraw_Y(y))>>8,,_handle%+24
  129=_handle%
  130
  131
  132
  133
 � >DrawBasic:Resources.Fonts
� *********
�

� 1 FONTS
�
� *********

� �FontSize=!(�+84)
	� �FontColour=!(�+88)

� �CurrentFont=!(�+92)

� �FontSize(font_size%)

!(�+84)=font_size%*640
�

� �TextColour(colour%)
5� �(colour%)<16 � colour%=�DesktopColour(colour%)
!(�+88)=colour%
Aș "ColourTrans_SetFontColours",,�DesktopColour(0),colour%,14
�

� �CurrentFont(font%)
!(�+92)=font%
�

� �Font(font$,font_size%)
 � _addr%,_font%,_font$,_end%
= _addr%=(!(�+8)+40) : _end%=_addr%+(_addr%!4) : _addr%+=8
�
  _font%=_addr%?0
  _addr%+=1 : _font$=""
 ;   ȕ _addr%?0<>0 : _font$+=�(_addr%?0) : _addr%+=1 : �
!   _addr%+=1
"1� (_addr%?0)=0 � _addr%>=_end% � font$=_font$
#;� font$=_font$ � �CurrentFont(_font%) � �AddFont(font$)
$!(�+84)=font_size%*640
%!_point_size%=16*�FontSize/640
&8ș "Font_FindFont",,font$,_point_size%,_point_size% 
'�
(
)� �AddFont(font$)
*1 � ------------------------------------------
+ �
,1 � Adds the font to the current list of fonts
-! � Making it the current font
. �
/1 � ------------------------------------------
0B � _Fonts%,_length%,_end%,_pointer%,_noofzeros%,_bytes%,_font%
1! _Fonts%=!(�+8) : _Fonts%+=40
21 _length%=_Fonts%!4  : _end%=_Fonts%+_length%
3, � : _pointer%-=1 : � _end%?_pointer%<>0
4 _noofzeros%=_pointer%+2
5+ � : _pointer%-=1 : � _end%?_pointer%=0
6B _font%=_end%?(_pointer%+1) : _font%+=1 : �CurrentFont(_font%)
7 font$=�_font%+font$+�4,�0)
8 _bytes%=�font$+_noofzeros%
9' font$=�font$,�font$-(_bytes% � 4))
:# �MoveMemory(_end%,_bytes% � 4)
; $(_end%+_noofzeros%)=font$
<& _Fonts%!4+=_bytes%-(_bytes% � 4) 
= �
>
?� *********
@�
A� 2 Text
B�
C� *********
D
E� �AddText(text$,x,y)
F0 �Draw_AddWord(�FontColour)  : � text colour
G@ �Draw_AddWord(0)            : � text background colour hint
H. �Draw_AddWord(�CurrentFont): � text style
I �Draw_AddWord(�FontSize)
J �Draw_AddWord(�FontSize)
K �Draw_AddCoords(x,y)
L! �Draw_AddString(�,text$+�0) 
M�
N
O
P� �Print(text$,x,y)
Q0 � _bytes% ,_x%,_y% : _bytes%=24+28+�text$+1
R, � _bytes%�4<>0 � _bytes%+=4-(_bytes%�4)
S. �Draw_AddWord(1)        : � Object type 1
T, �Draw_AddWord(_bytes%)  : � Object size
U �Draw_AddWord(-1<<30)
V �Draw_AddWord(-1<<30)
W �Draw_AddWord(1<<30)
X �Draw_AddWord(1<<30)
Y �AddText(text$,x,y)
Z" _x%=�Draw_X(x):_y%=�Draw_Y(y)
[F ș "Font_Paint",,text$,%10000,(!(�+112)+_x%)>>8,(!(�+116)+_y%)>>8
\�
]
^"� �AnglePrint(text$,x,y,angle)
_&� _text% : _text%=�Text(text$,x,y)
`�Rotate(_text%,x,y,angle)
a�
b
c"� �AnglePrint(text$,x,y,angle)
d/� _text%,_handle% : _text%=�Text(text$,x,y)
e&_handle%=�Rotate(_text%,x,y,angle)
f
=_handle%
g
h� �Text(text$,x,y)
iC� _bytes%,_handle%,_transform%      : _bytes%=24+28+�text$+1+28
j _handle%=!�
k- � _bytes%�4<>0 � _bytes%+=4-(_bytes%�4) 
l. �Draw_AddWord(12)       : � Object type 1
m- �Draw_AddWord(_bytes%)  : � Object size 
n �Draw_AddWord(-2^30)
o �Draw_AddWord(-2^30)
p �Draw_AddWord(1<<30)
q �Draw_AddWord(1<<30)
r _transform%=!�
s* �Draw_AddWord(1<<16)    : � Transform
t �Draw_AddWord(0)        :
u �Draw_AddWord(0)        :
v �Draw_AddWord(1<<16)    :
w �Draw_AddWord(0)        :
x �Draw_AddWord(0)        :
y* �Draw_AddWord(0)        : � FontFlags
z �AddText(text$,x,y)
{
=_handle%
|
}
~� �Print(text$,x,y)
*� _handle% : _handle%=�Text(text$,x,y)
�a ș "Font_Paint",,text$,%10000,(!(�+112)+�Draw_X(x))>>8,(!(�+116)+�Draw_Y(y))>>8,,_handle%+24
�
=_handle%
�
�
�
�
�
00000000  0d 00 01 20 f4 20 3e 44  72 61 77 42 61 73 69 63  |... . >DrawBasic|
00000010  3a 52 65 73 6f 75 72 63  65 73 2e 46 6f 6e 74 73  |:Resources.Fonts|
00000020  0d 00 02 0f f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |..... *********.|
00000030  00 03 05 f4 0d 00 04 0d  f4 20 31 20 46 4f 4e 54  |......... 1 FONT|
00000040  53 0d 00 05 05 f4 0d 00  06 0f f4 20 2a 2a 2a 2a  |S.......... ****|
00000050  2a 2a 2a 2a 2a 0d 00 07  04 0d 00 08 17 dd 20 a4  |*****......... .|
00000060  46 6f 6e 74 53 69 7a 65  3d 21 28 93 2b 38 34 29  |FontSize=!(.+84)|
00000070  0d 00 09 19 dd 20 a4 46  6f 6e 74 43 6f 6c 6f 75  |..... .FontColou|
00000080  72 3d 21 28 93 2b 38 38  29 0d 00 0a 1a dd 20 a4  |r=!(.+88)..... .|
00000090  43 75 72 72 65 6e 74 46  6f 6e 74 3d 21 28 93 2b  |CurrentFont=!(.+|
000000a0  39 32 29 0d 00 0b 04 0d  00 0c 1b dd 20 f2 46 6f  |92)......... .Fo|
000000b0  6e 74 53 69 7a 65 28 66  6f 6e 74 5f 73 69 7a 65  |ntSize(font_size|
000000c0  25 29 0d 00 0d 1a 21 28  93 2b 38 34 29 3d 66 6f  |%)....!(.+84)=fo|
000000d0  6e 74 5f 73 69 7a 65 25  2a 36 34 30 0d 00 0e 05  |nt_size%*640....|
000000e0  e1 0d 00 0f 04 0d 00 10  1a dd 20 f2 54 65 78 74  |.......... .Text|
000000f0  43 6f 6c 6f 75 72 28 63  6f 6c 6f 75 72 25 29 0d  |Colour(colour%).|
00000100  00 11 35 e7 20 94 28 63  6f 6c 6f 75 72 25 29 3c  |..5. .(colour%)<|
00000110  31 36 20 8c 20 63 6f 6c  6f 75 72 25 3d a4 44 65  |16 . colour%=.De|
00000120  73 6b 74 6f 70 43 6f 6c  6f 75 72 28 63 6f 6c 6f  |sktopColour(colo|
00000130  75 72 25 29 0d 00 12 13  21 28 93 2b 38 38 29 3d  |ur%)....!(.+88)=|
00000140  63 6f 6c 6f 75 72 25 0d  00 13 41 c8 99 20 22 43  |colour%...A.. "C|
00000150  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 46 6f  |olourTrans_SetFo|
00000160  6e 74 43 6f 6c 6f 75 72  73 22 2c 2c a4 44 65 73  |ntColours",,.Des|
00000170  6b 74 6f 70 43 6f 6c 6f  75 72 28 30 29 2c 63 6f  |ktopColour(0),co|
00000180  6c 6f 75 72 25 2c 31 34  0d 00 14 05 e1 0d 00 15  |lour%,14........|
00000190  04 0d 00 16 19 dd 20 f2  43 75 72 72 65 6e 74 46  |...... .CurrentF|
000001a0  6f 6e 74 28 66 6f 6e 74  25 29 0d 00 17 11 21 28  |ont(font%)....!(|
000001b0  93 2b 39 32 29 3d 66 6f  6e 74 25 0d 00 18 05 e1  |.+92)=font%.....|
000001c0  0d 00 19 04 0d 00 1a 1d  dd 20 f2 46 6f 6e 74 28  |......... .Font(|
000001d0  66 6f 6e 74 24 2c 66 6f  6e 74 5f 73 69 7a 65 25  |font$,font_size%|
000001e0  29 0d 00 1b 20 ea 20 5f  61 64 64 72 25 2c 5f 66  |)... . _addr%,_f|
000001f0  6f 6e 74 25 2c 5f 66 6f  6e 74 24 2c 5f 65 6e 64  |ont%,_font$,_end|
00000200  25 0d 00 1c 3d 20 5f 61  64 64 72 25 3d 28 21 28  |%...= _addr%=(!(|
00000210  93 2b 38 29 2b 34 30 29  20 3a 20 5f 65 6e 64 25  |.+8)+40) : _end%|
00000220  3d 5f 61 64 64 72 25 2b  28 5f 61 64 64 72 25 21  |=_addr%+(_addr%!|
00000230  34 29 20 3a 20 5f 61 64  64 72 25 2b 3d 38 0d 00  |4) : _addr%+=8..|
00000240  1d 05 f5 0d 00 1e 15 20  20 5f 66 6f 6e 74 25 3d  |.......  _font%=|
00000250  5f 61 64 64 72 25 3f 30  0d 00 1f 1b 20 20 5f 61  |_addr%?0....  _a|
00000260  64 64 72 25 2b 3d 31 20  3a 20 5f 66 6f 6e 74 24  |ddr%+=1 : _font$|
00000270  3d 22 22 0d 00 20 3b 20  20 20 c8 95 20 5f 61 64  |="".. ;   .. _ad|
00000280  64 72 25 3f 30 3c 3e 30  20 3a 20 5f 66 6f 6e 74  |dr%?0<>0 : _font|
00000290  24 2b 3d bd 28 5f 61 64  64 72 25 3f 30 29 20 3a  |$+=.(_addr%?0) :|
000002a0  20 5f 61 64 64 72 25 2b  3d 31 20 3a 20 ce 0d 00  | _addr%+=1 : ...|
000002b0  21 10 20 20 20 5f 61 64  64 72 25 2b 3d 31 0d 00  |!.   _addr%+=1..|
000002c0  22 31 fd 20 28 5f 61 64  64 72 25 3f 30 29 3d 30  |"1. (_addr%?0)=0|
000002d0  20 84 20 5f 61 64 64 72  25 3e 3d 5f 65 6e 64 25  | . _addr%>=_end%|
000002e0  20 84 20 66 6f 6e 74 24  3d 5f 66 6f 6e 74 24 0d  | . font$=_font$.|
000002f0  00 23 3b e7 20 66 6f 6e  74 24 3d 5f 66 6f 6e 74  |.#;. font$=_font|
00000300  24 20 8c 20 f2 43 75 72  72 65 6e 74 46 6f 6e 74  |$ . .CurrentFont|
00000310  28 5f 66 6f 6e 74 25 29  20 8b 20 f2 41 64 64 46  |(_font%) . .AddF|
00000320  6f 6e 74 28 66 6f 6e 74  24 29 0d 00 24 1a 21 28  |ont(font$)..$.!(|
00000330  93 2b 38 34 29 3d 66 6f  6e 74 5f 73 69 7a 65 25  |.+84)=font_size%|
00000340  2a 36 34 30 0d 00 25 21  5f 70 6f 69 6e 74 5f 73  |*640..%!_point_s|
00000350  69 7a 65 25 3d 31 36 2a  a4 46 6f 6e 74 53 69 7a  |ize%=16*.FontSiz|
00000360  65 2f 36 34 30 0d 00 26  38 c8 99 20 22 46 6f 6e  |e/640..&8.. "Fon|
00000370  74 5f 46 69 6e 64 46 6f  6e 74 22 2c 2c 66 6f 6e  |t_FindFont",,fon|
00000380  74 24 2c 5f 70 6f 69 6e  74 5f 73 69 7a 65 25 2c  |t$,_point_size%,|
00000390  5f 70 6f 69 6e 74 5f 73  69 7a 65 25 20 0d 00 27  |_point_size% ..'|
000003a0  05 e1 0d 00 28 04 0d 00  29 15 dd 20 f2 41 64 64  |....(...).. .Add|
000003b0  46 6f 6e 74 28 66 6f 6e  74 24 29 0d 00 2a 31 20  |Font(font$)..*1 |
000003c0  f4 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |. --------------|
000003d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000003e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0d 00 2b 06  |------------..+.|
000003f0  20 f4 0d 00 2c 31 20 f4  20 41 64 64 73 20 74 68  | ...,1 . Adds th|
00000400  65 20 66 6f 6e 74 20 74  6f 20 74 68 65 20 63 75  |e font to the cu|
00000410  72 72 65 6e 74 20 6c 69  73 74 20 6f 66 20 66 6f  |rrent list of fo|
00000420  6e 74 73 0d 00 2d 21 20  f4 20 4d 61 6b 69 6e 67  |nts..-! . Making|
00000430  20 69 74 20 74 68 65 20  63 75 72 72 65 6e 74 20  | it the current |
00000440  66 6f 6e 74 0d 00 2e 06  20 f4 0d 00 2f 31 20 f4  |font.... .../1 .|
00000450  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00000460  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000470  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 00 30 42 20  |-----------..0B |
00000480  ea 20 5f 46 6f 6e 74 73  25 2c 5f 6c 65 6e 67 74  |. _Fonts%,_lengt|
00000490  68 25 2c 5f 65 6e 64 25  2c 5f 70 6f 69 6e 74 65  |h%,_end%,_pointe|
000004a0  72 25 2c 5f 6e 6f 6f 66  7a 65 72 6f 73 25 2c 5f  |r%,_noofzeros%,_|
000004b0  62 79 74 65 73 25 2c 5f  66 6f 6e 74 25 0d 00 31  |bytes%,_font%..1|
000004c0  21 20 5f 46 6f 6e 74 73  25 3d 21 28 93 2b 38 29  |! _Fonts%=!(.+8)|
000004d0  20 3a 20 5f 46 6f 6e 74  73 25 2b 3d 34 30 0d 00  | : _Fonts%+=40..|
000004e0  32 31 20 5f 6c 65 6e 67  74 68 25 3d 5f 46 6f 6e  |21 _length%=_Fon|
000004f0  74 73 25 21 34 20 20 3a  20 5f 65 6e 64 25 3d 5f  |ts%!4  : _end%=_|
00000500  46 6f 6e 74 73 25 2b 5f  6c 65 6e 67 74 68 25 0d  |Fonts%+_length%.|
00000510  00 33 2c 20 f5 20 3a 20  5f 70 6f 69 6e 74 65 72  |.3, . : _pointer|
00000520  25 2d 3d 31 20 3a 20 fd  20 5f 65 6e 64 25 3f 5f  |%-=1 : . _end%?_|
00000530  70 6f 69 6e 74 65 72 25  3c 3e 30 0d 00 34 1c 20  |pointer%<>0..4. |
00000540  5f 6e 6f 6f 66 7a 65 72  6f 73 25 3d 5f 70 6f 69  |_noofzeros%=_poi|
00000550  6e 74 65 72 25 2b 32 0d  00 35 2b 20 f5 20 3a 20  |nter%+2..5+ . : |
00000560  5f 70 6f 69 6e 74 65 72  25 2d 3d 31 20 3a 20 fd  |_pointer%-=1 : .|
00000570  20 5f 65 6e 64 25 3f 5f  70 6f 69 6e 74 65 72 25  | _end%?_pointer%|
00000580  3d 30 0d 00 36 42 20 5f  66 6f 6e 74 25 3d 5f 65  |=0..6B _font%=_e|
00000590  6e 64 25 3f 28 5f 70 6f  69 6e 74 65 72 25 2b 31  |nd%?(_pointer%+1|
000005a0  29 20 3a 20 5f 66 6f 6e  74 25 2b 3d 31 20 3a 20  |) : _font%+=1 : |
000005b0  f2 43 75 72 72 65 6e 74  46 6f 6e 74 28 5f 66 6f  |.CurrentFont(_fo|
000005c0  6e 74 25 29 0d 00 37 1f  20 66 6f 6e 74 24 3d bd  |nt%)..7. font$=.|
000005d0  5f 66 6f 6e 74 25 2b 66  6f 6e 74 24 2b c4 34 2c  |_font%+font$+.4,|
000005e0  bd 30 29 0d 00 38 1f 20  5f 62 79 74 65 73 25 3d  |.0)..8. _bytes%=|
000005f0  a9 66 6f 6e 74 24 2b 5f  6e 6f 6f 66 7a 65 72 6f  |.font$+_noofzero|
00000600  73 25 0d 00 39 27 20 66  6f 6e 74 24 3d c0 66 6f  |s%..9' font$=.fo|
00000610  6e 74 24 2c a9 66 6f 6e  74 24 2d 28 5f 62 79 74  |nt$,.font$-(_byt|
00000620  65 73 25 20 83 20 34 29  29 0d 00 3a 23 20 f2 4d  |es% . 4))..:# .M|
00000630  6f 76 65 4d 65 6d 6f 72  79 28 5f 65 6e 64 25 2c  |oveMemory(_end%,|
00000640  5f 62 79 74 65 73 25 20  81 20 34 29 0d 00 3b 1f  |_bytes% . 4)..;.|
00000650  20 24 28 5f 65 6e 64 25  2b 5f 6e 6f 6f 66 7a 65  | $(_end%+_noofze|
00000660  72 6f 73 25 29 3d 66 6f  6e 74 24 0d 00 3c 26 20  |ros%)=font$..<& |
00000670  5f 46 6f 6e 74 73 25 21  34 2b 3d 5f 62 79 74 65  |_Fonts%!4+=_byte|
00000680  73 25 2d 28 5f 62 79 74  65 73 25 20 83 20 34 29  |s%-(_bytes% . 4)|
00000690  20 0d 00 3d 06 20 e1 0d  00 3e 04 0d 00 3f 0f f4  | ..=. ...>...?..|
000006a0  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 0d 00 40 05 f4 0d  | *********..@...|
000006b0  00 41 0c f4 20 32 20 54  65 78 74 0d 00 42 05 f4  |.A.. 2 Text..B..|
000006c0  0d 00 43 0f f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |..C.. *********.|
000006d0  00 44 04 0d 00 45 19 dd  20 f2 41 64 64 54 65 78  |.D...E.. .AddTex|
000006e0  74 28 74 65 78 74 24 2c  78 2c 79 29 0d 00 46 30  |t(text$,x,y)..F0|
000006f0  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 a4  | .Draw_AddWord(.|
00000700  46 6f 6e 74 43 6f 6c 6f  75 72 29 20 20 3a 20 f4  |FontColour)  : .|
00000710  20 74 65 78 74 20 63 6f  6c 6f 75 72 0d 00 47 40  | text colour..G@|
00000720  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 30  | .Draw_AddWord(0|
00000730  29 20 20 20 20 20 20 20  20 20 20 20 20 3a 20 f4  |)            : .|
00000740  20 74 65 78 74 20 62 61  63 6b 67 72 6f 75 6e 64  | text background|
00000750  20 63 6f 6c 6f 75 72 20  68 69 6e 74 0d 00 48 2e  | colour hint..H.|
00000760  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 a4  | .Draw_AddWord(.|
00000770  43 75 72 72 65 6e 74 46  6f 6e 74 29 3a 20 f4 20  |CurrentFont): . |
00000780  74 65 78 74 20 73 74 79  6c 65 0d 00 49 1d 20 f2  |text style..I. .|
00000790  44 72 61 77 5f 41 64 64  57 6f 72 64 28 a4 46 6f  |Draw_AddWord(.Fo|
000007a0  6e 74 53 69 7a 65 29 0d  00 4a 1d 20 f2 44 72 61  |ntSize)..J. .Dra|
000007b0  77 5f 41 64 64 57 6f 72  64 28 a4 46 6f 6e 74 53  |w_AddWord(.FontS|
000007c0  69 7a 65 29 0d 00 4b 19  20 f2 44 72 61 77 5f 41  |ize)..K. .Draw_A|
000007d0  64 64 43 6f 6f 72 64 73  28 78 2c 79 29 0d 00 4c  |ddCoords(x,y)..L|
000007e0  21 20 f2 44 72 61 77 5f  41 64 64 53 74 72 69 6e  |! .Draw_AddStrin|
000007f0  67 28 93 2c 74 65 78 74  24 2b bd 30 29 20 0d 00  |g(.,text$+.0) ..|
00000800  4d 05 e1 0d 00 4e 04 0d  00 4f 04 0d 00 50 17 dd  |M....N...O...P..|
00000810  20 f2 50 72 69 6e 74 28  74 65 78 74 24 2c 78 2c  | .Print(text$,x,|
00000820  79 29 0d 00 51 30 20 ea  20 5f 62 79 74 65 73 25  |y)..Q0 . _bytes%|
00000830  20 2c 5f 78 25 2c 5f 79  25 20 3a 20 5f 62 79 74  | ,_x%,_y% : _byt|
00000840  65 73 25 3d 32 34 2b 32  38 2b a9 74 65 78 74 24  |es%=24+28+.text$|
00000850  2b 31 0d 00 52 2c 20 e7  20 5f 62 79 74 65 73 25  |+1..R, . _bytes%|
00000860  83 34 3c 3e 30 20 8c 20  5f 62 79 74 65 73 25 2b  |.4<>0 . _bytes%+|
00000870  3d 34 2d 28 5f 62 79 74  65 73 25 83 34 29 0d 00  |=4-(_bytes%.4)..|
00000880  53 2e 20 f2 44 72 61 77  5f 41 64 64 57 6f 72 64  |S. .Draw_AddWord|
00000890  28 31 29 20 20 20 20 20  20 20 20 3a 20 f4 20 4f  |(1)        : . O|
000008a0  62 6a 65 63 74 20 74 79  70 65 20 31 0d 00 54 2c  |bject type 1..T,|
000008b0  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 5f  | .Draw_AddWord(_|
000008c0  62 79 74 65 73 25 29 20  20 3a 20 f4 20 4f 62 6a  |bytes%)  : . Obj|
000008d0  65 63 74 20 73 69 7a 65  0d 00 55 1a 20 f2 44 72  |ect size..U. .Dr|
000008e0  61 77 5f 41 64 64 57 6f  72 64 28 2d 31 3c 3c 33  |aw_AddWord(-1<<3|
000008f0  30 29 0d 00 56 1a 20 f2  44 72 61 77 5f 41 64 64  |0)..V. .Draw_Add|
00000900  57 6f 72 64 28 2d 31 3c  3c 33 30 29 0d 00 57 19  |Word(-1<<30)..W.|
00000910  20 f2 44 72 61 77 5f 41  64 64 57 6f 72 64 28 31  | .Draw_AddWord(1|
00000920  3c 3c 33 30 29 0d 00 58  19 20 f2 44 72 61 77 5f  |<<30)..X. .Draw_|
00000930  41 64 64 57 6f 72 64 28  31 3c 3c 33 30 29 0d 00  |AddWord(1<<30)..|
00000940  59 18 20 f2 41 64 64 54  65 78 74 28 74 65 78 74  |Y. .AddText(text|
00000950  24 2c 78 2c 79 29 0d 00  5a 22 20 5f 78 25 3d a4  |$,x,y)..Z" _x%=.|
00000960  44 72 61 77 5f 58 28 78  29 3a 5f 79 25 3d a4 44  |Draw_X(x):_y%=.D|
00000970  72 61 77 5f 59 28 79 29  0d 00 5b 46 20 c8 99 20  |raw_Y(y)..[F .. |
00000980  22 46 6f 6e 74 5f 50 61  69 6e 74 22 2c 2c 74 65  |"Font_Paint",,te|
00000990  78 74 24 2c 25 31 30 30  30 30 2c 28 21 28 93 2b  |xt$,%10000,(!(.+|
000009a0  31 31 32 29 2b 5f 78 25  29 3e 3e 38 2c 28 21 28  |112)+_x%)>>8,(!(|
000009b0  93 2b 31 31 36 29 2b 5f  79 25 29 3e 3e 38 0d 00  |.+116)+_y%)>>8..|
000009c0  5c 05 e1 0d 00 5d 04 0d  00 5e 22 dd 20 f2 41 6e  |\....]...^". .An|
000009d0  67 6c 65 50 72 69 6e 74  28 74 65 78 74 24 2c 78  |glePrint(text$,x|
000009e0  2c 79 2c 61 6e 67 6c 65  29 0d 00 5f 26 ea 20 5f  |,y,angle).._&. _|
000009f0  74 65 78 74 25 20 3a 20  5f 74 65 78 74 25 3d a4  |text% : _text%=.|
00000a00  54 65 78 74 28 74 65 78  74 24 2c 78 2c 79 29 0d  |Text(text$,x,y).|
00000a10  00 60 1d f2 52 6f 74 61  74 65 28 5f 74 65 78 74  |.`..Rotate(_text|
00000a20  25 2c 78 2c 79 2c 61 6e  67 6c 65 29 0d 00 61 05  |%,x,y,angle)..a.|
00000a30  e1 0d 00 62 04 0d 00 63  22 dd 20 a4 41 6e 67 6c  |...b...c". .Angl|
00000a40  65 50 72 69 6e 74 28 74  65 78 74 24 2c 78 2c 79  |ePrint(text$,x,y|
00000a50  2c 61 6e 67 6c 65 29 0d  00 64 2f ea 20 5f 74 65  |,angle)..d/. _te|
00000a60  78 74 25 2c 5f 68 61 6e  64 6c 65 25 20 3a 20 5f  |xt%,_handle% : _|
00000a70  74 65 78 74 25 3d a4 54  65 78 74 28 74 65 78 74  |text%=.Text(text|
00000a80  24 2c 78 2c 79 29 0d 00  65 26 5f 68 61 6e 64 6c  |$,x,y)..e&_handl|
00000a90  65 25 3d a4 52 6f 74 61  74 65 28 5f 74 65 78 74  |e%=.Rotate(_text|
00000aa0  25 2c 78 2c 79 2c 61 6e  67 6c 65 29 0d 00 66 0d  |%,x,y,angle)..f.|
00000ab0  3d 5f 68 61 6e 64 6c 65  25 0d 00 67 04 0d 00 68  |=_handle%..g...h|
00000ac0  16 dd 20 a4 54 65 78 74  28 74 65 78 74 24 2c 78  |.. .Text(text$,x|
00000ad0  2c 79 29 0d 00 69 43 ea  20 5f 62 79 74 65 73 25  |,y)..iC. _bytes%|
00000ae0  2c 5f 68 61 6e 64 6c 65  25 2c 5f 74 72 61 6e 73  |,_handle%,_trans|
00000af0  66 6f 72 6d 25 20 20 20  20 20 20 3a 20 5f 62 79  |form%      : _by|
00000b00  74 65 73 25 3d 32 34 2b  32 38 2b a9 74 65 78 74  |tes%=24+28+.text|
00000b10  24 2b 31 2b 32 38 0d 00  6a 10 20 5f 68 61 6e 64  |$+1+28..j. _hand|
00000b20  6c 65 25 3d 21 93 0d 00  6b 2d 20 e7 20 5f 62 79  |le%=!...k- . _by|
00000b30  74 65 73 25 83 34 3c 3e  30 20 8c 20 5f 62 79 74  |tes%.4<>0 . _byt|
00000b40  65 73 25 2b 3d 34 2d 28  5f 62 79 74 65 73 25 83  |es%+=4-(_bytes%.|
00000b50  34 29 20 0d 00 6c 2e 20  f2 44 72 61 77 5f 41 64  |4) ..l. .Draw_Ad|
00000b60  64 57 6f 72 64 28 31 32  29 20 20 20 20 20 20 20  |dWord(12)       |
00000b70  3a 20 f4 20 4f 62 6a 65  63 74 20 74 79 70 65 20  |: . Object type |
00000b80  31 0d 00 6d 2d 20 f2 44  72 61 77 5f 41 64 64 57  |1..m- .Draw_AddW|
00000b90  6f 72 64 28 5f 62 79 74  65 73 25 29 20 20 3a 20  |ord(_bytes%)  : |
00000ba0  f4 20 4f 62 6a 65 63 74  20 73 69 7a 65 20 0d 00  |. Object size ..|
00000bb0  6e 19 20 f2 44 72 61 77  5f 41 64 64 57 6f 72 64  |n. .Draw_AddWord|
00000bc0  28 2d 32 5e 33 30 29 0d  00 6f 19 20 f2 44 72 61  |(-2^30)..o. .Dra|
00000bd0  77 5f 41 64 64 57 6f 72  64 28 2d 32 5e 33 30 29  |w_AddWord(-2^30)|
00000be0  0d 00 70 19 20 f2 44 72  61 77 5f 41 64 64 57 6f  |..p. .Draw_AddWo|
00000bf0  72 64 28 31 3c 3c 33 30  29 0d 00 71 19 20 f2 44  |rd(1<<30)..q. .D|
00000c00  72 61 77 5f 41 64 64 57  6f 72 64 28 31 3c 3c 33  |raw_AddWord(1<<3|
00000c10  30 29 0d 00 72 13 20 5f  74 72 61 6e 73 66 6f 72  |0)..r. _transfor|
00000c20  6d 25 3d 21 93 0d 00 73  2a 20 f2 44 72 61 77 5f  |m%=!...s* .Draw_|
00000c30  41 64 64 57 6f 72 64 28  31 3c 3c 31 36 29 20 20  |AddWord(1<<16)  |
00000c40  20 20 3a 20 f4 20 54 72  61 6e 73 66 6f 72 6d 0d  |  : . Transform.|
00000c50  00 74 1e 20 f2 44 72 61  77 5f 41 64 64 57 6f 72  |.t. .Draw_AddWor|
00000c60  64 28 30 29 20 20 20 20  20 20 20 20 3a 0d 00 75  |d(0)        :..u|
00000c70  1e 20 f2 44 72 61 77 5f  41 64 64 57 6f 72 64 28  |. .Draw_AddWord(|
00000c80  30 29 20 20 20 20 20 20  20 20 3a 0d 00 76 1e 20  |0)        :..v. |
00000c90  f2 44 72 61 77 5f 41 64  64 57 6f 72 64 28 31 3c  |.Draw_AddWord(1<|
00000ca0  3c 31 36 29 20 20 20 20  3a 0d 00 77 1e 20 f2 44  |<16)    :..w. .D|
00000cb0  72 61 77 5f 41 64 64 57  6f 72 64 28 30 29 20 20  |raw_AddWord(0)  |
00000cc0  20 20 20 20 20 20 3a 0d  00 78 1e 20 f2 44 72 61  |      :..x. .Dra|
00000cd0  77 5f 41 64 64 57 6f 72  64 28 30 29 20 20 20 20  |w_AddWord(0)    |
00000ce0  20 20 20 20 3a 0d 00 79  2a 20 f2 44 72 61 77 5f  |    :..y* .Draw_|
00000cf0  41 64 64 57 6f 72 64 28  30 29 20 20 20 20 20 20  |AddWord(0)      |
00000d00  20 20 3a 20 f4 20 46 6f  6e 74 46 6c 61 67 73 0d  |  : . FontFlags.|
00000d10  00 7a 18 20 f2 41 64 64  54 65 78 74 28 74 65 78  |.z. .AddText(tex|
00000d20  74 24 2c 78 2c 79 29 0d  00 7b 0d 3d 5f 68 61 6e  |t$,x,y)..{.=_han|
00000d30  64 6c 65 25 0d 00 7c 04  0d 00 7d 04 0d 00 7e 17  |dle%..|...}...~.|
00000d40  dd 20 a4 50 72 69 6e 74  28 74 65 78 74 24 2c 78  |. .Print(text$,x|
00000d50  2c 79 29 0d 00 7f 2a ea  20 5f 68 61 6e 64 6c 65  |,y)...*. _handle|
00000d60  25 20 3a 20 5f 68 61 6e  64 6c 65 25 3d a4 54 65  |% : _handle%=.Te|
00000d70  78 74 28 74 65 78 74 24  2c 78 2c 79 29 0d 00 80  |xt(text$,x,y)...|
00000d80  61 20 c8 99 20 22 46 6f  6e 74 5f 50 61 69 6e 74  |a .. "Font_Paint|
00000d90  22 2c 2c 74 65 78 74 24  2c 25 31 30 30 30 30 2c  |",,text$,%10000,|
00000da0  28 21 28 93 2b 31 31 32  29 2b a4 44 72 61 77 5f  |(!(.+112)+.Draw_|
00000db0  58 28 78 29 29 3e 3e 38  2c 28 21 28 93 2b 31 31  |X(x))>>8,(!(.+11|
00000dc0  36 29 2b a4 44 72 61 77  5f 59 28 79 29 29 3e 3e  |6)+.Draw_Y(y))>>|
00000dd0  38 2c 2c 5f 68 61 6e 64  6c 65 25 2b 32 34 0d 00  |8,,_handle%+24..|
00000de0  81 0d 3d 5f 68 61 6e 64  6c 65 25 0d 00 82 04 0d  |..=_handle%.....|
00000df0  00 83 04 0d 00 84 04 0d  00 85 04 0d ff           |.............|
00000dfd