Home » Archimedes archive » Zipped Apps » 1st Word Plus » WP/programs/hoare/IntSrc
WP/programs/hoare/IntSrc
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Zipped Apps » 1st Word Plus |
Filename: | WP/programs/hoare/IntSrc |
Read OK: | ✔ |
File size: | 2E5A bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >$.IntSrc 20REM Author Steve Hoare 30REM January 1989 40REM Source code for Interrupt module 50 60DIM Space &1000 70FOR I%=4 TO 7 STEP 3 80P%=0:O%=Space 90[OPT I% 100 EQUD 0; Start 110 EQUD Init 120 EQUD Final 130 EQUD Service 140 EQUD Title 150 EQUD Help 160 EQUD Table 170 EQUD 0; SWI stuff (not needed) 180 EQUD 0; SWI stuff 190 EQUD 0; SWI stuff 200 EQUD 0; SWI stuff 210.Help 220 EQUS "Prog interrupt":EQUB 9:EQUS "1.00 (15 Jan 1989)" 230 EQUB 0 240.Title 250 EQUS "IntModule" 260 EQUB 0 270 ALIGN 280.Table 290 EQUS "Interrupt" 300 EQUB 0 310 ALIGN 320 EQUD Interrupt 330 EQUD &FF0001 ; at least 1 parameter, no maximum, not GSTransed 340 EQUD InterruptSyn 350 EQUD InterruptHelp 360 EQUS "Freeze" 370 EQUB 0 380 ALIGN 390 EQUD Freeze 400 EQUD 0 410 EQUD FreezeSyn 420 EQUD FreezeHelp 430 EQUD 0; End of command table 440 450.InterruptHelp 460 EQUS "*Interrupt sets up a routine to stop an application with a key press and perform a specified *command":EQUW &D0A 470 EQUS "If no command is given *commands can be typed during the interruption":EQUW &D0A 480 EQUS "*Interrupt <key> Freeze - waits until the space bar is pressed & released":EQUW &D0A 490 EQUS "*Interrupt -1 disables the interrupt routine":EQUW &D0A 500.InterruptSyn 510 EQUS "Syntax: *Interrupt <ASCII code> [<*command>]" 520 EQUB 0 530 ALIGN 540 550.FreezeHelp 560 EQUS "*Freeze stops processing until the spacebar is pressed and released":EQUW &D0A 570.FreezeSyn 580 EQUS "Syntax: *Freeze":EQUB 0 590 ALIGN 600 610.Freeze 620 STMFD R13!,{R0-R3,R14} 630 MOV R0,#129 640.FreezeLoop1 650 MVN R1,#98 660 MOV R2,#255 670 SWI "OS_Byte" 680 CMP R1,#255 690 CMPEQ R2,#255 700 BNE FreezeLoop1 710.FreezeLoop2 720 MVN R1,#98 730 MOV R2,#255 740 SWI "OS_Byte" 750 CMP R1,#255 760 CMPEQ R2,#255 770 BEQ FreezeLoop2 780 MOV R0,#21 790 MOV R1,#0 800 SWI "OS_Byte" 810 LDMFD R13!,{R0-R3,PC} 820 830.Service 840 CMP R1,#&27 \ Is this post reset 850 MOVNE PC,R14 \ Return if not 860 STMFD R13!,{R0-R2,R14} 870 LDRB R0,Active 880 CMP R0,#128 890 SUBCS R0,R0,#128 900 STRB R0,Active \ If active during reset then clear active flag 910 MOV R0,#0 920 STRB R0,Claimed \ Reset flags to indicate 930 STRB R0,Enabled \ loss of control 940 B CheckState \ Reclaim vector and enable event 950 960.Init 970 STMFD R13!,{R0-R2,R14} 980 LDRB R0,Claimed 990.CheckState 1000 CMP R0,#255 1010 BEQ Init1 \ Vector already claimed 1020 MOV R0,#255 1030 STRB R0,Claimed 1040 MOV R0,#16 \ Event vector 1050 ADR R1,EventEntry 1060 MOV R2,#0 1070 SWI "OS_Claim" 1080.Init1 1090 LDRB R0,Enabled 1100 CMP R0,#255 1110 LDMEQFD R13!,{PC} \ Event already enabled 1120 MOV R0,#255 1130 STRB R0,Enabled 1140 MOV R0,#14 \ Enable event 1150 MOV R1,#2 \ Keyboard input event 1160 SWI "OS_Byte" 1170 LDMFD R13!,{R0-R2,PC} 1180 1190.Final 1200 STMFD R13!,{R14} 1210 LDRB R0,Enabled 1220 CMP R0,#255 1230 BNE Final1 \ Already disabled 1240 MOV R0,#0 1250 STRB R0,Enabled 1260 MOV R0,#13 \ Disable event 1270 MOV R1,#2 \ Keyboard input event 1280 SWI "OS_Byte" 1290.Final1 1300 LDRB R0,Claimed 1310 CMP R0,#255 1320 LDMNEFD R13!,{PC} \ Vector already released 1330 MOV R0,#0 1340 STRB R0,Claimed 1350 MOV R0,#16 \ Event vector 1360 ADR R1,EventEntry 1370 MOV R2,#0 1380 SWI "OS_Release" 1390 LDMFD R13!,{PC} 1400 1410.Interrupt 1420 STMFD R13!,{R0-R4,R14} 1430 MOV R3,R0 1440 MOV R4,R1 1450 ADR R0,Buffer 1460.Int1 1470 LDRB R1,[R3],#1 \ Get next byte of command 1480 CMP R1,#32 \ Is it a space? 1490 MOVEQ R1,#13 \ If so convert to CR 1500 STRB R1,[R0],#1 \ Store in buffer 1510 CMP R1,#13 1520 BNE Int1 \ Not at end so get next byte 1530 ADR R0,Buffer 1540 ADR R1,RegStore 1550 MOV R2,#63 1560 SWI "XOS_EvaluateExpression" 1570 BVS Int5 1580 CMP R1,#0 \ Is it an integer? 1590 BEQ Int2 \ Yes so continue 1600.Int3 1610 ADR R0,CodeErr 1620.Int5 1630 LDMFD R13!,{R1-R5} 1640 B Error 1650.Int2 1660 CMP R2,#256 1670 BCC Int4 \ Valid code number 1680 CMN R2,#1 \ Is it -1? 1690 BNE Int3 \ No so not valid parameter 1700 LDRB R1,Active 1710 MOV R0,#0 1720 CMP R1,#128 1730 MOVCS R0,#128 1740 STRB R0,Active \ Clear the active flag 1750 LDMFD R13!,{R0-R4,PC} 1760.Int4 1770 ADR R1,Code 1780 STRB R2,[R1] \ Store the keycode required 1790 LDRB R1,Active 1800 AND R1,R1,#128 1810 ADD R1,R1,#1 1820 CMP R4,#1 \ Only one parameter? 1830 ADDNE R1,R1,#1 1840 STRB R1,Active 1850 LDMEQFD R13!,{R0-R4,PC} \ If no other param then end 1860 MOV R0,R3 1870 ADR R1,Command 1880.ComMove1 1890 LDRB R2,[R0],#1 1900 STRB R2,[R1],#1 1910 CMP R2,#13 1920 BNE ComMove1 1930 LDMFD R13!,{R0-R4,PC} 1940 1950.CodeErr 1960 EQUD 67745 1970 EQUS "Bad keycode parameter" 1980 EQUB 0 1990 ALIGN 2000 2010.Error 2020 MOV R1,PC 2030 ORR R1,R1,#1<<28 \ Set "V" flag bit 2040 TEQP R1,#0 2050 LDMFD R13!,{PC} 2060 2070.Claimed 2080 EQUB 0 \ set to 255 when module has claimed event vector 2090.Enabled 2100 EQUB 0 \ set to 255 when module has enabled event 2110 ALIGN 2120 2130.EventEntry 2140 STMFD R13!,{R7,R14} 2150 LDRB R7,Code 2160 CMP R7,R2 2170 LDMNEFD R13!,{R7,PC} \ Not our key so pass on 2180 LDRB R7,Active 2190 CMP R7,#1 \ Are we active and 2200 CMPNE R7,#2 \ not busy already? 2210 LDMNEFD R13!,{R7,PC} \ No, so pass on 2220 STMFD R13!,{R0,R1,R6} 2230 MOV R6,PC 2240 ORR R7,R6,#3 2250 TEQP R7,#0 \ Enter SVC mode 2260 MOVNV R0,R0 2270 STMFD R13!,{R14} \ Store SVC mode link 2280 ADR R0,RegStore 2290 ADR R1,Return 2300 SWI "OS_CallBack" 2310 SWI "OS_SetCallBack" 2320 LDMFD R13!,{R14} \ Restore SVC mode link 2330 TEQP R6,#0 \ Restore original mode 2340 MOVNV R0,R0 2350 LDMFD R13!,{R0,R1,R6,R7,PC} 2360 2370.Active 2380 EQUD 0 \ 0=Not active,1=enter commands,2=execute specified command - 128 added to current value while actually processing 2390.Code 2400 EQUD 0 \ Storage for keycode required 2410 2420.Buffer 2430 ] 2440 2450P%+=256:O%+=256 2460Command=P% 2470P%+=256:O%+=256 2480RegStore=P% 2490P%+=64:O%+=64 2500[OPT I% 2510.Return 2520 LDRB R0,Active 2530 ADD R0,R0,#128 2540 STRB R0,Active \ Change active flag to indicate busy 2550 MOV R1,PC 2560 BIC R1,R1,#1<<27 \ Clear interrupt flag 2570 ORR R1,R1,#3 \ Set SVC mode 2580 TEQP R1,#0 \ Enter SVC mode 2590 MOVNV R1,R1 2600 CMP R0,#129 2610 BEQ EnterCommand \ Commands to be typed in 2620 ADR R0,Command \ else execute selected command 2630 SWI "XOS_CLI" 2640 SWIVS 256+7+(1<<17) \ Beep if error occurred 2650 B Finish 2660.EnterCommand \ Prepare screen for command entry 2670 MOV R0,#117 2680 SWI "XOS_Byte" 2690 STRB R1,VduStatus 2700 MOV R0,#3 2710 MOV R1,#%1010100 \ Disable printer, Spool and RS423 2720 SWI "XOS_Byte" 2730 STRB R1,Streams 2740 MOV R0,#165 2750 SWI "XOS_Byte" 2760 STRB R1,CursorPos 2770 STRB R2,CursorPos+1 2780 MOV R0,#218 2790 MOV R1,#0 2800 MOV R2,#0 2810 SWI "XOS_Byte" \ Clear VDU Q 2820 MOV R0,#0 2830 MOV R1,#16 2840 SWI "XOS_ReadPalette" 2850 STR R2,Colours 2860 STR R3,Colours+4 2870 MOV R0,#1 2880 SWI "XOS_ReadPalette" 2890 STR R2,Colours+8 2900 STR R3,Colours+12 2910 ADR R0,VduBlock 2920 ADR R1,Window 2930 SWI "XOS_ReadVduVariables" 2940 LDR R0,ScreenWidth 2950 STRB R0,NewSettings+4 2960 MOV R0,#1 2970 LDR R3,ScreenSize 2980 MOV R1,R3,LSR #1 2990 SWI "XOS_ClaimScreenMemory" 3000 MOVCS R2,#0 3010 STR R2,ScreenClaimed \ Set flag to indicate if screen memory found 3020 BCS VduSequence 3030 LDR R1,ScreenStart 3040 MOV R3,R3,LSR #1 3050.ScreenLoop1 3060 LDMIA R1!,{R4-R11} 3070 STMIA R2!,{R4-R11} 3080 SUBS R3,R3,#32 3090 BHI ScreenLoop1 3100.VduSequence 3110 ADR R0,NewSettings 3120 ADR R1,Terminator 3130 SUB R1,R1,R0 3140 SWI "OS_WriteN" 3150 3160.ECLoop 3170 SWI "OS_WriteS" 3180 EQUD &002A0A0D 3190 ADR R0,Buffer 3200 MOV R1,#254 3210 MOV R2,#32 3220 MOV R3,#255 3230 SWI "XOS_ReadLine" 3240 BCS EscError 3250 BVS PrintError 3260 CMP R1,#0 3270 BEQ TidyUp 3280 SWI "XOS_CLI" 3290 BVS PrintError 3300 B ECLoop 3310.VduBlock \ Used as input block for OS_ReadVduVariables 3320 EQUD 132 3330 EQUD 133 3340 EQUD 134 3350 EQUD 135 3360 EQUD 149 3370 EQUD 155 3380 EQUD 156 3390 EQUD 159 3400 EQUD 160 3410 EQUD 1 3420 EQUD 7 3430 EQUD -1 3440.Colours \ Used to store application VDU variable settings 3450 EQUD 0 3460 EQUD 0 3470 EQUD 0 3480 EQUD 0 3490.Window 3500 EQUD 0 3510 EQUD 0 3520 EQUD 0 3530 EQUD 0 3540.ScreenStart 3550 EQUD 0 3560.LogCols 3570 EQUD 0 3580 EQUD 0 3590.Tints 3600 EQUD 0 3610 EQUD 0 3620.ScreenWidth 3630 EQUD 0 3640.ScreenSize 3650 EQUD 0 3660.ScreenClaimed 3670 EQUD 0 3680.VduStatus 3690 EQUB 0 3700.CursorPos 3710 EQUW 0 3720.Streams 3730 EQUB 0 3740.NewSettings \ Contains VDU codes to set up command entry screen 3750 EQUB 6 \ Re enable VDU 3760 EQUB 28 \ Set text window 3770 EQUB 0 3780 EQUB 12 3790 EQUB 0 \ updated by program 3800 EQUB 0 3810 EQUB 19 \ Define col 0 as blue 3820 EQUB 0 3830 EQUD 4 3840 EQUB 19 \ Define col 1 as white 3850 EQUB 1 3860 EQUD 7 3870 EQUB 15 \ Set paged mode 3880 EQUB 4 \ Use text cursor 3890 EQUB 17 \ Select Text colour 1 3900 EQUB 1 3910 EQUB 17 \ Select background colour 0 3920 EQUB 128 3930 EQUB 12 \ CLS 3940.Terminator 3950 STMFD R13!,{R0,R14} 3960 MOV R0,#8 3970.TermLoop 3980 SWI 256 3990 SUBS R0,R0,#1 4000 BNE TermLoop 4010 LDMFD R13!,{R0,PC} 4020 4030.TidyUp \ Resets application VDU variables and restores screen 4040 ADR R3,Colours 4050 MOV R1,#4 4060 MOV R2,#12 4070.TLoop1 4080 SWI 256+19 4090 MOV R0,R2,LSR #3 4100 SWI "OS_WriteC" 4110 ADD R0,R3,R2 4120 SWI "OS_WriteN" 4130 SUBS R2,R2,#4 4140 BPL TLoop1 4150 MOV R2,#4 4160 ADR R3,Tints 4170.TLoop2 4180 SWI 256+23 4190 SWI 256+17 4200 MOV R0,R2,LSR #2 4210 SWI "OS_WriteC" 4220 LDR R0,[R3,R2] 4230 SWI "OS_WriteC" 4240 BL Terminator 4250 SUBS R2,R2,#4 4260 BPL TLoop2 4270 LDRB R0,LogCols 4280 SWI 256+17 4290 SWI "OS_WriteC" 4300 LDRB R0,LogCols+4 4310 ADD R0,R0,#128 4320 SWI 256+17 4330 SWI "OS_WriteC" 4340 SWI 256+28 4350 ADR R1,Window 4360 MOV R2,#4 4370.TLoop3 4380 LDRB R0,[R1],#4 4390 SWI "OS_WriteC" 4400 SUBS R2,R2,#1 4410 BNE TLoop3 4420 SWI 256+31 4430 LDRB R0,CursorPos 4440 SWI "OS_WriteC" 4450 LDRB R0,CursorPos+1 4460 SWI "OS_WriteC" 4470 LDRB R3,VduStatus 4480 TST R3,#1 \ Printer enabled bit 4490 SWINE 256+2 4500 TST R3,#4 \ Paged mode bit 4510 SWIEQ 256+15 \ Not set so clear paged mode 4520 TST R3,#32 \ VDU5 bit 4530 SWINE 256+5 4540 TST R3,#128 \ Disabled by VDU 21 bit 4550 SWINE 256+21 4560 LDRB R1,Streams 4570 MOV R0,#3 4580 SWI "OS_Byte" 4590 LDR R1,ScreenClaimed 4600 CMP R1,#0 4610 BEQ Wimp 4620 LDR R2,ScreenStart 4630 LDR R3,ScreenSize 4640 MOV R3,R3,LSR #1 4650.TLoop4 4660 LDMIA R1!,{R4-R11} 4670 STMIA R2!,{R4-R11} 4680 SUBS R3,R3,#32 4690 BHI TLoop4 4700 MOV R0,#0 4710 SWI "OS_ClaimScreenMemory" 4720 B Finish 4730.Wimp 4740 MVN R0,#0 4750 MOV R1,#0 4760 MOV R2,#0 4770 MOV R3,#1280 4780 SUB R3,R3,#1 4790 MOV R4,#1024 4800 SUB R4,R4,#1 4810 SWI "XWimp_ForceRedraw" 4820 4830.Finish 4840 MOV R0,PC 4850 ORR R0,R0,#1<<27 \ Set interrupt flag 4860 TEQP R0,#0 \ Write to flag 4870 LDRB R0,Active 4880 SUB R0,R0,#128 \ Restore active flag 4890 STRB R0,Active 4900 ADR R14,RegStore 4910 LDMIA R14,{R0-R14}^ 4920 LDR R14,[R14,#15*4] 4930 MOVS PC,R14 4940 4950.EscapeS 4960 EQUD 17 4970 EQUS "Escape" 4980 EQUB 0 4990 ALIGN 5000.EscError 5010 MOV R0,#124 5020 SWI "XOS_Byte" \ Clear Escape condition 5030 ADR R0,EscapeS 5040.PrintError 5050 ADD R0,R0,#4 5060 SWI "OS_NewLine" 5070 SWI "OS_Write0" 5080 B ECLoop 5090] 5100NEXT 5110OSCLI("SAVE IntModule "+STR$~Space+"+"+STR$~P%) 5120OSCLI("SETTYPE IntModule FFA")
� >$.IntSrc � Author Steve Hoare � January 1989 ('� Source code for Interrupt module 2 <� Space &1000 F� I%=4 � 7 � 3 PP%=0:O%=Space Z[OPT I% d EQUD 0; Start n EQUD Init x EQUD Final � EQUD Service � EQUD Title � EQUD Help � EQUD Table �* EQUD 0; SWI stuff (not needed) � EQUD 0; SWI stuff � EQUD 0; SWI stuff � EQUD 0; SWI stuff � .Help �= EQUS "Prog interrupt":EQUB 9:EQUS "1.00 (15 Jan 1989)" � EQUB 0 � .Title � EQUS "IntModule" EQUB 0 ALIGN .Table " EQUS "Interrupt" , EQUB 0 6 ALIGN @ EQUD Interrupt JN EQUD &FF0001 ; at least 1 parameter, no maximum, not GSTransed T EQUD InterruptSyn ^ EQUD InterruptHelp h EQUS "Freeze" r EQUB 0 | ALIGN � EQUD Freeze � EQUD 0 � EQUD FreezeSyn � EQUD FreezeHelp �0 EQUD 0; End of command table � �.InterruptHelp �} EQUS "*Interrupt sets up a routine to stop an application with a key press and perform a specified *command":EQUW &D0A �] EQUS "If no command is given *commands can be typed during the interruption":EQUW &D0A �a EQUS "*Interrupt <key> Freeze - waits until the space bar is pressed & released":EQUW &D0A �D EQUS "*Interrupt -1 disables the interrupt routine":EQUW &D0A �.InterruptSyn �: EQUS "Syntax: *Interrupt <ASCII code> [<*command>]" EQUB 0 ALIGN &.FreezeHelp 0[ EQUS "*Freeze stops processing until the spacebar is pressed and released":EQUW &D0A :.FreezeSyn D$ EQUS "Syntax: *Freeze":EQUB 0 N ALIGN X b.Freeze l STMFD R13!,{R0-R3,R14} v MOV R0,#129 �.FreezeLoop1 � MVN R1,#98 � MOV R2,#255 � SWI "OS_Byte" � CMP R1,#255 � CMPEQ R2,#255 � BNE FreezeLoop1 �.FreezeLoop2 � MVN R1,#98 � MOV R2,#255 � SWI "OS_Byte" � CMP R1,#255 � CMPEQ R2,#255 BEQ FreezeLoop2 MOV R0,#21 MOV R1,#0 SWI "OS_Byte" * LDMFD R13!,{R0-R3,PC} 4 >.Service H, CMP R1,#&27 \ Is this post reset R' MOVNE PC,R14 \ Return if not \ STMFD R13!,{R0-R2,R14} f LDRB R0,Active p CMP R0,#128 z SUBCS R0,R0,#128 �F STRB R0,Active \ If active during reset then clear active flag � MOV R0,#0 �1 STRB R0,Claimed \ Reset flags to indicate �) STRB R0,Enabled \ loss of control �9 B CheckState \ Reclaim vector and enable event � � .Init � STMFD R13!,{R0-R2,R14} � LDRB R0,Claimed �.CheckState � CMP R0,#255 �/ BEQ Init1 \ Vector already claimed � MOV R0,#255 STRB R0,Claimed MOV R0,#16 \ Event vector ADR R1,EventEntry $ MOV R2,#0 . SWI "OS_Claim" 8 .Init1 B LDRB R0,Enabled L CMP R0,#255 V0 LDMEQFD R13!,{PC} \ Event already enabled ` MOV R0,#255 j STRB R0,Enabled t MOV R0,#14 \ Enable event ~( MOV R1,#2 \ Keyboard input event � SWI "OS_Byte" � LDMFD R13!,{R0-R2,PC} � � .Final � STMFD R13!,{R14} � LDRB R0,Enabled � CMP R0,#255 �& BNE Final1 \ Already disabled � MOV R0,#0 � STRB R0,Enabled �! MOV R0,#13 \ Disable event �( MOV R1,#2 \ Keyboard input event SWI "OS_Byte" .Final1 LDRB R0,Claimed CMP R0,#255 (2 LDMNEFD R13!,{PC} \ Vector already released 2 MOV R0,#0 < STRB R0,Claimed F MOV R0,#16 \ Event vector P ADR R1,EventEntry Z MOV R2,#0 d SWI "OS_Release" n LDMFD R13!,{PC} x �.Interrupt � STMFD R13!,{R0-R4,R14} � MOV R3,R0 � MOV R4,R1 � ADR R0,Buffer � .Int1 �1 LDRB R1,[R3],#1 \ Get next byte of command �' CMP R1,#32 \ Is it a space? �) �Q R1,#13 \ If so convert to CR �( STRB R1,[R0],#1 \ Store in buffer � CMP R1,#13 �4 BNE Int1 \ Not at end so get next byte � ADR R0,Buffer ADR R1,RegStore MOV R2,#63 # SWI "XOS_EvaluateExpression" " BVS Int5 ,) CMP R1,#0 \ Is it an integer? 6' BEQ Int2 \ Yes so continue @ .Int3 J ADR R0,CodeErr T .Int5 ^ LDMFD R13!,{R1-R5} h B Error r .Int2 | CMP R2,#256 �( BCC Int4 \ Valid code number � CMN R2,#1 \ Is it -1? �0 BNE Int3 \ No so not valid parameter � LDRB R1,Active � MOV R0,#0 � CMP R1,#128 � MOVCS R0,#128 �. STRB R0,Active \ Clear the active flag � LDMFD R13!,{R0-R4,PC} � .Int4 � ADR R1,Code �2 STRB R2,[R1] \ Store the keycode required � LDRB R1,Active � R1,R1,#128 ADD R1,R1,#1 + CMP R4,#1 \ Only one parameter? & ADDNE R1,R1,#1 0 STRB R1,Active :; LDMEQFD R13!,{R0-R4,PC} \ If no other param then end D MOV R0,R3 N ADR R1,Command X .ComMove1 b LDRB R2,[R0],#1 l STRB R2,[R1],#1 v CMP R2,#13 � BNE ComMove1 � LDMFD R13!,{R0-R4,PC} � �.CodeErr � EQUD 67745 �# EQUS "Bad keycode parameter" � EQUB 0 � ALIGN � � .Error � MOV R1,PC �) �R R1,R1,#1<<28 \ Set "V" flag bit � TEQP R1,#0 LDMFD R13!,{PC} .Claimed ? EQUB 0 \ set to 255 when module has claimed event vector *.Enabled 48 EQUB 0 \ set to 255 when module has enabled event > ALIGN H R.EventEntry \ STMFD R13!,{R7,R14} f LDRB R7,Code p CMP R7,R2 z4 LDMNEFD R13!,{R7,PC} \ Not our key so pass on � LDRB R7,Active �. CMP R7,#1 \ Are we active and �. CMPNE R7,#2 \ not busy already? �, LDMNEFD R13!,{R7,PC} \ No, so pass on � STMFD R13!,{R0,R1,R6} � MOV R6,PC � �R R7,R6,#3 �# TEQP R7,#0 \ Enter SVC mode � MOVNV R0,R0 �- STMFD R13!,{R14} \ Store SVC mode link � ADR R0,RegStore � ADR R1,Return � SWI "OS_CallBack" SWI "OS_SetCallBack" / LDMFD R13!,{R14} \ Restore SVC mode link / TEQP R6,#0 \ Restore original mode $ MOVNV R0,R0 ." LDMFD R13!,{R0,R1,R6,R7,PC} 8 B.Active L� EQUD 0 \ 0=Not active,1=enter commands,2=execute specified command - 128 added to current value while actually processing V .Code `. EQUD 0 \ Storage for keycode required j t.Buffer ~ ] � �P%+=256:O%+=256 �Command=P% �P%+=256:O%+=256 �RegStore=P% �P%+=64:O%+=64 �[OPT I% �.Return � LDRB R0,Active � ADD R0,R0,#128 �= STRB R0,Active \ Change active flag to indicate busy � MOV R1,PC . BIC R1,R1,#1<<27 \ Clear interrupt flag % �R R1,R1,#3 \ Set SVC mode ( TEQP R1,#0 \ Enter SVC mode MOVNV R1,R1 ( CMP R0,#129 21 BEQ EnterCommand \ Commands to be typed in <7 ADR R0,Command \ else execute selected command F SWI "XOS_CLI" P3 SWIVS 256+7+(1<<17) \ Beep if error occurred Z B Finish d7.EnterCommand \ Prepare screen for command entry n MOV R0,#117 x SWI "XOS_Byte" � STRB R1,VduStatus � MOV R0,#3 �: MOV R1,#%1010100 \ Disable printer, Spool and RS423 � SWI "XOS_Byte" � STRB R1,Streams � MOV R0,#165 � SWI "XOS_Byte" � STRB R1,CursorPos � STRB R2,CursorPos+1 � MOV R0,#218 � MOV R1,#0 � MOV R2,#0 �" SWI "XOS_Byte" \ Clear � Q MOV R0,#0 MOV R1,#16 SWI "XOS_ReadPalette" " STR R2,Colours , STR R3,Colours+4 6 MOV R0,#1 @ SWI "XOS_ReadPalette" J STR R2,Colours+8 T STR R3,Colours+12 ^ ADR R0,VduBlock h ADR R1,Window r! SWI "XOS_ReadVduVariables" | LDR R0,ScreenWidth � STRB R0,NewSettings+4 � MOV R0,#1 � LDR R3,ScreenSize � MOV R1,R3,LSR #1 �" SWI "XOS_ClaimScreenMemory" � MOVCS R2,#0 �L STR R2,ScreenClaimed \ Set flag to indicate if screen memory found � BCS VduSequence � LDR R1,ScreenStart � MOV R3,R3,LSR #1 �.ScreenLoop1 � LDMIA R1!,{R4-R11} � STMIA R2!,{R4-R11} SUBS R3,R3,#32 BHI ScreenLoop1 .VduSequence & ADR R0,NewSettings 0 ADR R1,Terminator : SUB R1,R1,R0 D SWI "OS_WriteN" N X.ECLoop b SWI "OS_WriteS" l EQUD &002A0A0D v ADR R0,Buffer � MOV R1,#254 � MOV R2,#32 � MOV R3,#255 � SWI "XOS_ReadLine" � BCS EscError � BVS PrintError � CMP R1,#0 � BEQ TidyUp � SWI "XOS_CLI" � BVS PrintError � B ECLoop �B.VduBlock \ Used as input block for OS_ReadVduVariables � EQUD 132 EQUD 133 EQUD 134 EQUD 135 EQUD 149 * EQUD 155 4 EQUD 156 > EQUD 159 H EQUD 160 R EQUD 1 \ EQUD 7 f EQUD -1 pC.Colours \ Used to store application � variable settings z EQUD 0 � EQUD 0 � EQUD 0 � EQUD 0 �.Window � EQUD 0 � EQUD 0 � EQUD 0 � EQUD 0 �.ScreenStart � EQUD 0 �.LogCols � EQUD 0 � EQUD 0 .Tints EQUD 0 EQUD 0 $.ScreenWidth . EQUD 0 8.ScreenSize B EQUD 0 L.ScreenClaimed V EQUD 0 `.VduStatus j EQUB 0 t.CursorPos ~ EQUW 0 �.Streams � EQUB 0 �F.NewSettings \ Contains � codes to set up command entry screen � EQUB 6 \ Re enable � � EQUB 28 \ Set text window � EQUB 0 � EQUB 12 �# EQUB 0 \ updated by program � EQUB 0 �& EQUB 19 \ Define col 0 as blue � EQUB 0 � EQUD 4 ' EQUB 19 \ Define col 1 as white EQUB 1 EQUD 7 EQUB 15 \ Set paged mode ( EQUB 4 \ Use text cursor 2% EQUB 17 \ Select Text colour 1 < EQUB 1 F+ EQUB 17 \ Select background colour 0 P EQUB 128 Z EQUB 12 \ � d.Terminator n STMFD R13!,{R0,R14} x MOV R0,#8 � .TermLoop � SWI 256 � SUBS R0,R0,#1 � BNE TermLoop � LDMFD R13!,{R0,PC} � �K.TidyUp \ Resets application � variables and restores screen � ADR R3,Colours � MOV R1,#4 � MOV R2,#12 �.TLoop1 � SWI 256+19 � MOV R0,R2,LSR #3 SWI "OS_WriteC" ADD R0,R3,R2 SWI "OS_WriteN" " SUBS R2,R2,#4 , BPL TLoop1 6 MOV R2,#4 @ ADR R3,Tints J.TLoop2 T SWI 256+23 ^ SWI 256+17 h MOV R0,R2,LSR #2 r SWI "OS_WriteC" | LDR R0,[R3,R2] � SWI "OS_WriteC" � BL Terminator � SUBS R2,R2,#4 � BPL TLoop2 � LDRB R0,LogCols � SWI 256+17 � SWI "OS_WriteC" � LDRB R0,LogCols+4 � ADD R0,R0,#128 � SWI 256+17 � SWI "OS_WriteC" � SWI 256+28 � ADR R1,Window MOV R2,#4 .TLoop3 LDRB R0,[R1],#4 & SWI "OS_WriteC" 0 SUBS R2,R2,#1 : BNE TLoop3 D SWI 256+31 N LDRB R0,CursorPos X SWI "OS_WriteC" b LDRB R0,CursorPos+1 l SWI "OS_WriteC" v LDRB R3,VduStatus �' TST R3,#1 \ Printer enabled bit � SWINE 256+2 �! TST R3,#4 \ Paged mode bit �1 SWIEQ 256+15 \ Not set so clear paged mode � TST R3,#32 \ �5 bit � SWINE 256+5 �) TST R3,#128 \ Disabled by � 21 bit � SWINE 256+21 � LDRB R1,Streams � MOV R0,#3 � SWI "OS_Byte" � LDR R1,ScreenClaimed � CMP R1,#0 BEQ Wimp LDR R2,ScreenStart LDR R3,ScreenSize MOV R3,R3,LSR #1 *.TLoop4 4 LDMIA R1!,{R4-R11} > STMIA R2!,{R4-R11} H SUBS R3,R3,#32 R BHI TLoop4 \ MOV R0,#0 f! SWI "OS_ClaimScreenMemory" p B Finish z .Wimp � MVN R0,#0 � MOV R1,#0 � MOV R2,#0 � MOV R3,#1280 � SUB R3,R3,#1 � MOV R4,#1024 � SUB R4,R4,#1 � SWI "XWimp_ForceRedraw" � �.Finish � MOV R0,PC �+ �R R0,R0,#1<<27 \ Set interrupt flag �' TEQP R0,#0 \ Write to flag LDRB R0,Active , SUB R0,R0,#128 \ Restore active flag STRB R0,Active $ ADR R14,RegStore . LDMIA R14,{R0-R14}^ 8 LDR R14,[R14,#15*4] B MOVS PC,R14 L V.EscapeS ` EQUD 17 j EQUS "Escape" t EQUB 0 ~ ALIGN � .EscError � MOV R0,#124 �. SWI "XOS_Byte" \ Clear Escape condition � ADR R0,EscapeS �.PrintError � ADD R0,R0,#4 � SWI "OS_NewLine" � SWI "OS_Write0" � B ECLoop �] �� �)�("SAVE IntModule "+�~Space+"+"+�~P%) �("SETTYPE IntModule FFA") �
00000000 0d 00 0a 10 f4 20 20 3e 24 2e 49 6e 74 53 72 63 |..... >$.IntSrc| 00000010 0d 00 14 19 f4 20 20 41 75 74 68 6f 72 20 53 74 |..... Author St| 00000020 65 76 65 20 48 6f 61 72 65 0d 00 1e 13 f4 20 20 |eve Hoare..... | 00000030 4a 61 6e 75 61 72 79 20 31 39 38 39 0d 00 28 27 |January 1989..('| 00000040 f4 20 20 53 6f 75 72 63 65 20 63 6f 64 65 20 66 |. Source code f| 00000050 6f 72 20 49 6e 74 65 72 72 75 70 74 20 6d 6f 64 |or Interrupt mod| 00000060 75 6c 65 0d 00 32 04 0d 00 3c 11 de 20 53 70 61 |ule..2...<.. Spa| 00000070 63 65 20 26 31 30 30 30 0d 00 46 12 e3 20 49 25 |ce &1000..F.. I%| 00000080 3d 34 20 b8 20 37 20 88 20 33 0d 00 50 11 50 25 |=4 . 7 . 3..P.P%| 00000090 3d 30 3a 4f 25 3d 53 70 61 63 65 0d 00 5a 0b 5b |=0:O%=Space..Z.[| 000000a0 4f 50 54 20 49 25 0d 00 64 19 20 20 20 45 51 55 |OPT I%..d. EQU| 000000b0 44 20 30 3b 20 20 20 20 20 20 53 74 61 72 74 0d |D 0; Start.| 000000c0 00 6e 10 20 20 20 45 51 55 44 20 49 6e 69 74 0d |.n. EQUD Init.| 000000d0 00 78 11 20 20 20 45 51 55 44 20 46 69 6e 61 6c |.x. EQUD Final| 000000e0 0d 00 82 13 20 20 20 45 51 55 44 20 53 65 72 76 |.... EQUD Serv| 000000f0 69 63 65 0d 00 8c 11 20 20 20 45 51 55 44 20 54 |ice.... EQUD T| 00000100 69 74 6c 65 0d 00 96 10 20 20 20 45 51 55 44 20 |itle.... EQUD | 00000110 48 65 6c 70 0d 00 a0 11 20 20 20 45 51 55 44 20 |Help.... EQUD | 00000120 54 61 62 6c 65 0d 00 aa 2a 20 20 20 45 51 55 44 |Table...* EQUD| 00000130 20 30 3b 20 20 20 20 20 20 53 57 49 20 73 74 75 | 0; SWI stu| 00000140 66 66 20 28 6e 6f 74 20 6e 65 65 64 65 64 29 0d |ff (not needed).| 00000150 00 b4 1d 20 20 20 45 51 55 44 20 30 3b 20 20 20 |... EQUD 0; | 00000160 20 20 20 53 57 49 20 73 74 75 66 66 0d 00 be 1d | SWI stuff....| 00000170 20 20 20 45 51 55 44 20 30 3b 20 20 20 20 20 20 | EQUD 0; | 00000180 53 57 49 20 73 74 75 66 66 0d 00 c8 1d 20 20 20 |SWI stuff.... | 00000190 45 51 55 44 20 30 3b 20 20 20 20 20 20 53 57 49 |EQUD 0; SWI| 000001a0 20 73 74 75 66 66 0d 00 d2 09 2e 48 65 6c 70 0d | stuff.....Help.| 000001b0 00 dc 3d 20 20 20 45 51 55 53 20 22 50 72 6f 67 |..= EQUS "Prog| 000001c0 20 69 6e 74 65 72 72 75 70 74 22 3a 45 51 55 42 | interrupt":EQUB| 000001d0 20 39 3a 45 51 55 53 20 22 31 2e 30 30 20 28 31 | 9:EQUS "1.00 (1| 000001e0 35 20 4a 61 6e 20 31 39 38 39 29 22 0d 00 e6 0d |5 Jan 1989)"....| 000001f0 20 20 20 45 51 55 42 20 30 0d 00 f0 0a 2e 54 69 | EQUB 0.....Ti| 00000200 74 6c 65 0d 00 fa 17 20 20 20 45 51 55 53 20 22 |tle.... EQUS "| 00000210 49 6e 74 4d 6f 64 75 6c 65 22 0d 01 04 0d 20 20 |IntModule".... | 00000220 20 45 51 55 42 20 30 0d 01 0e 0c 20 20 20 41 4c | EQUB 0.... AL| 00000230 49 47 4e 0d 01 18 0a 2e 54 61 62 6c 65 0d 01 22 |IGN.....Table.."| 00000240 17 20 20 20 45 51 55 53 20 22 49 6e 74 65 72 72 |. EQUS "Interr| 00000250 75 70 74 22 0d 01 2c 0d 20 20 20 45 51 55 42 20 |upt"..,. EQUB | 00000260 30 0d 01 36 0c 20 20 20 41 4c 49 47 4e 0d 01 40 |0..6. ALIGN..@| 00000270 15 20 20 20 45 51 55 44 20 49 6e 74 65 72 72 75 |. EQUD Interru| 00000280 70 74 0d 01 4a 4e 20 20 20 45 51 55 44 20 26 46 |pt..JN EQUD &F| 00000290 46 30 30 30 31 20 20 20 20 20 20 20 20 20 3b 20 |F0001 ; | 000002a0 20 61 74 20 6c 65 61 73 74 20 31 20 70 61 72 61 | at least 1 para| 000002b0 6d 65 74 65 72 2c 20 6e 6f 20 6d 61 78 69 6d 75 |meter, no maximu| 000002c0 6d 2c 20 6e 6f 74 20 47 53 54 72 61 6e 73 65 64 |m, not GSTransed| 000002d0 0d 01 54 18 20 20 20 45 51 55 44 20 49 6e 74 65 |..T. EQUD Inte| 000002e0 72 72 75 70 74 53 79 6e 0d 01 5e 19 20 20 20 45 |rruptSyn..^. E| 000002f0 51 55 44 20 49 6e 74 65 72 72 75 70 74 48 65 6c |QUD InterruptHel| 00000300 70 0d 01 68 14 20 20 20 45 51 55 53 20 22 46 72 |p..h. EQUS "Fr| 00000310 65 65 7a 65 22 0d 01 72 0d 20 20 20 45 51 55 42 |eeze"..r. EQUB| 00000320 20 30 0d 01 7c 0c 20 20 20 41 4c 49 47 4e 0d 01 | 0..|. ALIGN..| 00000330 86 12 20 20 20 45 51 55 44 20 46 72 65 65 7a 65 |.. EQUD Freeze| 00000340 0d 01 90 0d 20 20 20 45 51 55 44 20 30 0d 01 9a |.... EQUD 0...| 00000350 15 20 20 20 45 51 55 44 20 46 72 65 65 7a 65 53 |. EQUD FreezeS| 00000360 79 6e 0d 01 a4 16 20 20 20 45 51 55 44 20 46 72 |yn.... EQUD Fr| 00000370 65 65 7a 65 48 65 6c 70 0d 01 ae 30 20 20 20 45 |eezeHelp...0 E| 00000380 51 55 44 20 30 3b 20 20 20 20 20 20 20 20 20 20 |QUD 0; | 00000390 20 20 20 20 45 6e 64 20 6f 66 20 63 6f 6d 6d 61 | End of comma| 000003a0 6e 64 20 74 61 62 6c 65 0d 01 b8 04 0d 01 c2 12 |nd table........| 000003b0 2e 49 6e 74 65 72 72 75 70 74 48 65 6c 70 0d 01 |.InterruptHelp..| 000003c0 cc 7d 20 20 20 45 51 55 53 20 22 2a 49 6e 74 65 |.} EQUS "*Inte| 000003d0 72 72 75 70 74 20 73 65 74 73 20 75 70 20 61 20 |rrupt sets up a | 000003e0 72 6f 75 74 69 6e 65 20 74 6f 20 73 74 6f 70 20 |routine to stop | 000003f0 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 |an application w| 00000400 69 74 68 20 61 20 6b 65 79 20 70 72 65 73 73 20 |ith a key press | 00000410 61 6e 64 20 70 65 72 66 6f 72 6d 20 61 20 73 70 |and perform a sp| 00000420 65 63 69 66 69 65 64 20 2a 63 6f 6d 6d 61 6e 64 |ecified *command| 00000430 22 3a 45 51 55 57 20 26 44 30 41 0d 01 d6 5d 20 |":EQUW &D0A...] | 00000440 20 20 45 51 55 53 20 22 49 66 20 6e 6f 20 63 6f | EQUS "If no co| 00000450 6d 6d 61 6e 64 20 69 73 20 67 69 76 65 6e 20 2a |mmand is given *| 00000460 63 6f 6d 6d 61 6e 64 73 20 63 61 6e 20 62 65 20 |commands can be | 00000470 74 79 70 65 64 20 64 75 72 69 6e 67 20 74 68 65 |typed during the| 00000480 20 69 6e 74 65 72 72 75 70 74 69 6f 6e 22 3a 45 | interruption":E| 00000490 51 55 57 20 26 44 30 41 0d 01 e0 61 20 20 20 45 |QUW &D0A...a E| 000004a0 51 55 53 20 22 2a 49 6e 74 65 72 72 75 70 74 20 |QUS "*Interrupt | 000004b0 3c 6b 65 79 3e 20 46 72 65 65 7a 65 20 2d 20 77 |<key> Freeze - w| 000004c0 61 69 74 73 20 75 6e 74 69 6c 20 74 68 65 20 73 |aits until the s| 000004d0 70 61 63 65 20 62 61 72 20 69 73 20 70 72 65 73 |pace bar is pres| 000004e0 73 65 64 20 26 20 72 65 6c 65 61 73 65 64 22 3a |sed & released":| 000004f0 45 51 55 57 20 26 44 30 41 0d 01 ea 44 20 20 20 |EQUW &D0A...D | 00000500 45 51 55 53 20 22 2a 49 6e 74 65 72 72 75 70 74 |EQUS "*Interrupt| 00000510 20 2d 31 20 64 69 73 61 62 6c 65 73 20 74 68 65 | -1 disables the| 00000520 20 69 6e 74 65 72 72 75 70 74 20 72 6f 75 74 69 | interrupt routi| 00000530 6e 65 22 3a 45 51 55 57 20 26 44 30 41 0d 01 f4 |ne":EQUW &D0A...| 00000540 11 2e 49 6e 74 65 72 72 75 70 74 53 79 6e 0d 01 |..InterruptSyn..| 00000550 fe 3a 20 20 20 45 51 55 53 20 22 53 79 6e 74 61 |.: EQUS "Synta| 00000560 78 3a 20 2a 49 6e 74 65 72 72 75 70 74 20 3c 41 |x: *Interrupt <A| 00000570 53 43 49 49 20 63 6f 64 65 3e 20 5b 3c 2a 63 6f |SCII code> [<*co| 00000580 6d 6d 61 6e 64 3e 5d 22 0d 02 08 0d 20 20 20 45 |mmand>]".... E| 00000590 51 55 42 20 30 0d 02 12 0c 20 20 20 41 4c 49 47 |QUB 0.... ALIG| 000005a0 4e 0d 02 1c 04 0d 02 26 0f 2e 46 72 65 65 7a 65 |N......&..Freeze| 000005b0 48 65 6c 70 0d 02 30 5b 20 20 20 45 51 55 53 20 |Help..0[ EQUS | 000005c0 22 2a 46 72 65 65 7a 65 20 73 74 6f 70 73 20 70 |"*Freeze stops p| 000005d0 72 6f 63 65 73 73 69 6e 67 20 75 6e 74 69 6c 20 |rocessing until | 000005e0 74 68 65 20 73 70 61 63 65 62 61 72 20 69 73 20 |the spacebar is | 000005f0 70 72 65 73 73 65 64 20 61 6e 64 20 72 65 6c 65 |pressed and rele| 00000600 61 73 65 64 22 3a 45 51 55 57 20 26 44 30 41 0d |ased":EQUW &D0A.| 00000610 02 3a 0e 2e 46 72 65 65 7a 65 53 79 6e 0d 02 44 |.:..FreezeSyn..D| 00000620 24 20 20 20 45 51 55 53 20 22 53 79 6e 74 61 78 |$ EQUS "Syntax| 00000630 3a 20 2a 46 72 65 65 7a 65 22 3a 45 51 55 42 20 |: *Freeze":EQUB | 00000640 30 0d 02 4e 0c 20 20 20 41 4c 49 47 4e 0d 02 58 |0..N. ALIGN..X| 00000650 04 0d 02 62 0b 2e 46 72 65 65 7a 65 0d 02 6c 1d |...b..Freeze..l.| 00000660 20 20 20 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 | STMFD R13!,{R| 00000670 30 2d 52 33 2c 52 31 34 7d 0d 02 76 12 20 20 20 |0-R3,R14}..v. | 00000680 4d 4f 56 20 52 30 2c 23 31 32 39 0d 02 80 10 2e |MOV R0,#129.....| 00000690 46 72 65 65 7a 65 4c 6f 6f 70 31 0d 02 8a 11 20 |FreezeLoop1.... | 000006a0 20 20 4d 56 4e 20 52 31 2c 23 39 38 0d 02 94 12 | MVN R1,#98....| 000006b0 20 20 20 4d 4f 56 20 52 32 2c 23 32 35 35 0d 02 | MOV R2,#255..| 000006c0 9e 14 20 20 20 53 57 49 20 22 4f 53 5f 42 79 74 |.. SWI "OS_Byt| 000006d0 65 22 0d 02 a8 12 20 20 20 43 4d 50 20 52 31 2c |e".... CMP R1,| 000006e0 23 32 35 35 0d 02 b2 14 20 20 20 43 4d 50 45 51 |#255.... CMPEQ| 000006f0 20 52 32 2c 23 32 35 35 0d 02 bc 16 20 20 20 42 | R2,#255.... B| 00000700 4e 45 20 46 72 65 65 7a 65 4c 6f 6f 70 31 0d 02 |NE FreezeLoop1..| 00000710 c6 10 2e 46 72 65 65 7a 65 4c 6f 6f 70 32 0d 02 |...FreezeLoop2..| 00000720 d0 11 20 20 20 4d 56 4e 20 52 31 2c 23 39 38 0d |.. MVN R1,#98.| 00000730 02 da 12 20 20 20 4d 4f 56 20 52 32 2c 23 32 35 |... MOV R2,#25| 00000740 35 0d 02 e4 14 20 20 20 53 57 49 20 22 4f 53 5f |5.... SWI "OS_| 00000750 42 79 74 65 22 0d 02 ee 12 20 20 20 43 4d 50 20 |Byte".... CMP | 00000760 52 31 2c 23 32 35 35 0d 02 f8 14 20 20 20 43 4d |R1,#255.... CM| 00000770 50 45 51 20 52 32 2c 23 32 35 35 0d 03 02 16 20 |PEQ R2,#255.... | 00000780 20 20 42 45 51 20 46 72 65 65 7a 65 4c 6f 6f 70 | BEQ FreezeLoop| 00000790 32 0d 03 0c 11 20 20 20 4d 4f 56 20 52 30 2c 23 |2.... MOV R0,#| 000007a0 32 31 0d 03 16 10 20 20 20 4d 4f 56 20 52 31 2c |21.... MOV R1,| 000007b0 23 30 0d 03 20 14 20 20 20 53 57 49 20 22 4f 53 |#0.. . SWI "OS| 000007c0 5f 42 79 74 65 22 0d 03 2a 1c 20 20 20 4c 44 4d |_Byte"..*. LDM| 000007d0 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 33 2c 50 |FD R13!,{R0-R3,P| 000007e0 43 7d 0d 03 34 04 0d 03 3e 0c 2e 53 65 72 76 69 |C}..4...>..Servi| 000007f0 63 65 0d 03 48 2c 20 20 20 43 4d 50 20 52 31 2c |ce..H, CMP R1,| 00000800 23 26 32 37 20 20 20 20 20 20 5c 20 49 73 20 74 |#&27 \ Is t| 00000810 68 69 73 20 70 6f 73 74 20 72 65 73 65 74 0d 03 |his post reset..| 00000820 52 27 20 20 20 4d 4f 56 4e 45 20 50 43 2c 52 31 |R' MOVNE PC,R1| 00000830 34 20 20 20 20 20 5c 20 52 65 74 75 72 6e 20 69 |4 \ Return i| 00000840 66 20 6e 6f 74 0d 03 5c 1d 20 20 20 53 54 4d 46 |f not..\. STMF| 00000850 44 20 52 31 33 21 2c 7b 52 30 2d 52 32 2c 52 31 |D R13!,{R0-R2,R1| 00000860 34 7d 0d 03 66 15 20 20 20 4c 44 52 42 20 52 30 |4}..f. LDRB R0| 00000870 2c 41 63 74 69 76 65 0d 03 70 12 20 20 20 43 4d |,Active..p. CM| 00000880 50 20 52 30 2c 23 31 32 38 0d 03 7a 17 20 20 20 |P R0,#128..z. | 00000890 53 55 42 43 53 20 52 30 2c 52 30 2c 23 31 32 38 |SUBCS R0,R0,#128| 000008a0 0d 03 84 46 20 20 20 53 54 52 42 20 52 30 2c 41 |...F STRB R0,A| 000008b0 63 74 69 76 65 20 20 5c 20 49 66 20 61 63 74 69 |ctive \ If acti| 000008c0 76 65 20 64 75 72 69 6e 67 20 72 65 73 65 74 20 |ve during reset | 000008d0 74 68 65 6e 20 63 6c 65 61 72 20 61 63 74 69 76 |then clear activ| 000008e0 65 20 66 6c 61 67 0d 03 8e 10 20 20 20 4d 4f 56 |e flag.... MOV| 000008f0 20 52 30 2c 23 30 0d 03 98 31 20 20 20 53 54 52 | R0,#0...1 STR| 00000900 42 20 52 30 2c 43 6c 61 69 6d 65 64 20 20 5c 20 |B R0,Claimed \ | 00000910 52 65 73 65 74 20 66 6c 61 67 73 20 74 6f 20 69 |Reset flags to i| 00000920 6e 64 69 63 61 74 65 0d 03 a2 29 20 20 20 53 54 |ndicate...) ST| 00000930 52 42 20 52 30 2c 45 6e 61 62 6c 65 64 20 20 5c |RB R0,Enabled \| 00000940 20 6c 6f 73 73 20 6f 66 20 63 6f 6e 74 72 6f 6c | loss of control| 00000950 0d 03 ac 39 20 20 20 42 20 43 68 65 63 6b 53 74 |...9 B CheckSt| 00000960 61 74 65 20 20 20 20 20 5c 20 52 65 63 6c 61 69 |ate \ Reclai| 00000970 6d 20 76 65 63 74 6f 72 20 61 6e 64 20 65 6e 61 |m vector and ena| 00000980 62 6c 65 20 65 76 65 6e 74 0d 03 b6 04 0d 03 c0 |ble event.......| 00000990 09 2e 49 6e 69 74 0d 03 ca 1d 20 20 20 53 54 4d |..Init.... STM| 000009a0 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 32 2c 52 |FD R13!,{R0-R2,R| 000009b0 31 34 7d 0d 03 d4 16 20 20 20 4c 44 52 42 20 52 |14}.... LDRB R| 000009c0 30 2c 43 6c 61 69 6d 65 64 0d 03 de 0f 2e 43 68 |0,Claimed.....Ch| 000009d0 65 63 6b 53 74 61 74 65 0d 03 e8 12 20 20 20 43 |eckState.... C| 000009e0 4d 50 20 52 30 2c 23 32 35 35 0d 03 f2 2f 20 20 |MP R0,#255.../ | 000009f0 20 42 45 51 20 49 6e 69 74 31 20 20 20 20 20 20 | BEQ Init1 | 00000a00 20 5c 20 56 65 63 74 6f 72 20 61 6c 72 65 61 64 | \ Vector alread| 00000a10 79 20 63 6c 61 69 6d 65 64 0d 03 fc 12 20 20 20 |y claimed.... | 00000a20 4d 4f 56 20 52 30 2c 23 32 35 35 0d 04 06 16 20 |MOV R0,#255.... | 00000a30 20 20 53 54 52 42 20 52 30 2c 43 6c 61 69 6d 65 | STRB R0,Claime| 00000a40 64 0d 04 10 20 20 20 20 4d 4f 56 20 52 30 2c 23 |d... MOV R0,#| 00000a50 31 36 20 5c 20 45 76 65 6e 74 20 76 65 63 74 6f |16 \ Event vecto| 00000a60 72 0d 04 1a 18 20 20 20 41 44 52 20 52 31 2c 45 |r.... ADR R1,E| 00000a70 76 65 6e 74 45 6e 74 72 79 0d 04 24 10 20 20 20 |ventEntry..$. | 00000a80 4d 4f 56 20 52 32 2c 23 30 0d 04 2e 15 20 20 20 |MOV R2,#0.... | 00000a90 53 57 49 20 22 4f 53 5f 43 6c 61 69 6d 22 0d 04 |SWI "OS_Claim"..| 00000aa0 38 0a 2e 49 6e 69 74 31 0d 04 42 16 20 20 20 4c |8..Init1..B. L| 00000ab0 44 52 42 20 52 30 2c 45 6e 61 62 6c 65 64 0d 04 |DRB R0,Enabled..| 00000ac0 4c 12 20 20 20 43 4d 50 20 52 30 2c 23 32 35 35 |L. CMP R0,#255| 00000ad0 0d 04 56 30 20 20 20 4c 44 4d 45 51 46 44 20 52 |..V0 LDMEQFD R| 00000ae0 31 33 21 2c 7b 50 43 7d 20 5c 20 45 76 65 6e 74 |13!,{PC} \ Event| 00000af0 20 61 6c 72 65 61 64 79 20 65 6e 61 62 6c 65 64 | already enabled| 00000b00 0d 04 60 12 20 20 20 4d 4f 56 20 52 30 2c 23 32 |..`. MOV R0,#2| 00000b10 35 35 0d 04 6a 16 20 20 20 53 54 52 42 20 52 30 |55..j. STRB R0| 00000b20 2c 45 6e 61 62 6c 65 64 0d 04 74 20 20 20 20 4d |,Enabled..t M| 00000b30 4f 56 20 52 30 2c 23 31 34 20 5c 20 45 6e 61 62 |OV R0,#14 \ Enab| 00000b40 6c 65 20 65 76 65 6e 74 0d 04 7e 28 20 20 20 4d |le event..~( M| 00000b50 4f 56 20 52 31 2c 23 32 20 20 5c 20 4b 65 79 62 |OV R1,#2 \ Keyb| 00000b60 6f 61 72 64 20 69 6e 70 75 74 20 65 76 65 6e 74 |oard input event| 00000b70 0d 04 88 14 20 20 20 53 57 49 20 22 4f 53 5f 42 |.... SWI "OS_B| 00000b80 79 74 65 22 0d 04 92 1c 20 20 20 4c 44 4d 46 44 |yte".... LDMFD| 00000b90 20 52 31 33 21 2c 7b 52 30 2d 52 32 2c 50 43 7d | R13!,{R0-R2,PC}| 00000ba0 0d 04 9c 04 0d 04 a6 0a 2e 46 69 6e 61 6c 0d 04 |.........Final..| 00000bb0 b0 17 20 20 20 53 54 4d 46 44 20 52 31 33 21 2c |.. STMFD R13!,| 00000bc0 7b 52 31 34 7d 0d 04 ba 16 20 20 20 4c 44 52 42 |{R14}.... LDRB| 00000bd0 20 52 30 2c 45 6e 61 62 6c 65 64 0d 04 c4 12 20 | R0,Enabled.... | 00000be0 20 20 43 4d 50 20 52 30 2c 23 32 35 35 0d 04 ce | CMP R0,#255...| 00000bf0 26 20 20 20 42 4e 45 20 46 69 6e 61 6c 31 20 20 |& BNE Final1 | 00000c00 20 5c 20 41 6c 72 65 61 64 79 20 64 69 73 61 62 | \ Already disab| 00000c10 6c 65 64 0d 04 d8 10 20 20 20 4d 4f 56 20 52 30 |led.... MOV R0| 00000c20 2c 23 30 0d 04 e2 16 20 20 20 53 54 52 42 20 52 |,#0.... STRB R| 00000c30 30 2c 45 6e 61 62 6c 65 64 0d 04 ec 21 20 20 20 |0,Enabled...! | 00000c40 4d 4f 56 20 52 30 2c 23 31 33 20 5c 20 44 69 73 |MOV R0,#13 \ Dis| 00000c50 61 62 6c 65 20 65 76 65 6e 74 0d 04 f6 28 20 20 |able event...( | 00000c60 20 4d 4f 56 20 52 31 2c 23 32 20 20 5c 20 4b 65 | MOV R1,#2 \ Ke| 00000c70 79 62 6f 61 72 64 20 69 6e 70 75 74 20 65 76 65 |yboard input eve| 00000c80 6e 74 0d 05 00 14 20 20 20 53 57 49 20 22 4f 53 |nt.... SWI "OS| 00000c90 5f 42 79 74 65 22 0d 05 0a 0b 2e 46 69 6e 61 6c |_Byte".....Final| 00000ca0 31 0d 05 14 16 20 20 20 4c 44 52 42 20 52 30 2c |1.... LDRB R0,| 00000cb0 43 6c 61 69 6d 65 64 0d 05 1e 12 20 20 20 43 4d |Claimed.... CM| 00000cc0 50 20 52 30 2c 23 32 35 35 0d 05 28 32 20 20 20 |P R0,#255..(2 | 00000cd0 4c 44 4d 4e 45 46 44 20 52 31 33 21 2c 7b 50 43 |LDMNEFD R13!,{PC| 00000ce0 7d 20 5c 20 56 65 63 74 6f 72 20 61 6c 72 65 61 |} \ Vector alrea| 00000cf0 64 79 20 72 65 6c 65 61 73 65 64 0d 05 32 10 20 |dy released..2. | 00000d00 20 20 4d 4f 56 20 52 30 2c 23 30 0d 05 3c 16 20 | MOV R0,#0..<. | 00000d10 20 20 53 54 52 42 20 52 30 2c 43 6c 61 69 6d 65 | STRB R0,Claime| 00000d20 64 0d 05 46 20 20 20 20 4d 4f 56 20 52 30 2c 23 |d..F MOV R0,#| 00000d30 31 36 20 5c 20 45 76 65 6e 74 20 76 65 63 74 6f |16 \ Event vecto| 00000d40 72 0d 05 50 18 20 20 20 41 44 52 20 52 31 2c 45 |r..P. ADR R1,E| 00000d50 76 65 6e 74 45 6e 74 72 79 0d 05 5a 10 20 20 20 |ventEntry..Z. | 00000d60 4d 4f 56 20 52 32 2c 23 30 0d 05 64 17 20 20 20 |MOV R2,#0..d. | 00000d70 53 57 49 20 22 4f 53 5f 52 65 6c 65 61 73 65 22 |SWI "OS_Release"| 00000d80 0d 05 6e 16 20 20 20 4c 44 4d 46 44 20 52 31 33 |..n. LDMFD R13| 00000d90 21 2c 7b 50 43 7d 0d 05 78 04 0d 05 82 0e 2e 49 |!,{PC}..x......I| 00000da0 6e 74 65 72 72 75 70 74 0d 05 8c 1d 20 20 20 53 |nterrupt.... S| 00000db0 54 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 34 |TMFD R13!,{R0-R4| 00000dc0 2c 52 31 34 7d 0d 05 96 10 20 20 20 4d 4f 56 20 |,R14}.... MOV | 00000dd0 52 33 2c 52 30 0d 05 a0 10 20 20 20 4d 4f 56 20 |R3,R0.... MOV | 00000de0 52 34 2c 52 31 0d 05 aa 14 20 20 20 41 44 52 20 |R4,R1.... ADR | 00000df0 52 30 2c 42 75 66 66 65 72 0d 05 b4 09 2e 49 6e |R0,Buffer.....In| 00000e00 74 31 0d 05 be 31 20 20 20 4c 44 52 42 20 52 31 |t1...1 LDRB R1| 00000e10 2c 5b 52 33 5d 2c 23 31 20 5c 20 47 65 74 20 6e |,[R3],#1 \ Get n| 00000e20 65 78 74 20 62 79 74 65 20 6f 66 20 63 6f 6d 6d |ext byte of comm| 00000e30 61 6e 64 0d 05 c8 27 20 20 20 43 4d 50 20 52 31 |and...' CMP R1| 00000e40 2c 23 33 32 20 20 20 20 20 20 5c 20 49 73 20 69 |,#32 \ Is i| 00000e50 74 20 61 20 73 70 61 63 65 3f 0d 05 d2 29 20 20 |t a space?...) | 00000e60 20 ec 51 20 52 31 2c 23 31 33 20 20 20 20 5c 20 | .Q R1,#13 \ | 00000e70 49 66 20 73 6f 20 63 6f 6e 76 65 72 74 20 74 6f |If so convert to| 00000e80 20 43 52 0d 05 dc 28 20 20 20 53 54 52 42 20 52 | CR...( STRB R| 00000e90 31 2c 5b 52 30 5d 2c 23 31 20 5c 20 53 74 6f 72 |1,[R0],#1 \ Stor| 00000ea0 65 20 69 6e 20 62 75 66 66 65 72 0d 05 e6 11 20 |e in buffer.... | 00000eb0 20 20 43 4d 50 20 52 31 2c 23 31 33 0d 05 f0 34 | CMP R1,#13...4| 00000ec0 20 20 20 42 4e 45 20 49 6e 74 31 20 20 20 20 20 | BNE Int1 | 00000ed0 20 20 20 5c 20 4e 6f 74 20 61 74 20 65 6e 64 20 | \ Not at end | 00000ee0 73 6f 20 67 65 74 20 6e 65 78 74 20 62 79 74 65 |so get next byte| 00000ef0 0d 05 fa 14 20 20 20 41 44 52 20 52 30 2c 42 75 |.... ADR R0,Bu| 00000f00 66 66 65 72 0d 06 04 16 20 20 20 41 44 52 20 52 |ffer.... ADR R| 00000f10 31 2c 52 65 67 53 74 6f 72 65 0d 06 0e 11 20 20 |1,RegStore.... | 00000f20 20 4d 4f 56 20 52 32 2c 23 36 33 0d 06 18 23 20 | MOV R2,#63...# | 00000f30 20 20 53 57 49 20 22 58 4f 53 5f 45 76 61 6c 75 | SWI "XOS_Evalu| 00000f40 61 74 65 45 78 70 72 65 73 73 69 6f 6e 22 0d 06 |ateExpression"..| 00000f50 22 0f 20 20 20 42 56 53 20 49 6e 74 35 0d 06 2c |". BVS Int5..,| 00000f60 29 20 20 20 43 4d 50 20 52 31 2c 23 30 20 20 20 |) CMP R1,#0 | 00000f70 20 20 20 5c 20 49 73 20 69 74 20 61 6e 20 69 6e | \ Is it an in| 00000f80 74 65 67 65 72 3f 0d 06 36 27 20 20 20 42 45 51 |teger?..6' BEQ| 00000f90 20 49 6e 74 32 20 20 20 20 20 20 20 5c 20 59 65 | Int2 \ Ye| 00000fa0 73 20 73 6f 20 63 6f 6e 74 69 6e 75 65 0d 06 40 |s so continue..@| 00000fb0 09 2e 49 6e 74 33 0d 06 4a 15 20 20 20 41 44 52 |..Int3..J. ADR| 00000fc0 20 52 30 2c 43 6f 64 65 45 72 72 0d 06 54 09 2e | R0,CodeErr..T..| 00000fd0 49 6e 74 35 0d 06 5e 19 20 20 20 4c 44 4d 46 44 |Int5..^. LDMFD| 00000fe0 20 52 31 33 21 2c 7b 52 31 2d 52 35 7d 0d 06 68 | R13!,{R1-R5}..h| 00000ff0 0e 20 20 20 42 20 45 72 72 6f 72 0d 06 72 09 2e |. B Error..r..| 00001000 49 6e 74 32 0d 06 7c 12 20 20 20 43 4d 50 20 52 |Int2..|. CMP R| 00001010 32 2c 23 32 35 36 0d 06 86 28 20 20 20 42 43 43 |2,#256...( BCC| 00001020 20 49 6e 74 34 20 20 20 20 20 20 5c 20 56 61 6c | Int4 \ Val| 00001030 69 64 20 63 6f 64 65 20 6e 75 6d 62 65 72 0d 06 |id code number..| 00001040 90 20 20 20 20 43 4d 4e 20 52 32 2c 23 31 20 20 |. CMN R2,#1 | 00001050 20 20 20 5c 20 49 73 20 69 74 20 2d 31 3f 0d 06 | \ Is it -1?..| 00001060 9a 30 20 20 20 42 4e 45 20 49 6e 74 33 20 20 20 |.0 BNE Int3 | 00001070 20 20 20 5c 20 4e 6f 20 73 6f 20 6e 6f 74 20 76 | \ No so not v| 00001080 61 6c 69 64 20 70 61 72 61 6d 65 74 65 72 0d 06 |alid parameter..| 00001090 a4 15 20 20 20 4c 44 52 42 20 52 31 2c 41 63 74 |.. LDRB R1,Act| 000010a0 69 76 65 0d 06 ae 10 20 20 20 4d 4f 56 20 52 30 |ive.... MOV R0| 000010b0 2c 23 30 0d 06 b8 12 20 20 20 43 4d 50 20 52 31 |,#0.... CMP R1| 000010c0 2c 23 31 32 38 0d 06 c2 14 20 20 20 4d 4f 56 43 |,#128.... MOVC| 000010d0 53 20 52 30 2c 23 31 32 38 0d 06 cc 2e 20 20 20 |S R0,#128.... | 000010e0 53 54 52 42 20 52 30 2c 41 63 74 69 76 65 20 20 |STRB R0,Active | 000010f0 5c 20 43 6c 65 61 72 20 74 68 65 20 61 63 74 69 |\ Clear the acti| 00001100 76 65 20 66 6c 61 67 0d 06 d6 1c 20 20 20 4c 44 |ve flag.... LD| 00001110 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 34 2c |MFD R13!,{R0-R4,| 00001120 50 43 7d 0d 06 e0 09 2e 49 6e 74 34 0d 06 ea 12 |PC}.....Int4....| 00001130 20 20 20 41 44 52 20 52 31 2c 43 6f 64 65 0d 06 | ADR R1,Code..| 00001140 f4 32 20 20 20 53 54 52 42 20 52 32 2c 5b 52 31 |.2 STRB R2,[R1| 00001150 5d 20 20 20 5c 20 53 74 6f 72 65 20 74 68 65 20 |] \ Store the | 00001160 6b 65 79 63 6f 64 65 20 72 65 71 75 69 72 65 64 |keycode required| 00001170 0d 06 fe 15 20 20 20 4c 44 52 42 20 52 31 2c 41 |.... LDRB R1,A| 00001180 63 74 69 76 65 0d 07 08 13 20 20 20 80 20 52 31 |ctive.... . R1| 00001190 2c 52 31 2c 23 31 32 38 0d 07 12 13 20 20 20 41 |,R1,#128.... A| 000011a0 44 44 20 52 31 2c 52 31 2c 23 31 0d 07 1c 2b 20 |DD R1,R1,#1...+ | 000011b0 20 20 43 4d 50 20 52 34 2c 23 31 20 20 20 20 20 | CMP R4,#1 | 000011c0 20 5c 20 4f 6e 6c 79 20 6f 6e 65 20 70 61 72 61 | \ Only one para| 000011d0 6d 65 74 65 72 3f 0d 07 26 15 20 20 20 41 44 44 |meter?..&. ADD| 000011e0 4e 45 20 52 31 2c 52 31 2c 23 31 0d 07 30 15 20 |NE R1,R1,#1..0. | 000011f0 20 20 53 54 52 42 20 52 31 2c 41 63 74 69 76 65 | STRB R1,Active| 00001200 0d 07 3a 3b 20 20 20 4c 44 4d 45 51 46 44 20 52 |..:; LDMEQFD R| 00001210 31 33 21 2c 7b 52 30 2d 52 34 2c 50 43 7d 20 5c |13!,{R0-R4,PC} \| 00001220 20 49 66 20 6e 6f 20 6f 74 68 65 72 20 70 61 72 | If no other par| 00001230 61 6d 20 74 68 65 6e 20 65 6e 64 0d 07 44 10 20 |am then end..D. | 00001240 20 20 4d 4f 56 20 52 30 2c 52 33 0d 07 4e 15 20 | MOV R0,R3..N. | 00001250 20 20 41 44 52 20 52 31 2c 43 6f 6d 6d 61 6e 64 | ADR R1,Command| 00001260 0d 07 58 0d 2e 43 6f 6d 4d 6f 76 65 31 0d 07 62 |..X..ComMove1..b| 00001270 16 20 20 20 4c 44 52 42 20 52 32 2c 5b 52 30 5d |. LDRB R2,[R0]| 00001280 2c 23 31 0d 07 6c 16 20 20 20 53 54 52 42 20 52 |,#1..l. STRB R| 00001290 32 2c 5b 52 31 5d 2c 23 31 0d 07 76 11 20 20 20 |2,[R1],#1..v. | 000012a0 43 4d 50 20 52 32 2c 23 31 33 0d 07 80 13 20 20 |CMP R2,#13.... | 000012b0 20 42 4e 45 20 43 6f 6d 4d 6f 76 65 31 0d 07 8a | BNE ComMove1...| 000012c0 1c 20 20 20 4c 44 4d 46 44 20 52 31 33 21 2c 7b |. LDMFD R13!,{| 000012d0 52 30 2d 52 34 2c 50 43 7d 0d 07 94 04 0d 07 9e |R0-R4,PC}.......| 000012e0 0c 2e 43 6f 64 65 45 72 72 0d 07 a8 11 20 20 20 |..CodeErr.... | 000012f0 45 51 55 44 20 36 37 37 34 35 0d 07 b2 23 20 20 |EQUD 67745...# | 00001300 20 45 51 55 53 20 22 42 61 64 20 6b 65 79 63 6f | EQUS "Bad keyco| 00001310 64 65 20 70 61 72 61 6d 65 74 65 72 22 0d 07 bc |de parameter"...| 00001320 0d 20 20 20 45 51 55 42 20 30 0d 07 c6 0c 20 20 |. EQUB 0.... | 00001330 20 41 4c 49 47 4e 0d 07 d0 04 0d 07 da 0a 2e 45 | ALIGN.........E| 00001340 72 72 6f 72 0d 07 e4 10 20 20 20 4d 4f 56 20 52 |rror.... MOV R| 00001350 31 2c 50 43 0d 07 ee 29 20 20 20 84 52 20 52 31 |1,PC...) .R R1| 00001360 2c 52 31 2c 23 31 3c 3c 32 38 20 5c 20 53 65 74 |,R1,#1<<28 \ Set| 00001370 20 22 56 22 20 66 6c 61 67 20 62 69 74 0d 07 f8 | "V" flag bit...| 00001380 11 20 20 20 54 45 51 50 20 52 31 2c 23 30 0d 08 |. TEQP R1,#0..| 00001390 02 16 20 20 20 4c 44 4d 46 44 20 52 31 33 21 2c |.. LDMFD R13!,| 000013a0 7b 50 43 7d 0d 08 0c 04 0d 08 16 0c 2e 43 6c 61 |{PC}.........Cla| 000013b0 69 6d 65 64 0d 08 20 3f 20 20 20 45 51 55 42 20 |imed.. ? EQUB | 000013c0 30 20 5c 20 73 65 74 20 74 6f 20 32 35 35 20 77 |0 \ set to 255 w| 000013d0 68 65 6e 20 6d 6f 64 75 6c 65 20 68 61 73 20 63 |hen module has c| 000013e0 6c 61 69 6d 65 64 20 65 76 65 6e 74 20 76 65 63 |laimed event vec| 000013f0 74 6f 72 0d 08 2a 0c 2e 45 6e 61 62 6c 65 64 0d |tor..*..Enabled.| 00001400 08 34 38 20 20 20 45 51 55 42 20 30 20 5c 20 73 |.48 EQUB 0 \ s| 00001410 65 74 20 74 6f 20 32 35 35 20 77 68 65 6e 20 6d |et to 255 when m| 00001420 6f 64 75 6c 65 20 68 61 73 20 65 6e 61 62 6c 65 |odule has enable| 00001430 64 20 65 76 65 6e 74 0d 08 3e 0c 20 20 20 41 4c |d event..>. AL| 00001440 49 47 4e 0d 08 48 04 0d 08 52 0f 2e 45 76 65 6e |IGN..H...R..Even| 00001450 74 45 6e 74 72 79 0d 08 5c 1a 20 20 20 53 54 4d |tEntry..\. STM| 00001460 46 44 20 52 31 33 21 2c 7b 52 37 2c 52 31 34 7d |FD R13!,{R7,R14}| 00001470 0d 08 66 13 20 20 20 4c 44 52 42 20 52 37 2c 43 |..f. LDRB R7,C| 00001480 6f 64 65 0d 08 70 10 20 20 20 43 4d 50 20 52 37 |ode..p. CMP R7| 00001490 2c 52 32 0d 08 7a 34 20 20 20 4c 44 4d 4e 45 46 |,R2..z4 LDMNEF| 000014a0 44 20 52 31 33 21 2c 7b 52 37 2c 50 43 7d 20 5c |D R13!,{R7,PC} \| 000014b0 20 4e 6f 74 20 6f 75 72 20 6b 65 79 20 73 6f 20 | Not our key so | 000014c0 70 61 73 73 20 6f 6e 0d 08 84 15 20 20 20 4c 44 |pass on.... LD| 000014d0 52 42 20 52 37 2c 41 63 74 69 76 65 0d 08 8e 2e |RB R7,Active....| 000014e0 20 20 20 43 4d 50 20 52 37 2c 23 31 20 20 20 20 | CMP R7,#1 | 000014f0 20 20 20 20 20 20 20 5c 20 41 72 65 20 77 65 20 | \ Are we | 00001500 61 63 74 69 76 65 20 61 6e 64 0d 08 98 2e 20 20 |active and.... | 00001510 20 43 4d 50 4e 45 20 52 37 2c 23 32 20 20 20 20 | CMPNE R7,#2 | 00001520 20 20 20 20 20 5c 20 6e 6f 74 20 62 75 73 79 20 | \ not busy | 00001530 61 6c 72 65 61 64 79 3f 0d 08 a2 2c 20 20 20 4c |already?..., L| 00001540 44 4d 4e 45 46 44 20 52 31 33 21 2c 7b 52 37 2c |DMNEFD R13!,{R7,| 00001550 50 43 7d 20 5c 20 4e 6f 2c 20 73 6f 20 70 61 73 |PC} \ No, so pas| 00001560 73 20 6f 6e 0d 08 ac 1c 20 20 20 53 54 4d 46 44 |s on.... STMFD| 00001570 20 52 31 33 21 2c 7b 52 30 2c 52 31 2c 52 36 7d | R13!,{R0,R1,R6}| 00001580 0d 08 b6 10 20 20 20 4d 4f 56 20 52 36 2c 50 43 |.... MOV R6,PC| 00001590 0d 08 c0 12 20 20 20 84 52 20 52 37 2c 52 36 2c |.... .R R7,R6,| 000015a0 23 33 0d 08 ca 23 20 20 20 54 45 51 50 20 52 37 |#3...# TEQP R7| 000015b0 2c 23 30 20 20 5c 20 45 6e 74 65 72 20 53 56 43 |,#0 \ Enter SVC| 000015c0 20 6d 6f 64 65 0d 08 d4 12 20 20 20 4d 4f 56 4e | mode.... MOVN| 000015d0 56 20 52 30 2c 52 30 0d 08 de 2d 20 20 20 53 54 |V R0,R0...- ST| 000015e0 4d 46 44 20 52 31 33 21 2c 7b 52 31 34 7d 20 5c |MFD R13!,{R14} \| 000015f0 20 53 74 6f 72 65 20 53 56 43 20 6d 6f 64 65 20 | Store SVC mode | 00001600 6c 69 6e 6b 0d 08 e8 16 20 20 20 41 44 52 20 52 |link.... ADR R| 00001610 30 2c 52 65 67 53 74 6f 72 65 0d 08 f2 14 20 20 |0,RegStore.... | 00001620 20 41 44 52 20 52 31 2c 52 65 74 75 72 6e 0d 08 | ADR R1,Return..| 00001630 fc 18 20 20 20 53 57 49 20 22 4f 53 5f 43 61 6c |.. SWI "OS_Cal| 00001640 6c 42 61 63 6b 22 0d 09 06 1b 20 20 20 53 57 49 |lBack".... SWI| 00001650 20 22 4f 53 5f 53 65 74 43 61 6c 6c 42 61 63 6b | "OS_SetCallBack| 00001660 22 0d 09 10 2f 20 20 20 4c 44 4d 46 44 20 52 31 |".../ LDMFD R1| 00001670 33 21 2c 7b 52 31 34 7d 20 5c 20 52 65 73 74 6f |3!,{R14} \ Resto| 00001680 72 65 20 53 56 43 20 6d 6f 64 65 20 6c 69 6e 6b |re SVC mode link| 00001690 0d 09 1a 2f 20 20 20 54 45 51 50 20 52 36 2c 23 |.../ TEQP R6,#| 000016a0 30 20 20 20 20 20 20 20 5c 20 52 65 73 74 6f 72 |0 \ Restor| 000016b0 65 20 6f 72 69 67 69 6e 61 6c 20 6d 6f 64 65 0d |e original mode.| 000016c0 09 24 12 20 20 20 4d 4f 56 4e 56 20 52 30 2c 52 |.$. MOVNV R0,R| 000016d0 30 0d 09 2e 22 20 20 20 4c 44 4d 46 44 20 52 31 |0..." LDMFD R1| 000016e0 33 21 2c 7b 52 30 2c 52 31 2c 52 36 2c 52 37 2c |3!,{R0,R1,R6,R7,| 000016f0 50 43 7d 0d 09 38 04 0d 09 42 0b 2e 41 63 74 69 |PC}..8...B..Acti| 00001700 76 65 0d 09 4c 82 20 20 20 45 51 55 44 20 30 20 |ve..L. EQUD 0 | 00001710 20 20 5c 20 30 3d 4e 6f 74 20 61 63 74 69 76 65 | \ 0=Not active| 00001720 2c 31 3d 65 6e 74 65 72 20 63 6f 6d 6d 61 6e 64 |,1=enter command| 00001730 73 2c 32 3d 65 78 65 63 75 74 65 20 73 70 65 63 |s,2=execute spec| 00001740 69 66 69 65 64 20 63 6f 6d 6d 61 6e 64 20 2d 20 |ified command - | 00001750 31 32 38 20 61 64 64 65 64 20 74 6f 20 63 75 72 |128 added to cur| 00001760 72 65 6e 74 20 76 61 6c 75 65 20 77 68 69 6c 65 |rent value while| 00001770 20 61 63 74 75 61 6c 6c 79 20 70 72 6f 63 65 73 | actually proces| 00001780 73 69 6e 67 0d 09 56 09 2e 43 6f 64 65 0d 09 60 |sing..V..Code..`| 00001790 2e 20 20 20 45 51 55 44 20 30 20 20 20 5c 20 53 |. EQUD 0 \ S| 000017a0 74 6f 72 61 67 65 20 66 6f 72 20 6b 65 79 63 6f |torage for keyco| 000017b0 64 65 20 72 65 71 75 69 72 65 64 0d 09 6a 04 0d |de required..j..| 000017c0 09 74 0b 2e 42 75 66 66 65 72 0d 09 7e 08 20 20 |.t..Buffer..~. | 000017d0 20 5d 0d 09 88 04 0d 09 92 13 50 25 2b 3d 32 35 | ]........P%+=25| 000017e0 36 3a 4f 25 2b 3d 32 35 36 0d 09 9c 0e 43 6f 6d |6:O%+=256....Com| 000017f0 6d 61 6e 64 3d 50 25 0d 09 a6 13 50 25 2b 3d 32 |mand=P%....P%+=2| 00001800 35 36 3a 4f 25 2b 3d 32 35 36 0d 09 b0 0f 52 65 |56:O%+=256....Re| 00001810 67 53 74 6f 72 65 3d 50 25 0d 09 ba 11 50 25 2b |gStore=P%....P%+| 00001820 3d 36 34 3a 4f 25 2b 3d 36 34 0d 09 c4 0b 5b 4f |=64:O%+=64....[O| 00001830 50 54 20 49 25 0d 09 ce 0b 2e 52 65 74 75 72 6e |PT I%.....Return| 00001840 0d 09 d8 15 20 20 20 4c 44 52 42 20 52 30 2c 41 |.... LDRB R0,A| 00001850 63 74 69 76 65 0d 09 e2 15 20 20 20 41 44 44 20 |ctive.... ADD | 00001860 52 30 2c 52 30 2c 23 31 32 38 0d 09 ec 3d 20 20 |R0,R0,#128...= | 00001870 20 53 54 52 42 20 52 30 2c 41 63 74 69 76 65 20 | STRB R0,Active | 00001880 20 20 5c 20 43 68 61 6e 67 65 20 61 63 74 69 76 | \ Change activ| 00001890 65 20 66 6c 61 67 20 74 6f 20 69 6e 64 69 63 61 |e flag to indica| 000018a0 74 65 20 62 75 73 79 0d 09 f6 10 20 20 20 4d 4f |te busy.... MO| 000018b0 56 20 52 31 2c 50 43 0d 0a 00 2e 20 20 20 42 49 |V R1,PC.... BI| 000018c0 43 20 52 31 2c 52 31 2c 23 31 3c 3c 32 37 20 5c |C R1,R1,#1<<27 \| 000018d0 20 43 6c 65 61 72 20 69 6e 74 65 72 72 75 70 74 | Clear interrupt| 000018e0 20 66 6c 61 67 0d 0a 0a 25 20 20 20 84 52 20 52 | flag...% .R R| 000018f0 31 2c 52 31 2c 23 33 20 20 20 20 20 5c 20 53 65 |1,R1,#3 \ Se| 00001900 74 20 53 56 43 20 6d 6f 64 65 0d 0a 14 28 20 20 |t SVC mode...( | 00001910 20 54 45 51 50 20 52 31 2c 23 30 20 20 20 20 20 | TEQP R1,#0 | 00001920 20 20 5c 20 45 6e 74 65 72 20 53 56 43 20 6d 6f | \ Enter SVC mo| 00001930 64 65 0d 0a 1e 12 20 20 20 4d 4f 56 4e 56 20 52 |de.... MOVNV R| 00001940 31 2c 52 31 0d 0a 28 12 20 20 20 43 4d 50 20 52 |1,R1..(. CMP R| 00001950 30 2c 23 31 32 39 0d 0a 32 31 20 20 20 42 45 51 |0,#129..21 BEQ| 00001960 20 45 6e 74 65 72 43 6f 6d 6d 61 6e 64 20 5c 20 | EnterCommand \ | 00001970 43 6f 6d 6d 61 6e 64 73 20 74 6f 20 62 65 20 74 |Commands to be t| 00001980 79 70 65 64 20 69 6e 0d 0a 3c 37 20 20 20 41 44 |yped in..<7 AD| 00001990 52 20 52 30 2c 43 6f 6d 6d 61 6e 64 20 20 20 5c |R R0,Command \| 000019a0 20 65 6c 73 65 20 65 78 65 63 75 74 65 20 73 65 | else execute se| 000019b0 6c 65 63 74 65 64 20 63 6f 6d 6d 61 6e 64 0d 0a |lected command..| 000019c0 46 14 20 20 20 53 57 49 20 22 58 4f 53 5f 43 4c |F. SWI "XOS_CL| 000019d0 49 22 0d 0a 50 33 20 20 20 53 57 49 56 53 20 32 |I"..P3 SWIVS 2| 000019e0 35 36 2b 37 2b 28 31 3c 3c 31 37 29 20 5c 20 42 |56+7+(1<<17) \ B| 000019f0 65 65 70 20 69 66 20 65 72 72 6f 72 20 6f 63 63 |eep if error occ| 00001a00 75 72 72 65 64 0d 0a 5a 0f 20 20 20 42 20 46 69 |urred..Z. B Fi| 00001a10 6e 69 73 68 0d 0a 64 37 2e 45 6e 74 65 72 43 6f |nish..d7.EnterCo| 00001a20 6d 6d 61 6e 64 20 20 20 20 5c 20 50 72 65 70 61 |mmand \ Prepa| 00001a30 72 65 20 73 63 72 65 65 6e 20 66 6f 72 20 63 6f |re screen for co| 00001a40 6d 6d 61 6e 64 20 65 6e 74 72 79 0d 0a 6e 12 20 |mmand entry..n. | 00001a50 20 20 4d 4f 56 20 52 30 2c 23 31 31 37 0d 0a 78 | MOV R0,#117..x| 00001a60 15 20 20 20 53 57 49 20 22 58 4f 53 5f 42 79 74 |. SWI "XOS_Byt| 00001a70 65 22 0d 0a 82 18 20 20 20 53 54 52 42 20 52 31 |e".... STRB R1| 00001a80 2c 56 64 75 53 74 61 74 75 73 0d 0a 8c 10 20 20 |,VduStatus.... | 00001a90 20 4d 4f 56 20 52 30 2c 23 33 0d 0a 96 3a 20 20 | MOV R0,#3...: | 00001aa0 20 4d 4f 56 20 52 31 2c 23 25 31 30 31 30 31 30 | MOV R1,#%101010| 00001ab0 30 20 5c 20 44 69 73 61 62 6c 65 20 70 72 69 6e |0 \ Disable prin| 00001ac0 74 65 72 2c 20 53 70 6f 6f 6c 20 61 6e 64 20 52 |ter, Spool and R| 00001ad0 53 34 32 33 0d 0a a0 15 20 20 20 53 57 49 20 22 |S423.... SWI "| 00001ae0 58 4f 53 5f 42 79 74 65 22 0d 0a aa 16 20 20 20 |XOS_Byte".... | 00001af0 53 54 52 42 20 52 31 2c 53 74 72 65 61 6d 73 0d |STRB R1,Streams.| 00001b00 0a b4 12 20 20 20 4d 4f 56 20 52 30 2c 23 31 36 |... MOV R0,#16| 00001b10 35 0d 0a be 15 20 20 20 53 57 49 20 22 58 4f 53 |5.... SWI "XOS| 00001b20 5f 42 79 74 65 22 0d 0a c8 18 20 20 20 53 54 52 |_Byte".... STR| 00001b30 42 20 52 31 2c 43 75 72 73 6f 72 50 6f 73 0d 0a |B R1,CursorPos..| 00001b40 d2 1a 20 20 20 53 54 52 42 20 52 32 2c 43 75 72 |.. STRB R2,Cur| 00001b50 73 6f 72 50 6f 73 2b 31 0d 0a dc 12 20 20 20 4d |sorPos+1.... M| 00001b60 4f 56 20 52 30 2c 23 32 31 38 0d 0a e6 10 20 20 |OV R0,#218.... | 00001b70 20 4d 4f 56 20 52 31 2c 23 30 0d 0a f0 10 20 20 | MOV R1,#0.... | 00001b80 20 4d 4f 56 20 52 32 2c 23 30 0d 0a fa 22 20 20 | MOV R2,#0..." | 00001b90 20 53 57 49 20 22 58 4f 53 5f 42 79 74 65 22 20 | SWI "XOS_Byte" | 00001ba0 20 5c 20 43 6c 65 61 72 20 ef 20 51 0d 0b 04 10 | \ Clear . Q....| 00001bb0 20 20 20 4d 4f 56 20 52 30 2c 23 30 0d 0b 0e 11 | MOV R0,#0....| 00001bc0 20 20 20 4d 4f 56 20 52 31 2c 23 31 36 0d 0b 18 | MOV R1,#16...| 00001bd0 1c 20 20 20 53 57 49 20 22 58 4f 53 5f 52 65 61 |. SWI "XOS_Rea| 00001be0 64 50 61 6c 65 74 74 65 22 0d 0b 22 15 20 20 20 |dPalette"..". | 00001bf0 53 54 52 20 52 32 2c 43 6f 6c 6f 75 72 73 0d 0b |STR R2,Colours..| 00001c00 2c 17 20 20 20 53 54 52 20 52 33 2c 43 6f 6c 6f |,. STR R3,Colo| 00001c10 75 72 73 2b 34 0d 0b 36 10 20 20 20 4d 4f 56 20 |urs+4..6. MOV | 00001c20 52 30 2c 23 31 0d 0b 40 1c 20 20 20 53 57 49 20 |R0,#1..@. SWI | 00001c30 22 58 4f 53 5f 52 65 61 64 50 61 6c 65 74 74 65 |"XOS_ReadPalette| 00001c40 22 0d 0b 4a 17 20 20 20 53 54 52 20 52 32 2c 43 |"..J. STR R2,C| 00001c50 6f 6c 6f 75 72 73 2b 38 0d 0b 54 18 20 20 20 53 |olours+8..T. S| 00001c60 54 52 20 52 33 2c 43 6f 6c 6f 75 72 73 2b 31 32 |TR R3,Colours+12| 00001c70 0d 0b 5e 16 20 20 20 41 44 52 20 52 30 2c 56 64 |..^. ADR R0,Vd| 00001c80 75 42 6c 6f 63 6b 0d 0b 68 14 20 20 20 41 44 52 |uBlock..h. ADR| 00001c90 20 52 31 2c 57 69 6e 64 6f 77 0d 0b 72 21 20 20 | R1,Window..r! | 00001ca0 20 53 57 49 20 22 58 4f 53 5f 52 65 61 64 56 64 | SWI "XOS_ReadVd| 00001cb0 75 56 61 72 69 61 62 6c 65 73 22 0d 0b 7c 19 20 |uVariables"..|. | 00001cc0 20 20 4c 44 52 20 52 30 2c 53 63 72 65 65 6e 57 | LDR R0,ScreenW| 00001cd0 69 64 74 68 0d 0b 86 1c 20 20 20 53 54 52 42 20 |idth.... STRB | 00001ce0 52 30 2c 4e 65 77 53 65 74 74 69 6e 67 73 2b 34 |R0,NewSettings+4| 00001cf0 0d 0b 90 10 20 20 20 4d 4f 56 20 52 30 2c 23 31 |.... MOV R0,#1| 00001d00 0d 0b 9a 18 20 20 20 4c 44 52 20 52 33 2c 53 63 |.... LDR R3,Sc| 00001d10 72 65 65 6e 53 69 7a 65 0d 0b a4 17 20 20 20 4d |reenSize.... M| 00001d20 4f 56 20 52 31 2c 52 33 2c 4c 53 52 20 23 31 0d |OV R1,R3,LSR #1.| 00001d30 0b ae 22 20 20 20 53 57 49 20 22 58 4f 53 5f 43 |.." SWI "XOS_C| 00001d40 6c 61 69 6d 53 63 72 65 65 6e 4d 65 6d 6f 72 79 |laimScreenMemory| 00001d50 22 0d 0b b8 12 20 20 20 4d 4f 56 43 53 20 52 32 |".... MOVCS R2| 00001d60 2c 23 30 0d 0b c2 4c 20 20 20 53 54 52 20 52 32 |,#0...L STR R2| 00001d70 2c 53 63 72 65 65 6e 43 6c 61 69 6d 65 64 20 20 |,ScreenClaimed | 00001d80 20 20 5c 20 53 65 74 20 66 6c 61 67 20 74 6f 20 | \ Set flag to | 00001d90 69 6e 64 69 63 61 74 65 20 69 66 20 73 63 72 65 |indicate if scre| 00001da0 65 6e 20 6d 65 6d 6f 72 79 20 66 6f 75 6e 64 0d |en memory found.| 00001db0 0b cc 16 20 20 20 42 43 53 20 56 64 75 53 65 71 |... BCS VduSeq| 00001dc0 75 65 6e 63 65 0d 0b d6 19 20 20 20 4c 44 52 20 |uence.... LDR | 00001dd0 52 31 2c 53 63 72 65 65 6e 53 74 61 72 74 0d 0b |R1,ScreenStart..| 00001de0 e0 17 20 20 20 4d 4f 56 20 52 33 2c 52 33 2c 4c |.. MOV R3,R3,L| 00001df0 53 52 20 23 31 0d 0b ea 10 2e 53 63 72 65 65 6e |SR #1.....Screen| 00001e00 4c 6f 6f 70 31 0d 0b f4 19 20 20 20 4c 44 4d 49 |Loop1.... LDMI| 00001e10 41 20 52 31 21 2c 7b 52 34 2d 52 31 31 7d 0d 0b |A R1!,{R4-R11}..| 00001e20 fe 19 20 20 20 53 54 4d 49 41 20 52 32 21 2c 7b |.. STMIA R2!,{| 00001e30 52 34 2d 52 31 31 7d 0d 0c 08 15 20 20 20 53 55 |R4-R11}.... SU| 00001e40 42 53 20 52 33 2c 52 33 2c 23 33 32 0d 0c 12 16 |BS R3,R3,#32....| 00001e50 20 20 20 42 48 49 20 53 63 72 65 65 6e 4c 6f 6f | BHI ScreenLoo| 00001e60 70 31 0d 0c 1c 10 2e 56 64 75 53 65 71 75 65 6e |p1.....VduSequen| 00001e70 63 65 0d 0c 26 19 20 20 20 41 44 52 20 52 30 2c |ce..&. ADR R0,| 00001e80 4e 65 77 53 65 74 74 69 6e 67 73 0d 0c 30 18 20 |NewSettings..0. | 00001e90 20 20 41 44 52 20 52 31 2c 54 65 72 6d 69 6e 61 | ADR R1,Termina| 00001ea0 74 6f 72 0d 0c 3a 13 20 20 20 53 55 42 20 52 31 |tor..:. SUB R1| 00001eb0 2c 52 31 2c 52 30 0d 0c 44 16 20 20 20 53 57 49 |,R1,R0..D. SWI| 00001ec0 20 22 4f 53 5f 57 72 69 74 65 4e 22 0d 0c 4e 04 | "OS_WriteN"..N.| 00001ed0 0d 0c 58 0b 2e 45 43 4c 6f 6f 70 0d 0c 62 16 20 |..X..ECLoop..b. | 00001ee0 20 20 53 57 49 20 22 4f 53 5f 57 72 69 74 65 53 | SWI "OS_WriteS| 00001ef0 22 0d 0c 6c 15 20 20 20 45 51 55 44 20 26 30 30 |"..l. EQUD &00| 00001f00 32 41 30 41 30 44 0d 0c 76 14 20 20 20 41 44 52 |2A0A0D..v. ADR| 00001f10 20 52 30 2c 42 75 66 66 65 72 0d 0c 80 12 20 20 | R0,Buffer.... | 00001f20 20 4d 4f 56 20 52 31 2c 23 32 35 34 0d 0c 8a 11 | MOV R1,#254....| 00001f30 20 20 20 4d 4f 56 20 52 32 2c 23 33 32 0d 0c 94 | MOV R2,#32...| 00001f40 12 20 20 20 4d 4f 56 20 52 33 2c 23 32 35 35 0d |. MOV R3,#255.| 00001f50 0c 9e 19 20 20 20 53 57 49 20 22 58 4f 53 5f 52 |... SWI "XOS_R| 00001f60 65 61 64 4c 69 6e 65 22 0d 0c a8 13 20 20 20 42 |eadLine".... B| 00001f70 43 53 20 45 73 63 45 72 72 6f 72 0d 0c b2 15 20 |CS EscError.... | 00001f80 20 20 42 56 53 20 50 72 69 6e 74 45 72 72 6f 72 | BVS PrintError| 00001f90 0d 0c bc 10 20 20 20 43 4d 50 20 52 31 2c 23 30 |.... CMP R1,#0| 00001fa0 0d 0c c6 11 20 20 20 42 45 51 20 54 69 64 79 55 |.... BEQ TidyU| 00001fb0 70 0d 0c d0 14 20 20 20 53 57 49 20 22 58 4f 53 |p.... SWI "XOS| 00001fc0 5f 43 4c 49 22 0d 0c da 15 20 20 20 42 56 53 20 |_CLI".... BVS | 00001fd0 50 72 69 6e 74 45 72 72 6f 72 0d 0c e4 0f 20 20 |PrintError.... | 00001fe0 20 42 20 45 43 4c 6f 6f 70 0d 0c ee 42 2e 56 64 | B ECLoop...B.Vd| 00001ff0 75 42 6c 6f 63 6b 20 20 20 20 20 20 20 20 5c 20 |uBlock \ | 00002000 55 73 65 64 20 61 73 20 69 6e 70 75 74 20 62 6c |Used as input bl| 00002010 6f 63 6b 20 66 6f 72 20 4f 53 5f 52 65 61 64 56 |ock for OS_ReadV| 00002020 64 75 56 61 72 69 61 62 6c 65 73 0d 0c f8 0f 20 |duVariables.... | 00002030 20 20 45 51 55 44 20 31 33 32 0d 0d 02 0f 20 20 | EQUD 132.... | 00002040 20 45 51 55 44 20 31 33 33 0d 0d 0c 0f 20 20 20 | EQUD 133.... | 00002050 45 51 55 44 20 31 33 34 0d 0d 16 0f 20 20 20 45 |EQUD 134.... E| 00002060 51 55 44 20 31 33 35 0d 0d 20 0f 20 20 20 45 51 |QUD 135.. . EQ| 00002070 55 44 20 31 34 39 0d 0d 2a 0f 20 20 20 45 51 55 |UD 149..*. EQU| 00002080 44 20 31 35 35 0d 0d 34 0f 20 20 20 45 51 55 44 |D 155..4. EQUD| 00002090 20 31 35 36 0d 0d 3e 0f 20 20 20 45 51 55 44 20 | 156..>. EQUD | 000020a0 31 35 39 0d 0d 48 0f 20 20 20 45 51 55 44 20 31 |159..H. EQUD 1| 000020b0 36 30 0d 0d 52 0d 20 20 20 45 51 55 44 20 31 0d |60..R. EQUD 1.| 000020c0 0d 5c 0d 20 20 20 45 51 55 44 20 37 0d 0d 66 0e |.\. EQUD 7..f.| 000020d0 20 20 20 45 51 55 44 20 2d 31 0d 0d 70 43 2e 43 | EQUD -1..pC.C| 000020e0 6f 6c 6f 75 72 73 20 20 20 20 20 20 20 20 5c 20 |olours \ | 000020f0 55 73 65 64 20 74 6f 20 73 74 6f 72 65 20 61 70 |Used to store ap| 00002100 70 6c 69 63 61 74 69 6f 6e 20 ef 20 76 61 72 69 |plication . vari| 00002110 61 62 6c 65 20 73 65 74 74 69 6e 67 73 0d 0d 7a |able settings..z| 00002120 0d 20 20 20 45 51 55 44 20 30 0d 0d 84 0d 20 20 |. EQUD 0.... | 00002130 20 45 51 55 44 20 30 0d 0d 8e 0d 20 20 20 45 51 | EQUD 0.... EQ| 00002140 55 44 20 30 0d 0d 98 0d 20 20 20 45 51 55 44 20 |UD 0.... EQUD | 00002150 30 0d 0d a2 0b 2e 57 69 6e 64 6f 77 0d 0d ac 0d |0.....Window....| 00002160 20 20 20 45 51 55 44 20 30 0d 0d b6 0d 20 20 20 | EQUD 0.... | 00002170 45 51 55 44 20 30 0d 0d c0 0d 20 20 20 45 51 55 |EQUD 0.... EQU| 00002180 44 20 30 0d 0d ca 0d 20 20 20 45 51 55 44 20 30 |D 0.... EQUD 0| 00002190 0d 0d d4 10 2e 53 63 72 65 65 6e 53 74 61 72 74 |.....ScreenStart| 000021a0 0d 0d de 0d 20 20 20 45 51 55 44 20 30 0d 0d e8 |.... EQUD 0...| 000021b0 0c 2e 4c 6f 67 43 6f 6c 73 0d 0d f2 0d 20 20 20 |..LogCols.... | 000021c0 45 51 55 44 20 30 0d 0d fc 0d 20 20 20 45 51 55 |EQUD 0.... EQU| 000021d0 44 20 30 0d 0e 06 0a 2e 54 69 6e 74 73 0d 0e 10 |D 0.....Tints...| 000021e0 0d 20 20 20 45 51 55 44 20 30 0d 0e 1a 0d 20 20 |. EQUD 0.... | 000021f0 20 45 51 55 44 20 30 0d 0e 24 10 2e 53 63 72 65 | EQUD 0..$..Scre| 00002200 65 6e 57 69 64 74 68 0d 0e 2e 0d 20 20 20 45 51 |enWidth.... EQ| 00002210 55 44 20 30 0d 0e 38 0f 2e 53 63 72 65 65 6e 53 |UD 0..8..ScreenS| 00002220 69 7a 65 0d 0e 42 0d 20 20 20 45 51 55 44 20 30 |ize..B. EQUD 0| 00002230 0d 0e 4c 12 2e 53 63 72 65 65 6e 43 6c 61 69 6d |..L..ScreenClaim| 00002240 65 64 0d 0e 56 0d 20 20 20 45 51 55 44 20 30 0d |ed..V. EQUD 0.| 00002250 0e 60 0e 2e 56 64 75 53 74 61 74 75 73 0d 0e 6a |.`..VduStatus..j| 00002260 0d 20 20 20 45 51 55 42 20 30 0d 0e 74 0e 2e 43 |. EQUB 0..t..C| 00002270 75 72 73 6f 72 50 6f 73 0d 0e 7e 0d 20 20 20 45 |ursorPos..~. E| 00002280 51 55 57 20 30 0d 0e 88 0c 2e 53 74 72 65 61 6d |QUW 0.....Stream| 00002290 73 0d 0e 92 0d 20 20 20 45 51 55 42 20 30 0d 0e |s.... EQUB 0..| 000022a0 9c 46 2e 4e 65 77 53 65 74 74 69 6e 67 73 20 20 |.F.NewSettings | 000022b0 20 20 5c 20 20 43 6f 6e 74 61 69 6e 73 20 ef 20 | \ Contains . | 000022c0 63 6f 64 65 73 20 74 6f 20 73 65 74 20 75 70 20 |codes to set up | 000022d0 63 6f 6d 6d 61 6e 64 20 65 6e 74 72 79 20 73 63 |command entry sc| 000022e0 72 65 65 6e 0d 0e a6 1b 20 20 20 45 51 55 42 20 |reen.... EQUB | 000022f0 36 20 5c 20 52 65 20 65 6e 61 62 6c 65 20 ef 0d |6 \ Re enable ..| 00002300 0e b0 20 20 20 20 45 51 55 42 20 32 38 20 5c 20 |.. EQUB 28 \ | 00002310 53 65 74 20 74 65 78 74 20 77 69 6e 64 6f 77 0d |Set text window.| 00002320 0e ba 0d 20 20 20 45 51 55 42 20 30 0d 0e c4 0e |... EQUB 0....| 00002330 20 20 20 45 51 55 42 20 31 32 0d 0e ce 23 20 20 | EQUB 12...# | 00002340 20 45 51 55 42 20 30 20 20 5c 20 75 70 64 61 74 | EQUB 0 \ updat| 00002350 65 64 20 62 79 20 70 72 6f 67 72 61 6d 0d 0e d8 |ed by program...| 00002360 0d 20 20 20 45 51 55 42 20 30 0d 0e e2 26 20 20 |. EQUB 0...& | 00002370 20 45 51 55 42 20 31 39 20 20 5c 20 44 65 66 69 | EQUB 19 \ Defi| 00002380 6e 65 20 63 6f 6c 20 30 20 61 73 20 62 6c 75 65 |ne col 0 as blue| 00002390 0d 0e ec 0d 20 20 20 45 51 55 42 20 30 0d 0e f6 |.... EQUB 0...| 000023a0 0d 20 20 20 45 51 55 44 20 34 0d 0f 00 27 20 20 |. EQUD 4...' | 000023b0 20 45 51 55 42 20 31 39 20 20 5c 20 44 65 66 69 | EQUB 19 \ Defi| 000023c0 6e 65 20 63 6f 6c 20 31 20 61 73 20 77 68 69 74 |ne col 1 as whit| 000023d0 65 0d 0f 0a 0d 20 20 20 45 51 55 42 20 31 0d 0f |e.... EQUB 1..| 000023e0 14 0d 20 20 20 45 51 55 44 20 37 0d 0f 1e 1f 20 |.. EQUD 7.... | 000023f0 20 20 45 51 55 42 20 31 35 20 5c 20 53 65 74 20 | EQUB 15 \ Set | 00002400 70 61 67 65 64 20 6d 6f 64 65 0d 0f 28 20 20 20 |paged mode..( | 00002410 20 45 51 55 42 20 34 20 20 5c 20 55 73 65 20 74 | EQUB 4 \ Use t| 00002420 65 78 74 20 63 75 72 73 6f 72 0d 0f 32 25 20 20 |ext cursor..2% | 00002430 20 45 51 55 42 20 31 37 20 5c 20 53 65 6c 65 63 | EQUB 17 \ Selec| 00002440 74 20 54 65 78 74 20 63 6f 6c 6f 75 72 20 31 0d |t Text colour 1.| 00002450 0f 3c 0d 20 20 20 45 51 55 42 20 31 0d 0f 46 2b |.<. EQUB 1..F+| 00002460 20 20 20 45 51 55 42 20 31 37 20 5c 20 53 65 6c | EQUB 17 \ Sel| 00002470 65 63 74 20 62 61 63 6b 67 72 6f 75 6e 64 20 63 |ect background c| 00002480 6f 6c 6f 75 72 20 30 0d 0f 50 0f 20 20 20 45 51 |olour 0..P. EQ| 00002490 55 42 20 31 32 38 0d 0f 5a 12 20 20 20 45 51 55 |UB 128..Z. EQU| 000024a0 42 20 31 32 20 5c 20 db 0d 0f 64 0f 2e 54 65 72 |B 12 \ ...d..Ter| 000024b0 6d 69 6e 61 74 6f 72 0d 0f 6e 1a 20 20 20 53 54 |minator..n. ST| 000024c0 4d 46 44 20 52 31 33 21 2c 7b 52 30 2c 52 31 34 |MFD R13!,{R0,R14| 000024d0 7d 0d 0f 78 10 20 20 20 4d 4f 56 20 52 30 2c 23 |}..x. MOV R0,#| 000024e0 38 0d 0f 82 0d 2e 54 65 72 6d 4c 6f 6f 70 0d 0f |8.....TermLoop..| 000024f0 8c 0e 20 20 20 53 57 49 20 32 35 36 0d 0f 96 14 |.. SWI 256....| 00002500 20 20 20 53 55 42 53 20 52 30 2c 52 30 2c 23 31 | SUBS R0,R0,#1| 00002510 0d 0f a0 13 20 20 20 42 4e 45 20 54 65 72 6d 4c |.... BNE TermL| 00002520 6f 6f 70 0d 0f aa 19 20 20 20 4c 44 4d 46 44 20 |oop.... LDMFD | 00002530 52 31 33 21 2c 7b 52 30 2c 50 43 7d 0d 0f b4 04 |R13!,{R0,PC}....| 00002540 0d 0f be 4b 2e 54 69 64 79 55 70 20 20 20 20 20 |...K.TidyUp | 00002550 20 20 20 20 20 20 20 5c 20 52 65 73 65 74 73 20 | \ Resets | 00002560 61 70 70 6c 69 63 61 74 69 6f 6e 20 ef 20 76 61 |application . va| 00002570 72 69 61 62 6c 65 73 20 61 6e 64 20 72 65 73 74 |riables and rest| 00002580 6f 72 65 73 20 73 63 72 65 65 6e 0d 0f c8 15 20 |ores screen.... | 00002590 20 20 41 44 52 20 52 33 2c 43 6f 6c 6f 75 72 73 | ADR R3,Colours| 000025a0 0d 0f d2 10 20 20 20 4d 4f 56 20 52 31 2c 23 34 |.... MOV R1,#4| 000025b0 0d 0f dc 11 20 20 20 4d 4f 56 20 52 32 2c 23 31 |.... MOV R2,#1| 000025c0 32 0d 0f e6 0b 2e 54 4c 6f 6f 70 31 0d 0f f0 11 |2.....TLoop1....| 000025d0 20 20 20 53 57 49 20 32 35 36 2b 31 39 0d 0f fa | SWI 256+19...| 000025e0 17 20 20 20 4d 4f 56 20 52 30 2c 52 32 2c 4c 53 |. MOV R0,R2,LS| 000025f0 52 20 23 33 0d 10 04 16 20 20 20 53 57 49 20 22 |R #3.... SWI "| 00002600 4f 53 5f 57 72 69 74 65 43 22 0d 10 0e 13 20 20 |OS_WriteC".... | 00002610 20 41 44 44 20 52 30 2c 52 33 2c 52 32 0d 10 18 | ADD R0,R3,R2...| 00002620 16 20 20 20 53 57 49 20 22 4f 53 5f 57 72 69 74 |. SWI "OS_Writ| 00002630 65 4e 22 0d 10 22 14 20 20 20 53 55 42 53 20 52 |eN"..". SUBS R| 00002640 32 2c 52 32 2c 23 34 0d 10 2c 11 20 20 20 42 50 |2,R2,#4..,. BP| 00002650 4c 20 54 4c 6f 6f 70 31 0d 10 36 10 20 20 20 4d |L TLoop1..6. M| 00002660 4f 56 20 52 32 2c 23 34 0d 10 40 13 20 20 20 41 |OV R2,#4..@. A| 00002670 44 52 20 52 33 2c 54 69 6e 74 73 0d 10 4a 0b 2e |DR R3,Tints..J..| 00002680 54 4c 6f 6f 70 32 0d 10 54 11 20 20 20 53 57 49 |TLoop2..T. SWI| 00002690 20 32 35 36 2b 32 33 0d 10 5e 11 20 20 20 53 57 | 256+23..^. SW| 000026a0 49 20 32 35 36 2b 31 37 0d 10 68 17 20 20 20 4d |I 256+17..h. M| 000026b0 4f 56 20 52 30 2c 52 32 2c 4c 53 52 20 23 32 0d |OV R0,R2,LSR #2.| 000026c0 10 72 16 20 20 20 53 57 49 20 22 4f 53 5f 57 72 |.r. SWI "OS_Wr| 000026d0 69 74 65 43 22 0d 10 7c 15 20 20 20 4c 44 52 20 |iteC"..|. LDR | 000026e0 52 30 2c 5b 52 33 2c 52 32 5d 0d 10 86 16 20 20 |R0,[R3,R2].... | 000026f0 20 53 57 49 20 22 4f 53 5f 57 72 69 74 65 43 22 | SWI "OS_WriteC"| 00002700 0d 10 90 14 20 20 20 42 4c 20 54 65 72 6d 69 6e |.... BL Termin| 00002710 61 74 6f 72 0d 10 9a 14 20 20 20 53 55 42 53 20 |ator.... SUBS | 00002720 52 32 2c 52 32 2c 23 34 0d 10 a4 11 20 20 20 42 |R2,R2,#4.... B| 00002730 50 4c 20 54 4c 6f 6f 70 32 0d 10 ae 16 20 20 20 |PL TLoop2.... | 00002740 4c 44 52 42 20 52 30 2c 4c 6f 67 43 6f 6c 73 0d |LDRB R0,LogCols.| 00002750 10 b8 11 20 20 20 53 57 49 20 32 35 36 2b 31 37 |... SWI 256+17| 00002760 0d 10 c2 16 20 20 20 53 57 49 20 22 4f 53 5f 57 |.... SWI "OS_W| 00002770 72 69 74 65 43 22 0d 10 cc 18 20 20 20 4c 44 52 |riteC".... LDR| 00002780 42 20 52 30 2c 4c 6f 67 43 6f 6c 73 2b 34 0d 10 |B R0,LogCols+4..| 00002790 d6 15 20 20 20 41 44 44 20 52 30 2c 52 30 2c 23 |.. ADD R0,R0,#| 000027a0 31 32 38 0d 10 e0 11 20 20 20 53 57 49 20 32 35 |128.... SWI 25| 000027b0 36 2b 31 37 0d 10 ea 16 20 20 20 53 57 49 20 22 |6+17.... SWI "| 000027c0 4f 53 5f 57 72 69 74 65 43 22 0d 10 f4 11 20 20 |OS_WriteC".... | 000027d0 20 53 57 49 20 32 35 36 2b 32 38 0d 10 fe 14 20 | SWI 256+28.... | 000027e0 20 20 41 44 52 20 52 31 2c 57 69 6e 64 6f 77 0d | ADR R1,Window.| 000027f0 11 08 10 20 20 20 4d 4f 56 20 52 32 2c 23 34 0d |... MOV R2,#4.| 00002800 11 12 0b 2e 54 4c 6f 6f 70 33 0d 11 1c 16 20 20 |....TLoop3.... | 00002810 20 4c 44 52 42 20 52 30 2c 5b 52 31 5d 2c 23 34 | LDRB R0,[R1],#4| 00002820 0d 11 26 16 20 20 20 53 57 49 20 22 4f 53 5f 57 |..&. SWI "OS_W| 00002830 72 69 74 65 43 22 0d 11 30 14 20 20 20 53 55 42 |riteC"..0. SUB| 00002840 53 20 52 32 2c 52 32 2c 23 31 0d 11 3a 11 20 20 |S R2,R2,#1..:. | 00002850 20 42 4e 45 20 54 4c 6f 6f 70 33 0d 11 44 11 20 | BNE TLoop3..D. | 00002860 20 20 53 57 49 20 32 35 36 2b 33 31 0d 11 4e 18 | SWI 256+31..N.| 00002870 20 20 20 4c 44 52 42 20 52 30 2c 43 75 72 73 6f | LDRB R0,Curso| 00002880 72 50 6f 73 0d 11 58 16 20 20 20 53 57 49 20 22 |rPos..X. SWI "| 00002890 4f 53 5f 57 72 69 74 65 43 22 0d 11 62 1a 20 20 |OS_WriteC"..b. | 000028a0 20 4c 44 52 42 20 52 30 2c 43 75 72 73 6f 72 50 | LDRB R0,CursorP| 000028b0 6f 73 2b 31 0d 11 6c 16 20 20 20 53 57 49 20 22 |os+1..l. SWI "| 000028c0 4f 53 5f 57 72 69 74 65 43 22 0d 11 76 18 20 20 |OS_WriteC"..v. | 000028d0 20 4c 44 52 42 20 52 33 2c 56 64 75 53 74 61 74 | LDRB R3,VduStat| 000028e0 75 73 0d 11 80 27 20 20 20 54 53 54 20 52 33 2c |us...' TST R3,| 000028f0 23 31 20 20 5c 20 50 72 69 6e 74 65 72 20 65 6e |#1 \ Printer en| 00002900 61 62 6c 65 64 20 62 69 74 0d 11 8a 12 20 20 20 |abled bit.... | 00002910 53 57 49 4e 45 20 32 35 36 2b 32 0d 11 94 21 20 |SWINE 256+2...! | 00002920 20 20 54 53 54 20 52 33 2c 23 34 20 5c 20 50 61 | TST R3,#4 \ Pa| 00002930 67 65 64 20 6d 6f 64 65 20 62 69 74 0d 11 9e 31 |ged mode bit...1| 00002940 20 20 20 53 57 49 45 51 20 32 35 36 2b 31 35 20 | SWIEQ 256+15 | 00002950 5c 20 4e 6f 74 20 73 65 74 20 73 6f 20 63 6c 65 |\ Not set so cle| 00002960 61 72 20 70 61 67 65 64 20 6d 6f 64 65 0d 11 a8 |ar paged mode...| 00002970 1b 20 20 20 54 53 54 20 52 33 2c 23 33 32 20 20 |. TST R3,#32 | 00002980 5c 20 ef 35 20 62 69 74 0d 11 b2 12 20 20 20 53 |\ .5 bit.... S| 00002990 57 49 4e 45 20 32 35 36 2b 35 0d 11 bc 29 20 20 |WINE 256+5...) | 000029a0 20 54 53 54 20 52 33 2c 23 31 32 38 20 5c 20 44 | TST R3,#128 \ D| 000029b0 69 73 61 62 6c 65 64 20 62 79 20 ef 20 32 31 20 |isabled by . 21 | 000029c0 62 69 74 0d 11 c6 13 20 20 20 53 57 49 4e 45 20 |bit.... SWINE | 000029d0 32 35 36 2b 32 31 0d 11 d0 16 20 20 20 4c 44 52 |256+21.... LDR| 000029e0 42 20 52 31 2c 53 74 72 65 61 6d 73 0d 11 da 10 |B R1,Streams....| 000029f0 20 20 20 4d 4f 56 20 52 30 2c 23 33 0d 11 e4 14 | MOV R0,#3....| 00002a00 20 20 20 53 57 49 20 22 4f 53 5f 42 79 74 65 22 | SWI "OS_Byte"| 00002a10 0d 11 ee 1b 20 20 20 4c 44 52 20 52 31 2c 53 63 |.... LDR R1,Sc| 00002a20 72 65 65 6e 43 6c 61 69 6d 65 64 0d 11 f8 10 20 |reenClaimed.... | 00002a30 20 20 43 4d 50 20 52 31 2c 23 30 0d 12 02 0f 20 | CMP R1,#0.... | 00002a40 20 20 42 45 51 20 57 69 6d 70 0d 12 0c 19 20 20 | BEQ Wimp.... | 00002a50 20 4c 44 52 20 52 32 2c 53 63 72 65 65 6e 53 74 | LDR R2,ScreenSt| 00002a60 61 72 74 0d 12 16 18 20 20 20 4c 44 52 20 52 33 |art.... LDR R3| 00002a70 2c 53 63 72 65 65 6e 53 69 7a 65 0d 12 20 17 20 |,ScreenSize.. . | 00002a80 20 20 4d 4f 56 20 52 33 2c 52 33 2c 4c 53 52 20 | MOV R3,R3,LSR | 00002a90 23 31 0d 12 2a 0b 2e 54 4c 6f 6f 70 34 0d 12 34 |#1..*..TLoop4..4| 00002aa0 19 20 20 20 4c 44 4d 49 41 20 52 31 21 2c 7b 52 |. LDMIA R1!,{R| 00002ab0 34 2d 52 31 31 7d 0d 12 3e 19 20 20 20 53 54 4d |4-R11}..>. STM| 00002ac0 49 41 20 52 32 21 2c 7b 52 34 2d 52 31 31 7d 0d |IA R2!,{R4-R11}.| 00002ad0 12 48 15 20 20 20 53 55 42 53 20 52 33 2c 52 33 |.H. SUBS R3,R3| 00002ae0 2c 23 33 32 0d 12 52 11 20 20 20 42 48 49 20 54 |,#32..R. BHI T| 00002af0 4c 6f 6f 70 34 0d 12 5c 10 20 20 20 4d 4f 56 20 |Loop4..\. MOV | 00002b00 52 30 2c 23 30 0d 12 66 21 20 20 20 53 57 49 20 |R0,#0..f! SWI | 00002b10 22 4f 53 5f 43 6c 61 69 6d 53 63 72 65 65 6e 4d |"OS_ClaimScreenM| 00002b20 65 6d 6f 72 79 22 0d 12 70 0f 20 20 20 42 20 46 |emory"..p. B F| 00002b30 69 6e 69 73 68 0d 12 7a 09 2e 57 69 6d 70 0d 12 |inish..z..Wimp..| 00002b40 84 10 20 20 20 4d 56 4e 20 52 30 2c 23 30 0d 12 |.. MVN R0,#0..| 00002b50 8e 10 20 20 20 4d 4f 56 20 52 31 2c 23 30 0d 12 |.. MOV R1,#0..| 00002b60 98 10 20 20 20 4d 4f 56 20 52 32 2c 23 30 0d 12 |.. MOV R2,#0..| 00002b70 a2 13 20 20 20 4d 4f 56 20 52 33 2c 23 31 32 38 |.. MOV R3,#128| 00002b80 30 0d 12 ac 13 20 20 20 53 55 42 20 52 33 2c 52 |0.... SUB R3,R| 00002b90 33 2c 23 31 0d 12 b6 13 20 20 20 4d 4f 56 20 52 |3,#1.... MOV R| 00002ba0 34 2c 23 31 30 32 34 0d 12 c0 13 20 20 20 53 55 |4,#1024.... SU| 00002bb0 42 20 52 34 2c 52 34 2c 23 31 0d 12 ca 1e 20 20 |B R4,R4,#1.... | 00002bc0 20 53 57 49 20 22 58 57 69 6d 70 5f 46 6f 72 63 | SWI "XWimp_Forc| 00002bd0 65 52 65 64 72 61 77 22 0d 12 d4 04 0d 12 de 0b |eRedraw"........| 00002be0 2e 46 69 6e 69 73 68 0d 12 e8 10 20 20 20 4d 4f |.Finish.... MO| 00002bf0 56 20 52 30 2c 50 43 0d 12 f2 2b 20 20 20 84 52 |V R0,PC...+ .R| 00002c00 20 52 30 2c 52 30 2c 23 31 3c 3c 32 37 20 5c 20 | R0,R0,#1<<27 \ | 00002c10 53 65 74 20 69 6e 74 65 72 72 75 70 74 20 66 6c |Set interrupt fl| 00002c20 61 67 0d 12 fc 27 20 20 20 54 45 51 50 20 52 30 |ag...' TEQP R0| 00002c30 2c 23 30 20 20 20 20 20 20 20 5c 20 57 72 69 74 |,#0 \ Writ| 00002c40 65 20 74 6f 20 66 6c 61 67 0d 13 06 15 20 20 20 |e to flag.... | 00002c50 4c 44 52 42 20 52 30 2c 41 63 74 69 76 65 0d 13 |LDRB R0,Active..| 00002c60 10 2c 20 20 20 53 55 42 20 52 30 2c 52 30 2c 23 |., SUB R0,R0,#| 00002c70 31 32 38 20 20 5c 20 52 65 73 74 6f 72 65 20 61 |128 \ Restore a| 00002c80 63 74 69 76 65 20 66 6c 61 67 0d 13 1a 15 20 20 |ctive flag.... | 00002c90 20 53 54 52 42 20 52 30 2c 41 63 74 69 76 65 0d | STRB R0,Active.| 00002ca0 13 24 17 20 20 20 41 44 52 20 52 31 34 2c 52 65 |.$. ADR R14,Re| 00002cb0 67 53 74 6f 72 65 0d 13 2e 1a 20 20 20 4c 44 4d |gStore.... LDM| 00002cc0 49 41 20 52 31 34 2c 7b 52 30 2d 52 31 34 7d 5e |IA R14,{R0-R14}^| 00002cd0 0d 13 38 1a 20 20 20 4c 44 52 20 52 31 34 2c 5b |..8. LDR R14,[| 00002ce0 52 31 34 2c 23 31 35 2a 34 5d 0d 13 42 12 20 20 |R14,#15*4]..B. | 00002cf0 20 4d 4f 56 53 20 50 43 2c 52 31 34 0d 13 4c 04 | MOVS PC,R14..L.| 00002d00 0d 13 56 0c 2e 45 73 63 61 70 65 53 0d 13 60 0e |..V..EscapeS..`.| 00002d10 20 20 20 45 51 55 44 20 31 37 0d 13 6a 14 20 20 | EQUD 17..j. | 00002d20 20 45 51 55 53 20 22 45 73 63 61 70 65 22 0d 13 | EQUS "Escape"..| 00002d30 74 0d 20 20 20 45 51 55 42 20 30 0d 13 7e 0c 20 |t. EQUB 0..~. | 00002d40 20 20 41 4c 49 47 4e 0d 13 88 0d 2e 45 73 63 45 | ALIGN.....EscE| 00002d50 72 72 6f 72 0d 13 92 12 20 20 20 4d 4f 56 20 52 |rror.... MOV R| 00002d60 30 2c 23 31 32 34 0d 13 9c 2e 20 20 20 53 57 49 |0,#124.... SWI| 00002d70 20 22 58 4f 53 5f 42 79 74 65 22 20 5c 20 43 6c | "XOS_Byte" \ Cl| 00002d80 65 61 72 20 45 73 63 61 70 65 20 63 6f 6e 64 69 |ear Escape condi| 00002d90 74 69 6f 6e 0d 13 a6 15 20 20 20 41 44 52 20 52 |tion.... ADR R| 00002da0 30 2c 45 73 63 61 70 65 53 0d 13 b0 0f 2e 50 72 |0,EscapeS.....Pr| 00002db0 69 6e 74 45 72 72 6f 72 0d 13 ba 13 20 20 20 41 |intError.... A| 00002dc0 44 44 20 52 30 2c 52 30 2c 23 34 0d 13 c4 17 20 |DD R0,R0,#4.... | 00002dd0 20 20 53 57 49 20 22 4f 53 5f 4e 65 77 4c 69 6e | SWI "OS_NewLin| 00002de0 65 22 0d 13 ce 16 20 20 20 53 57 49 20 22 4f 53 |e".... SWI "OS| 00002df0 5f 57 72 69 74 65 30 22 0d 13 d8 0f 20 20 20 42 |_Write0".... B| 00002e00 20 45 43 4c 6f 6f 70 0d 13 e2 05 5d 0d 13 ec 05 | ECLoop....]....| 00002e10 ed 0d 13 f6 29 ff 28 22 53 41 56 45 20 49 6e 74 |....).("SAVE Int| 00002e20 4d 6f 64 75 6c 65 20 22 2b c3 7e 53 70 61 63 65 |Module "+.~Space| 00002e30 2b 22 2b 22 2b c3 7e 50 25 29 0d 14 00 1e ff 28 |+"+"+.~P%).....(| 00002e40 22 53 45 54 54 59 50 45 20 49 6e 74 4d 6f 64 75 |"SETTYPE IntModu| 00002e50 6c 65 20 46 46 41 22 29 0d ff |le FFA")..| 00002e5a