Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199611.adf » Extras » Harrison/!FBackQTM/!RunImage

Harrison/!FBackQTM/!RunImage

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 » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199611.adf » Extras
Filename: Harrison/!FBackQTM/!RunImage
Read OK:
File size: 1BD5 bytes
Load address: 0000
Exec address: 0000
File contents
    1REM LEN Stephen Harrison /Phoenix/ 1996
    2REM
    3REM in response to software request for Acorn User PD column
    4REM
    5REM Syntax: *Run !RunImage [ClearTrap]
    6REM
    7REM The default, with no params, is to set the Flashback trap
    8:
    9version%=1.00
   10version%=version%*100
   11:
   12SYS"OS_GetEnv" TO env$
   13countback=LENenv$+1
   14REPEAT:countback-=1:UNTIL MID$(env$,countback,1)<>" "                 :REM skip trailing spaces
   15REPEAT:countback-=1:UNTIL MID$(env$,countback,1)=" " OR countback<=1  :REM now at space b4 param
   16IF countback<=1 THEN
   17 env$="SetTrap"                                 :REM default to set the trap
   18ELSE
   19 env$=RIGHT$(env$,LENenv$-countback)
   20 IF LEFT$(env$,9)="ClearTrap" THEN env$="ClearTrap"
   21 IF env$<>"ClearTrap" THEN env$="SetTrap"       :REM default to set the trap
   22ENDIF
   23:
   24file%=OPENIN"<FbackPatch$Dir>.JingCvCode"
   25jingconvlen%=EXT#file%
   26CLOSE#file%
   27:
   28file%=OPENIN"<FbackPatch$Dir>.FlashCode"
   29flashlen%=EXT#file%
   30CLOSE#file%
   31:
   32ONERROR ON ERROR OFF:ERROR 255,REPORT$+" (&"+STR$ERL+")":END
   33REM
   34REM Intercepting SWI vector...
   35REM
   36PROCgetold
   37PROCassm
   38OSCLI"Load <FbackPatch$Dir>.JingCvCode "+STR$~jingconv
   39OSCLI"Load <FbackPatch$Dir>.FlashCode "+STR$~flashconv
   40PROClinkup:REM PRINT"Installed"
   41REM
   42REM ...installation complete
   43REM
   44END
   45
   46
   47DEF PROCgetold
   48SP=13:LR=14
   49codelen%=1024
   50DIM quickcode% codelen%
   51FOR opt%=8 TO 10 STEP 2
   52P%=quickcode%:L%=quickcode%+codelen%
   53[OPT opt%
   54.readswiv
   55STMFD   SP !,{R1-R12,LR}
   56SWI     "OS_IntOff"
   57MOV     R0,#2
   58ORR     R0,R0,#%1<<8
   59ADR     R1,tempswiv
   60SWI     "OS_ClaimProcessorVector"
   61STR     R1,currentSWIv
   62ADR     R2,tempswiv
   63MOV     R0,#2 OR (%0<<8)
   64SWI     "OS_ClaimProcessorVector"
   65SWI     "OS_IntOn"
   66LDR     R0,currentSWIv
   67LDMFD   SP !,{R1-R12,PC}^
   68
   69.tempswiv
   70LDR     PC,currentSWIv
   71
   72.currentSWIv
   73EQUD    0
   74]
   75NEXT
   76:
   77swihandler=USR(readswiv)                :REM should work on all comps. inc. StongARM!
   78IF $(swihandler-8)="FBTP" THEN
   79 :                                              :REM ensure it is our routine
   80 oldswi=!(swihandler-12)                        :REM get old contents of SWI vector
   81 IF env$="SetTrap" THEN REM PRINT"Still there":END  :REM if setting and it's already there, exit!
   82 SYS "XOS_ClaimProcessorVector",2,oldswi,swihandler TO ;flags
   83 IF (flags AND 1)=0 THEN PROCclearRMA(swihandler-12):REM PRINT"Cleared" ELSE PRINT"Cannot clear"
   84                                                :REM clear if swiv can be restored
   85ENDIF
   86IF env$="ClearTrap" THEN END
   87ENDPROC
   88
   89
   90DEF PROCassm
   91codelen%=4096
   92code%=FNclaimRMA(codelen%)
   93FOR opt%=8 TO 10 STEP 2
   94P%=code%:L%=P%+codelen%
   95[OPT opt%
   96.oldcontents
   97EQUD    swihandler
   98EQUS    "FBTP"
   99EQUD    13
  100
  101
  102.trapper
  103STMFD   R13!,{R10-R12,R14}      ;store regs
  104BIC     R12,R14,#&FC000003      ;mask off flags and processor modes from return addr
  105LDR     R11,[R12,#-4]           ;load the SWI call which called this
  106BIC     R11,R11,#&FF000000      ;mask off bits of controller SWI command
  107BIC     R11,R11,#&00020000      ;mask off other bits
  108CMP     R11,#&1F                ;is it OS_Claim SWI?
  109CMPNE   R11,#&20                ;or OS_Release?
  110CMPEQ   R0,#&1C                 ;if it was, is this a 100Hz claim?
  111:
  112.notme
  113LDMNEFD R13!,{R10-R12,R14}      ;if not... reload regs
  114BNE     swihandler              ;go away to orignal handler!
  115:
  116AND     R10,R1,#&FF
  117TEQ     R10,#&3C
  118BNE     notme
  119AND     R10,R1,#&FF00
  120TEQ     R10,#&D500
  121BNE     notme
  122MOVS    R10,R1,LSR#16
  123BNE     notme                   ;check that R1 value is as expected, if so we can intercept!
  124:
  125CMP     R11,#&20                ;was it OS_Release?
  126BEQ     clearhandler
  127:
  128STMFD   R13!,{R0-R2}
  129MOV     R0,#4
  130MVN     R1,#0
  131MVN     R2,#0
  132SWI     "QTM_SoundControl"
  133:
  134MOV        R0,#&D300
  135ORR     R0,R0,#&0074            ;(here r2 has jing addr)
  136ADR     R1,ourQTMjingcode
  137SUB     R1,R1,R0
  138SUB     R1,R1,#8
  139MOV     R1,R1,LSR#2
  140ORR     R1,R1,#&EB000000        ;now a branch-link instruction
  141STR     R1,[R0]
  142:
  143MOV        R0,#&D400
  144ORR     R0,R0,#&00A4
  145ADR     R1,ourQTMstartcode
  146SUB     R1,R1,R0
  147SUB     R1,R1,#8
  148MOV     R1,R1,LSR#2
  149ORR     R1,R1,#&EB000000        ;now a branch-link instruction
  150STR     R1,[R0]
  151:
  152MOV        R0,#&D400
  153ORR     R0,R0,#&00D4
  154ADR     R1,ourQTMstopcode
  155SUB     R1,R1,R0
  156SUB     R1,R1,#8
  157MOV     R1,R1,LSR#2
  158ORR     R1,R1,#&EB000000        ;now a branch-link instruction
  159STR     R1,[R0]
  160LDMFD   R13!,{R0-R2,R10-R12,PC}^;reload regs
  161
  162
  163.clearhandler
  164STMFD   R13!,{R0-R2}
  165SWI     "QTM_Stop"
  166LDMFD   R13!,{R0-R2,R10-R12,PC}^;reload regs
  167
  168
  169.ourQTMjingcode                 ;on entry R2=addr
  170STMFD   R13!,{R0-R4,R14}        ;copy & convert toon at [R12,#1000] to RMA, and start QTM playing
  171MOV     R0,R2
  172BL      jingconv
  173MOV     R0,#%010
  174MOV     R1,#%010
  175SWI     "QTM_MusicOptions"      ;stop song at end
  176MOV     R0,#48
  177SWI     "QTM_SetSampleSpeed"    ;medium quality samples, as for Flashback
  178MOV     R0,#8
  179MOV     R1,#1
  180MVN     R2,#0
  181SWI     "QTM_SoundControl"      ;8 channels and Transparent Sound System on
  182SWI     "QTM_Start"
  183:
  184MOV     R0,#0
  185ADR     R1,qtmjingintaddr
  186MOV     R2,R12
  187SWI     "QTM_MusicInterrupt"
  188LDMFD   R13!,{R0-R4,R14}
  189LDRB    R9,[R2],#1              ;has to result LDRB R9,[R2],#1
  190MOVS    PC,R14
  191
  192
  193.ourQTMstartcode
  194STMFD   R13!,{R1,R2,R14}        ;copy & convert toon at [R12,#1000] to RMA, and start QTM playing
  195LDR     R0,[R12,#1000]
  196BL      flashconv
  197MOV     R0,#%010
  198MOV     R1,#%000
  199SWI     "QTM_MusicOptions"      ;repeat at end of song
  200MOV     R0,#24
  201SWI     "QTM_SetSampleSpeed"    ;high quality music samples
  202MOV     R0,#4
  203MOV     R1,#0
  204MVN     R2,#0
  205SWI     "QTM_SoundControl"      ;4 channels, no TSS
  206SWI     "QTM_Start"
  207:
  208MOV     R0,#0
  209ADR     R1,qtmintaddr
  210MOV     R2,R12
  211SWI     "QTM_MusicInterrupt"
  212:
  213MOV     R0,#0                   ;has to result in R0=0
  214LDMFD   R13!,{R1,R2,PC}^
  215
  216
  217.ourQTMstopcode
  218STMFD   R13!,{R1,R14}           ;qtmpause to stop QTM
  219SWI     "QTM_Pause"
  220MOV     R0,#0
  221MOV     R1,#0
  222SWI     "QTM_MusicInterrupt"    ;cancel music interrupt
  223:
  224MOV     R0,#4                   ;has to result in R0=4
  225LDMFD   R13!,{R1,PC}^
  226
  227
  228.qtmintaddr
  229TEQ     R0,#0
  230TEQEQ   R1,#%1
  231MOVNES  PC,R14
  232STMFD   R13!,{R14}
  233STR     R0,[R12,#1000]          ;flag to Flashback, to say music has ended
  234LDMFD   R13!,{PC}^
  235
  236
  237.qtmjingintaddr
  238TEQ     R0,#0
  239TEQEQ   R1,#%1
  240MOVNES  PC,R14
  241STMFD   R13!,{R14}
  242STR     R0,[R12,#960]           ;flag to Flashback, to say jingle has ended
  243LDMFD   R13!,{PC}^
  244
  245
  246.flashconv                      ;converts FB song at R0 to QTM
  247]:P%+=flashlen%
  248[OPT opt%
  249ALIGN
  250
  251
  252.jingconv
  253]:P%+=jingconvlen%
  254[OPT opt%
  255]
  256NEXT
  257ENDPROC
  258
  259DEF PROClinkup
  260SYS"OS_ClaimProcessorVector",2 OR (%1<<8),trapper
  261ENDPROC
  262
  263DEF FNclaimRMA(size%)
  264SYS "OS_Module",6,,,size% TO ,,ptr%
  265=ptr%
  266
  267DEF PROCclearRMA(size%)
  268SYS "OS_Module",7,,size%
  269ENDPROC
'� � Stephen Harrison /Phoenix/ 1996
�
>� in response to software request for Acorn User PD column
�
(� Syntax: *Run !RunImage [ClearTrap]
�
?� The default, with no params, is to set the Flashback trap
:
	version%=1.00

version%=version%*100
:
ș"OS_GetEnv" � env$

countback=�env$+1
T�:countback-=1:� �env$,countback,1)<>" "                 :� skip trailing spaces
T�:countback-=1:� �env$,countback,1)=" " � countback<=1  :� now at space b4 param
� countback<=1 �
N env$="SetTrap"                                 :� default to set the trap
�
  env$=�env$,�env$-countback)
. � �env$,9)="ClearTrap" � env$="ClearTrap"
J � env$<>"ClearTrap" � env$="SetTrap"       :� default to set the trap
�
:
(file%=�"<FbackPatch$Dir>.JingCvCode"
jingconvlen%=�#file%
�#file%
:
'file%=�"<FbackPatch$Dir>.FlashCode"
flashlen%=�#file%
�#file%
:
 $� � � �:� 255,�$+" (&"+Þ+")":�
!�
" � Intercepting SWI vector...
#�
$�getold
%	�assm
&3�"Load <FbackPatch$Dir>.JingCvCode "+�~jingconv
'3�"Load <FbackPatch$Dir>.FlashCode "+�~flashconv
(�linkup:� PRINT"Installed"
)�
*� ...installation complete
+�
,�
-
.
/
� �getold
0SP=13:LR=14
1codelen%=1024
2� quickcode% codelen%
3� opt%=8 � 10 � 2
4(P%=quickcode%:L%=quickcode%+codelen%
5
[OPT opt%
6
.readswiv
7STMFD   SP !,{R1-R12,LR}
8SWI     "OS_IntOff"
9MOV     R0,#2
:�R     R0,R0,#%1<<8
;ADR     R1,tempswiv
<%SWI     "OS_ClaimProcessorVector"
=STR     R1,currentSWIv
>ADR     R2,tempswiv
?MOV     R0,#2 � (%0<<8)
@%SWI     "OS_ClaimProcessorVector"
ASWI     "OS_IntOn"
BLDR     R0,currentSWIv
CLDMFD   SP !,{R1-R12,PC}^
D
E
.tempswiv
FLDR     PC,currentSWIv
G
H.currentSWIv
I
EQUD    0
J]
K�
L:
MUswihandler=�(readswiv)                :� should work on all comps. inc. StongARM!
N� $(swihandler-8)="FBTP" �
OO :                                              :� ensure it is our routine
PU oldswi=!(swihandler-12)                        :� get old contents of SWI vector
Q_ � env$="SetTrap" � � PRINT"Still there":END  :REM if setting and it's already there, exit!
R? ș "XOS_ClaimProcessorVector",2,oldswi,swihandler � ;flags
SY � (flags � 1)=0 � �clearRMA(swihandler-12):� PRINT"Cleared" ELSE PRINT"Cannot clear"
TT                                                :� clear if swiv can be restored
U�
V� env$="ClearTrap" � �
W�
X
Y
Z� �assm
[codelen%=4096
\code%=�claimRMA(codelen%)
]� opt%=8 � 10 � 2
^P%=code%:L%=P%+codelen%
_
[OPT opt%
`.oldcontents
aEQUD    swihandler
bEQUS    "FBTP"
cEQUD    13
d
e
f.trapper
g/STMFD   R13!,{R10-R12,R14}      ;store regs
hXBIC     R12,R14,#&FC000003      ;mask off flags and processor modes from return addr
iHLDR     R11,[R12,#-4]           ;load the SWI call which called this
jLBIC     R11,R11,#&FF000000      ;mask off bits of controller SWI command
k8BIC     R11,R11,#&00020000      ;mask off other bits
l8CMP     R11,#&1F                ;is it OS_Claim SWI?
m3CMPNE   R11,#&20                ;or OS_Release?
nFCMPEQ   R0,#&1C                 ;if it was, is this a 100Hz claim?
o:
p
.notme
q:LDMNEFD R13!,{R10-R12,R14}      ;if not... reload regs
r@BNE     swihandler              ;go away to orignal handler!
s:
t�     R10,R1,#&FF
uTEQ     R10,#&3C
vBNE     notme
w�     R10,R1,#&FF00
xTEQ     R10,#&D500
yBNE     notme
zMOVS    R10,R1,LSR#16
{`BNE     notme                   ;check that R1 value is as expected, if so we can intercept!
|:
}7CMP     R11,#&20                ;was it OS_Release?
~BEQ     clearhandler
:
�STMFD   R13!,{R0-R2}
�MOV     R0,#4
�MVN     R1,#0
�MVN     R2,#0
�SWI     "QTM_SoundControl"
�:
�MOV        R0,#&D300
�;�R     R0,R0,#&0074            ;(here r2 has jing addr)
�ADR     R1,ourQTMjingcode
�SUB     R1,R1,R0
�SUB     R1,R1,#8
�MOV     R1,R1,LSR#2
�A�R     R1,R1,#&EB000000        ;now a branch-link instruction
�STR     R1,[R0]
�:
�MOV        R0,#&D400
��R     R0,R0,#&00A4
�ADR     R1,ourQTMstartcode
�SUB     R1,R1,R0
�SUB     R1,R1,#8
�MOV     R1,R1,LSR#2
�A�R     R1,R1,#&EB000000        ;now a branch-link instruction
�STR     R1,[R0]
�:
�MOV        R0,#&D400
��R     R0,R0,#&00D4
�ADR     R1,ourQTMstopcode
�SUB     R1,R1,R0
�SUB     R1,R1,#8
�MOV     R1,R1,LSR#2
�A�R     R1,R1,#&EB000000        ;now a branch-link instruction
�STR     R1,[R0]
�0LDMFD   R13!,{R0-R2,R10-R12,PC}^;reload regs
�
�
�.clearhandler
�STMFD   R13!,{R0-R2}
�SWI     "QTM_Stop"
�0LDMFD   R13!,{R0-R2,R10-R12,PC}^;reload regs
�
�
�5.ourQTMjingcode                 ;on entry R2=addr
�eSTMFD   R13!,{R0-R4,R14}        ;copy & convert toon at [R12,#1000] to RMA, and start QTM playing
�MOV     R0,R2
�BL      jingconv
�MOV     R0,#%010
�MOV     R1,#%010
�5SWI     "QTM_MusicOptions"      ;stop song at end
�MOV     R0,#48
�MSWI     "QTM_SetSampleSpeed"    ;medium quality samples, as for Flashback
�MOV     R0,#8
�MOV     R1,#1
�MVN     R2,#0
�OSWI     "QTM_SoundControl"      ;8 channels and Transparent Sound System on
�SWI     "QTM_Start"
�:
�MOV     R0,#0
�ADR     R1,qtmjingintaddr
�MOV     R2,R12
� SWI     "QTM_MusicInterrupt"
�LDMFD   R13!,{R0-R4,R14}
�BLDRB    R9,[R2],#1              ;has to result LDRB R9,[R2],#1
�MOVS    PC,R14
�
�
�.ourQTMstartcode
�eSTMFD   R13!,{R1,R2,R14}        ;copy & convert toon at [R12,#1000] to RMA, and start QTM playing
�LDR     R0,[R12,#1000]
�BL      flashconv
�MOV     R0,#%010
�MOV     R1,#%000
�:SWI     "QTM_MusicOptions"      ;repeat at end of song
�MOV     R0,#24
�?SWI     "QTM_SetSampleSpeed"    ;high quality music samples
�MOV     R0,#4
�MOV     R1,#0
�MVN     R2,#0
�7SWI     "QTM_SoundControl"      ;4 channels, no TSS
�SWI     "QTM_Start"
�:
�MOV     R0,#0
�ADR     R1,qtmintaddr
�MOV     R2,R12
� SWI     "QTM_MusicInterrupt"
�:
�:MOV     R0,#0                   ;has to result in R0=0
�LDMFD   R13!,{R1,R2,PC}^
�
�
�.ourQTMstopcode
�9STMFD   R13!,{R1,R14}           ;qtmpause to stop QTM
�SWI     "QTM_Pause"
�MOV     R0,#0
�MOV     R1,#0
�;SWI     "QTM_MusicInterrupt"    ;cancel music interrupt
�:
�:MOV     R0,#4                   ;has to result in R0=4
�LDMFD   R13!,{R1,PC}^
�
�
�.qtmintaddr
�TEQ     R0,#0
�TEQEQ   R1,#%1
�MOVNES  PC,R14
�STMFD   R13!,{R14}
�NSTR     R0,[R12,#1000]          ;flag to Flashback, to say music has ended
�LDMFD   R13!,{PC}^
�
�
�.qtmjingintaddr
�TEQ     R0,#0
�TEQEQ   R1,#%1
�MOVNES  PC,R14
�STMFD   R13!,{R14}
�OSTR     R0,[R12,#960]           ;flag to Flashback, to say jingle has ended
�LDMFD   R13!,{PC}^
�
�
�B.flashconv                      ;converts FB song at R0 to QTM
�]:P%+=flashlen%
�
[OPT opt%
�	ALIGN
�
�
�
.jingconv
�]:P%+=jingconvlen%
�
[OPT opt%
�]
�
�


� �linkup
3ș"OS_ClaimProcessorVector",2 � (%1<<8),trapper
�

� �claimRMA(size%)
%ș "OS_Module",6,,,size% � ,,ptr%
		=ptr%


� �clearRMA(size%)
ș "OS_Module",7,,size%

�
�
00000000  0d 00 01 27 f4 20 a9 20  53 74 65 70 68 65 6e 20  |...'. . Stephen |
00000010  48 61 72 72 69 73 6f 6e  20 2f 50 68 6f 65 6e 69  |Harrison /Phoeni|
00000020  78 2f 20 31 39 39 36 0d  00 02 05 f4 0d 00 03 3e  |x/ 1996........>|
00000030  f4 20 69 6e 20 72 65 73  70 6f 6e 73 65 20 74 6f  |. in response to|
00000040  20 73 6f 66 74 77 61 72  65 20 72 65 71 75 65 73  | software reques|
00000050  74 20 66 6f 72 20 41 63  6f 72 6e 20 55 73 65 72  |t for Acorn User|
00000060  20 50 44 20 63 6f 6c 75  6d 6e 0d 00 04 05 f4 0d  | PD column......|
00000070  00 05 28 f4 20 53 79 6e  74 61 78 3a 20 2a 52 75  |..(. Syntax: *Ru|
00000080  6e 20 21 52 75 6e 49 6d  61 67 65 20 5b 43 6c 65  |n !RunImage [Cle|
00000090  61 72 54 72 61 70 5d 0d  00 06 05 f4 0d 00 07 3f  |arTrap]........?|
000000a0  f4 20 54 68 65 20 64 65  66 61 75 6c 74 2c 20 77  |. The default, w|
000000b0  69 74 68 20 6e 6f 20 70  61 72 61 6d 73 2c 20 69  |ith no params, i|
000000c0  73 20 74 6f 20 73 65 74  20 74 68 65 20 46 6c 61  |s to set the Fla|
000000d0  73 68 62 61 63 6b 20 74  72 61 70 0d 00 08 05 3a  |shback trap....:|
000000e0  0d 00 09 11 76 65 72 73  69 6f 6e 25 3d 31 2e 30  |....version%=1.0|
000000f0  30 0d 00 0a 19 76 65 72  73 69 6f 6e 25 3d 76 65  |0....version%=ve|
00000100  72 73 69 6f 6e 25 2a 31  30 30 0d 00 0b 05 3a 0d  |rsion%*100....:.|
00000110  00 0c 18 c8 99 22 4f 53  5f 47 65 74 45 6e 76 22  |....."OS_GetEnv"|
00000120  20 b8 20 65 6e 76 24 0d  00 0d 15 63 6f 75 6e 74  | . env$....count|
00000130  62 61 63 6b 3d a9 65 6e  76 24 2b 31 0d 00 0e 54  |back=.env$+1...T|
00000140  f5 3a 63 6f 75 6e 74 62  61 63 6b 2d 3d 31 3a fd  |.:countback-=1:.|
00000150  20 c1 65 6e 76 24 2c 63  6f 75 6e 74 62 61 63 6b  | .env$,countback|
00000160  2c 31 29 3c 3e 22 20 22  20 20 20 20 20 20 20 20  |,1)<>" "        |
00000170  20 20 20 20 20 20 20 20  20 3a f4 20 73 6b 69 70  |         :. skip|
00000180  20 74 72 61 69 6c 69 6e  67 20 73 70 61 63 65 73  | trailing spaces|
00000190  0d 00 0f 54 f5 3a 63 6f  75 6e 74 62 61 63 6b 2d  |...T.:countback-|
000001a0  3d 31 3a fd 20 c1 65 6e  76 24 2c 63 6f 75 6e 74  |=1:. .env$,count|
000001b0  62 61 63 6b 2c 31 29 3d  22 20 22 20 84 20 63 6f  |back,1)=" " . co|
000001c0  75 6e 74 62 61 63 6b 3c  3d 31 20 20 3a f4 20 6e  |untback<=1  :. n|
000001d0  6f 77 20 61 74 20 73 70  61 63 65 20 62 34 20 70  |ow at space b4 p|
000001e0  61 72 61 6d 0d 00 10 14  e7 20 63 6f 75 6e 74 62  |aram..... countb|
000001f0  61 63 6b 3c 3d 31 20 8c  0d 00 11 4e 20 65 6e 76  |ack<=1 ....N env|
00000200  24 3d 22 53 65 74 54 72  61 70 22 20 20 20 20 20  |$="SetTrap"     |
00000210  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000220  20 20 20 20 20 20 20 20  20 20 20 20 3a f4 20 64  |            :. d|
00000230  65 66 61 75 6c 74 20 74  6f 20 73 65 74 20 74 68  |efault to set th|
00000240  65 20 74 72 61 70 0d 00  12 05 cc 0d 00 13 20 20  |e trap........  |
00000250  65 6e 76 24 3d c2 65 6e  76 24 2c a9 65 6e 76 24  |env$=.env$,.env$|
00000260  2d 63 6f 75 6e 74 62 61  63 6b 29 0d 00 14 2e 20  |-countback).... |
00000270  e7 20 c0 65 6e 76 24 2c  39 29 3d 22 43 6c 65 61  |. .env$,9)="Clea|
00000280  72 54 72 61 70 22 20 8c  20 65 6e 76 24 3d 22 43  |rTrap" . env$="C|
00000290  6c 65 61 72 54 72 61 70  22 0d 00 15 4a 20 e7 20  |learTrap"...J . |
000002a0  65 6e 76 24 3c 3e 22 43  6c 65 61 72 54 72 61 70  |env$<>"ClearTrap|
000002b0  22 20 8c 20 65 6e 76 24  3d 22 53 65 74 54 72 61  |" . env$="SetTra|
000002c0  70 22 20 20 20 20 20 20  20 3a f4 20 64 65 66 61  |p"       :. defa|
000002d0  75 6c 74 20 74 6f 20 73  65 74 20 74 68 65 20 74  |ult to set the t|
000002e0  72 61 70 0d 00 16 05 cd  0d 00 17 05 3a 0d 00 18  |rap.........:...|
000002f0  28 66 69 6c 65 25 3d 8e  22 3c 46 62 61 63 6b 50  |(file%=."<FbackP|
00000300  61 74 63 68 24 44 69 72  3e 2e 4a 69 6e 67 43 76  |atch$Dir>.JingCv|
00000310  43 6f 64 65 22 0d 00 19  18 6a 69 6e 67 63 6f 6e  |Code"....jingcon|
00000320  76 6c 65 6e 25 3d a2 23  66 69 6c 65 25 0d 00 1a  |vlen%=.#file%...|
00000330  0b d9 23 66 69 6c 65 25  0d 00 1b 05 3a 0d 00 1c  |..#file%....:...|
00000340  27 66 69 6c 65 25 3d 8e  22 3c 46 62 61 63 6b 50  |'file%=."<FbackP|
00000350  61 74 63 68 24 44 69 72  3e 2e 46 6c 61 73 68 43  |atch$Dir>.FlashC|
00000360  6f 64 65 22 0d 00 1d 15  66 6c 61 73 68 6c 65 6e  |ode"....flashlen|
00000370  25 3d a2 23 66 69 6c 65  25 0d 00 1e 0b d9 23 66  |%=.#file%.....#f|
00000380  69 6c 65 25 0d 00 1f 05  3a 0d 00 20 24 ee 85 20  |ile%....:.. $.. |
00000390  ee 20 85 20 87 3a 85 20  32 35 35 2c f6 24 2b 22  |. . .:. 255,.$+"|
000003a0  20 28 26 22 2b c3 9e 2b  22 29 22 3a e0 0d 00 21  | (&"+..+")":...!|
000003b0  05 f4 0d 00 22 20 f4 20  49 6e 74 65 72 63 65 70  |...." . Intercep|
000003c0  74 69 6e 67 20 53 57 49  20 76 65 63 74 6f 72 2e  |ting SWI vector.|
000003d0  2e 2e 0d 00 23 05 f4 0d  00 24 0b f2 67 65 74 6f  |....#....$..geto|
000003e0  6c 64 0d 00 25 09 f2 61  73 73 6d 0d 00 26 33 ff  |ld..%..assm..&3.|
000003f0  22 4c 6f 61 64 20 3c 46  62 61 63 6b 50 61 74 63  |"Load <FbackPatc|
00000400  68 24 44 69 72 3e 2e 4a  69 6e 67 43 76 43 6f 64  |h$Dir>.JingCvCod|
00000410  65 20 22 2b c3 7e 6a 69  6e 67 63 6f 6e 76 0d 00  |e "+.~jingconv..|
00000420  27 33 ff 22 4c 6f 61 64  20 3c 46 62 61 63 6b 50  |'3."Load <FbackP|
00000430  61 74 63 68 24 44 69 72  3e 2e 46 6c 61 73 68 43  |atch$Dir>.FlashC|
00000440  6f 64 65 20 22 2b c3 7e  66 6c 61 73 68 63 6f 6e  |ode "+.~flashcon|
00000450  76 0d 00 28 1e f2 6c 69  6e 6b 75 70 3a f4 20 50  |v..(..linkup:. P|
00000460  52 49 4e 54 22 49 6e 73  74 61 6c 6c 65 64 22 0d  |RINT"Installed".|
00000470  00 29 05 f4 0d 00 2a 1e  f4 20 2e 2e 2e 69 6e 73  |.)....*.. ...ins|
00000480  74 61 6c 6c 61 74 69 6f  6e 20 63 6f 6d 70 6c 65  |tallation comple|
00000490  74 65 0d 00 2b 05 f4 0d  00 2c 05 e0 0d 00 2d 04  |te..+....,....-.|
000004a0  0d 00 2e 04 0d 00 2f 0d  dd 20 f2 67 65 74 6f 6c  |....../.. .getol|
000004b0  64 0d 00 30 0f 53 50 3d  31 33 3a 4c 52 3d 31 34  |d..0.SP=13:LR=14|
000004c0  0d 00 31 11 63 6f 64 65  6c 65 6e 25 3d 31 30 32  |..1.codelen%=102|
000004d0  34 0d 00 32 19 de 20 71  75 69 63 6b 63 6f 64 65  |4..2.. quickcode|
000004e0  25 20 63 6f 64 65 6c 65  6e 25 0d 00 33 15 e3 20  |% codelen%..3.. |
000004f0  6f 70 74 25 3d 38 20 b8  20 31 30 20 88 20 32 0d  |opt%=8 . 10 . 2.|
00000500  00 34 28 50 25 3d 71 75  69 63 6b 63 6f 64 65 25  |.4(P%=quickcode%|
00000510  3a 4c 25 3d 71 75 69 63  6b 63 6f 64 65 25 2b 63  |:L%=quickcode%+c|
00000520  6f 64 65 6c 65 6e 25 0d  00 35 0d 5b 4f 50 54 20  |odelen%..5.[OPT |
00000530  6f 70 74 25 0d 00 36 0d  2e 72 65 61 64 73 77 69  |opt%..6..readswi|
00000540  76 0d 00 37 1c 53 54 4d  46 44 20 20 20 53 50 20  |v..7.STMFD   SP |
00000550  21 2c 7b 52 31 2d 52 31  32 2c 4c 52 7d 0d 00 38  |!,{R1-R12,LR}..8|
00000560  17 53 57 49 20 20 20 20  20 22 4f 53 5f 49 6e 74  |.SWI     "OS_Int|
00000570  4f 66 66 22 0d 00 39 11  4d 4f 56 20 20 20 20 20  |Off"..9.MOV     |
00000580  52 30 2c 23 32 0d 00 3a  17 84 52 20 20 20 20 20  |R0,#2..:..R     |
00000590  52 30 2c 52 30 2c 23 25  31 3c 3c 38 0d 00 3b 17  |R0,R0,#%1<<8..;.|
000005a0  41 44 52 20 20 20 20 20  52 31 2c 74 65 6d 70 73  |ADR     R1,temps|
000005b0  77 69 76 0d 00 3c 25 53  57 49 20 20 20 20 20 22  |wiv..<%SWI     "|
000005c0  4f 53 5f 43 6c 61 69 6d  50 72 6f 63 65 73 73 6f  |OS_ClaimProcesso|
000005d0  72 56 65 63 74 6f 72 22  0d 00 3d 1a 53 54 52 20  |rVector"..=.STR |
000005e0  20 20 20 20 52 31 2c 63  75 72 72 65 6e 74 53 57  |    R1,currentSW|
000005f0  49 76 0d 00 3e 17 41 44  52 20 20 20 20 20 52 32  |Iv..>.ADR     R2|
00000600  2c 74 65 6d 70 73 77 69  76 0d 00 3f 1b 4d 4f 56  |,tempswiv..?.MOV|
00000610  20 20 20 20 20 52 30 2c  23 32 20 84 20 28 25 30  |     R0,#2 . (%0|
00000620  3c 3c 38 29 0d 00 40 25  53 57 49 20 20 20 20 20  |<<8)..@%SWI     |
00000630  22 4f 53 5f 43 6c 61 69  6d 50 72 6f 63 65 73 73  |"OS_ClaimProcess|
00000640  6f 72 56 65 63 74 6f 72  22 0d 00 41 16 53 57 49  |orVector"..A.SWI|
00000650  20 20 20 20 20 22 4f 53  5f 49 6e 74 4f 6e 22 0d  |     "OS_IntOn".|
00000660  00 42 1a 4c 44 52 20 20  20 20 20 52 30 2c 63 75  |.B.LDR     R0,cu|
00000670  72 72 65 6e 74 53 57 49  76 0d 00 43 1d 4c 44 4d  |rrentSWIv..C.LDM|
00000680  46 44 20 20 20 53 50 20  21 2c 7b 52 31 2d 52 31  |FD   SP !,{R1-R1|
00000690  32 2c 50 43 7d 5e 0d 00  44 04 0d 00 45 0d 2e 74  |2,PC}^..D...E..t|
000006a0  65 6d 70 73 77 69 76 0d  00 46 1a 4c 44 52 20 20  |empswiv..F.LDR  |
000006b0  20 20 20 50 43 2c 63 75  72 72 65 6e 74 53 57 49  |   PC,currentSWI|
000006c0  76 0d 00 47 04 0d 00 48  10 2e 63 75 72 72 65 6e  |v..G...H..curren|
000006d0  74 53 57 49 76 0d 00 49  0d 45 51 55 44 20 20 20  |tSWIv..I.EQUD   |
000006e0  20 30 0d 00 4a 05 5d 0d  00 4b 05 ed 0d 00 4c 05  | 0..J.]..K....L.|
000006f0  3a 0d 00 4d 55 73 77 69  68 61 6e 64 6c 65 72 3d  |:..MUswihandler=|
00000700  ba 28 72 65 61 64 73 77  69 76 29 20 20 20 20 20  |.(readswiv)     |
00000710  20 20 20 20 20 20 20 20  20 20 20 3a f4 20 73 68  |           :. sh|
00000720  6f 75 6c 64 20 77 6f 72  6b 20 6f 6e 20 61 6c 6c  |ould work on all|
00000730  20 63 6f 6d 70 73 2e 20  69 6e 63 2e 20 53 74 6f  | comps. inc. Sto|
00000740  6e 67 41 52 4d 21 0d 00  4e 1e e7 20 24 28 73 77  |ngARM!..N.. $(sw|
00000750  69 68 61 6e 64 6c 65 72  2d 38 29 3d 22 46 42 54  |ihandler-8)="FBT|
00000760  50 22 20 8c 0d 00 4f 4f  20 3a 20 20 20 20 20 20  |P" ...OO :      |
00000770  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000790  20 20 20 20 20 20 20 20  3a f4 20 65 6e 73 75 72  |        :. ensur|
000007a0  65 20 69 74 20 69 73 20  6f 75 72 20 72 6f 75 74  |e it is our rout|
000007b0  69 6e 65 0d 00 50 55 20  6f 6c 64 73 77 69 3d 21  |ine..PU oldswi=!|
000007c0  28 73 77 69 68 61 6e 64  6c 65 72 2d 31 32 29 20  |(swihandler-12) |
000007d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000007e0  20 20 20 20 20 20 20 3a  f4 20 67 65 74 20 6f 6c  |       :. get ol|
000007f0  64 20 63 6f 6e 74 65 6e  74 73 20 6f 66 20 53 57  |d contents of SW|
00000800  49 20 76 65 63 74 6f 72  0d 00 51 5f 20 e7 20 65  |I vector..Q_ . e|
00000810  6e 76 24 3d 22 53 65 74  54 72 61 70 22 20 8c 20  |nv$="SetTrap" . |
00000820  f4 20 50 52 49 4e 54 22  53 74 69 6c 6c 20 74 68  |. PRINT"Still th|
00000830  65 72 65 22 3a 45 4e 44  20 20 3a 52 45 4d 20 69  |ere":END  :REM i|
00000840  66 20 73 65 74 74 69 6e  67 20 61 6e 64 20 69 74  |f setting and it|
00000850  27 73 20 61 6c 72 65 61  64 79 20 74 68 65 72 65  |'s already there|
00000860  2c 20 65 78 69 74 21 0d  00 52 3f 20 c8 99 20 22  |, exit!..R? .. "|
00000870  58 4f 53 5f 43 6c 61 69  6d 50 72 6f 63 65 73 73  |XOS_ClaimProcess|
00000880  6f 72 56 65 63 74 6f 72  22 2c 32 2c 6f 6c 64 73  |orVector",2,olds|
00000890  77 69 2c 73 77 69 68 61  6e 64 6c 65 72 20 b8 20  |wi,swihandler . |
000008a0  3b 66 6c 61 67 73 0d 00  53 59 20 e7 20 28 66 6c  |;flags..SY . (fl|
000008b0  61 67 73 20 80 20 31 29  3d 30 20 8c 20 f2 63 6c  |ags . 1)=0 . .cl|
000008c0  65 61 72 52 4d 41 28 73  77 69 68 61 6e 64 6c 65  |earRMA(swihandle|
000008d0  72 2d 31 32 29 3a f4 20  50 52 49 4e 54 22 43 6c  |r-12):. PRINT"Cl|
000008e0  65 61 72 65 64 22 20 45  4c 53 45 20 50 52 49 4e  |eared" ELSE PRIN|
000008f0  54 22 43 61 6e 6e 6f 74  20 63 6c 65 61 72 22 0d  |T"Cannot clear".|
00000900  00 54 54 20 20 20 20 20  20 20 20 20 20 20 20 20  |.TT             |
00000910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000930  20 20 20 3a f4 20 63 6c  65 61 72 20 69 66 20 73  |   :. clear if s|
00000940  77 69 76 20 63 61 6e 20  62 65 20 72 65 73 74 6f  |wiv can be resto|
00000950  72 65 64 0d 00 55 05 cd  0d 00 56 1a e7 20 65 6e  |red..U....V.. en|
00000960  76 24 3d 22 43 6c 65 61  72 54 72 61 70 22 20 8c  |v$="ClearTrap" .|
00000970  20 e0 0d 00 57 05 e1 0d  00 58 04 0d 00 59 04 0d  | ...W....X...Y..|
00000980  00 5a 0b dd 20 f2 61 73  73 6d 0d 00 5b 11 63 6f  |.Z.. .assm..[.co|
00000990  64 65 6c 65 6e 25 3d 34  30 39 36 0d 00 5c 1d 63  |delen%=4096..\.c|
000009a0  6f 64 65 25 3d a4 63 6c  61 69 6d 52 4d 41 28 63  |ode%=.claimRMA(c|
000009b0  6f 64 65 6c 65 6e 25 29  0d 00 5d 15 e3 20 6f 70  |odelen%)..].. op|
000009c0  74 25 3d 38 20 b8 20 31  30 20 88 20 32 0d 00 5e  |t%=8 . 10 . 2..^|
000009d0  1b 50 25 3d 63 6f 64 65  25 3a 4c 25 3d 50 25 2b  |.P%=code%:L%=P%+|
000009e0  63 6f 64 65 6c 65 6e 25  0d 00 5f 0d 5b 4f 50 54  |codelen%.._.[OPT|
000009f0  20 6f 70 74 25 0d 00 60  10 2e 6f 6c 64 63 6f 6e  | opt%..`..oldcon|
00000a00  74 65 6e 74 73 0d 00 61  16 45 51 55 44 20 20 20  |tents..a.EQUD   |
00000a10  20 73 77 69 68 61 6e 64  6c 65 72 0d 00 62 12 45  | swihandler..b.E|
00000a20  51 55 53 20 20 20 20 22  46 42 54 50 22 0d 00 63  |QUS    "FBTP"..c|
00000a30  0e 45 51 55 44 20 20 20  20 31 33 0d 00 64 04 0d  |.EQUD    13..d..|
00000a40  00 65 04 0d 00 66 0c 2e  74 72 61 70 70 65 72 0d  |.e...f..trapper.|
00000a50  00 67 2f 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.g/STMFD   R13!,|
00000a60  7b 52 31 30 2d 52 31 32  2c 52 31 34 7d 20 20 20  |{R10-R12,R14}   |
00000a70  20 20 20 3b 73 74 6f 72  65 20 72 65 67 73 0d 00  |   ;store regs..|
00000a80  68 58 42 49 43 20 20 20  20 20 52 31 32 2c 52 31  |hXBIC     R12,R1|
00000a90  34 2c 23 26 46 43 30 30  30 30 30 33 20 20 20 20  |4,#&FC000003    |
00000aa0  20 20 3b 6d 61 73 6b 20  6f 66 66 20 66 6c 61 67  |  ;mask off flag|
00000ab0  73 20 61 6e 64 20 70 72  6f 63 65 73 73 6f 72 20  |s and processor |
00000ac0  6d 6f 64 65 73 20 66 72  6f 6d 20 72 65 74 75 72  |modes from retur|
00000ad0  6e 20 61 64 64 72 0d 00  69 48 4c 44 52 20 20 20  |n addr..iHLDR   |
00000ae0  20 20 52 31 31 2c 5b 52  31 32 2c 23 2d 34 5d 20  |  R11,[R12,#-4] |
00000af0  20 20 20 20 20 20 20 20  20 20 3b 6c 6f 61 64 20  |          ;load |
00000b00  74 68 65 20 53 57 49 20  63 61 6c 6c 20 77 68 69  |the SWI call whi|
00000b10  63 68 20 63 61 6c 6c 65  64 20 74 68 69 73 0d 00  |ch called this..|
00000b20  6a 4c 42 49 43 20 20 20  20 20 52 31 31 2c 52 31  |jLBIC     R11,R1|
00000b30  31 2c 23 26 46 46 30 30  30 30 30 30 20 20 20 20  |1,#&FF000000    |
00000b40  20 20 3b 6d 61 73 6b 20  6f 66 66 20 62 69 74 73  |  ;mask off bits|
00000b50  20 6f 66 20 63 6f 6e 74  72 6f 6c 6c 65 72 20 53  | of controller S|
00000b60  57 49 20 63 6f 6d 6d 61  6e 64 0d 00 6b 38 42 49  |WI command..k8BI|
00000b70  43 20 20 20 20 20 52 31  31 2c 52 31 31 2c 23 26  |C     R11,R11,#&|
00000b80  30 30 30 32 30 30 30 30  20 20 20 20 20 20 3b 6d  |00020000      ;m|
00000b90  61 73 6b 20 6f 66 66 20  6f 74 68 65 72 20 62 69  |ask off other bi|
00000ba0  74 73 0d 00 6c 38 43 4d  50 20 20 20 20 20 52 31  |ts..l8CMP     R1|
00000bb0  31 2c 23 26 31 46 20 20  20 20 20 20 20 20 20 20  |1,#&1F          |
00000bc0  20 20 20 20 20 20 3b 69  73 20 69 74 20 4f 53 5f  |      ;is it OS_|
00000bd0  43 6c 61 69 6d 20 53 57  49 3f 0d 00 6d 33 43 4d  |Claim SWI?..m3CM|
00000be0  50 4e 45 20 20 20 52 31  31 2c 23 26 32 30 20 20  |PNE   R11,#&20  |
00000bf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 6f  |              ;o|
00000c00  72 20 4f 53 5f 52 65 6c  65 61 73 65 3f 0d 00 6e  |r OS_Release?..n|
00000c10  46 43 4d 50 45 51 20 20  20 52 30 2c 23 26 31 43  |FCMPEQ   R0,#&1C|
00000c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000c30  20 3b 69 66 20 69 74 20  77 61 73 2c 20 69 73 20  | ;if it was, is |
00000c40  74 68 69 73 20 61 20 31  30 30 48 7a 20 63 6c 61  |this a 100Hz cla|
00000c50  69 6d 3f 0d 00 6f 05 3a  0d 00 70 0a 2e 6e 6f 74  |im?..o.:..p..not|
00000c60  6d 65 0d 00 71 3a 4c 44  4d 4e 45 46 44 20 52 31  |me..q:LDMNEFD R1|
00000c70  33 21 2c 7b 52 31 30 2d  52 31 32 2c 52 31 34 7d  |3!,{R10-R12,R14}|
00000c80  20 20 20 20 20 20 3b 69  66 20 6e 6f 74 2e 2e 2e  |      ;if not...|
00000c90  20 72 65 6c 6f 61 64 20  72 65 67 73 0d 00 72 40  | reload regs..r@|
00000ca0  42 4e 45 20 20 20 20 20  73 77 69 68 61 6e 64 6c  |BNE     swihandl|
00000cb0  65 72 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |er              |
00000cc0  3b 67 6f 20 61 77 61 79  20 74 6f 20 6f 72 69 67  |;go away to orig|
00000cd0  6e 61 6c 20 68 61 6e 64  6c 65 72 21 0d 00 73 05  |nal handler!..s.|
00000ce0  3a 0d 00 74 15 80 20 20  20 20 20 52 31 30 2c 52  |:..t..     R10,R|
00000cf0  31 2c 23 26 46 46 0d 00  75 14 54 45 51 20 20 20  |1,#&FF..u.TEQ   |
00000d00  20 20 52 31 30 2c 23 26  33 43 0d 00 76 11 42 4e  |  R10,#&3C..v.BN|
00000d10  45 20 20 20 20 20 6e 6f  74 6d 65 0d 00 77 17 80  |E     notme..w..|
00000d20  20 20 20 20 20 52 31 30  2c 52 31 2c 23 26 46 46  |     R10,R1,#&FF|
00000d30  30 30 0d 00 78 16 54 45  51 20 20 20 20 20 52 31  |00..x.TEQ     R1|
00000d40  30 2c 23 26 44 35 30 30  0d 00 79 11 42 4e 45 20  |0,#&D500..y.BNE |
00000d50  20 20 20 20 6e 6f 74 6d  65 0d 00 7a 19 4d 4f 56  |    notme..z.MOV|
00000d60  53 20 20 20 20 52 31 30  2c 52 31 2c 4c 53 52 23  |S    R10,R1,LSR#|
00000d70  31 36 0d 00 7b 60 42 4e  45 20 20 20 20 20 6e 6f  |16..{`BNE     no|
00000d80  74 6d 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |tme             |
00000d90  20 20 20 20 20 20 3b 63  68 65 63 6b 20 74 68 61  |      ;check tha|
00000da0  74 20 52 31 20 76 61 6c  75 65 20 69 73 20 61 73  |t R1 value is as|
00000db0  20 65 78 70 65 63 74 65  64 2c 20 69 66 20 73 6f  | expected, if so|
00000dc0  20 77 65 20 63 61 6e 20  69 6e 74 65 72 63 65 70  | we can intercep|
00000dd0  74 21 0d 00 7c 05 3a 0d  00 7d 37 43 4d 50 20 20  |t!..|.:..}7CMP  |
00000de0  20 20 20 52 31 31 2c 23  26 32 30 20 20 20 20 20  |   R11,#&20     |
00000df0  20 20 20 20 20 20 20 20  20 20 20 3b 77 61 73 20  |           ;was |
00000e00  69 74 20 4f 53 5f 52 65  6c 65 61 73 65 3f 0d 00  |it OS_Release?..|
00000e10  7e 18 42 45 51 20 20 20  20 20 63 6c 65 61 72 68  |~.BEQ     clearh|
00000e20  61 6e 64 6c 65 72 0d 00  7f 05 3a 0d 00 80 18 53  |andler....:....S|
00000e30  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |TMFD   R13!,{R0-|
00000e40  52 32 7d 0d 00 81 11 4d  4f 56 20 20 20 20 20 52  |R2}....MOV     R|
00000e50  30 2c 23 34 0d 00 82 11  4d 56 4e 20 20 20 20 20  |0,#4....MVN     |
00000e60  52 31 2c 23 30 0d 00 83  11 4d 56 4e 20 20 20 20  |R1,#0....MVN    |
00000e70  20 52 32 2c 23 30 0d 00  84 1e 53 57 49 20 20 20  | R2,#0....SWI   |
00000e80  20 20 22 51 54 4d 5f 53  6f 75 6e 64 43 6f 6e 74  |  "QTM_SoundCont|
00000e90  72 6f 6c 22 0d 00 85 05  3a 0d 00 86 18 4d 4f 56  |rol"....:....MOV|
00000ea0  20 20 20 20 20 20 20 20  52 30 2c 23 26 44 33 30  |        R0,#&D30|
00000eb0  30 0d 00 87 3b 84 52 20  20 20 20 20 52 30 2c 52  |0...;.R     R0,R|
00000ec0  30 2c 23 26 30 30 37 34  20 20 20 20 20 20 20 20  |0,#&0074        |
00000ed0  20 20 20 20 3b 28 68 65  72 65 20 72 32 20 68 61  |    ;(here r2 ha|
00000ee0  73 20 6a 69 6e 67 20 61  64 64 72 29 0d 00 88 1d  |s jing addr)....|
00000ef0  41 44 52 20 20 20 20 20  52 31 2c 6f 75 72 51 54  |ADR     R1,ourQT|
00000f00  4d 6a 69 6e 67 63 6f 64  65 0d 00 89 14 53 55 42  |Mjingcode....SUB|
00000f10  20 20 20 20 20 52 31 2c  52 31 2c 52 30 0d 00 8a  |     R1,R1,R0...|
00000f20  14 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 23  |.SUB     R1,R1,#|
00000f30  38 0d 00 8b 17 4d 4f 56  20 20 20 20 20 52 31 2c  |8....MOV     R1,|
00000f40  52 31 2c 4c 53 52 23 32  0d 00 8c 41 84 52 20 20  |R1,LSR#2...A.R  |
00000f50  20 20 20 52 31 2c 52 31  2c 23 26 45 42 30 30 30  |   R1,R1,#&EB000|
00000f60  30 30 30 20 20 20 20 20  20 20 20 3b 6e 6f 77 20  |000        ;now |
00000f70  61 20 62 72 61 6e 63 68  2d 6c 69 6e 6b 20 69 6e  |a branch-link in|
00000f80  73 74 72 75 63 74 69 6f  6e 0d 00 8d 13 53 54 52  |struction....STR|
00000f90  20 20 20 20 20 52 31 2c  5b 52 30 5d 0d 00 8e 05  |     R1,[R0]....|
00000fa0  3a 0d 00 8f 18 4d 4f 56  20 20 20 20 20 20 20 20  |:....MOV        |
00000fb0  52 30 2c 23 26 44 34 30  30 0d 00 90 17 84 52 20  |R0,#&D400.....R |
00000fc0  20 20 20 20 52 30 2c 52  30 2c 23 26 30 30 41 34  |    R0,R0,#&00A4|
00000fd0  0d 00 91 1e 41 44 52 20  20 20 20 20 52 31 2c 6f  |....ADR     R1,o|
00000fe0  75 72 51 54 4d 73 74 61  72 74 63 6f 64 65 0d 00  |urQTMstartcode..|
00000ff0  92 14 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |..SUB     R1,R1,|
00001000  52 30 0d 00 93 14 53 55  42 20 20 20 20 20 52 31  |R0....SUB     R1|
00001010  2c 52 31 2c 23 38 0d 00  94 17 4d 4f 56 20 20 20  |,R1,#8....MOV   |
00001020  20 20 52 31 2c 52 31 2c  4c 53 52 23 32 0d 00 95  |  R1,R1,LSR#2...|
00001030  41 84 52 20 20 20 20 20  52 31 2c 52 31 2c 23 26  |A.R     R1,R1,#&|
00001040  45 42 30 30 30 30 30 30  20 20 20 20 20 20 20 20  |EB000000        |
00001050  3b 6e 6f 77 20 61 20 62  72 61 6e 63 68 2d 6c 69  |;now a branch-li|
00001060  6e 6b 20 69 6e 73 74 72  75 63 74 69 6f 6e 0d 00  |nk instruction..|
00001070  96 13 53 54 52 20 20 20  20 20 52 31 2c 5b 52 30  |..STR     R1,[R0|
00001080  5d 0d 00 97 05 3a 0d 00  98 18 4d 4f 56 20 20 20  |]....:....MOV   |
00001090  20 20 20 20 20 52 30 2c  23 26 44 34 30 30 0d 00  |     R0,#&D400..|
000010a0  99 17 84 52 20 20 20 20  20 52 30 2c 52 30 2c 23  |...R     R0,R0,#|
000010b0  26 30 30 44 34 0d 00 9a  1d 41 44 52 20 20 20 20  |&00D4....ADR    |
000010c0  20 52 31 2c 6f 75 72 51  54 4d 73 74 6f 70 63 6f  | R1,ourQTMstopco|
000010d0  64 65 0d 00 9b 14 53 55  42 20 20 20 20 20 52 31  |de....SUB     R1|
000010e0  2c 52 31 2c 52 30 0d 00  9c 14 53 55 42 20 20 20  |,R1,R0....SUB   |
000010f0  20 20 52 31 2c 52 31 2c  23 38 0d 00 9d 17 4d 4f  |  R1,R1,#8....MO|
00001100  56 20 20 20 20 20 52 31  2c 52 31 2c 4c 53 52 23  |V     R1,R1,LSR#|
00001110  32 0d 00 9e 41 84 52 20  20 20 20 20 52 31 2c 52  |2...A.R     R1,R|
00001120  31 2c 23 26 45 42 30 30  30 30 30 30 20 20 20 20  |1,#&EB000000    |
00001130  20 20 20 20 3b 6e 6f 77  20 61 20 62 72 61 6e 63  |    ;now a branc|
00001140  68 2d 6c 69 6e 6b 20 69  6e 73 74 72 75 63 74 69  |h-link instructi|
00001150  6f 6e 0d 00 9f 13 53 54  52 20 20 20 20 20 52 31  |on....STR     R1|
00001160  2c 5b 52 30 5d 0d 00 a0  30 4c 44 4d 46 44 20 20  |,[R0]...0LDMFD  |
00001170  20 52 31 33 21 2c 7b 52  30 2d 52 32 2c 52 31 30  | R13!,{R0-R2,R10|
00001180  2d 52 31 32 2c 50 43 7d  5e 3b 72 65 6c 6f 61 64  |-R12,PC}^;reload|
00001190  20 72 65 67 73 0d 00 a1  04 0d 00 a2 04 0d 00 a3  | regs...........|
000011a0  11 2e 63 6c 65 61 72 68  61 6e 64 6c 65 72 0d 00  |..clearhandler..|
000011b0  a4 18 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |..STMFD   R13!,{|
000011c0  52 30 2d 52 32 7d 0d 00  a5 16 53 57 49 20 20 20  |R0-R2}....SWI   |
000011d0  20 20 22 51 54 4d 5f 53  74 6f 70 22 0d 00 a6 30  |  "QTM_Stop"...0|
000011e0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
000011f0  2d 52 32 2c 52 31 30 2d  52 31 32 2c 50 43 7d 5e  |-R2,R10-R12,PC}^|
00001200  3b 72 65 6c 6f 61 64 20  72 65 67 73 0d 00 a7 04  |;reload regs....|
00001210  0d 00 a8 04 0d 00 a9 35  2e 6f 75 72 51 54 4d 6a  |.......5.ourQTMj|
00001220  69 6e 67 63 6f 64 65 20  20 20 20 20 20 20 20 20  |ingcode         |
00001230  20 20 20 20 20 20 20 20  3b 6f 6e 20 65 6e 74 72  |        ;on entr|
00001240  79 20 52 32 3d 61 64 64  72 0d 00 aa 65 53 54 4d  |y R2=addr...eSTM|
00001250  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 34  |FD   R13!,{R0-R4|
00001260  2c 52 31 34 7d 20 20 20  20 20 20 20 20 3b 63 6f  |,R14}        ;co|
00001270  70 79 20 26 20 63 6f 6e  76 65 72 74 20 74 6f 6f  |py & convert too|
00001280  6e 20 61 74 20 5b 52 31  32 2c 23 31 30 30 30 5d  |n at [R12,#1000]|
00001290  20 74 6f 20 52 4d 41 2c  20 61 6e 64 20 73 74 61  | to RMA, and sta|
000012a0  72 74 20 51 54 4d 20 70  6c 61 79 69 6e 67 0d 00  |rt QTM playing..|
000012b0  ab 11 4d 4f 56 20 20 20  20 20 52 30 2c 52 32 0d  |..MOV     R0,R2.|
000012c0  00 ac 14 42 4c 20 20 20  20 20 20 6a 69 6e 67 63  |...BL      jingc|
000012d0  6f 6e 76 0d 00 ad 14 4d  4f 56 20 20 20 20 20 52  |onv....MOV     R|
000012e0  30 2c 23 25 30 31 30 0d  00 ae 14 4d 4f 56 20 20  |0,#%010....MOV  |
000012f0  20 20 20 52 31 2c 23 25  30 31 30 0d 00 af 35 53  |   R1,#%010...5S|
00001300  57 49 20 20 20 20 20 22  51 54 4d 5f 4d 75 73 69  |WI     "QTM_Musi|
00001310  63 4f 70 74 69 6f 6e 73  22 20 20 20 20 20 20 3b  |cOptions"      ;|
00001320  73 74 6f 70 20 73 6f 6e  67 20 61 74 20 65 6e 64  |stop song at end|
00001330  0d 00 b0 12 4d 4f 56 20  20 20 20 20 52 30 2c 23  |....MOV     R0,#|
00001340  34 38 0d 00 b1 4d 53 57  49 20 20 20 20 20 22 51  |48...MSWI     "Q|
00001350  54 4d 5f 53 65 74 53 61  6d 70 6c 65 53 70 65 65  |TM_SetSampleSpee|
00001360  64 22 20 20 20 20 3b 6d  65 64 69 75 6d 20 71 75  |d"    ;medium qu|
00001370  61 6c 69 74 79 20 73 61  6d 70 6c 65 73 2c 20 61  |ality samples, a|
00001380  73 20 66 6f 72 20 46 6c  61 73 68 62 61 63 6b 0d  |s for Flashback.|
00001390  00 b2 11 4d 4f 56 20 20  20 20 20 52 30 2c 23 38  |...MOV     R0,#8|
000013a0  0d 00 b3 11 4d 4f 56 20  20 20 20 20 52 31 2c 23  |....MOV     R1,#|
000013b0  31 0d 00 b4 11 4d 56 4e  20 20 20 20 20 52 32 2c  |1....MVN     R2,|
000013c0  23 30 0d 00 b5 4f 53 57  49 20 20 20 20 20 22 51  |#0...OSWI     "Q|
000013d0  54 4d 5f 53 6f 75 6e 64  43 6f 6e 74 72 6f 6c 22  |TM_SoundControl"|
000013e0  20 20 20 20 20 20 3b 38  20 63 68 61 6e 6e 65 6c  |      ;8 channel|
000013f0  73 20 61 6e 64 20 54 72  61 6e 73 70 61 72 65 6e  |s and Transparen|
00001400  74 20 53 6f 75 6e 64 20  53 79 73 74 65 6d 20 6f  |t Sound System o|
00001410  6e 0d 00 b6 17 53 57 49  20 20 20 20 20 22 51 54  |n....SWI     "QT|
00001420  4d 5f 53 74 61 72 74 22  0d 00 b7 05 3a 0d 00 b8  |M_Start"....:...|
00001430  11 4d 4f 56 20 20 20 20  20 52 30 2c 23 30 0d 00  |.MOV     R0,#0..|
00001440  b9 1d 41 44 52 20 20 20  20 20 52 31 2c 71 74 6d  |..ADR     R1,qtm|
00001450  6a 69 6e 67 69 6e 74 61  64 64 72 0d 00 ba 12 4d  |jingintaddr....M|
00001460  4f 56 20 20 20 20 20 52  32 2c 52 31 32 0d 00 bb  |OV     R2,R12...|
00001470  20 53 57 49 20 20 20 20  20 22 51 54 4d 5f 4d 75  | SWI     "QTM_Mu|
00001480  73 69 63 49 6e 74 65 72  72 75 70 74 22 0d 00 bc  |sicInterrupt"...|
00001490  1c 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  |.LDMFD   R13!,{R|
000014a0  30 2d 52 34 2c 52 31 34  7d 0d 00 bd 42 4c 44 52  |0-R4,R14}...BLDR|
000014b0  42 20 20 20 20 52 39 2c  5b 52 32 5d 2c 23 31 20  |B    R9,[R2],#1 |
000014c0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 68 61  |             ;ha|
000014d0  73 20 74 6f 20 72 65 73  75 6c 74 20 4c 44 52 42  |s to result LDRB|
000014e0  20 52 39 2c 5b 52 32 5d  2c 23 31 0d 00 be 12 4d  | R9,[R2],#1....M|
000014f0  4f 56 53 20 20 20 20 50  43 2c 52 31 34 0d 00 bf  |OVS    PC,R14...|
00001500  04 0d 00 c0 04 0d 00 c1  14 2e 6f 75 72 51 54 4d  |..........ourQTM|
00001510  73 74 61 72 74 63 6f 64  65 0d 00 c2 65 53 54 4d  |startcode...eSTM|
00001520  46 44 20 20 20 52 31 33  21 2c 7b 52 31 2c 52 32  |FD   R13!,{R1,R2|
00001530  2c 52 31 34 7d 20 20 20  20 20 20 20 20 3b 63 6f  |,R14}        ;co|
00001540  70 79 20 26 20 63 6f 6e  76 65 72 74 20 74 6f 6f  |py & convert too|
00001550  6e 20 61 74 20 5b 52 31  32 2c 23 31 30 30 30 5d  |n at [R12,#1000]|
00001560  20 74 6f 20 52 4d 41 2c  20 61 6e 64 20 73 74 61  | to RMA, and sta|
00001570  72 74 20 51 54 4d 20 70  6c 61 79 69 6e 67 0d 00  |rt QTM playing..|
00001580  c3 1a 4c 44 52 20 20 20  20 20 52 30 2c 5b 52 31  |..LDR     R0,[R1|
00001590  32 2c 23 31 30 30 30 5d  0d 00 c4 15 42 4c 20 20  |2,#1000]....BL  |
000015a0  20 20 20 20 66 6c 61 73  68 63 6f 6e 76 0d 00 c5  |    flashconv...|
000015b0  14 4d 4f 56 20 20 20 20  20 52 30 2c 23 25 30 31  |.MOV     R0,#%01|
000015c0  30 0d 00 c6 14 4d 4f 56  20 20 20 20 20 52 31 2c  |0....MOV     R1,|
000015d0  23 25 30 30 30 0d 00 c7  3a 53 57 49 20 20 20 20  |#%000...:SWI    |
000015e0  20 22 51 54 4d 5f 4d 75  73 69 63 4f 70 74 69 6f  | "QTM_MusicOptio|
000015f0  6e 73 22 20 20 20 20 20  20 3b 72 65 70 65 61 74  |ns"      ;repeat|
00001600  20 61 74 20 65 6e 64 20  6f 66 20 73 6f 6e 67 0d  | at end of song.|
00001610  00 c8 12 4d 4f 56 20 20  20 20 20 52 30 2c 23 32  |...MOV     R0,#2|
00001620  34 0d 00 c9 3f 53 57 49  20 20 20 20 20 22 51 54  |4...?SWI     "QT|
00001630  4d 5f 53 65 74 53 61 6d  70 6c 65 53 70 65 65 64  |M_SetSampleSpeed|
00001640  22 20 20 20 20 3b 68 69  67 68 20 71 75 61 6c 69  |"    ;high quali|
00001650  74 79 20 6d 75 73 69 63  20 73 61 6d 70 6c 65 73  |ty music samples|
00001660  0d 00 ca 11 4d 4f 56 20  20 20 20 20 52 30 2c 23  |....MOV     R0,#|
00001670  34 0d 00 cb 11 4d 4f 56  20 20 20 20 20 52 31 2c  |4....MOV     R1,|
00001680  23 30 0d 00 cc 11 4d 56  4e 20 20 20 20 20 52 32  |#0....MVN     R2|
00001690  2c 23 30 0d 00 cd 37 53  57 49 20 20 20 20 20 22  |,#0...7SWI     "|
000016a0  51 54 4d 5f 53 6f 75 6e  64 43 6f 6e 74 72 6f 6c  |QTM_SoundControl|
000016b0  22 20 20 20 20 20 20 3b  34 20 63 68 61 6e 6e 65  |"      ;4 channe|
000016c0  6c 73 2c 20 6e 6f 20 54  53 53 0d 00 ce 17 53 57  |ls, no TSS....SW|
000016d0  49 20 20 20 20 20 22 51  54 4d 5f 53 74 61 72 74  |I     "QTM_Start|
000016e0  22 0d 00 cf 05 3a 0d 00  d0 11 4d 4f 56 20 20 20  |"....:....MOV   |
000016f0  20 20 52 30 2c 23 30 0d  00 d1 19 41 44 52 20 20  |  R0,#0....ADR  |
00001700  20 20 20 52 31 2c 71 74  6d 69 6e 74 61 64 64 72  |   R1,qtmintaddr|
00001710  0d 00 d2 12 4d 4f 56 20  20 20 20 20 52 32 2c 52  |....MOV     R2,R|
00001720  31 32 0d 00 d3 20 53 57  49 20 20 20 20 20 22 51  |12... SWI     "Q|
00001730  54 4d 5f 4d 75 73 69 63  49 6e 74 65 72 72 75 70  |TM_MusicInterrup|
00001740  74 22 0d 00 d4 05 3a 0d  00 d5 3a 4d 4f 56 20 20  |t"....:...:MOV  |
00001750  20 20 20 52 30 2c 23 30  20 20 20 20 20 20 20 20  |   R0,#0        |
00001760  20 20 20 20 20 20 20 20  20 20 20 3b 68 61 73 20  |           ;has |
00001770  74 6f 20 72 65 73 75 6c  74 20 69 6e 20 52 30 3d  |to result in R0=|
00001780  30 0d 00 d6 1c 4c 44 4d  46 44 20 20 20 52 31 33  |0....LDMFD   R13|
00001790  21 2c 7b 52 31 2c 52 32  2c 50 43 7d 5e 0d 00 d7  |!,{R1,R2,PC}^...|
000017a0  04 0d 00 d8 04 0d 00 d9  13 2e 6f 75 72 51 54 4d  |..........ourQTM|
000017b0  73 74 6f 70 63 6f 64 65  0d 00 da 39 53 54 4d 46  |stopcode...9STMF|
000017c0  44 20 20 20 52 31 33 21  2c 7b 52 31 2c 52 31 34  |D   R13!,{R1,R14|
000017d0  7d 20 20 20 20 20 20 20  20 20 20 20 3b 71 74 6d  |}           ;qtm|
000017e0  70 61 75 73 65 20 74 6f  20 73 74 6f 70 20 51 54  |pause to stop QT|
000017f0  4d 0d 00 db 17 53 57 49  20 20 20 20 20 22 51 54  |M....SWI     "QT|
00001800  4d 5f 50 61 75 73 65 22  0d 00 dc 11 4d 4f 56 20  |M_Pause"....MOV |
00001810  20 20 20 20 52 30 2c 23  30 0d 00 dd 11 4d 4f 56  |    R0,#0....MOV|
00001820  20 20 20 20 20 52 31 2c  23 30 0d 00 de 3b 53 57  |     R1,#0...;SW|
00001830  49 20 20 20 20 20 22 51  54 4d 5f 4d 75 73 69 63  |I     "QTM_Music|
00001840  49 6e 74 65 72 72 75 70  74 22 20 20 20 20 3b 63  |Interrupt"    ;c|
00001850  61 6e 63 65 6c 20 6d 75  73 69 63 20 69 6e 74 65  |ancel music inte|
00001860  72 72 75 70 74 0d 00 df  05 3a 0d 00 e0 3a 4d 4f  |rrupt....:...:MO|
00001870  56 20 20 20 20 20 52 30  2c 23 34 20 20 20 20 20  |V     R0,#4     |
00001880  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 68  |              ;h|
00001890  61 73 20 74 6f 20 72 65  73 75 6c 74 20 69 6e 20  |as to result in |
000018a0  52 30 3d 34 0d 00 e1 19  4c 44 4d 46 44 20 20 20  |R0=4....LDMFD   |
000018b0  52 31 33 21 2c 7b 52 31  2c 50 43 7d 5e 0d 00 e2  |R13!,{R1,PC}^...|
000018c0  04 0d 00 e3 04 0d 00 e4  0f 2e 71 74 6d 69 6e 74  |..........qtmint|
000018d0  61 64 64 72 0d 00 e5 11  54 45 51 20 20 20 20 20  |addr....TEQ     |
000018e0  52 30 2c 23 30 0d 00 e6  12 54 45 51 45 51 20 20  |R0,#0....TEQEQ  |
000018f0  20 52 31 2c 23 25 31 0d  00 e7 12 4d 4f 56 4e 45  | R1,#%1....MOVNE|
00001900  53 20 20 50 43 2c 52 31  34 0d 00 e8 16 53 54 4d  |S  PC,R14....STM|
00001910  46 44 20 20 20 52 31 33  21 2c 7b 52 31 34 7d 0d  |FD   R13!,{R14}.|
00001920  00 e9 4e 53 54 52 20 20  20 20 20 52 30 2c 5b 52  |..NSTR     R0,[R|
00001930  31 32 2c 23 31 30 30 30  5d 20 20 20 20 20 20 20  |12,#1000]       |
00001940  20 20 20 3b 66 6c 61 67  20 74 6f 20 46 6c 61 73  |   ;flag to Flas|
00001950  68 62 61 63 6b 2c 20 74  6f 20 73 61 79 20 6d 75  |hback, to say mu|
00001960  73 69 63 20 68 61 73 20  65 6e 64 65 64 0d 00 ea  |sic has ended...|
00001970  16 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 50  |.LDMFD   R13!,{P|
00001980  43 7d 5e 0d 00 eb 04 0d  00 ec 04 0d 00 ed 13 2e  |C}^.............|
00001990  71 74 6d 6a 69 6e 67 69  6e 74 61 64 64 72 0d 00  |qtmjingintaddr..|
000019a0  ee 11 54 45 51 20 20 20  20 20 52 30 2c 23 30 0d  |..TEQ     R0,#0.|
000019b0  00 ef 12 54 45 51 45 51  20 20 20 52 31 2c 23 25  |...TEQEQ   R1,#%|
000019c0  31 0d 00 f0 12 4d 4f 56  4e 45 53 20 20 50 43 2c  |1....MOVNES  PC,|
000019d0  52 31 34 0d 00 f1 16 53  54 4d 46 44 20 20 20 52  |R14....STMFD   R|
000019e0  31 33 21 2c 7b 52 31 34  7d 0d 00 f2 4f 53 54 52  |13!,{R14}...OSTR|
000019f0  20 20 20 20 20 52 30 2c  5b 52 31 32 2c 23 39 36  |     R0,[R12,#96|
00001a00  30 5d 20 20 20 20 20 20  20 20 20 20 20 3b 66 6c  |0]           ;fl|
00001a10  61 67 20 74 6f 20 46 6c  61 73 68 62 61 63 6b 2c  |ag to Flashback,|
00001a20  20 74 6f 20 73 61 79 20  6a 69 6e 67 6c 65 20 68  | to say jingle h|
00001a30  61 73 20 65 6e 64 65 64  0d 00 f3 16 4c 44 4d 46  |as ended....LDMF|
00001a40  44 20 20 20 52 31 33 21  2c 7b 50 43 7d 5e 0d 00  |D   R13!,{PC}^..|
00001a50  f4 04 0d 00 f5 04 0d 00  f6 42 2e 66 6c 61 73 68  |.........B.flash|
00001a60  63 6f 6e 76 20 20 20 20  20 20 20 20 20 20 20 20  |conv            |
00001a70  20 20 20 20 20 20 20 20  20 20 3b 63 6f 6e 76 65  |          ;conve|
00001a80  72 74 73 20 46 42 20 73  6f 6e 67 20 61 74 20 52  |rts FB song at R|
00001a90  30 20 74 6f 20 51 54 4d  0d 00 f7 13 5d 3a 50 25  |0 to QTM....]:P%|
00001aa0  2b 3d 66 6c 61 73 68 6c  65 6e 25 0d 00 f8 0d 5b  |+=flashlen%....[|
00001ab0  4f 50 54 20 6f 70 74 25  0d 00 f9 09 41 4c 49 47  |OPT opt%....ALIG|
00001ac0  4e 0d 00 fa 04 0d 00 fb  04 0d 00 fc 0d 2e 6a 69  |N.............ji|
00001ad0  6e 67 63 6f 6e 76 0d 00  fd 16 5d 3a 50 25 2b 3d  |ngconv....]:P%+=|
00001ae0  6a 69 6e 67 63 6f 6e 76  6c 65 6e 25 0d 00 fe 0d  |jingconvlen%....|
00001af0  5b 4f 50 54 20 6f 70 74  25 0d 00 ff 05 5d 0d 01  |[OPT opt%....]..|
00001b00  00 05 ed 0d 01 01 05 e1  0d 01 02 04 0d 01 03 0d  |................|
00001b10  dd 20 f2 6c 69 6e 6b 75  70 0d 01 04 33 c8 99 22  |. .linkup...3.."|
00001b20  4f 53 5f 43 6c 61 69 6d  50 72 6f 63 65 73 73 6f  |OS_ClaimProcesso|
00001b30  72 56 65 63 74 6f 72 22  2c 32 20 84 20 28 25 31  |rVector",2 . (%1|
00001b40  3c 3c 38 29 2c 74 72 61  70 70 65 72 0d 01 05 05  |<<8),trapper....|
00001b50  e1 0d 01 06 04 0d 01 07  16 dd 20 a4 63 6c 61 69  |.......... .clai|
00001b60  6d 52 4d 41 28 73 69 7a  65 25 29 0d 01 08 25 c8  |mRMA(size%)...%.|
00001b70  99 20 22 4f 53 5f 4d 6f  64 75 6c 65 22 2c 36 2c  |. "OS_Module",6,|
00001b80  2c 2c 73 69 7a 65 25 20  b8 20 2c 2c 70 74 72 25  |,,size% . ,,ptr%|
00001b90  0d 01 09 09 3d 70 74 72  25 0d 01 0a 04 0d 01 0b  |....=ptr%.......|
00001ba0  16 dd 20 f2 63 6c 65 61  72 52 4d 41 28 73 69 7a  |.. .clearRMA(siz|
00001bb0  65 25 29 0d 01 0c 1b c8  99 20 22 4f 53 5f 4d 6f  |e%)...... "OS_Mo|
00001bc0  64 75 6c 65 22 2c 37 2c  2c 73 69 7a 65 25 0d 01  |dule",7,,size%..|
00001bd0  0d 05 e1 0d ff                                    |.....|
00001bd5