Home » Archimedes archive » Acorn User » AU 1994-04.adf » !StarInfo_StarInfo » Patterson/PHmdSource

Patterson/PHmdSource

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 1994-04.adf » !StarInfo_StarInfo
Filename: Patterson/PHmdSource
Read OK:
File size: 1AFF bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >PHmdSource
   20REM by  Tony Patterson
   30REM (c) AU April 1994
   40
   50ON ERROR ON ERROR OFF : ERROR ERR, REPORT$+" at line "+STR$ERL
   60
   70DIM code% &1000
   80
   90ByteV=6
  100
  110module_claim=6
  120module_free =7
  130
  140timer_delay=20 : REM less than 1/4 second to allow for poor latency
  150v_flag=1<<28
  160
  170pw=12
  180sp=13
  190link=14
  200
  210P%=0:O%=code%
  220
  230[OPT 6
  240.hide       EQUD 0
  250.delay      EQUD 0
  260.time       EQUD 0
  270.state      EQUD 0
  280.dummy      EQUB 0
  290.dummy      EQUB 0
  300.dummy      EQUB 0
  310.pos1       EQUB 0
  320.pos2       EQUD 0
  330.scratch    EQUD 0
  340            EQUD 0
  350.dummy      EQUB 0
  360.dummy      EQUB 0
  370.dummy      EQUB 0
  380.new_pos1   EQUB 0
  390.new_pos2   EQUD 0
  400]
  410wkspc_size=P%
  420
  430FOR pass=4 TO 6 STEP 2
  440
  450P%=0:O%=code%
  460
  470[OPT pass
  480FNmodule_header
  490.error_nem FNerror("Not enough memory in module area")
  500ALIGN
  510
  520.init
  530STMFD   (sp)!,{link}
  540
  550; Claim workspace
  560
  570MOV     R0,#module_claim
  580MOV     R3,#wkspc_size
  590SWI     "XOS_Module"
  600ADRVS   R0,error_nem
  610LDMVSFD (sp)!,{PC}
  620STR     R2,[pw]
  630MOV     pw,R2
  640
  650; initialise vars
  660
  670MOV     R1,#6
  680STRB    R1,[pw,#pos1]
  690STRB    R1,[pw,#new_pos1]
  700
  710MOV     R1,#0
  720STR     R1,[pw,#hide]
  730STR     R1,[pw,#delay]
  740STR     R1,[pw,#time]
  750
  760MOV     R1,#0
  770MOV     R0,#106
  780SWI     "XOS_Byte"
  790STR     R1,[pw,#state]
  800MOV     R0,#106
  810SWI     "XOS_Byte"
  820
  830; Claim UpCall vector (R2 is already set)
  840
  850MOV     R2,pw
  860ADR     R1,byte_intercept
  870MOV     R0,#ByteV
  880SWI     "XOS_Claim"
  890
  900MOV     R0,#timer_delay
  910ADR     R1,timer_event
  920MOV     R2,pw
  930SWI     "XOS_CallAfter"
  940
  950LDMFD   (sp)!,{PC}^
  960
  970.finalise
  980LDR     pw,[pw]
  990STMFD   (sp)!,{link}
 1000BL      reveal_pointer
 1010MOV     R2,pw
 1020ADR     R1,byte_intercept
 1030MOV     R0,#ByteV
 1040SWI     "XOS_Release"
 1050
 1060ADR     R0,timer_event
 1070MOV     R1,pw
 1080SWI     "XOS_RemoveTickerEvent"
 1090
 1100; Free workspace
 1110
 1120MOV     R0,#module_free
 1130SWI     "XOS_Module"
 1140LDMFD   (sp)!,{PC}^
 1150
 1160.service
 1170TEQ     R0,#&4D            ; Pre-Mode change
 1180MOVNES  PC,link            ; Used to reset pointer before a mode change
 1190STMFD   (sp)!,{R0-R1,link} ; as FX106 is not explicitly called, so pointer
 1200MOV     R0,#106            ; will reappear if we don't switch it off.
 1210MOV     R1,#0
 1220SWI     "XOS_Byte"
 1230STR     link,[pw,#state]
 1240LDMFD   (sp)!,{R0-R1,PC}^
 1250
 1260.show_ph_delay
 1270LDR     R0,[pw,#delay]
 1280TEQ     R0,#0
 1290BEQ     no_ph_delay
 1300SWI     "XOS_WriteS"
 1310EQUS    "The pointer will disappear after "
 1320EQUB 0
 1330ALIGN
 1340LDR     R0,[pw,#delay]
 1350MOV     R0,R0,LSR #2
 1360MOV     R3,R0
 1370ADD     R1,pw,#scratch
 1380MOV     R2,#new_pos1-scratch
 1390SWI     "XOS_ConvertCardinal4"
 1400LDMVSFD (sp)!,{PC}
 1410SWI     "XOS_Write0"
 1420SWI     "XOS_WriteS"
 1430EQUS    " second"
 1440EQUB    0
 1450ALIGN
 1460TEQ     R3,#1
 1470SWINE   &100+ASC"s"
 1480SWI     "XOS_WriteS"
 1490EQUS    " of inactivity"
 1500EQUB    10
 1510EQUB    13
 1520EQUB    0
 1530ALIGN
 1540LDMFD   (sp)!,{PC}^
 1550
 1560.no_ph_delay
 1570SWI     "OS_WriteS"
 1580EQUS    "The pointer hide feature is currently off"
 1590EQUB 10
 1600EQUB 13
 1610EQUB 0
 1620ALIGN
 1630LDMFD   (sp)!,{PC}^
 1640
 1650.pointerhide
 1660LDR     pw,[pw]
 1670STMFD   (sp)!,{link}
 1680TEQ     R1,#0
 1690BEQ     show_ph_delay
 1700MOV     R1,R0
 1710MOV     R0,#10
 1720SWI     "OS_ReadUnsigned"
 1730LDMVSFD (sp)!,{PC}
 1740MOV     R0,R2,ASL #2
 1750STR     R0,[pw,#delay]
 1760STR     R0,[pw,#time]
 1770LDMFD   (sp)!,{PC}^
 1780
 1790.byte_intercept
 1800TEQ     R0,#106
 1810MOVNES  PC,link
 1820STMFD   (sp)!,{link}
 1830LDR     link,[pw,#state]
 1840STR     R1,[pw,#state]
 1850STMFD   (sp)!,{link}
 1860LDR     link,[pw,#hide]
 1870TEQ     link,#0
 1880MOVNE   R1,#0
 1890STMFD   (sp)!,{PC}
 1900LDR     PC,[sp,#8]
 1910EQUD    0                  ; four bytes here so passed vector returns to
 1920LDMFD   (sp)!,{R1,link,PC} ; here, where our R1 is returned
 1930
 1940.has_moved
 1950STR     R0,[pw,#pos2]
 1960LDR     R0,[pw,#delay]
 1970STR     R0,[pw,#time]
 1980LDR     link,[pw,#hide]   ; if hidden, reveal
 1990TEQ     link,#0
 2000BNE     reveal_pointer2   ; else reveal
 2010
 2020LDMFD   (sp)!,{R0-R1,PC}^
 2030
 2040.timer_event
 2050STMFD   (sp)!,{R0-R1,link}
 2060
 2070MOV     R0,#timer_delay
 2080ADR     R1,timer_event
 2090MOV     R2,pw
 2100SWI     "XOS_CallAfter"
 2110
 2120MOV     R0,#21
 2130ADD     R1,pw,#new_pos1
 2140SWI     "XOS_Word"
 2150
 2160LDR     R0,[pw,#new_pos2]
 2170LDR     R1,[pw,#pos2]
 2180TEQ     R0,R1
 2190BNE     has_moved
 2200
 2210MOV     R0,#121           ; test mouse keys
 2220MOV     R1,#9 EOR &80     ; select
 2230SWI     "XOS_Byte"
 2240TEQ     R1,#0
 2250BNE     has_moved
 2260MOV     R1,#10 EOR &80    ; menu
 2270SWI     "XOS_Byte"
 2280TEQ     R1,#0
 2290BNE     has_moved
 2300MOV     R1,#11 EOR &80    ; adjust
 2310SWI     "XOS_Byte"
 2320TEQ     R1,#0
 2330BNE     has_moved
 2340
 2350LDR     link,[pw,#hide]   ; if hidden, exit
 2360TEQ     link,#0
 2370LDMNEFD (sp)!,{R0-R1,PC}^
 2380
 2390LDR     link,[pw,#time]   ; if time is 0, exit
 2400TEQ     link,#0
 2410LDMEQFD (sp)!,{R0-R1,PC}^
 2420
 2430SUBS    link,link,#1      ; decrement time
 2440STR     link,[pw,#time]
 2450
 2460LDMNEFD (sp)!,{R0-R1,PC}^ ; time not exceeded
 2470
 2480B       hide_pointer2
 2490
 2500
 2510.hide_pointer
 2520STMFD   (sp)!,{R0,R1,link}
 2530.hide_pointer2
 2540STR     pw,[pw,#hide]   ; set hidden flag to non-zero
 2550LDR     link,[pw,#delay]
 2560STR     link,[pw,#time]
 2570LDR     R1,[pw,#state]
 2580MOV     R0,#106
 2590SWI     "XOS_Byte"
 2600LDMFD   (sp)!,{R0,R1,PC}^
 2610
 2620.reveal_pointer
 2630STMFD   (sp)!,{R0,R1,link}
 2640.reveal_pointer2
 2650MOV     link,#0
 2660STR     link,[pw,#hide] ; set hidden flag to zero
 2670LDR     R1,[pw,#state]
 2680MOV     R0,#106
 2690SWI     "XOS_Byte"
 2700LDR     R0,[pw,#delay]
 2710STR     R0,[pw,#time]
 2720LDMFD   (sp)!,{R0,R1,PC}^
 2730]
 2740NEXT
 2750
 2760PROCmodule_save("PHmod",code%,O%)
 2770
 2780END
 2790
 2800DEF FNmodule_header
 2810[OPT pass
 2820EQUD 0
 2830EQUD init
 2840EQUD finalise
 2850EQUD service
 2860EQUD title
 2870EQUD help
 2880EQUD commands
 2890EQUD 0
 2900.title
 2910EQUS "PointerHide"
 2920EQUB 0
 2930.help
 2940EQUS "Pointer Hider"
 2950EQUB 9
 2960EQUS "0.00 (06 Oct 1993)"
 2970EQUB 0
 2980.comhelp
 2990EQUS "*PointerHide sets the delay in seconds after which the mouse pointer "
 3000EQUS "will be temporarily hidden from view. If no parameter is given, the "
 3010EQUS "current setting is displayed. If a delay of 0 is specified, the pointer "
 3020EQUS "will never be hidden."
 3030EQUB 13
 3040.syntax
 3050EQUS "Syntax: *PointerHide [<delay>]"
 3060EQUB 0
 3070
 3080ALIGN
 3090.commands
 3100FNcommand("PointerHide","pointerhide",&00010000,syntax,comhelp)
 3110EQUB 0
 3120ALIGN
 3130]
 3140=""
 3150
 3160DEF FNerror(a$)
 3170[OPT pass
 3180EQUD 0
 3190EQUS a$
 3200EQUB 0
 3210]
 3220=""
 3230
 3240DEF FNcommand(a$,com$,flags,syntax,help)
 3250LOCAL addr
 3260IF pass=6 addr=EVAL(com$)
 3270[OPTpass
 3280EQUS a$
 3290EQUB 0
 3300ALIGN
 3310EQUD addr
 3320EQUD flags
 3330EQUD syntax
 3340EQUD help
 3350]
 3360=""
 3370
 3380DEF PROCmodule_save(f$,s%,e%)
 3390SYS "OS_Module",11,s%,e%-s%
 3400SYS "OS_File",10,f$,&FFA,,s%,e%
 3410ENDPROC

�     >PHmdSource
� by  Tony Patterson
� (c) AU April 1994
(
2&� � � � � : � �, �$+" at line "+Þ
<
F� code% &1000
P
ZByteV=6
d
nmodule_claim=6
xmodule_free =7
�
�Etimer_delay=20 : � less than 1/4 second to allow for poor latency
�v_flag=1<<28
�
�	pw=12
�	sp=13
�link=14
�
�P%=0:O%=code%
�
�
[OPT 6
�.hide       EQUD 0
�.delay      EQUD 0
.time       EQUD 0
.state      EQUD 0
.dummy      EQUB 0
".dummy      EQUB 0
,.dummy      EQUB 0
6.pos1       EQUB 0
@.pos2       EQUD 0
J.scratch    EQUD 0
T            EQUD 0
^.dummy      EQUB 0
h.dummy      EQUB 0
r.dummy      EQUB 0
|.new_pos1   EQUB 0
�.new_pos2   EQUD 0
�]
�wkspc_size=P%
�
�� pass=4 � 6 � 2
�
�P%=0:O%=code%
�
�
[OPT pass
��module_header
�9.error_nem �error("Not enough memory in module area")
�	ALIGN
�
	.init
STMFD   (sp)!,{link}

&; Claim workspace
0
:MOV     R0,#module_claim
DMOV     R3,#wkspc_size
NSWI     "XOS_Module"
XADRVS   R0,error_nem
bLDMVSFD (sp)!,{PC}
lSTR     R2,[pw]
vMOV     pw,R2
�
�; initialise vars
�
�MOV     R1,#6
�STRB    R1,[pw,#pos1]
�STRB    R1,[pw,#new_pos1]
�
�MOV     R1,#0
�STR     R1,[pw,#hide]
�STR     R1,[pw,#delay]
�STR     R1,[pw,#time]
�
�MOV     R1,#0
MOV     R0,#106
SWI     "XOS_Byte"
STR     R1,[pw,#state]
 MOV     R0,#106
*SWI     "XOS_Byte"
4
>-; Claim UpCall vector (R2 is already set)
H
RMOV     R2,pw
\ADR     R1,byte_intercept
fMOV     R0,#ByteV
pSWI     "XOS_Claim"
z
�MOV     R0,#timer_delay
�ADR     R1,timer_event
�MOV     R2,pw
�SWI     "XOS_CallAfter"
�
�LDMFD   (sp)!,{PC}^
�
�
.finalise
�LDR     pw,[pw]
�STMFD   (sp)!,{link}
�BL      reveal_pointer
�MOV     R2,pw
�ADR     R1,byte_intercept
MOV     R0,#ByteV
SWI     "XOS_Release"

$ADR     R0,timer_event
.MOV     R1,pw
8#SWI     "XOS_RemoveTickerEvent"
B
L; Free workspace
V
`MOV     R0,#module_free
jSWI     "XOS_Module"
tLDMFD   (sp)!,{PC}^
~
�.service
�0TEQ     R0,#&4D            ; Pre-Mode change
�KMOVNES  PC,link            ; Used to reset pointer before a mode change
�NSTMFD   (sp)!,{R0-R1,link} ; as FX106 is not explicitly called, so pointer
�IMOV     R0,#106            ; will reappear if we don't switch it off.
�MOV     R1,#0
�SWI     "XOS_Byte"
�STR     link,[pw,#state]
�LDMFD   (sp)!,{R0-R1,PC}^
�
�.show_ph_delay
�LDR     R0,[pw,#delay]
TEQ     R0,#0

BEQ     no_ph_delay
SWI     "XOS_WriteS"
/EQUS    "The pointer will disappear after "
(
EQUB 0
2	ALIGN
<LDR     R0,[pw,#delay]
FMOV     R0,R0,LSR #2
PMOV     R3,R0
ZADD     R1,pw,#scratch
d MOV     R2,#new_pos1-scratch
n"SWI     "XOS_ConvertCardinal4"
xLDMVSFD (sp)!,{PC}
�SWI     "XOS_Write0"
�SWI     "XOS_WriteS"
�EQUS    " second"
�
EQUB    0
�	ALIGN
�TEQ     R3,#1
�SWINE   &100+�"s"
�SWI     "XOS_WriteS"
�EQUS    " of inactivity"
�EQUB    10
�EQUB    13
�
EQUB    0
�	ALIGN
LDMFD   (sp)!,{PC}^

.no_ph_delay
"SWI     "OS_WriteS"
,7EQUS    "The pointer hide feature is currently off"
6EQUB 10
@EQUB 13
J
EQUB 0
T	ALIGN
^LDMFD   (sp)!,{PC}^
h
r.pointerhide
|LDR     pw,[pw]
�STMFD   (sp)!,{link}
�TEQ     R1,#0
�BEQ     show_ph_delay
�MOV     R1,R0
�MOV     R0,#10
�SWI     "OS_ReadUnsigned"
�LDMVSFD (sp)!,{PC}
�MOV     R0,R2,ASL #2
�STR     R0,[pw,#delay]
�STR     R0,[pw,#time]
�LDMFD   (sp)!,{PC}^
�
�.byte_intercept
TEQ     R0,#106
MOVNES  PC,link
STMFD   (sp)!,{link}
&LDR     link,[pw,#state]
0STR     R1,[pw,#state]
:STMFD   (sp)!,{link}
DLDR     link,[pw,#hide]
NTEQ     link,#0
XMOVNE   R1,#0
bSTMFD   (sp)!,{PC}
lLDR     PC,[sp,#8]
vLEQUD    0                  ; four bytes here so passed vector returns to
�?LDMFD   (sp)!,{R1,link,PC} ; here, where our R1 is returned
�
�.has_moved
�STR     R0,[pw,#pos2]
�LDR     R0,[pw,#delay]
�STR     R0,[pw,#time]
�1LDR     link,[pw,#hide]   ; if hidden, reveal
�TEQ     link,#0
�+BNE     reveal_pointer2   ; else reveal
�
�LDMFD   (sp)!,{R0-R1,PC}^
�
�.timer_event
STMFD   (sp)!,{R0-R1,link}

MOV     R0,#timer_delay
 ADR     R1,timer_event
*MOV     R2,pw
4SWI     "XOS_CallAfter"
>
HMOV     R0,#21
RADD     R1,pw,#new_pos1
\SWI     "XOS_Word"
f
pLDR     R0,[pw,#new_pos2]
zLDR     R1,[pw,#pos2]
�TEQ     R0,R1
�BNE     has_moved
�
�/MOV     R0,#121           ; test mouse keys
�$MOV     R1,#9 � &80     ; select
�SWI     "XOS_Byte"
�TEQ     R1,#0
�BNE     has_moved
�"MOV     R1,#10 � &80    ; menu
�SWI     "XOS_Byte"
�TEQ     R1,#0
�BNE     has_moved
�$MOV     R1,#11 � &80    ; adjust
	SWI     "XOS_Byte"
	TEQ     R1,#0
	BNE     has_moved
	$
	./LDR     link,[pw,#hide]   ; if hidden, exit
	8TEQ     link,#0
	BLDMNEFD (sp)!,{R0-R1,PC}^
	L
	V2LDR     link,[pw,#time]   ; if time is 0, exit
	`TEQ     link,#0
	jLDMEQFD (sp)!,{R0-R1,PC}^
	t
	~.SUBS    link,link,#1      ; decrement time
	�STR     link,[pw,#time]
	�
	�1LDMNEFD (sp)!,{R0-R1,PC}^ ; time not exceeded
	�
	�B       hide_pointer2
	�
	�
	�.hide_pointer
	�STMFD   (sp)!,{R0,R1,link}
	�.hide_pointer2
	�9STR     pw,[pw,#hide]   ; set hidden flag to non-zero
	�LDR     link,[pw,#delay]
STR     link,[pw,#time]

LDR     R1,[pw,#state]
MOV     R0,#106
SWI     "XOS_Byte"
(LDMFD   (sp)!,{R0,R1,PC}^
2
<.reveal_pointer
FSTMFD   (sp)!,{R0,R1,link}
P.reveal_pointer2
ZMOV     link,#0
d5STR     link,[pw,#hide] ; set hidden flag to zero
nLDR     R1,[pw,#state]
xMOV     R0,#106
�SWI     "XOS_Byte"
�LDR     R0,[pw,#delay]
�STR     R0,[pw,#time]
�LDMFD   (sp)!,{R0,R1,PC}^
�]
��
�
�"�module_save("PHmod",code%,O%)
�
��
�
�� �module_header
�
[OPT pass

EQUD 0

EQUD init
EQUD finalise
"EQUD service
,EQUD title
6
EQUD help
@EQUD commands
J
EQUD 0
T
.title
^EQUS "PointerHide"
h
EQUB 0
r	.help
|EQUS "Pointer Hider"
�
EQUB 9
�EQUS "0.00 (06 Oct 1993)"
�
EQUB 0
�.comhelp
�PEQUS "*PointerHide sets the delay in seconds after which the mouse pointer "
�OEQUS "will be temporarily hidden from view. If no parameter is given, the "
�SEQUS "current setting is displayed. If a delay of 0 is specified, the pointer "
� EQUS "will never be hidden."
�EQUB 13
�.syntax
�)EQUS "Syntax: *PointerHide [<delay>]"
�
EQUB 0
�
	ALIGN

.commands
B�command("PointerHide","pointerhide",&00010000,syntax,comhelp)
&
EQUB 0
0	ALIGN
:]
D=""
N
X� �error(a$)
b
[OPT pass
l
EQUD 0
vEQUS a$
�
EQUB 0
�]
�=""
�
�)� �command(a$,com$,flags,syntax,help)
�
� addr
�� pass=6 addr=�(com$)
�[OPTpass
�EQUS a$
�
EQUB 0
�	ALIGN
�
EQUD addr
�EQUD flags

EQUD syntax


EQUD help

]

 =""

*

4� �module_save(f$,s%,e%)

>ș "OS_Module",11,s%,e%-s%

H"ș "OS_File",10,f$,&FFA,,s%,e%

R�
�
00000000  0d 00 0a 15 f4 20 20 20  20 20 3e 50 48 6d 64 53  |.....     >PHmdS|
00000010  6f 75 72 63 65 0d 00 14  18 f4 20 62 79 20 20 54  |ource..... by  T|
00000020  6f 6e 79 20 50 61 74 74  65 72 73 6f 6e 0d 00 1e  |ony Patterson...|
00000030  17 f4 20 28 63 29 20 41  55 20 41 70 72 69 6c 20  |.. (c) AU April |
00000040  31 39 39 34 0d 00 28 04  0d 00 32 26 ee 20 85 20  |1994..(...2&. . |
00000050  ee 20 85 20 87 20 3a 20  85 20 9f 2c 20 f6 24 2b  |. . . : . ., .$+|
00000060  22 20 61 74 20 6c 69 6e  65 20 22 2b c3 9e 0d 00  |" at line "+....|
00000070  3c 04 0d 00 46 11 de 20  63 6f 64 65 25 20 26 31  |<...F.. code% &1|
00000080  30 30 30 0d 00 50 04 0d  00 5a 0b 42 79 74 65 56  |000..P...Z.ByteV|
00000090  3d 36 0d 00 64 04 0d 00  6e 12 6d 6f 64 75 6c 65  |=6..d...n.module|
000000a0  5f 63 6c 61 69 6d 3d 36  0d 00 78 12 6d 6f 64 75  |_claim=6..x.modu|
000000b0  6c 65 5f 66 72 65 65 20  3d 37 0d 00 82 04 0d 00  |le_free =7......|
000000c0  8c 45 74 69 6d 65 72 5f  64 65 6c 61 79 3d 32 30  |.Etimer_delay=20|
000000d0  20 3a 20 f4 20 6c 65 73  73 20 74 68 61 6e 20 31  | : . less than 1|
000000e0  2f 34 20 73 65 63 6f 6e  64 20 74 6f 20 61 6c 6c  |/4 second to all|
000000f0  6f 77 20 66 6f 72 20 70  6f 6f 72 20 6c 61 74 65  |ow for poor late|
00000100  6e 63 79 0d 00 96 10 76  5f 66 6c 61 67 3d 31 3c  |ncy....v_flag=1<|
00000110  3c 32 38 0d 00 a0 04 0d  00 aa 09 70 77 3d 31 32  |<28........pw=12|
00000120  0d 00 b4 09 73 70 3d 31  33 0d 00 be 0b 6c 69 6e  |....sp=13....lin|
00000130  6b 3d 31 34 0d 00 c8 04  0d 00 d2 11 50 25 3d 30  |k=14........P%=0|
00000140  3a 4f 25 3d 63 6f 64 65  25 0d 00 dc 04 0d 00 e6  |:O%=code%.......|
00000150  0a 5b 4f 50 54 20 36 0d  00 f0 16 2e 68 69 64 65  |.[OPT 6.....hide|
00000160  20 20 20 20 20 20 20 45  51 55 44 20 30 0d 00 fa  |       EQUD 0...|
00000170  16 2e 64 65 6c 61 79 20  20 20 20 20 20 45 51 55  |..delay      EQU|
00000180  44 20 30 0d 01 04 16 2e  74 69 6d 65 20 20 20 20  |D 0.....time    |
00000190  20 20 20 45 51 55 44 20  30 0d 01 0e 16 2e 73 74  |   EQUD 0.....st|
000001a0  61 74 65 20 20 20 20 20  20 45 51 55 44 20 30 0d  |ate      EQUD 0.|
000001b0  01 18 16 2e 64 75 6d 6d  79 20 20 20 20 20 20 45  |....dummy      E|
000001c0  51 55 42 20 30 0d 01 22  16 2e 64 75 6d 6d 79 20  |QUB 0.."..dummy |
000001d0  20 20 20 20 20 45 51 55  42 20 30 0d 01 2c 16 2e  |     EQUB 0..,..|
000001e0  64 75 6d 6d 79 20 20 20  20 20 20 45 51 55 42 20  |dummy      EQUB |
000001f0  30 0d 01 36 16 2e 70 6f  73 31 20 20 20 20 20 20  |0..6..pos1      |
00000200  20 45 51 55 42 20 30 0d  01 40 16 2e 70 6f 73 32  | EQUB 0..@..pos2|
00000210  20 20 20 20 20 20 20 45  51 55 44 20 30 0d 01 4a  |       EQUD 0..J|
00000220  16 2e 73 63 72 61 74 63  68 20 20 20 20 45 51 55  |..scratch    EQU|
00000230  44 20 30 0d 01 54 16 20  20 20 20 20 20 20 20 20  |D 0..T.         |
00000240  20 20 20 45 51 55 44 20  30 0d 01 5e 16 2e 64 75  |   EQUD 0..^..du|
00000250  6d 6d 79 20 20 20 20 20  20 45 51 55 42 20 30 0d  |mmy      EQUB 0.|
00000260  01 68 16 2e 64 75 6d 6d  79 20 20 20 20 20 20 45  |.h..dummy      E|
00000270  51 55 42 20 30 0d 01 72  16 2e 64 75 6d 6d 79 20  |QUB 0..r..dummy |
00000280  20 20 20 20 20 45 51 55  42 20 30 0d 01 7c 16 2e  |     EQUB 0..|..|
00000290  6e 65 77 5f 70 6f 73 31  20 20 20 45 51 55 42 20  |new_pos1   EQUB |
000002a0  30 0d 01 86 16 2e 6e 65  77 5f 70 6f 73 32 20 20  |0.....new_pos2  |
000002b0  20 45 51 55 44 20 30 0d  01 90 05 5d 0d 01 9a 11  | EQUD 0....]....|
000002c0  77 6b 73 70 63 5f 73 69  7a 65 3d 50 25 0d 01 a4  |wkspc_size=P%...|
000002d0  04 0d 01 ae 14 e3 20 70  61 73 73 3d 34 20 b8 20  |...... pass=4 . |
000002e0  36 20 88 20 32 0d 01 b8  04 0d 01 c2 11 50 25 3d  |6 . 2........P%=|
000002f0  30 3a 4f 25 3d 63 6f 64  65 25 0d 01 cc 04 0d 01  |0:O%=code%......|
00000300  d6 0d 5b 4f 50 54 20 70  61 73 73 0d 01 e0 12 a4  |..[OPT pass.....|
00000310  6d 6f 64 75 6c 65 5f 68  65 61 64 65 72 0d 01 ea  |module_header...|
00000320  39 2e 65 72 72 6f 72 5f  6e 65 6d 20 a4 65 72 72  |9.error_nem .err|
00000330  6f 72 28 22 4e 6f 74 20  65 6e 6f 75 67 68 20 6d  |or("Not enough m|
00000340  65 6d 6f 72 79 20 69 6e  20 6d 6f 64 75 6c 65 20  |emory in module |
00000350  61 72 65 61 22 29 0d 01  f4 09 41 4c 49 47 4e 0d  |area")....ALIGN.|
00000360  01 fe 04 0d 02 08 09 2e  69 6e 69 74 0d 02 12 18  |........init....|
00000370  53 54 4d 46 44 20 20 20  28 73 70 29 21 2c 7b 6c  |STMFD   (sp)!,{l|
00000380  69 6e 6b 7d 0d 02 1c 04  0d 02 26 15 3b 20 43 6c  |ink}......&.; Cl|
00000390  61 69 6d 20 77 6f 72 6b  73 70 61 63 65 0d 02 30  |aim workspace..0|
000003a0  04 0d 02 3a 1c 4d 4f 56  20 20 20 20 20 52 30 2c  |...:.MOV     R0,|
000003b0  23 6d 6f 64 75 6c 65 5f  63 6c 61 69 6d 0d 02 44  |#module_claim..D|
000003c0  1a 4d 4f 56 20 20 20 20  20 52 33 2c 23 77 6b 73  |.MOV     R3,#wks|
000003d0  70 63 5f 73 69 7a 65 0d  02 4e 18 53 57 49 20 20  |pc_size..N.SWI  |
000003e0  20 20 20 22 58 4f 53 5f  4d 6f 64 75 6c 65 22 0d  |   "XOS_Module".|
000003f0  02 58 18 41 44 52 56 53  20 20 20 52 30 2c 65 72  |.X.ADRVS   R0,er|
00000400  72 6f 72 5f 6e 65 6d 0d  02 62 16 4c 44 4d 56 53  |ror_nem..b.LDMVS|
00000410  46 44 20 28 73 70 29 21  2c 7b 50 43 7d 0d 02 6c  |FD (sp)!,{PC}..l|
00000420  13 53 54 52 20 20 20 20  20 52 32 2c 5b 70 77 5d  |.STR     R2,[pw]|
00000430  0d 02 76 11 4d 4f 56 20  20 20 20 20 70 77 2c 52  |..v.MOV     pw,R|
00000440  32 0d 02 80 04 0d 02 8a  15 3b 20 69 6e 69 74 69  |2........; initi|
00000450  61 6c 69 73 65 20 76 61  72 73 0d 02 94 04 0d 02  |alise vars......|
00000460  9e 11 4d 4f 56 20 20 20  20 20 52 31 2c 23 36 0d  |..MOV     R1,#6.|
00000470  02 a8 19 53 54 52 42 20  20 20 20 52 31 2c 5b 70  |...STRB    R1,[p|
00000480  77 2c 23 70 6f 73 31 5d  0d 02 b2 1d 53 54 52 42  |w,#pos1]....STRB|
00000490  20 20 20 20 52 31 2c 5b  70 77 2c 23 6e 65 77 5f  |    R1,[pw,#new_|
000004a0  70 6f 73 31 5d 0d 02 bc  04 0d 02 c6 11 4d 4f 56  |pos1]........MOV|
000004b0  20 20 20 20 20 52 31 2c  23 30 0d 02 d0 19 53 54  |     R1,#0....ST|
000004c0  52 20 20 20 20 20 52 31  2c 5b 70 77 2c 23 68 69  |R     R1,[pw,#hi|
000004d0  64 65 5d 0d 02 da 1a 53  54 52 20 20 20 20 20 52  |de]....STR     R|
000004e0  31 2c 5b 70 77 2c 23 64  65 6c 61 79 5d 0d 02 e4  |1,[pw,#delay]...|
000004f0  19 53 54 52 20 20 20 20  20 52 31 2c 5b 70 77 2c  |.STR     R1,[pw,|
00000500  23 74 69 6d 65 5d 0d 02  ee 04 0d 02 f8 11 4d 4f  |#time]........MO|
00000510  56 20 20 20 20 20 52 31  2c 23 30 0d 03 02 13 4d  |V     R1,#0....M|
00000520  4f 56 20 20 20 20 20 52  30 2c 23 31 30 36 0d 03  |OV     R0,#106..|
00000530  0c 16 53 57 49 20 20 20  20 20 22 58 4f 53 5f 42  |..SWI     "XOS_B|
00000540  79 74 65 22 0d 03 16 1a  53 54 52 20 20 20 20 20  |yte"....STR     |
00000550  52 31 2c 5b 70 77 2c 23  73 74 61 74 65 5d 0d 03  |R1,[pw,#state]..|
00000560  20 13 4d 4f 56 20 20 20  20 20 52 30 2c 23 31 30  | .MOV     R0,#10|
00000570  36 0d 03 2a 16 53 57 49  20 20 20 20 20 22 58 4f  |6..*.SWI     "XO|
00000580  53 5f 42 79 74 65 22 0d  03 34 04 0d 03 3e 2d 3b  |S_Byte"..4...>-;|
00000590  20 43 6c 61 69 6d 20 55  70 43 61 6c 6c 20 76 65  | Claim UpCall ve|
000005a0  63 74 6f 72 20 28 52 32  20 69 73 20 61 6c 72 65  |ctor (R2 is alre|
000005b0  61 64 79 20 73 65 74 29  0d 03 48 04 0d 03 52 11  |ady set)..H...R.|
000005c0  4d 4f 56 20 20 20 20 20  52 32 2c 70 77 0d 03 5c  |MOV     R2,pw..\|
000005d0  1d 41 44 52 20 20 20 20  20 52 31 2c 62 79 74 65  |.ADR     R1,byte|
000005e0  5f 69 6e 74 65 72 63 65  70 74 0d 03 66 15 4d 4f  |_intercept..f.MO|
000005f0  56 20 20 20 20 20 52 30  2c 23 42 79 74 65 56 0d  |V     R0,#ByteV.|
00000600  03 70 17 53 57 49 20 20  20 20 20 22 58 4f 53 5f  |.p.SWI     "XOS_|
00000610  43 6c 61 69 6d 22 0d 03  7a 04 0d 03 84 1b 4d 4f  |Claim"..z.....MO|
00000620  56 20 20 20 20 20 52 30  2c 23 74 69 6d 65 72 5f  |V     R0,#timer_|
00000630  64 65 6c 61 79 0d 03 8e  1a 41 44 52 20 20 20 20  |delay....ADR    |
00000640  20 52 31 2c 74 69 6d 65  72 5f 65 76 65 6e 74 0d  | R1,timer_event.|
00000650  03 98 11 4d 4f 56 20 20  20 20 20 52 32 2c 70 77  |...MOV     R2,pw|
00000660  0d 03 a2 1b 53 57 49 20  20 20 20 20 22 58 4f 53  |....SWI     "XOS|
00000670  5f 43 61 6c 6c 41 66 74  65 72 22 0d 03 ac 04 0d  |_CallAfter".....|
00000680  03 b6 17 4c 44 4d 46 44  20 20 20 28 73 70 29 21  |...LDMFD   (sp)!|
00000690  2c 7b 50 43 7d 5e 0d 03  c0 04 0d 03 ca 0d 2e 66  |,{PC}^.........f|
000006a0  69 6e 61 6c 69 73 65 0d  03 d4 13 4c 44 52 20 20  |inalise....LDR  |
000006b0  20 20 20 70 77 2c 5b 70  77 5d 0d 03 de 18 53 54  |   pw,[pw]....ST|
000006c0  4d 46 44 20 20 20 28 73  70 29 21 2c 7b 6c 69 6e  |MFD   (sp)!,{lin|
000006d0  6b 7d 0d 03 e8 1a 42 4c  20 20 20 20 20 20 72 65  |k}....BL      re|
000006e0  76 65 61 6c 5f 70 6f 69  6e 74 65 72 0d 03 f2 11  |veal_pointer....|
000006f0  4d 4f 56 20 20 20 20 20  52 32 2c 70 77 0d 03 fc  |MOV     R2,pw...|
00000700  1d 41 44 52 20 20 20 20  20 52 31 2c 62 79 74 65  |.ADR     R1,byte|
00000710  5f 69 6e 74 65 72 63 65  70 74 0d 04 06 15 4d 4f  |_intercept....MO|
00000720  56 20 20 20 20 20 52 30  2c 23 42 79 74 65 56 0d  |V     R0,#ByteV.|
00000730  04 10 19 53 57 49 20 20  20 20 20 22 58 4f 53 5f  |...SWI     "XOS_|
00000740  52 65 6c 65 61 73 65 22  0d 04 1a 04 0d 04 24 1a  |Release"......$.|
00000750  41 44 52 20 20 20 20 20  52 30 2c 74 69 6d 65 72  |ADR     R0,timer|
00000760  5f 65 76 65 6e 74 0d 04  2e 11 4d 4f 56 20 20 20  |_event....MOV   |
00000770  20 20 52 31 2c 70 77 0d  04 38 23 53 57 49 20 20  |  R1,pw..8#SWI  |
00000780  20 20 20 22 58 4f 53 5f  52 65 6d 6f 76 65 54 69  |   "XOS_RemoveTi|
00000790  63 6b 65 72 45 76 65 6e  74 22 0d 04 42 04 0d 04  |ckerEvent"..B...|
000007a0  4c 14 3b 20 46 72 65 65  20 77 6f 72 6b 73 70 61  |L.; Free workspa|
000007b0  63 65 0d 04 56 04 0d 04  60 1b 4d 4f 56 20 20 20  |ce..V...`.MOV   |
000007c0  20 20 52 30 2c 23 6d 6f  64 75 6c 65 5f 66 72 65  |  R0,#module_fre|
000007d0  65 0d 04 6a 18 53 57 49  20 20 20 20 20 22 58 4f  |e..j.SWI     "XO|
000007e0  53 5f 4d 6f 64 75 6c 65  22 0d 04 74 17 4c 44 4d  |S_Module"..t.LDM|
000007f0  46 44 20 20 20 28 73 70  29 21 2c 7b 50 43 7d 5e  |FD   (sp)!,{PC}^|
00000800  0d 04 7e 04 0d 04 88 0c  2e 73 65 72 76 69 63 65  |..~......service|
00000810  0d 04 92 30 54 45 51 20  20 20 20 20 52 30 2c 23  |...0TEQ     R0,#|
00000820  26 34 44 20 20 20 20 20  20 20 20 20 20 20 20 3b  |&4D            ;|
00000830  20 50 72 65 2d 4d 6f 64  65 20 63 68 61 6e 67 65  | Pre-Mode change|
00000840  0d 04 9c 4b 4d 4f 56 4e  45 53 20 20 50 43 2c 6c  |...KMOVNES  PC,l|
00000850  69 6e 6b 20 20 20 20 20  20 20 20 20 20 20 20 3b  |ink            ;|
00000860  20 55 73 65 64 20 74 6f  20 72 65 73 65 74 20 70  | Used to reset p|
00000870  6f 69 6e 74 65 72 20 62  65 66 6f 72 65 20 61 20  |ointer before a |
00000880  6d 6f 64 65 20 63 68 61  6e 67 65 0d 04 a6 4e 53  |mode change...NS|
00000890  54 4d 46 44 20 20 20 28  73 70 29 21 2c 7b 52 30  |TMFD   (sp)!,{R0|
000008a0  2d 52 31 2c 6c 69 6e 6b  7d 20 3b 20 61 73 20 46  |-R1,link} ; as F|
000008b0  58 31 30 36 20 69 73 20  6e 6f 74 20 65 78 70 6c  |X106 is not expl|
000008c0  69 63 69 74 6c 79 20 63  61 6c 6c 65 64 2c 20 73  |icitly called, s|
000008d0  6f 20 70 6f 69 6e 74 65  72 0d 04 b0 49 4d 4f 56  |o pointer...IMOV|
000008e0  20 20 20 20 20 52 30 2c  23 31 30 36 20 20 20 20  |     R0,#106    |
000008f0  20 20 20 20 20 20 20 20  3b 20 77 69 6c 6c 20 72  |        ; will r|
00000900  65 61 70 70 65 61 72 20  69 66 20 77 65 20 64 6f  |eappear if we do|
00000910  6e 27 74 20 73 77 69 74  63 68 20 69 74 20 6f 66  |n't switch it of|
00000920  66 2e 0d 04 ba 11 4d 4f  56 20 20 20 20 20 52 31  |f.....MOV     R1|
00000930  2c 23 30 0d 04 c4 16 53  57 49 20 20 20 20 20 22  |,#0....SWI     "|
00000940  58 4f 53 5f 42 79 74 65  22 0d 04 ce 1c 53 54 52  |XOS_Byte"....STR|
00000950  20 20 20 20 20 6c 69 6e  6b 2c 5b 70 77 2c 23 73  |     link,[pw,#s|
00000960  74 61 74 65 5d 0d 04 d8  1d 4c 44 4d 46 44 20 20  |tate]....LDMFD  |
00000970  20 28 73 70 29 21 2c 7b  52 30 2d 52 31 2c 50 43  | (sp)!,{R0-R1,PC|
00000980  7d 5e 0d 04 e2 04 0d 04  ec 12 2e 73 68 6f 77 5f  |}^.........show_|
00000990  70 68 5f 64 65 6c 61 79  0d 04 f6 1a 4c 44 52 20  |ph_delay....LDR |
000009a0  20 20 20 20 52 30 2c 5b  70 77 2c 23 64 65 6c 61  |    R0,[pw,#dela|
000009b0  79 5d 0d 05 00 11 54 45  51 20 20 20 20 20 52 30  |y]....TEQ     R0|
000009c0  2c 23 30 0d 05 0a 17 42  45 51 20 20 20 20 20 6e  |,#0....BEQ     n|
000009d0  6f 5f 70 68 5f 64 65 6c  61 79 0d 05 14 18 53 57  |o_ph_delay....SW|
000009e0  49 20 20 20 20 20 22 58  4f 53 5f 57 72 69 74 65  |I     "XOS_Write|
000009f0  53 22 0d 05 1e 2f 45 51  55 53 20 20 20 20 22 54  |S".../EQUS    "T|
00000a00  68 65 20 70 6f 69 6e 74  65 72 20 77 69 6c 6c 20  |he pointer will |
00000a10  64 69 73 61 70 70 65 61  72 20 61 66 74 65 72 20  |disappear after |
00000a20  22 0d 05 28 0a 45 51 55  42 20 30 0d 05 32 09 41  |"..(.EQUB 0..2.A|
00000a30  4c 49 47 4e 0d 05 3c 1a  4c 44 52 20 20 20 20 20  |LIGN..<.LDR     |
00000a40  52 30 2c 5b 70 77 2c 23  64 65 6c 61 79 5d 0d 05  |R0,[pw,#delay]..|
00000a50  46 18 4d 4f 56 20 20 20  20 20 52 30 2c 52 30 2c  |F.MOV     R0,R0,|
00000a60  4c 53 52 20 23 32 0d 05  50 11 4d 4f 56 20 20 20  |LSR #2..P.MOV   |
00000a70  20 20 52 33 2c 52 30 0d  05 5a 1a 41 44 44 20 20  |  R3,R0..Z.ADD  |
00000a80  20 20 20 52 31 2c 70 77  2c 23 73 63 72 61 74 63  |   R1,pw,#scratc|
00000a90  68 0d 05 64 20 4d 4f 56  20 20 20 20 20 52 32 2c  |h..d MOV     R2,|
00000aa0  23 6e 65 77 5f 70 6f 73  31 2d 73 63 72 61 74 63  |#new_pos1-scratc|
00000ab0  68 0d 05 6e 22 53 57 49  20 20 20 20 20 22 58 4f  |h..n"SWI     "XO|
00000ac0  53 5f 43 6f 6e 76 65 72  74 43 61 72 64 69 6e 61  |S_ConvertCardina|
00000ad0  6c 34 22 0d 05 78 16 4c  44 4d 56 53 46 44 20 28  |l4"..x.LDMVSFD (|
00000ae0  73 70 29 21 2c 7b 50 43  7d 0d 05 82 18 53 57 49  |sp)!,{PC}....SWI|
00000af0  20 20 20 20 20 22 58 4f  53 5f 57 72 69 74 65 30  |     "XOS_Write0|
00000b00  22 0d 05 8c 18 53 57 49  20 20 20 20 20 22 58 4f  |"....SWI     "XO|
00000b10  53 5f 57 72 69 74 65 53  22 0d 05 96 15 45 51 55  |S_WriteS"....EQU|
00000b20  53 20 20 20 20 22 20 73  65 63 6f 6e 64 22 0d 05  |S    " second"..|
00000b30  a0 0d 45 51 55 42 20 20  20 20 30 0d 05 aa 09 41  |..EQUB    0....A|
00000b40  4c 49 47 4e 0d 05 b4 11  54 45 51 20 20 20 20 20  |LIGN....TEQ     |
00000b50  52 33 2c 23 31 0d 05 be  15 53 57 49 4e 45 20 20  |R3,#1....SWINE  |
00000b60  20 26 31 30 30 2b 97 22  73 22 0d 05 c8 18 53 57  | &100+."s"....SW|
00000b70  49 20 20 20 20 20 22 58  4f 53 5f 57 72 69 74 65  |I     "XOS_Write|
00000b80  53 22 0d 05 d2 1c 45 51  55 53 20 20 20 20 22 20  |S"....EQUS    " |
00000b90  6f 66 20 69 6e 61 63 74  69 76 69 74 79 22 0d 05  |of inactivity"..|
00000ba0  dc 0e 45 51 55 42 20 20  20 20 31 30 0d 05 e6 0e  |..EQUB    10....|
00000bb0  45 51 55 42 20 20 20 20  31 33 0d 05 f0 0d 45 51  |EQUB    13....EQ|
00000bc0  55 42 20 20 20 20 30 0d  05 fa 09 41 4c 49 47 4e  |UB    0....ALIGN|
00000bd0  0d 06 04 17 4c 44 4d 46  44 20 20 20 28 73 70 29  |....LDMFD   (sp)|
00000be0  21 2c 7b 50 43 7d 5e 0d  06 0e 04 0d 06 18 10 2e  |!,{PC}^.........|
00000bf0  6e 6f 5f 70 68 5f 64 65  6c 61 79 0d 06 22 17 53  |no_ph_delay..".S|
00000c00  57 49 20 20 20 20 20 22  4f 53 5f 57 72 69 74 65  |WI     "OS_Write|
00000c10  53 22 0d 06 2c 37 45 51  55 53 20 20 20 20 22 54  |S"..,7EQUS    "T|
00000c20  68 65 20 70 6f 69 6e 74  65 72 20 68 69 64 65 20  |he pointer hide |
00000c30  66 65 61 74 75 72 65 20  69 73 20 63 75 72 72 65  |feature is curre|
00000c40  6e 74 6c 79 20 6f 66 66  22 0d 06 36 0b 45 51 55  |ntly off"..6.EQU|
00000c50  42 20 31 30 0d 06 40 0b  45 51 55 42 20 31 33 0d  |B 10..@.EQUB 13.|
00000c60  06 4a 0a 45 51 55 42 20  30 0d 06 54 09 41 4c 49  |.J.EQUB 0..T.ALI|
00000c70  47 4e 0d 06 5e 17 4c 44  4d 46 44 20 20 20 28 73  |GN..^.LDMFD   (s|
00000c80  70 29 21 2c 7b 50 43 7d  5e 0d 06 68 04 0d 06 72  |p)!,{PC}^..h...r|
00000c90  10 2e 70 6f 69 6e 74 65  72 68 69 64 65 0d 06 7c  |..pointerhide..||
00000ca0  13 4c 44 52 20 20 20 20  20 70 77 2c 5b 70 77 5d  |.LDR     pw,[pw]|
00000cb0  0d 06 86 18 53 54 4d 46  44 20 20 20 28 73 70 29  |....STMFD   (sp)|
00000cc0  21 2c 7b 6c 69 6e 6b 7d  0d 06 90 11 54 45 51 20  |!,{link}....TEQ |
00000cd0  20 20 20 20 52 31 2c 23  30 0d 06 9a 19 42 45 51  |    R1,#0....BEQ|
00000ce0  20 20 20 20 20 73 68 6f  77 5f 70 68 5f 64 65 6c  |     show_ph_del|
00000cf0  61 79 0d 06 a4 11 4d 4f  56 20 20 20 20 20 52 31  |ay....MOV     R1|
00000d00  2c 52 30 0d 06 ae 12 4d  4f 56 20 20 20 20 20 52  |,R0....MOV     R|
00000d10  30 2c 23 31 30 0d 06 b8  1d 53 57 49 20 20 20 20  |0,#10....SWI    |
00000d20  20 22 4f 53 5f 52 65 61  64 55 6e 73 69 67 6e 65  | "OS_ReadUnsigne|
00000d30  64 22 0d 06 c2 16 4c 44  4d 56 53 46 44 20 28 73  |d"....LDMVSFD (s|
00000d40  70 29 21 2c 7b 50 43 7d  0d 06 cc 18 4d 4f 56 20  |p)!,{PC}....MOV |
00000d50  20 20 20 20 52 30 2c 52  32 2c 41 53 4c 20 23 32  |    R0,R2,ASL #2|
00000d60  0d 06 d6 1a 53 54 52 20  20 20 20 20 52 30 2c 5b  |....STR     R0,[|
00000d70  70 77 2c 23 64 65 6c 61  79 5d 0d 06 e0 19 53 54  |pw,#delay]....ST|
00000d80  52 20 20 20 20 20 52 30  2c 5b 70 77 2c 23 74 69  |R     R0,[pw,#ti|
00000d90  6d 65 5d 0d 06 ea 17 4c  44 4d 46 44 20 20 20 28  |me]....LDMFD   (|
00000da0  73 70 29 21 2c 7b 50 43  7d 5e 0d 06 f4 04 0d 06  |sp)!,{PC}^......|
00000db0  fe 13 2e 62 79 74 65 5f  69 6e 74 65 72 63 65 70  |...byte_intercep|
00000dc0  74 0d 07 08 13 54 45 51  20 20 20 20 20 52 30 2c  |t....TEQ     R0,|
00000dd0  23 31 30 36 0d 07 12 13  4d 4f 56 4e 45 53 20 20  |#106....MOVNES  |
00000de0  50 43 2c 6c 69 6e 6b 0d  07 1c 18 53 54 4d 46 44  |PC,link....STMFD|
00000df0  20 20 20 28 73 70 29 21  2c 7b 6c 69 6e 6b 7d 0d  |   (sp)!,{link}.|
00000e00  07 26 1c 4c 44 52 20 20  20 20 20 6c 69 6e 6b 2c  |.&.LDR     link,|
00000e10  5b 70 77 2c 23 73 74 61  74 65 5d 0d 07 30 1a 53  |[pw,#state]..0.S|
00000e20  54 52 20 20 20 20 20 52  31 2c 5b 70 77 2c 23 73  |TR     R1,[pw,#s|
00000e30  74 61 74 65 5d 0d 07 3a  18 53 54 4d 46 44 20 20  |tate]..:.STMFD  |
00000e40  20 28 73 70 29 21 2c 7b  6c 69 6e 6b 7d 0d 07 44  | (sp)!,{link}..D|
00000e50  1b 4c 44 52 20 20 20 20  20 6c 69 6e 6b 2c 5b 70  |.LDR     link,[p|
00000e60  77 2c 23 68 69 64 65 5d  0d 07 4e 13 54 45 51 20  |w,#hide]..N.TEQ |
00000e70  20 20 20 20 6c 69 6e 6b  2c 23 30 0d 07 58 11 4d  |    link,#0..X.M|
00000e80  4f 56 4e 45 20 20 20 52  31 2c 23 30 0d 07 62 16  |OVNE   R1,#0..b.|
00000e90  53 54 4d 46 44 20 20 20  28 73 70 29 21 2c 7b 50  |STMFD   (sp)!,{P|
00000ea0  43 7d 0d 07 6c 16 4c 44  52 20 20 20 20 20 50 43  |C}..l.LDR     PC|
00000eb0  2c 5b 73 70 2c 23 38 5d  0d 07 76 4c 45 51 55 44  |,[sp,#8]..vLEQUD|
00000ec0  20 20 20 20 30 20 20 20  20 20 20 20 20 20 20 20  |    0           |
00000ed0  20 20 20 20 20 20 20 3b  20 66 6f 75 72 20 62 79  |       ; four by|
00000ee0  74 65 73 20 68 65 72 65  20 73 6f 20 70 61 73 73  |tes here so pass|
00000ef0  65 64 20 76 65 63 74 6f  72 20 72 65 74 75 72 6e  |ed vector return|
00000f00  73 20 74 6f 0d 07 80 3f  4c 44 4d 46 44 20 20 20  |s to...?LDMFD   |
00000f10  28 73 70 29 21 2c 7b 52  31 2c 6c 69 6e 6b 2c 50  |(sp)!,{R1,link,P|
00000f20  43 7d 20 3b 20 68 65 72  65 2c 20 77 68 65 72 65  |C} ; here, where|
00000f30  20 6f 75 72 20 52 31 20  69 73 20 72 65 74 75 72  | our R1 is retur|
00000f40  6e 65 64 0d 07 8a 04 0d  07 94 0e 2e 68 61 73 5f  |ned.........has_|
00000f50  6d 6f 76 65 64 0d 07 9e  19 53 54 52 20 20 20 20  |moved....STR    |
00000f60  20 52 30 2c 5b 70 77 2c  23 70 6f 73 32 5d 0d 07  | R0,[pw,#pos2]..|
00000f70  a8 1a 4c 44 52 20 20 20  20 20 52 30 2c 5b 70 77  |..LDR     R0,[pw|
00000f80  2c 23 64 65 6c 61 79 5d  0d 07 b2 19 53 54 52 20  |,#delay]....STR |
00000f90  20 20 20 20 52 30 2c 5b  70 77 2c 23 74 69 6d 65  |    R0,[pw,#time|
00000fa0  5d 0d 07 bc 31 4c 44 52  20 20 20 20 20 6c 69 6e  |]...1LDR     lin|
00000fb0  6b 2c 5b 70 77 2c 23 68  69 64 65 5d 20 20 20 3b  |k,[pw,#hide]   ;|
00000fc0  20 69 66 20 68 69 64 64  65 6e 2c 20 72 65 76 65  | if hidden, reve|
00000fd0  61 6c 0d 07 c6 13 54 45  51 20 20 20 20 20 6c 69  |al....TEQ     li|
00000fe0  6e 6b 2c 23 30 0d 07 d0  2b 42 4e 45 20 20 20 20  |nk,#0...+BNE    |
00000ff0  20 72 65 76 65 61 6c 5f  70 6f 69 6e 74 65 72 32  | reveal_pointer2|
00001000  20 20 20 3b 20 65 6c 73  65 20 72 65 76 65 61 6c  |   ; else reveal|
00001010  0d 07 da 04 0d 07 e4 1d  4c 44 4d 46 44 20 20 20  |........LDMFD   |
00001020  28 73 70 29 21 2c 7b 52  30 2d 52 31 2c 50 43 7d  |(sp)!,{R0-R1,PC}|
00001030  5e 0d 07 ee 04 0d 07 f8  10 2e 74 69 6d 65 72 5f  |^.........timer_|
00001040  65 76 65 6e 74 0d 08 02  1e 53 54 4d 46 44 20 20  |event....STMFD  |
00001050  20 28 73 70 29 21 2c 7b  52 30 2d 52 31 2c 6c 69  | (sp)!,{R0-R1,li|
00001060  6e 6b 7d 0d 08 0c 04 0d  08 16 1b 4d 4f 56 20 20  |nk}........MOV  |
00001070  20 20 20 52 30 2c 23 74  69 6d 65 72 5f 64 65 6c  |   R0,#timer_del|
00001080  61 79 0d 08 20 1a 41 44  52 20 20 20 20 20 52 31  |ay.. .ADR     R1|
00001090  2c 74 69 6d 65 72 5f 65  76 65 6e 74 0d 08 2a 11  |,timer_event..*.|
000010a0  4d 4f 56 20 20 20 20 20  52 32 2c 70 77 0d 08 34  |MOV     R2,pw..4|
000010b0  1b 53 57 49 20 20 20 20  20 22 58 4f 53 5f 43 61  |.SWI     "XOS_Ca|
000010c0  6c 6c 41 66 74 65 72 22  0d 08 3e 04 0d 08 48 12  |llAfter"..>...H.|
000010d0  4d 4f 56 20 20 20 20 20  52 30 2c 23 32 31 0d 08  |MOV     R0,#21..|
000010e0  52 1b 41 44 44 20 20 20  20 20 52 31 2c 70 77 2c  |R.ADD     R1,pw,|
000010f0  23 6e 65 77 5f 70 6f 73  31 0d 08 5c 16 53 57 49  |#new_pos1..\.SWI|
00001100  20 20 20 20 20 22 58 4f  53 5f 57 6f 72 64 22 0d  |     "XOS_Word".|
00001110  08 66 04 0d 08 70 1d 4c  44 52 20 20 20 20 20 52  |.f...p.LDR     R|
00001120  30 2c 5b 70 77 2c 23 6e  65 77 5f 70 6f 73 32 5d  |0,[pw,#new_pos2]|
00001130  0d 08 7a 19 4c 44 52 20  20 20 20 20 52 31 2c 5b  |..z.LDR     R1,[|
00001140  70 77 2c 23 70 6f 73 32  5d 0d 08 84 11 54 45 51  |pw,#pos2]....TEQ|
00001150  20 20 20 20 20 52 30 2c  52 31 0d 08 8e 15 42 4e  |     R0,R1....BN|
00001160  45 20 20 20 20 20 68 61  73 5f 6d 6f 76 65 64 0d  |E     has_moved.|
00001170  08 98 04 0d 08 a2 2f 4d  4f 56 20 20 20 20 20 52  |....../MOV     R|
00001180  30 2c 23 31 32 31 20 20  20 20 20 20 20 20 20 20  |0,#121          |
00001190  20 3b 20 74 65 73 74 20  6d 6f 75 73 65 20 6b 65  | ; test mouse ke|
000011a0  79 73 0d 08 ac 24 4d 4f  56 20 20 20 20 20 52 31  |ys...$MOV     R1|
000011b0  2c 23 39 20 82 20 26 38  30 20 20 20 20 20 3b 20  |,#9 . &80     ; |
000011c0  73 65 6c 65 63 74 0d 08  b6 16 53 57 49 20 20 20  |select....SWI   |
000011d0  20 20 22 58 4f 53 5f 42  79 74 65 22 0d 08 c0 11  |  "XOS_Byte"....|
000011e0  54 45 51 20 20 20 20 20  52 31 2c 23 30 0d 08 ca  |TEQ     R1,#0...|
000011f0  15 42 4e 45 20 20 20 20  20 68 61 73 5f 6d 6f 76  |.BNE     has_mov|
00001200  65 64 0d 08 d4 22 4d 4f  56 20 20 20 20 20 52 31  |ed..."MOV     R1|
00001210  2c 23 31 30 20 82 20 26  38 30 20 20 20 20 3b 20  |,#10 . &80    ; |
00001220  6d 65 6e 75 0d 08 de 16  53 57 49 20 20 20 20 20  |menu....SWI     |
00001230  22 58 4f 53 5f 42 79 74  65 22 0d 08 e8 11 54 45  |"XOS_Byte"....TE|
00001240  51 20 20 20 20 20 52 31  2c 23 30 0d 08 f2 15 42  |Q     R1,#0....B|
00001250  4e 45 20 20 20 20 20 68  61 73 5f 6d 6f 76 65 64  |NE     has_moved|
00001260  0d 08 fc 24 4d 4f 56 20  20 20 20 20 52 31 2c 23  |...$MOV     R1,#|
00001270  31 31 20 82 20 26 38 30  20 20 20 20 3b 20 61 64  |11 . &80    ; ad|
00001280  6a 75 73 74 0d 09 06 16  53 57 49 20 20 20 20 20  |just....SWI     |
00001290  22 58 4f 53 5f 42 79 74  65 22 0d 09 10 11 54 45  |"XOS_Byte"....TE|
000012a0  51 20 20 20 20 20 52 31  2c 23 30 0d 09 1a 15 42  |Q     R1,#0....B|
000012b0  4e 45 20 20 20 20 20 68  61 73 5f 6d 6f 76 65 64  |NE     has_moved|
000012c0  0d 09 24 04 0d 09 2e 2f  4c 44 52 20 20 20 20 20  |..$..../LDR     |
000012d0  6c 69 6e 6b 2c 5b 70 77  2c 23 68 69 64 65 5d 20  |link,[pw,#hide] |
000012e0  20 20 3b 20 69 66 20 68  69 64 64 65 6e 2c 20 65  |  ; if hidden, e|
000012f0  78 69 74 0d 09 38 13 54  45 51 20 20 20 20 20 6c  |xit..8.TEQ     l|
00001300  69 6e 6b 2c 23 30 0d 09  42 1d 4c 44 4d 4e 45 46  |ink,#0..B.LDMNEF|
00001310  44 20 28 73 70 29 21 2c  7b 52 30 2d 52 31 2c 50  |D (sp)!,{R0-R1,P|
00001320  43 7d 5e 0d 09 4c 04 0d  09 56 32 4c 44 52 20 20  |C}^..L...V2LDR  |
00001330  20 20 20 6c 69 6e 6b 2c  5b 70 77 2c 23 74 69 6d  |   link,[pw,#tim|
00001340  65 5d 20 20 20 3b 20 69  66 20 74 69 6d 65 20 69  |e]   ; if time i|
00001350  73 20 30 2c 20 65 78 69  74 0d 09 60 13 54 45 51  |s 0, exit..`.TEQ|
00001360  20 20 20 20 20 6c 69 6e  6b 2c 23 30 0d 09 6a 1d  |     link,#0..j.|
00001370  4c 44 4d 45 51 46 44 20  28 73 70 29 21 2c 7b 52  |LDMEQFD (sp)!,{R|
00001380  30 2d 52 31 2c 50 43 7d  5e 0d 09 74 04 0d 09 7e  |0-R1,PC}^..t...~|
00001390  2e 53 55 42 53 20 20 20  20 6c 69 6e 6b 2c 6c 69  |.SUBS    link,li|
000013a0  6e 6b 2c 23 31 20 20 20  20 20 20 3b 20 64 65 63  |nk,#1      ; dec|
000013b0  72 65 6d 65 6e 74 20 74  69 6d 65 0d 09 88 1b 53  |rement time....S|
000013c0  54 52 20 20 20 20 20 6c  69 6e 6b 2c 5b 70 77 2c  |TR     link,[pw,|
000013d0  23 74 69 6d 65 5d 0d 09  92 04 0d 09 9c 31 4c 44  |#time].......1LD|
000013e0  4d 4e 45 46 44 20 28 73  70 29 21 2c 7b 52 30 2d  |MNEFD (sp)!,{R0-|
000013f0  52 31 2c 50 43 7d 5e 20  3b 20 74 69 6d 65 20 6e  |R1,PC}^ ; time n|
00001400  6f 74 20 65 78 63 65 65  64 65 64 0d 09 a6 04 0d  |ot exceeded.....|
00001410  09 b0 19 42 20 20 20 20  20 20 20 68 69 64 65 5f  |...B       hide_|
00001420  70 6f 69 6e 74 65 72 32  0d 09 ba 04 0d 09 c4 04  |pointer2........|
00001430  0d 09 ce 11 2e 68 69 64  65 5f 70 6f 69 6e 74 65  |.....hide_pointe|
00001440  72 0d 09 d8 1e 53 54 4d  46 44 20 20 20 28 73 70  |r....STMFD   (sp|
00001450  29 21 2c 7b 52 30 2c 52  31 2c 6c 69 6e 6b 7d 0d  |)!,{R0,R1,link}.|
00001460  09 e2 12 2e 68 69 64 65  5f 70 6f 69 6e 74 65 72  |....hide_pointer|
00001470  32 0d 09 ec 39 53 54 52  20 20 20 20 20 70 77 2c  |2...9STR     pw,|
00001480  5b 70 77 2c 23 68 69 64  65 5d 20 20 20 3b 20 73  |[pw,#hide]   ; s|
00001490  65 74 20 68 69 64 64 65  6e 20 66 6c 61 67 20 74  |et hidden flag t|
000014a0  6f 20 6e 6f 6e 2d 7a 65  72 6f 0d 09 f6 1c 4c 44  |o non-zero....LD|
000014b0  52 20 20 20 20 20 6c 69  6e 6b 2c 5b 70 77 2c 23  |R     link,[pw,#|
000014c0  64 65 6c 61 79 5d 0d 0a  00 1b 53 54 52 20 20 20  |delay]....STR   |
000014d0  20 20 6c 69 6e 6b 2c 5b  70 77 2c 23 74 69 6d 65  |  link,[pw,#time|
000014e0  5d 0d 0a 0a 1a 4c 44 52  20 20 20 20 20 52 31 2c  |]....LDR     R1,|
000014f0  5b 70 77 2c 23 73 74 61  74 65 5d 0d 0a 14 13 4d  |[pw,#state]....M|
00001500  4f 56 20 20 20 20 20 52  30 2c 23 31 30 36 0d 0a  |OV     R0,#106..|
00001510  1e 16 53 57 49 20 20 20  20 20 22 58 4f 53 5f 42  |..SWI     "XOS_B|
00001520  79 74 65 22 0d 0a 28 1d  4c 44 4d 46 44 20 20 20  |yte"..(.LDMFD   |
00001530  28 73 70 29 21 2c 7b 52  30 2c 52 31 2c 50 43 7d  |(sp)!,{R0,R1,PC}|
00001540  5e 0d 0a 32 04 0d 0a 3c  13 2e 72 65 76 65 61 6c  |^..2...<..reveal|
00001550  5f 70 6f 69 6e 74 65 72  0d 0a 46 1e 53 54 4d 46  |_pointer..F.STMF|
00001560  44 20 20 20 28 73 70 29  21 2c 7b 52 30 2c 52 31  |D   (sp)!,{R0,R1|
00001570  2c 6c 69 6e 6b 7d 0d 0a  50 14 2e 72 65 76 65 61  |,link}..P..revea|
00001580  6c 5f 70 6f 69 6e 74 65  72 32 0d 0a 5a 13 4d 4f  |l_pointer2..Z.MO|
00001590  56 20 20 20 20 20 6c 69  6e 6b 2c 23 30 0d 0a 64  |V     link,#0..d|
000015a0  35 53 54 52 20 20 20 20  20 6c 69 6e 6b 2c 5b 70  |5STR     link,[p|
000015b0  77 2c 23 68 69 64 65 5d  20 3b 20 73 65 74 20 68  |w,#hide] ; set h|
000015c0  69 64 64 65 6e 20 66 6c  61 67 20 74 6f 20 7a 65  |idden flag to ze|
000015d0  72 6f 0d 0a 6e 1a 4c 44  52 20 20 20 20 20 52 31  |ro..n.LDR     R1|
000015e0  2c 5b 70 77 2c 23 73 74  61 74 65 5d 0d 0a 78 13  |,[pw,#state]..x.|
000015f0  4d 4f 56 20 20 20 20 20  52 30 2c 23 31 30 36 0d  |MOV     R0,#106.|
00001600  0a 82 16 53 57 49 20 20  20 20 20 22 58 4f 53 5f  |...SWI     "XOS_|
00001610  42 79 74 65 22 0d 0a 8c  1a 4c 44 52 20 20 20 20  |Byte"....LDR    |
00001620  20 52 30 2c 5b 70 77 2c  23 64 65 6c 61 79 5d 0d  | R0,[pw,#delay].|
00001630  0a 96 19 53 54 52 20 20  20 20 20 52 30 2c 5b 70  |...STR     R0,[p|
00001640  77 2c 23 74 69 6d 65 5d  0d 0a a0 1d 4c 44 4d 46  |w,#time]....LDMF|
00001650  44 20 20 20 28 73 70 29  21 2c 7b 52 30 2c 52 31  |D   (sp)!,{R0,R1|
00001660  2c 50 43 7d 5e 0d 0a aa  05 5d 0d 0a b4 05 ed 0d  |,PC}^....]......|
00001670  0a be 04 0d 0a c8 22 f2  6d 6f 64 75 6c 65 5f 73  |......".module_s|
00001680  61 76 65 28 22 50 48 6d  6f 64 22 2c 63 6f 64 65  |ave("PHmod",code|
00001690  25 2c 4f 25 29 0d 0a d2  04 0d 0a dc 05 e0 0d 0a  |%,O%)...........|
000016a0  e6 04 0d 0a f0 14 dd 20  a4 6d 6f 64 75 6c 65 5f  |....... .module_|
000016b0  68 65 61 64 65 72 0d 0a  fa 0d 5b 4f 50 54 20 70  |header....[OPT p|
000016c0  61 73 73 0d 0b 04 0a 45  51 55 44 20 30 0d 0b 0e  |ass....EQUD 0...|
000016d0  0d 45 51 55 44 20 69 6e  69 74 0d 0b 18 11 45 51  |.EQUD init....EQ|
000016e0  55 44 20 66 69 6e 61 6c  69 73 65 0d 0b 22 10 45  |UD finalise..".E|
000016f0  51 55 44 20 73 65 72 76  69 63 65 0d 0b 2c 0e 45  |QUD service..,.E|
00001700  51 55 44 20 74 69 74 6c  65 0d 0b 36 0d 45 51 55  |QUD title..6.EQU|
00001710  44 20 68 65 6c 70 0d 0b  40 11 45 51 55 44 20 63  |D help..@.EQUD c|
00001720  6f 6d 6d 61 6e 64 73 0d  0b 4a 0a 45 51 55 44 20  |ommands..J.EQUD |
00001730  30 0d 0b 54 0a 2e 74 69  74 6c 65 0d 0b 5e 16 45  |0..T..title..^.E|
00001740  51 55 53 20 22 50 6f 69  6e 74 65 72 48 69 64 65  |QUS "PointerHide|
00001750  22 0d 0b 68 0a 45 51 55  42 20 30 0d 0b 72 09 2e  |"..h.EQUB 0..r..|
00001760  68 65 6c 70 0d 0b 7c 18  45 51 55 53 20 22 50 6f  |help..|.EQUS "Po|
00001770  69 6e 74 65 72 20 48 69  64 65 72 22 0d 0b 86 0a  |inter Hider"....|
00001780  45 51 55 42 20 39 0d 0b  90 1d 45 51 55 53 20 22  |EQUB 9....EQUS "|
00001790  30 2e 30 30 20 28 30 36  20 4f 63 74 20 31 39 39  |0.00 (06 Oct 199|
000017a0  33 29 22 0d 0b 9a 0a 45  51 55 42 20 30 0d 0b a4  |3)"....EQUB 0...|
000017b0  0c 2e 63 6f 6d 68 65 6c  70 0d 0b ae 50 45 51 55  |..comhelp...PEQU|
000017c0  53 20 22 2a 50 6f 69 6e  74 65 72 48 69 64 65 20  |S "*PointerHide |
000017d0  73 65 74 73 20 74 68 65  20 64 65 6c 61 79 20 69  |sets the delay i|
000017e0  6e 20 73 65 63 6f 6e 64  73 20 61 66 74 65 72 20  |n seconds after |
000017f0  77 68 69 63 68 20 74 68  65 20 6d 6f 75 73 65 20  |which the mouse |
00001800  70 6f 69 6e 74 65 72 20  22 0d 0b b8 4f 45 51 55  |pointer "...OEQU|
00001810  53 20 22 77 69 6c 6c 20  62 65 20 74 65 6d 70 6f  |S "will be tempo|
00001820  72 61 72 69 6c 79 20 68  69 64 64 65 6e 20 66 72  |rarily hidden fr|
00001830  6f 6d 20 76 69 65 77 2e  20 49 66 20 6e 6f 20 70  |om view. If no p|
00001840  61 72 61 6d 65 74 65 72  20 69 73 20 67 69 76 65  |arameter is give|
00001850  6e 2c 20 74 68 65 20 22  0d 0b c2 53 45 51 55 53  |n, the "...SEQUS|
00001860  20 22 63 75 72 72 65 6e  74 20 73 65 74 74 69 6e  | "current settin|
00001870  67 20 69 73 20 64 69 73  70 6c 61 79 65 64 2e 20  |g is displayed. |
00001880  49 66 20 61 20 64 65 6c  61 79 20 6f 66 20 30 20  |If a delay of 0 |
00001890  69 73 20 73 70 65 63 69  66 69 65 64 2c 20 74 68  |is specified, th|
000018a0  65 20 70 6f 69 6e 74 65  72 20 22 0d 0b cc 20 45  |e pointer "... E|
000018b0  51 55 53 20 22 77 69 6c  6c 20 6e 65 76 65 72 20  |QUS "will never |
000018c0  62 65 20 68 69 64 64 65  6e 2e 22 0d 0b d6 0b 45  |be hidden."....E|
000018d0  51 55 42 20 31 33 0d 0b  e0 0b 2e 73 79 6e 74 61  |QUB 13.....synta|
000018e0  78 0d 0b ea 29 45 51 55  53 20 22 53 79 6e 74 61  |x...)EQUS "Synta|
000018f0  78 3a 20 2a 50 6f 69 6e  74 65 72 48 69 64 65 20  |x: *PointerHide |
00001900  5b 3c 64 65 6c 61 79 3e  5d 22 0d 0b f4 0a 45 51  |[<delay>]"....EQ|
00001910  55 42 20 30 0d 0b fe 04  0d 0c 08 09 41 4c 49 47  |UB 0........ALIG|
00001920  4e 0d 0c 12 0d 2e 63 6f  6d 6d 61 6e 64 73 0d 0c  |N.....commands..|
00001930  1c 42 a4 63 6f 6d 6d 61  6e 64 28 22 50 6f 69 6e  |.B.command("Poin|
00001940  74 65 72 48 69 64 65 22  2c 22 70 6f 69 6e 74 65  |terHide","pointe|
00001950  72 68 69 64 65 22 2c 26  30 30 30 31 30 30 30 30  |rhide",&00010000|
00001960  2c 73 79 6e 74 61 78 2c  63 6f 6d 68 65 6c 70 29  |,syntax,comhelp)|
00001970  0d 0c 26 0a 45 51 55 42  20 30 0d 0c 30 09 41 4c  |..&.EQUB 0..0.AL|
00001980  49 47 4e 0d 0c 3a 05 5d  0d 0c 44 07 3d 22 22 0d  |IGN..:.]..D.="".|
00001990  0c 4e 04 0d 0c 58 10 dd  20 a4 65 72 72 6f 72 28  |.N...X.. .error(|
000019a0  61 24 29 0d 0c 62 0d 5b  4f 50 54 20 70 61 73 73  |a$)..b.[OPT pass|
000019b0  0d 0c 6c 0a 45 51 55 44  20 30 0d 0c 76 0b 45 51  |..l.EQUD 0..v.EQ|
000019c0  55 53 20 61 24 0d 0c 80  0a 45 51 55 42 20 30 0d  |US a$....EQUB 0.|
000019d0  0c 8a 05 5d 0d 0c 94 07  3d 22 22 0d 0c 9e 04 0d  |...]....="".....|
000019e0  0c a8 29 dd 20 a4 63 6f  6d 6d 61 6e 64 28 61 24  |..). .command(a$|
000019f0  2c 63 6f 6d 24 2c 66 6c  61 67 73 2c 73 79 6e 74  |,com$,flags,synt|
00001a00  61 78 2c 68 65 6c 70 29  0d 0c b2 0a ea 20 61 64  |ax,help)..... ad|
00001a10  64 72 0d 0c bc 19 e7 20  70 61 73 73 3d 36 20 61  |dr..... pass=6 a|
00001a20  64 64 72 3d a0 28 63 6f  6d 24 29 0d 0c c6 0c 5b  |ddr=.(com$)....[|
00001a30  4f 50 54 70 61 73 73 0d  0c d0 0b 45 51 55 53 20  |OPTpass....EQUS |
00001a40  61 24 0d 0c da 0a 45 51  55 42 20 30 0d 0c e4 09  |a$....EQUB 0....|
00001a50  41 4c 49 47 4e 0d 0c ee  0d 45 51 55 44 20 61 64  |ALIGN....EQUD ad|
00001a60  64 72 0d 0c f8 0e 45 51  55 44 20 66 6c 61 67 73  |dr....EQUD flags|
00001a70  0d 0d 02 0f 45 51 55 44  20 73 79 6e 74 61 78 0d  |....EQUD syntax.|
00001a80  0d 0c 0d 45 51 55 44 20  68 65 6c 70 0d 0d 16 05  |...EQUD help....|
00001a90  5d 0d 0d 20 07 3d 22 22  0d 0d 2a 04 0d 0d 34 1c  |].. .=""..*...4.|
00001aa0  dd 20 f2 6d 6f 64 75 6c  65 5f 73 61 76 65 28 66  |. .module_save(f|
00001ab0  24 2c 73 25 2c 65 25 29  0d 0d 3e 1e c8 99 20 22  |$,s%,e%)..>... "|
00001ac0  4f 53 5f 4d 6f 64 75 6c  65 22 2c 31 31 2c 73 25  |OS_Module",11,s%|
00001ad0  2c 65 25 2d 73 25 0d 0d  48 22 c8 99 20 22 4f 53  |,e%-s%..H".. "OS|
00001ae0  5f 46 69 6c 65 22 2c 31  30 2c 66 24 2c 26 46 46  |_File",10,f$,&FF|
00001af0  41 2c 2c 73 25 2c 65 25  0d 0d 52 05 e1 0d ff     |A,,s%,e%..R....|
00001aff