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