Home » Archimedes archive » Acorn User » AU 1998-09.adf » Features » DesktopPD/ExtraBar/!ExLibrary/Utils/!UserMenu/UserMenu

DesktopPD/ExtraBar/!ExLibrary/Utils/!UserMenu/UserMenu

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 » Acorn User » AU 1998-09.adf » Features
Filename: DesktopPD/ExtraBar/!ExLibrary/Utils/!UserMenu/UserMenu
Read OK:
File size: 1146 bytes
Load address: 0000
Exec address: 0000
File contents
    1REM > UserMenu
    2REM (c) David McCormack
    3REM Version 1.00
    4
    5SYS "Wimp_ReadSysInfo",3 TO state%
    6IF state% = 0 THEN ERROR EXT 0,"UserMenu will only run in the desktop!"
    7
    8ON ERROR SYS "OS_CLI","Error "+REPORT$+" "+STR$(ERL):END
    9
   10DIM temp_blk%  256
   11
   12PROCparse_env
   13SYS "Wimp_Initialise",200,&4B534154,"UserMenus"
   14c%    = FNload_text_file(menu_file$)
   15menu% = FNcreate_menu(c%)
   16m_x% = VAL(FNsystem_variable("ExtraBar$MouseX"))
   17m_y% = VAL(FNsystem_variable("ExtraBar$MouseY"))
   18
   19SYS "XOS_CLI","Unset ExtraBar$MouseX"
   20SYS "XOS_CLI","Unset ExtraBar$MouseY"
   21IF (m_x% = 0) OR (m_y% = 0) THEN MOUSE m_x%,m_y%,m_b%:m_x% -= 64
   22
   23PROCwimp_poll
   24END
   25
   26DEF PROCparse_env
   27SYS "XOS_GetEnv" TO env$
   28FOR lp% = 0 TO 2:env$ = MID$(env$,INSTR(env$," ")+1):NEXT
   29IF env$ = "" THEN ERROR EXT 0,"No menu file defined."
   30menu_file$ = env$
   31ENDPROC
   32
   33DEF FNload_text_file(file$)
   34DIM buttons$(250)
   35DIM text$(250)
   36
   37c% = 0:p% = 0
   38a% = OPENIN(file$)
   39IF a% <> 0 THEN
   40  a$ = GET$#a%
   41  WHILE NOT EOF#a%
   42    char% = BGET#a%
   43  
   44    IF char% > 31 THEN
   45      IF p% = 0 THEN
   46        text$(c%)+=CHR$(char%)
   47      ELSE
   48        buttons$(c%)+=CHR$(char%)
   49      ENDIF
   50    ELSE
   51      IF char% = 09 THEN p%+=1
   52      IF char% = 10 THEN
   53        WHILE char% < 32
   54          char% = BGET#a%
   55        ENDWHILE
   56        IF NOT EOF #a% PTR#a% = PTR#a% - 1
   57        REM IF (text$(c%) <> "") OR (buttons$(c%) <> "") THEN
   58          c%+=1:p% = 0
   59      ENDIF
   60    ENDIF
   61  ENDWHILE
   62  CLOSE#a%
   63ELSE
   64  ERROR EXT 0,file$+" cannpt be opened."
   65ENDIF
   66= c%
   67
   68DEF FNcreate_menu(c%)
   69DIM menu% ((c% * 24) + 28)
   70DIM indir% (c% * 256)
   71
   72width% = 0
   73
   74!menu% = 0
   75menu%?12 = 7
   76menu%?13 = 2
   77menu%?14 = 7
   78menu%?15 = 0
   79menu%!16 = width%
   80menu%!20 = 44
   81menu%!24 = 0
   82
   83FOR lp% = 0 TO c%-1
   84  text$ = text$(lp%):sprite$ = "":make_small% = 0
   85  IF (INSTR(text$,"; ") <> 0) THEN
   86    ptr%    = INSTR(text$,"; ")
   87    sprite$ = LEFT$(text$(lp%),ptr%-1)
   88    sprite$ = "S"+FNcheck_small(sprite$,make_small%)
   89    text$   = MID$(text$(lp%),ptr%+2)
   90  ENDIF
   91
   92  text$ = text$+CHR$(0)+sprite$+CHR$(0)
   93  $(indir% + (lp% * 256)) = text$
   94  $(indir% + (lp% * 256) + LEN(text$)+2) = sprite$
   95
   96  ptr% = menu%+(lp% * 24)+28
   97  ptr%!0  = %0
   98  ptr%!4  = -1
   99  ptr%!8  = &7000113
  100  IF sprite$ = "" THEN
  101    ptr%!8 = (ptr%!8 AND &FFFFFFFD)
  102  ELSE
  103    IF make_small% THEN ptr%!8+=(1<<11)
  104  ENDIF
  105  ptr%!12 = indir% + (lp% * 256)
  106  ptr%!16 = indir% + (lp% * 256) + LEN(text$)+2
  107  ptr%!20 = LEN(text$)
  108
  109  iwidth% = LEN(text$)*16
  110  IF sprite$ <> "" THEN iwidth%+=56
  111  IF width% < iwidth%  THEN width% = iwidth%
  112
  113NEXT
  114
  115ptr% = menu%+(c% * 24)-24+28
  116!ptr% = 1<<7
  117menu%!16  = width%
  118= menu%
  119
  120DEF PROCwimp_poll
  121LOCAL quit%,blk%,mask%,c%:mask% = 0
  122SYS "Wimp_CreateMenu",,menu%,m_x%,m_y%
  123DIM blk% 256
  124REPEAT
  125  SYS "XOS_ReadMonotonicTime" TO time%
  126  SYS "Wimp_PollIdle",mask%,blk%,time% TO r%
  127  CASE r% OF
  128    WHEN 0:c%+=1
  129      SYS "Wimp_CreateMenu",,menu%,m_x%,m_y%
  130      IF c% = 1 THEN mask% = 1
  131    WHEN 9:
  132      PROCissue_command(buttons$(blk%!0))
  133      SYS "Wimp_GetPointerInfo",,blk%:quit% = -1
  134      IF (blk%!8 = 1) THEN SYS "Wimp_CreateMenu",,menu%,m_x%,m_y%:quit% = 0
  135    WHEN 17,18
  136      CASE blk%!16 OF
  137        WHEN 0     :quit% = -1
  138        WHEN &400C9:quit% = -1
  139      ENDCASE
  140  ENDCASE
  141UNTIL quit% = -1
  142ENDPROC
  143
  144DEF PROCissue_command(com$)
  145a% = OPENOUT("Pipe:$.UserTemp")
  146IF a% <> 0 THEN
  147  BPUT#a%,com$:CLOSE#a%
  148  SYS "XOS_File",18,"Pipe:$.UserTemp",&FEB
  149  SYS "XWimp_StartTask","Run Pipe:$.UserTemp"
  150ENDIF
  151ENDPROC
  152
  153DEF FNsystem_variable(sys_var$)
  154LOCAL length%,text$
  155SYS"XOS_ReadVarVal",sys_var$+CHR$(0),temp_blk%,-1 TO ,,length%
  156IF length% <> 0 THEN
  157  SYS"XOS_ReadVarVal",sys_var$+CHR$(0),temp_blk%,255,,3 TO ,,length%
  158  ?(temp_blk%+length%)=13
  159  text$ = $temp_blk%
  160ELSE
  161  text$ = ""
  162ENDIF
  163= text$
  164
  165DEF FNcheck_small(sprite$,RETURN make_small%)
  166LOCAL return$
  167
  168SYS "XWimp_SpriteOp",40+256,,sprite$ TO ,,,w%,h%,,m%;flags%
  169IF (flags% AND 1) = 1 THEN
  170  IF INSTR(sprite$,"!") <> 0 THEN sprite$ = MID$(sprite$,INSTR(sprite$,"!"))
  171  IF INSTR(sprite$,"small_") <> 0 THEN sprite$ = "file_"+MID$(sprite$,INSTR(sprite$,"small_")+6)
  172  SYS "XWimp_SpriteOp",40+256,,sprite$ TO ,,,w%,h%,,m%;flags%
  173  IF (flags% AND 1) = 1 THEN
  174    IF INSTR(sprite$,"file_") <> 0 THEN sprite$ = "small_136" ELSE sprite$ = "small_app"
  175    SYS "XWimp_SpriteOp",40+256,,sprite$ TO ,,,w%,h%,,m%;flags%
  176  ENDIF
  177ENDIF
  178SYS "OS_ReadModeVariable",m%,4 TO ,,xeig%:w% = w% << xeig%
  179SYS "OS_ReadModeVariable",m%,5 TO ,,yeig%:h% = h% << yeig%
  180make_small% = (h% > 59)
  181
  182= sprite$
� > UserMenu
� (c) David McCormack
� Version 1.00

$ș "Wimp_ReadSysInfo",3 � state%
A� state% = 0 � � � 0,"UserMenu will only run in the desktop!"

*� � ș "OS_CLI","Error "+�$+" "+�(�):�
	

� temp_blk%  256

�parse_env

2ș "Wimp_Initialise",200,&4B534154,"UserMenus"
'c%    = �load_text_file(menu_file$)
menu% = �create_menu(c%)
1m_x% = �(�system_variable("ExtraBar$MouseX"))
1m_y% = �(�system_variable("ExtraBar$MouseY"))

(ș "XOS_CLI","Unset ExtraBar$MouseX"
(ș "XOS_CLI","Unset ExtraBar$MouseY"
<� (m_x% = 0) � (m_y% = 0) � ȗ m_x%,m_y%,m_b%:m_x% -= 64

�wimp_poll
�

� �parse_env
ș "XOS_GetEnv" � env$
.� lp% = 0 � 2:env$ = �env$,�env$," ")+1):�
/� env$ = "" � � � 0,"No menu file defined."
menu_file$ = env$
�
 
!� �load_text_file(file$)
"� buttons$(250)
#� text$(250)
$
%c% = 0:p% = 0
&a% = �(file$)
'� a% <> 0 �
(  a$ = �#a%
)  ȕ � �#a%
*    char% = �#a%
+  
,    � char% > 31 �
-      � p% = 0 �
.        text$(c%)+=�(char%)
/      �
0"        buttons$(c%)+=�(char%)
1      �
2	    �
3      � char% = 09 � p%+=1
4      � char% = 10 �
5        ȕ char% < 32
6          char% = �#a%
7
        �
8%        � � � #a% �#a% = �#a% - 1
9?        � IF (text$(c%) <> "") OR (buttons$(c%) <> "") THEN
:          c%+=1:p% = 0
;      �
<	    �
=  �
>
  �#a%
?�
@&  � � 0,file$+" cannpt be opened."
A�
B= c%
C
D� �create_menu(c%)
E� menu% ((c% * 24) + 28)
F� indir% (c% * 256)
G
Hwidth% = 0
I
J!menu% = 0
Kmenu%?12 = 7
Lmenu%?13 = 2
Mmenu%?14 = 7
Nmenu%?15 = 0
Omenu%!16 = width%
Pmenu%!20 = 44
Qmenu%!24 = 0
R
S� lp% = 0 � c%-1
T5  text$ = text$(lp%):sprite$ = "":make_small% = 0
U  � (�text$,"; ") <> 0) �
V    ptr%    = �text$,"; ")
W%    sprite$ = �text$(lp%),ptr%-1)
X7    sprite$ = "S"+�check_small(sprite$,make_small%)
Y%    text$   = �text$(lp%),ptr%+2)
Z  �
[
\%  text$ = text$+�(0)+sprite$+�(0)
]%  $(indir% + (lp% * 256)) = text$
^4  $(indir% + (lp% * 256) + �(text$)+2) = sprite$
_
`   ptr% = menu%+(lp% * 24)+28
a  ptr%!0  = %0
b  ptr%!4  = -1
c  ptr%!8  = &7000113
d  � sprite$ = "" �
e%    ptr%!8 = (ptr%!8 � &FFFFFFFD)
f  �
g'    � make_small% � ptr%!8+=(1<<11)
h  �
i$  ptr%!12 = indir% + (lp% * 256)
j1  ptr%!16 = indir% + (lp% * 256) + �(text$)+2
k  ptr%!20 = �(text$)
l
m  iwidth% = �(text$)*16
n#  � sprite$ <> "" � iwidth%+=56
o,  � width% < iwidth%  � width% = iwidth%
p
q�
r
s ptr% = menu%+(c% * 24)-24+28
t!ptr% = 1<<7
umenu%!16  = width%
v= menu%
w
x� �wimp_poll
y#� quit%,blk%,mask%,c%:mask% = 0
z)ș "Wimp_CreateMenu",,menu%,m_x%,m_y%
{� blk% 256
|�
}(  ș "XOS_ReadMonotonicTime" � time%
~.  ș "Wimp_PollIdle",mask%,blk%,time% � r%

  Ȏ r% �
�    � 0:c%+=1
�/      ș "Wimp_CreateMenu",,menu%,m_x%,m_y%
�      � c% = 1 � mask% = 1
�    � 9:
�*      �issue_command(buttons$(blk%!0))
�3      ș "Wimp_GetPointerInfo",,blk%:quit% = -1
�J      � (blk%!8 = 1) � ș "Wimp_CreateMenu",,menu%,m_x%,m_y%:quit% = 0
�    � 17,18
�      Ȏ blk%!16 �
�        � 0     :quit% = -1
�        � &400C9:quit% = -1
�      �
�  �
�� quit% = -1
��
�
�� �issue_command(com$)
�a% = �("Pipe:$.UserTemp")
�� a% <> 0 �
�  �#a%,com$:�#a%
�-  ș "XOS_File",18,"Pipe:$.UserTemp",&FEB
�0  ș "XWimp_StartTask","Run Pipe:$.UserTemp"
��
��
�
� � �system_variable(sys_var$)
�� length%,text$
�=ș"XOS_ReadVarVal",sys_var$+�(0),temp_blk%,-1 � ,,length%
�� length% <> 0 �
�C  ș"XOS_ReadVarVal",sys_var$+�(0),temp_blk%,255,,3 � ,,length%
�  ?(temp_blk%+length%)=13
�  text$ = $temp_blk%
��
�  text$ = ""
��
�= text$
�
�)� �check_small(sprite$,� make_small%)
�
� return$
�
�=ș "XWimp_SpriteOp",40+256,,sprite$ � ,,,w%,h%,,m%;flags%
�� (flags% � 1) = 1 �
�>  � �sprite$,"!") <> 0 � sprite$ = �sprite$,�sprite$,"!"))
�R  � �sprite$,"small_") <> 0 � sprite$ = "file_"+�sprite$,�sprite$,"small_")+6)
�?  ș "XWimp_SpriteOp",40+256,,sprite$ � ,,,w%,h%,,m%;flags%
�  � (flags% � 1) = 1 �
�P    � �sprite$,"file_") <> 0 � sprite$ = "small_136" � sprite$ = "small_app"
�A    ș "XWimp_SpriteOp",40+256,,sprite$ � ,,,w%,h%,,m%;flags%
�  �
��
�<ș "OS_ReadModeVariable",m%,4 � ,,xeig%:w% = w% << xeig%
�<ș "OS_ReadModeVariable",m%,5 � ,,yeig%:h% = h% << yeig%
�make_small% = (h% > 59)
�
�
= sprite$
�
00000000  0d 00 01 10 f4 20 3e 20  55 73 65 72 4d 65 6e 75  |..... > UserMenu|
00000010  0d 00 02 19 f4 20 28 63  29 20 44 61 76 69 64 20  |..... (c) David |
00000020  4d 63 43 6f 72 6d 61 63  6b 0d 00 03 12 f4 20 56  |McCormack..... V|
00000030  65 72 73 69 6f 6e 20 31  2e 30 30 0d 00 04 04 0d  |ersion 1.00.....|
00000040  00 05 24 c8 99 20 22 57  69 6d 70 5f 52 65 61 64  |..$.. "Wimp_Read|
00000050  53 79 73 49 6e 66 6f 22  2c 33 20 b8 20 73 74 61  |SysInfo",3 . sta|
00000060  74 65 25 0d 00 06 41 e7  20 73 74 61 74 65 25 20  |te%...A. state% |
00000070  3d 20 30 20 8c 20 85 20  a2 20 30 2c 22 55 73 65  |= 0 . . . 0,"Use|
00000080  72 4d 65 6e 75 20 77 69  6c 6c 20 6f 6e 6c 79 20  |rMenu will only |
00000090  72 75 6e 20 69 6e 20 74  68 65 20 64 65 73 6b 74  |run in the deskt|
000000a0  6f 70 21 22 0d 00 07 04  0d 00 08 2a ee 20 85 20  |op!".......*. . |
000000b0  c8 99 20 22 4f 53 5f 43  4c 49 22 2c 22 45 72 72  |.. "OS_CLI","Err|
000000c0  6f 72 20 22 2b f6 24 2b  22 20 22 2b c3 28 9e 29  |or "+.$+" "+.(.)|
000000d0  3a e0 0d 00 09 04 0d 00  0a 14 de 20 74 65 6d 70  |:.......... temp|
000000e0  5f 62 6c 6b 25 20 20 32  35 36 0d 00 0b 04 0d 00  |_blk%  256......|
000000f0  0c 0e f2 70 61 72 73 65  5f 65 6e 76 0d 00 0d 32  |...parse_env...2|
00000100  c8 99 20 22 57 69 6d 70  5f 49 6e 69 74 69 61 6c  |.. "Wimp_Initial|
00000110  69 73 65 22 2c 32 30 30  2c 26 34 42 35 33 34 31  |ise",200,&4B5341|
00000120  35 34 2c 22 55 73 65 72  4d 65 6e 75 73 22 0d 00  |54,"UserMenus"..|
00000130  0e 27 63 25 20 20 20 20  3d 20 a4 6c 6f 61 64 5f  |.'c%    = .load_|
00000140  74 65 78 74 5f 66 69 6c  65 28 6d 65 6e 75 5f 66  |text_file(menu_f|
00000150  69 6c 65 24 29 0d 00 0f  1c 6d 65 6e 75 25 20 3d  |ile$)....menu% =|
00000160  20 a4 63 72 65 61 74 65  5f 6d 65 6e 75 28 63 25  | .create_menu(c%|
00000170  29 0d 00 10 31 6d 5f 78  25 20 3d 20 bb 28 a4 73  |)...1m_x% = .(.s|
00000180  79 73 74 65 6d 5f 76 61  72 69 61 62 6c 65 28 22  |ystem_variable("|
00000190  45 78 74 72 61 42 61 72  24 4d 6f 75 73 65 58 22  |ExtraBar$MouseX"|
000001a0  29 29 0d 00 11 31 6d 5f  79 25 20 3d 20 bb 28 a4  |))...1m_y% = .(.|
000001b0  73 79 73 74 65 6d 5f 76  61 72 69 61 62 6c 65 28  |system_variable(|
000001c0  22 45 78 74 72 61 42 61  72 24 4d 6f 75 73 65 59  |"ExtraBar$MouseY|
000001d0  22 29 29 0d 00 12 04 0d  00 13 28 c8 99 20 22 58  |")).......(.. "X|
000001e0  4f 53 5f 43 4c 49 22 2c  22 55 6e 73 65 74 20 45  |OS_CLI","Unset E|
000001f0  78 74 72 61 42 61 72 24  4d 6f 75 73 65 58 22 0d  |xtraBar$MouseX".|
00000200  00 14 28 c8 99 20 22 58  4f 53 5f 43 4c 49 22 2c  |..(.. "XOS_CLI",|
00000210  22 55 6e 73 65 74 20 45  78 74 72 61 42 61 72 24  |"Unset ExtraBar$|
00000220  4d 6f 75 73 65 59 22 0d  00 15 3c e7 20 28 6d 5f  |MouseY"...<. (m_|
00000230  78 25 20 3d 20 30 29 20  84 20 28 6d 5f 79 25 20  |x% = 0) . (m_y% |
00000240  3d 20 30 29 20 8c 20 c8  97 20 6d 5f 78 25 2c 6d  |= 0) . .. m_x%,m|
00000250  5f 79 25 2c 6d 5f 62 25  3a 6d 5f 78 25 20 2d 3d  |_y%,m_b%:m_x% -=|
00000260  20 36 34 0d 00 16 04 0d  00 17 0e f2 77 69 6d 70  | 64.........wimp|
00000270  5f 70 6f 6c 6c 0d 00 18  05 e0 0d 00 19 04 0d 00  |_poll...........|
00000280  1a 10 dd 20 f2 70 61 72  73 65 5f 65 6e 76 0d 00  |... .parse_env..|
00000290  1b 1a c8 99 20 22 58 4f  53 5f 47 65 74 45 6e 76  |.... "XOS_GetEnv|
000002a0  22 20 b8 20 65 6e 76 24  0d 00 1c 2e e3 20 6c 70  |" . env$..... lp|
000002b0  25 20 3d 20 30 20 b8 20  32 3a 65 6e 76 24 20 3d  |% = 0 . 2:env$ =|
000002c0  20 c1 65 6e 76 24 2c a7  65 6e 76 24 2c 22 20 22  | .env$,.env$," "|
000002d0  29 2b 31 29 3a ed 0d 00  1d 2f e7 20 65 6e 76 24  |)+1):..../. env$|
000002e0  20 3d 20 22 22 20 8c 20  85 20 a2 20 30 2c 22 4e  | = "" . . . 0,"N|
000002f0  6f 20 6d 65 6e 75 20 66  69 6c 65 20 64 65 66 69  |o menu file defi|
00000300  6e 65 64 2e 22 0d 00 1e  15 6d 65 6e 75 5f 66 69  |ned."....menu_fi|
00000310  6c 65 24 20 3d 20 65 6e  76 24 0d 00 1f 05 e1 0d  |le$ = env$......|
00000320  00 20 04 0d 00 21 1c dd  20 a4 6c 6f 61 64 5f 74  |. ...!.. .load_t|
00000330  65 78 74 5f 66 69 6c 65  28 66 69 6c 65 24 29 0d  |ext_file(file$).|
00000340  00 22 13 de 20 62 75 74  74 6f 6e 73 24 28 32 35  |.".. buttons$(25|
00000350  30 29 0d 00 23 10 de 20  74 65 78 74 24 28 32 35  |0)..#.. text$(25|
00000360  30 29 0d 00 24 04 0d 00  25 11 63 25 20 3d 20 30  |0)..$...%.c% = 0|
00000370  3a 70 25 20 3d 20 30 0d  00 26 11 61 25 20 3d 20  |:p% = 0..&.a% = |
00000380  8e 28 66 69 6c 65 24 29  0d 00 27 0f e7 20 61 25  |.(file$)..'.. a%|
00000390  20 3c 3e 20 30 20 8c 0d  00 28 0f 20 20 61 24 20  | <> 0 ...(.  a$ |
000003a0  3d 20 be 23 61 25 0d 00  29 0f 20 20 c8 95 20 ac  |= .#a%..).  .. .|
000003b0  20 c5 23 61 25 0d 00 2a  14 20 20 20 20 63 68 61  | .#a%..*.    cha|
000003c0  72 25 20 3d 20 9a 23 61  25 0d 00 2b 06 20 20 0d  |r% = .#a%..+.  .|
000003d0  00 2c 16 20 20 20 20 e7  20 63 68 61 72 25 20 3e  |.,.    . char% >|
000003e0  20 33 31 20 8c 0d 00 2d  14 20 20 20 20 20 20 e7  | 31 ...-.      .|
000003f0  20 70 25 20 3d 20 30 20  8c 0d 00 2e 1f 20 20 20  | p% = 0 .....   |
00000400  20 20 20 20 20 74 65 78  74 24 28 63 25 29 2b 3d  |     text$(c%)+=|
00000410  bd 28 63 68 61 72 25 29  0d 00 2f 0b 20 20 20 20  |.(char%)../.    |
00000420  20 20 cc 0d 00 30 22 20  20 20 20 20 20 20 20 62  |  ...0"        b|
00000430  75 74 74 6f 6e 73 24 28  63 25 29 2b 3d bd 28 63  |uttons$(c%)+=.(c|
00000440  68 61 72 25 29 0d 00 31  0b 20 20 20 20 20 20 cd  |har%)..1.      .|
00000450  0d 00 32 09 20 20 20 20  cc 0d 00 33 1e 20 20 20  |..2.    ...3.   |
00000460  20 20 20 e7 20 63 68 61  72 25 20 3d 20 30 39 20  |   . char% = 09 |
00000470  8c 20 70 25 2b 3d 31 0d  00 34 18 20 20 20 20 20  |. p%+=1..4.     |
00000480  20 e7 20 63 68 61 72 25  20 3d 20 31 30 20 8c 0d  | . char% = 10 ..|
00000490  00 35 19 20 20 20 20 20  20 20 20 c8 95 20 63 68  |.5.        .. ch|
000004a0  61 72 25 20 3c 20 33 32  0d 00 36 1a 20 20 20 20  |ar% < 32..6.    |
000004b0  20 20 20 20 20 20 63 68  61 72 25 20 3d 20 9a 23  |      char% = .#|
000004c0  61 25 0d 00 37 0d 20 20  20 20 20 20 20 20 ce 0d  |a%..7.        ..|
000004d0  00 38 25 20 20 20 20 20  20 20 20 e7 20 ac 20 c5  |.8%        . . .|
000004e0  20 23 61 25 20 8f 23 61  25 20 3d 20 8f 23 61 25  | #a% .#a% = .#a%|
000004f0  20 2d 20 31 0d 00 39 3f  20 20 20 20 20 20 20 20  | - 1..9?        |
00000500  f4 20 49 46 20 28 74 65  78 74 24 28 63 25 29 20  |. IF (text$(c%) |
00000510  3c 3e 20 22 22 29 20 4f  52 20 28 62 75 74 74 6f  |<> "") OR (butto|
00000520  6e 73 24 28 63 25 29 20  3c 3e 20 22 22 29 20 54  |ns$(c%) <> "") T|
00000530  48 45 4e 0d 00 3a 1a 20  20 20 20 20 20 20 20 20  |HEN..:.         |
00000540  20 63 25 2b 3d 31 3a 70  25 20 3d 20 30 0d 00 3b  | c%+=1:p% = 0..;|
00000550  0b 20 20 20 20 20 20 cd  0d 00 3c 09 20 20 20 20  |.      ...<.    |
00000560  cd 0d 00 3d 07 20 20 ce  0d 00 3e 0a 20 20 d9 23  |...=.  ...>.  .#|
00000570  61 25 0d 00 3f 05 cc 0d  00 40 26 20 20 85 20 a2  |a%..?....@&  . .|
00000580  20 30 2c 66 69 6c 65 24  2b 22 20 63 61 6e 6e 70  | 0,file$+" cannp|
00000590  74 20 62 65 20 6f 70 65  6e 65 64 2e 22 0d 00 41  |t be opened."..A|
000005a0  05 cd 0d 00 42 08 3d 20  63 25 0d 00 43 04 0d 00  |....B.= c%..C...|
000005b0  44 16 dd 20 a4 63 72 65  61 74 65 5f 6d 65 6e 75  |D.. .create_menu|
000005c0  28 63 25 29 0d 00 45 1c  de 20 6d 65 6e 75 25 20  |(c%)..E.. menu% |
000005d0  28 28 63 25 20 2a 20 32  34 29 20 2b 20 32 38 29  |((c% * 24) + 28)|
000005e0  0d 00 46 17 de 20 69 6e  64 69 72 25 20 28 63 25  |..F.. indir% (c%|
000005f0  20 2a 20 32 35 36 29 0d  00 47 04 0d 00 48 0e 77  | * 256)..G...H.w|
00000600  69 64 74 68 25 20 3d 20  30 0d 00 49 04 0d 00 4a  |idth% = 0..I...J|
00000610  0e 21 6d 65 6e 75 25 20  3d 20 30 0d 00 4b 10 6d  |.!menu% = 0..K.m|
00000620  65 6e 75 25 3f 31 32 20  3d 20 37 0d 00 4c 10 6d  |enu%?12 = 7..L.m|
00000630  65 6e 75 25 3f 31 33 20  3d 20 32 0d 00 4d 10 6d  |enu%?13 = 2..M.m|
00000640  65 6e 75 25 3f 31 34 20  3d 20 37 0d 00 4e 10 6d  |enu%?14 = 7..N.m|
00000650  65 6e 75 25 3f 31 35 20  3d 20 30 0d 00 4f 15 6d  |enu%?15 = 0..O.m|
00000660  65 6e 75 25 21 31 36 20  3d 20 77 69 64 74 68 25  |enu%!16 = width%|
00000670  0d 00 50 11 6d 65 6e 75  25 21 32 30 20 3d 20 34  |..P.menu%!20 = 4|
00000680  34 0d 00 51 10 6d 65 6e  75 25 21 32 34 20 3d 20  |4..Q.menu%!24 = |
00000690  30 0d 00 52 04 0d 00 53  14 e3 20 6c 70 25 20 3d  |0..R...S.. lp% =|
000006a0  20 30 20 b8 20 63 25 2d  31 0d 00 54 35 20 20 74  | 0 . c%-1..T5  t|
000006b0  65 78 74 24 20 3d 20 74  65 78 74 24 28 6c 70 25  |ext$ = text$(lp%|
000006c0  29 3a 73 70 72 69 74 65  24 20 3d 20 22 22 3a 6d  |):sprite$ = "":m|
000006d0  61 6b 65 5f 73 6d 61 6c  6c 25 20 3d 20 30 0d 00  |ake_small% = 0..|
000006e0  55 1d 20 20 e7 20 28 a7  74 65 78 74 24 2c 22 3b  |U.  . (.text$,";|
000006f0  20 22 29 20 3c 3e 20 30  29 20 8c 0d 00 56 1e 20  | ") <> 0) ...V. |
00000700  20 20 20 70 74 72 25 20  20 20 20 3d 20 a7 74 65  |   ptr%    = .te|
00000710  78 74 24 2c 22 3b 20 22  29 0d 00 57 25 20 20 20  |xt$,"; ")..W%   |
00000720  20 73 70 72 69 74 65 24  20 3d 20 c0 74 65 78 74  | sprite$ = .text|
00000730  24 28 6c 70 25 29 2c 70  74 72 25 2d 31 29 0d 00  |$(lp%),ptr%-1)..|
00000740  58 37 20 20 20 20 73 70  72 69 74 65 24 20 3d 20  |X7    sprite$ = |
00000750  22 53 22 2b a4 63 68 65  63 6b 5f 73 6d 61 6c 6c  |"S"+.check_small|
00000760  28 73 70 72 69 74 65 24  2c 6d 61 6b 65 5f 73 6d  |(sprite$,make_sm|
00000770  61 6c 6c 25 29 0d 00 59  25 20 20 20 20 74 65 78  |all%)..Y%    tex|
00000780  74 24 20 20 20 3d 20 c1  74 65 78 74 24 28 6c 70  |t$   = .text$(lp|
00000790  25 29 2c 70 74 72 25 2b  32 29 0d 00 5a 07 20 20  |%),ptr%+2)..Z.  |
000007a0  cd 0d 00 5b 04 0d 00 5c  25 20 20 74 65 78 74 24  |...[...\%  text$|
000007b0  20 3d 20 74 65 78 74 24  2b bd 28 30 29 2b 73 70  | = text$+.(0)+sp|
000007c0  72 69 74 65 24 2b bd 28  30 29 0d 00 5d 25 20 20  |rite$+.(0)..]%  |
000007d0  24 28 69 6e 64 69 72 25  20 2b 20 28 6c 70 25 20  |$(indir% + (lp% |
000007e0  2a 20 32 35 36 29 29 20  3d 20 74 65 78 74 24 0d  |* 256)) = text$.|
000007f0  00 5e 34 20 20 24 28 69  6e 64 69 72 25 20 2b 20  |.^4  $(indir% + |
00000800  28 6c 70 25 20 2a 20 32  35 36 29 20 2b 20 a9 28  |(lp% * 256) + .(|
00000810  74 65 78 74 24 29 2b 32  29 20 3d 20 73 70 72 69  |text$)+2) = spri|
00000820  74 65 24 0d 00 5f 04 0d  00 60 20 20 20 70 74 72  |te$.._...`   ptr|
00000830  25 20 3d 20 6d 65 6e 75  25 2b 28 6c 70 25 20 2a  |% = menu%+(lp% *|
00000840  20 32 34 29 2b 32 38 0d  00 61 12 20 20 70 74 72  | 24)+28..a.  ptr|
00000850  25 21 30 20 20 3d 20 25  30 0d 00 62 12 20 20 70  |%!0  = %0..b.  p|
00000860  74 72 25 21 34 20 20 3d  20 2d 31 0d 00 63 18 20  |tr%!4  = -1..c. |
00000870  20 70 74 72 25 21 38 20  20 3d 20 26 37 30 30 30  | ptr%!8  = &7000|
00000880  31 31 33 0d 00 64 16 20  20 e7 20 73 70 72 69 74  |113..d.  . sprit|
00000890  65 24 20 3d 20 22 22 20  8c 0d 00 65 25 20 20 20  |e$ = "" ...e%   |
000008a0  20 70 74 72 25 21 38 20  3d 20 28 70 74 72 25 21  | ptr%!8 = (ptr%!|
000008b0  38 20 80 20 26 46 46 46  46 46 46 46 44 29 0d 00  |8 . &FFFFFFFD)..|
000008c0  66 07 20 20 cc 0d 00 67  27 20 20 20 20 e7 20 6d  |f.  ...g'    . m|
000008d0  61 6b 65 5f 73 6d 61 6c  6c 25 20 8c 20 70 74 72  |ake_small% . ptr|
000008e0  25 21 38 2b 3d 28 31 3c  3c 31 31 29 0d 00 68 07  |%!8+=(1<<11)..h.|
000008f0  20 20 cd 0d 00 69 24 20  20 70 74 72 25 21 31 32  |  ...i$  ptr%!12|
00000900  20 3d 20 69 6e 64 69 72  25 20 2b 20 28 6c 70 25  | = indir% + (lp%|
00000910  20 2a 20 32 35 36 29 0d  00 6a 31 20 20 70 74 72  | * 256)..j1  ptr|
00000920  25 21 31 36 20 3d 20 69  6e 64 69 72 25 20 2b 20  |%!16 = indir% + |
00000930  28 6c 70 25 20 2a 20 32  35 36 29 20 2b 20 a9 28  |(lp% * 256) + .(|
00000940  74 65 78 74 24 29 2b 32  0d 00 6b 18 20 20 70 74  |text$)+2..k.  pt|
00000950  72 25 21 32 30 20 3d 20  a9 28 74 65 78 74 24 29  |r%!20 = .(text$)|
00000960  0d 00 6c 04 0d 00 6d 1b  20 20 69 77 69 64 74 68  |..l...m.  iwidth|
00000970  25 20 3d 20 a9 28 74 65  78 74 24 29 2a 31 36 0d  |% = .(text$)*16.|
00000980  00 6e 23 20 20 e7 20 73  70 72 69 74 65 24 20 3c  |.n#  . sprite$ <|
00000990  3e 20 22 22 20 8c 20 69  77 69 64 74 68 25 2b 3d  |> "" . iwidth%+=|
000009a0  35 36 0d 00 6f 2c 20 20  e7 20 77 69 64 74 68 25  |56..o,  . width%|
000009b0  20 3c 20 69 77 69 64 74  68 25 20 20 8c 20 77 69  | < iwidth%  . wi|
000009c0  64 74 68 25 20 3d 20 69  77 69 64 74 68 25 0d 00  |dth% = iwidth%..|
000009d0  70 04 0d 00 71 05 ed 0d  00 72 04 0d 00 73 20 70  |p...q....r...s p|
000009e0  74 72 25 20 3d 20 6d 65  6e 75 25 2b 28 63 25 20  |tr% = menu%+(c% |
000009f0  2a 20 32 34 29 2d 32 34  2b 32 38 0d 00 74 10 21  |* 24)-24+28..t.!|
00000a00  70 74 72 25 20 3d 20 31  3c 3c 37 0d 00 75 16 6d  |ptr% = 1<<7..u.m|
00000a10  65 6e 75 25 21 31 36 20  20 3d 20 77 69 64 74 68  |enu%!16  = width|
00000a20  25 0d 00 76 0b 3d 20 6d  65 6e 75 25 0d 00 77 04  |%..v.= menu%..w.|
00000a30  0d 00 78 10 dd 20 f2 77  69 6d 70 5f 70 6f 6c 6c  |..x.. .wimp_poll|
00000a40  0d 00 79 23 ea 20 71 75  69 74 25 2c 62 6c 6b 25  |..y#. quit%,blk%|
00000a50  2c 6d 61 73 6b 25 2c 63  25 3a 6d 61 73 6b 25 20  |,mask%,c%:mask% |
00000a60  3d 20 30 0d 00 7a 29 c8  99 20 22 57 69 6d 70 5f  |= 0..z).. "Wimp_|
00000a70  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 6d 65 6e  |CreateMenu",,men|
00000a80  75 25 2c 6d 5f 78 25 2c  6d 5f 79 25 0d 00 7b 0e  |u%,m_x%,m_y%..{.|
00000a90  de 20 62 6c 6b 25 20 32  35 36 0d 00 7c 05 f5 0d  |. blk% 256..|...|
00000aa0  00 7d 28 20 20 c8 99 20  22 58 4f 53 5f 52 65 61  |.}(  .. "XOS_Rea|
00000ab0  64 4d 6f 6e 6f 74 6f 6e  69 63 54 69 6d 65 22 20  |dMonotonicTime" |
00000ac0  b8 20 74 69 6d 65 25 0d  00 7e 2e 20 20 c8 99 20  |. time%..~.  .. |
00000ad0  22 57 69 6d 70 5f 50 6f  6c 6c 49 64 6c 65 22 2c  |"Wimp_PollIdle",|
00000ae0  6d 61 73 6b 25 2c 62 6c  6b 25 2c 74 69 6d 65 25  |mask%,blk%,time%|
00000af0  20 b8 20 72 25 0d 00 7f  0d 20 20 c8 8e 20 72 25  | . r%....  .. r%|
00000b00  20 ca 0d 00 80 11 20 20  20 20 c9 20 30 3a 63 25  | .....    . 0:c%|
00000b10  2b 3d 31 0d 00 81 2f 20  20 20 20 20 20 c8 99 20  |+=1.../      .. |
00000b20  22 57 69 6d 70 5f 43 72  65 61 74 65 4d 65 6e 75  |"Wimp_CreateMenu|
00000b30  22 2c 2c 6d 65 6e 75 25  2c 6d 5f 78 25 2c 6d 5f  |",,menu%,m_x%,m_|
00000b40  79 25 0d 00 82 1e 20 20  20 20 20 20 e7 20 63 25  |y%....      . c%|
00000b50  20 3d 20 31 20 8c 20 6d  61 73 6b 25 20 3d 20 31  | = 1 . mask% = 1|
00000b60  0d 00 83 0c 20 20 20 20  c9 20 39 3a 0d 00 84 2a  |....    . 9:...*|
00000b70  20 20 20 20 20 20 f2 69  73 73 75 65 5f 63 6f 6d  |      .issue_com|
00000b80  6d 61 6e 64 28 62 75 74  74 6f 6e 73 24 28 62 6c  |mand(buttons$(bl|
00000b90  6b 25 21 30 29 29 0d 00  85 33 20 20 20 20 20 20  |k%!0))...3      |
00000ba0  c8 99 20 22 57 69 6d 70  5f 47 65 74 50 6f 69 6e  |.. "Wimp_GetPoin|
00000bb0  74 65 72 49 6e 66 6f 22  2c 2c 62 6c 6b 25 3a 71  |terInfo",,blk%:q|
00000bc0  75 69 74 25 20 3d 20 2d  31 0d 00 86 4a 20 20 20  |uit% = -1...J   |
00000bd0  20 20 20 e7 20 28 62 6c  6b 25 21 38 20 3d 20 31  |   . (blk%!8 = 1|
00000be0  29 20 8c 20 c8 99 20 22  57 69 6d 70 5f 43 72 65  |) . .. "Wimp_Cre|
00000bf0  61 74 65 4d 65 6e 75 22  2c 2c 6d 65 6e 75 25 2c  |ateMenu",,menu%,|
00000c00  6d 5f 78 25 2c 6d 5f 79  25 3a 71 75 69 74 25 20  |m_x%,m_y%:quit% |
00000c10  3d 20 30 0d 00 87 0f 20  20 20 20 c9 20 31 37 2c  |= 0....    . 17,|
00000c20  31 38 0d 00 88 16 20 20  20 20 20 20 c8 8e 20 62  |18....      .. b|
00000c30  6c 6b 25 21 31 36 20 ca  0d 00 89 1f 20 20 20 20  |lk%!16 .....    |
00000c40  20 20 20 20 c9 20 30 20  20 20 20 20 3a 71 75 69  |    . 0     :qui|
00000c50  74 25 20 3d 20 2d 31 0d  00 8a 1f 20 20 20 20 20  |t% = -1....     |
00000c60  20 20 20 c9 20 26 34 30  30 43 39 3a 71 75 69 74  |   . &400C9:quit|
00000c70  25 20 3d 20 2d 31 0d 00  8b 0b 20 20 20 20 20 20  |% = -1....      |
00000c80  cb 0d 00 8c 07 20 20 cb  0d 00 8d 10 fd 20 71 75  |.....  ...... qu|
00000c90  69 74 25 20 3d 20 2d 31  0d 00 8e 05 e1 0d 00 8f  |it% = -1........|
00000ca0  04 0d 00 90 1a dd 20 f2  69 73 73 75 65 5f 63 6f  |...... .issue_co|
00000cb0  6d 6d 61 6e 64 28 63 6f  6d 24 29 0d 00 91 1d 61  |mmand(com$)....a|
00000cc0  25 20 3d 20 ae 28 22 50  69 70 65 3a 24 2e 55 73  |% = .("Pipe:$.Us|
00000cd0  65 72 54 65 6d 70 22 29  0d 00 92 0f e7 20 61 25  |erTemp")..... a%|
00000ce0  20 3c 3e 20 30 20 8c 0d  00 93 14 20 20 d5 23 61  | <> 0 .....  .#a|
00000cf0  25 2c 63 6f 6d 24 3a d9  23 61 25 0d 00 94 2d 20  |%,com$:.#a%...- |
00000d00  20 c8 99 20 22 58 4f 53  5f 46 69 6c 65 22 2c 31  | .. "XOS_File",1|
00000d10  38 2c 22 50 69 70 65 3a  24 2e 55 73 65 72 54 65  |8,"Pipe:$.UserTe|
00000d20  6d 70 22 2c 26 46 45 42  0d 00 95 30 20 20 c8 99  |mp",&FEB...0  ..|
00000d30  20 22 58 57 69 6d 70 5f  53 74 61 72 74 54 61 73  | "XWimp_StartTas|
00000d40  6b 22 2c 22 52 75 6e 20  50 69 70 65 3a 24 2e 55  |k","Run Pipe:$.U|
00000d50  73 65 72 54 65 6d 70 22  0d 00 96 05 cd 0d 00 97  |serTemp"........|
00000d60  05 e1 0d 00 98 04 0d 00  99 20 dd 20 a4 73 79 73  |......... . .sys|
00000d70  74 65 6d 5f 76 61 72 69  61 62 6c 65 28 73 79 73  |tem_variable(sys|
00000d80  5f 76 61 72 24 29 0d 00  9a 13 ea 20 6c 65 6e 67  |_var$)..... leng|
00000d90  74 68 25 2c 74 65 78 74  24 0d 00 9b 3d c8 99 22  |th%,text$...=.."|
00000da0  58 4f 53 5f 52 65 61 64  56 61 72 56 61 6c 22 2c  |XOS_ReadVarVal",|
00000db0  73 79 73 5f 76 61 72 24  2b bd 28 30 29 2c 74 65  |sys_var$+.(0),te|
00000dc0  6d 70 5f 62 6c 6b 25 2c  2d 31 20 b8 20 2c 2c 6c  |mp_blk%,-1 . ,,l|
00000dd0  65 6e 67 74 68 25 0d 00  9c 14 e7 20 6c 65 6e 67  |ength%..... leng|
00000de0  74 68 25 20 3c 3e 20 30  20 8c 0d 00 9d 43 20 20  |th% <> 0 ....C  |
00000df0  c8 99 22 58 4f 53 5f 52  65 61 64 56 61 72 56 61  |.."XOS_ReadVarVa|
00000e00  6c 22 2c 73 79 73 5f 76  61 72 24 2b bd 28 30 29  |l",sys_var$+.(0)|
00000e10  2c 74 65 6d 70 5f 62 6c  6b 25 2c 32 35 35 2c 2c  |,temp_blk%,255,,|
00000e20  33 20 b8 20 2c 2c 6c 65  6e 67 74 68 25 0d 00 9e  |3 . ,,length%...|
00000e30  1d 20 20 3f 28 74 65 6d  70 5f 62 6c 6b 25 2b 6c  |.  ?(temp_blk%+l|
00000e40  65 6e 67 74 68 25 29 3d  31 33 0d 00 9f 18 20 20  |ength%)=13....  |
00000e50  74 65 78 74 24 20 3d 20  24 74 65 6d 70 5f 62 6c  |text$ = $temp_bl|
00000e60  6b 25 0d 00 a0 05 cc 0d  00 a1 10 20 20 74 65 78  |k%.........  tex|
00000e70  74 24 20 3d 20 22 22 0d  00 a2 05 cd 0d 00 a3 0b  |t$ = "".........|
00000e80  3d 20 74 65 78 74 24 0d  00 a4 04 0d 00 a5 29 dd  |= text$.......).|
00000e90  20 a4 63 68 65 63 6b 5f  73 6d 61 6c 6c 28 73 70  | .check_small(sp|
00000ea0  72 69 74 65 24 2c f8 20  6d 61 6b 65 5f 73 6d 61  |rite$,. make_sma|
00000eb0  6c 6c 25 29 0d 00 a6 0d  ea 20 72 65 74 75 72 6e  |ll%)..... return|
00000ec0  24 0d 00 a7 04 0d 00 a8  3d c8 99 20 22 58 57 69  |$.......=.. "XWi|
00000ed0  6d 70 5f 53 70 72 69 74  65 4f 70 22 2c 34 30 2b  |mp_SpriteOp",40+|
00000ee0  32 35 36 2c 2c 73 70 72  69 74 65 24 20 b8 20 2c  |256,,sprite$ . ,|
00000ef0  2c 2c 77 25 2c 68 25 2c  2c 6d 25 3b 66 6c 61 67  |,,w%,h%,,m%;flag|
00000f00  73 25 0d 00 a9 18 e7 20  28 66 6c 61 67 73 25 20  |s%..... (flags% |
00000f10  80 20 31 29 20 3d 20 31  20 8c 0d 00 aa 3e 20 20  |. 1) = 1 ....>  |
00000f20  e7 20 a7 73 70 72 69 74  65 24 2c 22 21 22 29 20  |. .sprite$,"!") |
00000f30  3c 3e 20 30 20 8c 20 73  70 72 69 74 65 24 20 3d  |<> 0 . sprite$ =|
00000f40  20 c1 73 70 72 69 74 65  24 2c a7 73 70 72 69 74  | .sprite$,.sprit|
00000f50  65 24 2c 22 21 22 29 29  0d 00 ab 52 20 20 e7 20  |e$,"!"))...R  . |
00000f60  a7 73 70 72 69 74 65 24  2c 22 73 6d 61 6c 6c 5f  |.sprite$,"small_|
00000f70  22 29 20 3c 3e 20 30 20  8c 20 73 70 72 69 74 65  |") <> 0 . sprite|
00000f80  24 20 3d 20 22 66 69 6c  65 5f 22 2b c1 73 70 72  |$ = "file_"+.spr|
00000f90  69 74 65 24 2c a7 73 70  72 69 74 65 24 2c 22 73  |ite$,.sprite$,"s|
00000fa0  6d 61 6c 6c 5f 22 29 2b  36 29 0d 00 ac 3f 20 20  |mall_")+6)...?  |
00000fb0  c8 99 20 22 58 57 69 6d  70 5f 53 70 72 69 74 65  |.. "XWimp_Sprite|
00000fc0  4f 70 22 2c 34 30 2b 32  35 36 2c 2c 73 70 72 69  |Op",40+256,,spri|
00000fd0  74 65 24 20 b8 20 2c 2c  2c 77 25 2c 68 25 2c 2c  |te$ . ,,,w%,h%,,|
00000fe0  6d 25 3b 66 6c 61 67 73  25 0d 00 ad 1a 20 20 e7  |m%;flags%....  .|
00000ff0  20 28 66 6c 61 67 73 25  20 80 20 31 29 20 3d 20  | (flags% . 1) = |
00001000  31 20 8c 0d 00 ae 50 20  20 20 20 e7 20 a7 73 70  |1 ....P    . .sp|
00001010  72 69 74 65 24 2c 22 66  69 6c 65 5f 22 29 20 3c  |rite$,"file_") <|
00001020  3e 20 30 20 8c 20 73 70  72 69 74 65 24 20 3d 20  |> 0 . sprite$ = |
00001030  22 73 6d 61 6c 6c 5f 31  33 36 22 20 8b 20 73 70  |"small_136" . sp|
00001040  72 69 74 65 24 20 3d 20  22 73 6d 61 6c 6c 5f 61  |rite$ = "small_a|
00001050  70 70 22 0d 00 af 41 20  20 20 20 c8 99 20 22 58  |pp"...A    .. "X|
00001060  57 69 6d 70 5f 53 70 72  69 74 65 4f 70 22 2c 34  |Wimp_SpriteOp",4|
00001070  30 2b 32 35 36 2c 2c 73  70 72 69 74 65 24 20 b8  |0+256,,sprite$ .|
00001080  20 2c 2c 2c 77 25 2c 68  25 2c 2c 6d 25 3b 66 6c  | ,,,w%,h%,,m%;fl|
00001090  61 67 73 25 0d 00 b0 07  20 20 cd 0d 00 b1 05 cd  |ags%....  ......|
000010a0  0d 00 b2 3c c8 99 20 22  4f 53 5f 52 65 61 64 4d  |...<.. "OS_ReadM|
000010b0  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 6d 25 2c  |odeVariable",m%,|
000010c0  34 20 b8 20 2c 2c 78 65  69 67 25 3a 77 25 20 3d  |4 . ,,xeig%:w% =|
000010d0  20 77 25 20 3c 3c 20 78  65 69 67 25 0d 00 b3 3c  | w% << xeig%...<|
000010e0  c8 99 20 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |.. "OS_ReadModeV|
000010f0  61 72 69 61 62 6c 65 22  2c 6d 25 2c 35 20 b8 20  |ariable",m%,5 . |
00001100  2c 2c 79 65 69 67 25 3a  68 25 20 3d 20 68 25 20  |,,yeig%:h% = h% |
00001110  3c 3c 20 79 65 69 67 25  0d 00 b4 1b 6d 61 6b 65  |<< yeig%....make|
00001120  5f 73 6d 61 6c 6c 25 20  3d 20 28 68 25 20 3e 20  |_small% = (h% > |
00001130  35 39 29 0d 00 b5 04 0d  00 b6 0d 3d 20 73 70 72  |59)........= spr|
00001140  69 74 65 24 0d ff                                 |ite$..|
00001146