Home » Archimedes archive » Acorn User » AU 1994-10.adf » !StarInfo_StarInfo » Kemp/FiltSource

Kemp/FiltSource

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1994-10.adf » !StarInfo_StarInfo
Filename: Kemp/FiltSource
Read OK:
File size: 630A bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >FiltSource
   20REM By KCE Software (Andrew Kemp)
   30REM LEN June 1994
   40:
   50REM workspace :
   60REM  __________________________________________________________________________
   70REM |  offset | contents                                                       |
   80REM |--------------------------------------------------------------------------|
   90REM |       0 | options flag word : bit 0 => task manager messages added       |
  100REM |         |                     bit 1 => own current drag operation        |
  110REM |         |                     bit 2 => current drag is solid             |
  120REM |         |                     bit 3 => current fa filter may be replaced |
  130REM |         |                     bit 4 => SetCSD turned on                  |
  140REM |         |                     bit 5 => IconSpr turned on                 |
  150REM |         |                     bit 6 => Confirm turned on                 |
  160REM |         |                                                                |
  170REM |         |                     bit 16 => TaskManager filter installed     |
  180REM |         |                     bit 17 => Palette filter installed         |
  190REM |         |                     bit 18 => FilerAction filter installed     |
  200REM |       4 | my task handle                                                 |
  210REM |       8 | task manager's task handle                                     |
  220REM |      12 | palette utility's task handle                                  |
  230REM |      16 | filer action window's task handle                              |
  240REM |  20-275 | polling block                                                  |
  250REM | 276-295 | full descending stack, five registers                          |
  260REM  --------------------------------------------------------------------------
  270:
  280moduleflags =   0
  290myhandle    =   4
  300tmhandle    =   8
  310pahandle    =  12
  320fahandle    =  16
  330pollblock   =  20
  340stack       = 292 : REM pointer to top word of descending stack
  350:
  360tmmessagesadded   =  1<<0
  370tmowndrag         =  1<<1
  380tmsolidity        =  1<<2
  390fareplaceable     =  1<<3
  400setcsdon          =  1<<4
  410iconspron         =  1<<5
  420confirmon         =  1<<6
  430tmfilterinstalled = 1<<16
  440pafilterinstalled = 1<<17
  450fafilterinstalled = 1<<18
  460:
  470run%=FALSE
  480ON ERROR VDU 7:PRINT REPORT$;" at line ";STR$(ERL):END
  490:
  500PROCinit
  510PROCassemble
  520PROCsave("TaskFilter",&ffa,code%,O%)
  530END
  540:
  550DEF PROCinit
  560date$=MID$(TIME$,5,11)
  570version$="0.28"
  580DIM code% &10000
  590ENDPROC
  600:
  610DEF PROCsave(file$,type%,base%,end%)
  620SYS "OS_File",10,file$,type%,,base%,end%
  630IF run% THEN SYS "OS_CLI","RMLoad "+file$
  640ENDPROC
  650:
  660DEF PROCassemble
  670wp=12: sp=13: link=14: pc=15
  680FOR pass%=4 TO 6 STEP 2
  690P%=0: O%=code%
  700[OPT pass%
  710        EQUD    startcode
  720        EQUD    initcode
  730        EQUD    finalcode
  740        EQUD    servicecode
  750        EQUD    titlestring
  760        EQUD    helpstring
  770        EQUD    helptable
  780
  790.titlestring
  800        EQUS    "TaskFilters"
  810        EQUB    0
  820        ALIGN
  830
  840.helpstring
  850        EQUS "TaskFilters"
  860        EQUB 9
  870        EQUS version$+" ("+date$+")"
  880        EQUB 0
  890        ALIGN
  900
  910.helptable
  920        EQUS    "Desktop_TaskFilters"
  930        EQUB    0
  940        ALIGN
  950        EQUD    starcommand
  960        EQUD    0
  970        EQUD    0
  980        EQUD    help
  990        EQUB    0
 1000
 1010.help
 1020        EQUB    13
 1030        EQUS    "Do not use *Desktop_TaskFilters, use *Desktop instead."
 1040        EQUB    13
 1050        EQUB    13
 1060        EQUS    "TaskFilters provides simple and low-memory patches to various "
 1070        EQUS    "aspects of the operating system, using RISC OS 3's filter "
 1080        EQUS    "manager. See the !Help file for details of the various "
 1090        EQUS    "filters."
 1100        EQUB    13
 1110        EQUB    13
 1120        EQUS    "TaskFilters was written by Andrew Kemp."
 1130        EQUB    13
 1140        EQUB    13
 1150        EQUS    "� KCE Software, June 1994."+CHR$(13)+CHR$(0)
 1160        ALIGN
 1170
 1180.startwimp
 1190        LDR     R14,[R12,#myhandle]
 1200        TEQ     R14,#0
 1210        MVNEQ   R14,#(NOT -1)
 1220        STREQ   R14,[R12,#myhandle]
 1230        ADREQ   R0,helptable
 1240        MOVEQ   R1,#0
 1250        LDMFD   (sp)!,{pc}
 1260
 1270.initcode
 1280        STMFD   (sp)!,{R7-R11,link}
 1290        MOV     R0,#6
 1300        MOV     R3,#296
 1310        SWI     "XOS_Module"
 1320        BVS     initexit
 1330        STR     R2,[R12]
 1340        MOV     R0,#0
 1350        STR     R0,[R2,#myhandle]
 1360        LDRB    R3,[R10]
 1370        CMP     R3,#ASC("-")
 1380        BNE     initexit
 1390        LDRB    R3,[R10,#1]
 1400        CMP     R3,#ASC("o")
 1410        BEQ     readopts
 1420.initexit
 1430        LDMFD   (sp)!,{R7-R11,pc}
 1440
 1450.readopts
 1460        ORR     R0,R0,#(setcsdon OR iconspron OR confirmon)
 1470        STR     R0,[R2,#moduleflags]           ; default options in case error
 1480        MOV     R0,#17
 1490        ADR     R1,pathname
 1500        SWI     "XOS_File"
 1510        BVS     initexit       ; exit if error occurred
 1520        CMP     R0,#1          ; exit if not a file, or doesn't exist
 1530        CMPEQ   R4,#4          ; exit if file wrong length
 1540        BNE     initexit
 1550        MOV     R0,#16
 1560        LDR     R2,[R12]
 1570        ADD     R2,R2,#moduleflags
 1580        MOV     R3,#0
 1590        SWI     "XOS_File"
 1600        B       initexit
 1610
 1620.pathname
 1630        EQUS    "TaskFilter:Options"
 1640        EQUB    0
 1650        ALIGN
 1660
 1670.starcommand
 1680        STMFD   (sp)!,{link}
 1690        MOV     R2,R0
 1700        ADR     R1,titlestring
 1710        MOV     R0,#2
 1720        SWI     "XOS_Module"
 1730        LDMFD   (sp)!,{pc}
 1740
 1750.task
 1760        EQUS    "TASK"
 1770
 1780.startcode
 1790        LDR     R12,[R12]
 1800        LDR     R0,[R12,#myhandle]
 1810        TEQ     R0,#0
 1820        LDRGT   R1,task
 1830        SWIGT   "XWimp_CloseDown"
 1840        MOVGT   R0,#0
 1850        STRGT   R0,[R12,#myhandle]
 1860
 1870        MOV     R0,#308
 1880        ADD     R0,R0,#2
 1890        LDR     R1,task
 1900        ADR     R2,titlestring
 1910        ADR     R3,mymessages
 1920        SWI     "XWimp_Initialise"
 1930        SWIVS   "XOS_Exit"
 1940        STR     R1,[R12,#myhandle]
 1950
 1960        ADD     sp,R12,#stack
 1970
 1980        BL      installall            : REM TAB(TAB( fall through TAB(TAB(
 1990
 2000.poll
 2010        LDR     R0,mymask
 2020        ADD     R1,R12,#pollblock
 2030        SWI     "XWimp_Poll"
 2040        CMP     R0,#17
 2050        CMPNE   R0,#18
 2060        BNE     poll
 2070        LDR     R0,[R1,#16]
 2080        LDR     R2,message_taskinitialise
 2090        CMP     R0,R2
 2100        BEQ     taskinitialise
 2110        LDR     R2,message_taskclosedown
 2120        CMP     R0,R2
 2130        BEQ     taskclosedown
 2140        CMP     R0,#0
 2150        BNE     poll
 2160        BL      tmfilterremove
 2170        BL      pafilterremove
 2180        BL      fafilterremove
 2190        LDR     R0,[R12,#myhandle]
 2200        ADR     R1,task
 2210        SWI     "XWimp_CloseDown"
 2220        MOV     R1,#0
 2230        STR     R1,[R12,#myhandle]
 2240        SWI     "XOS_Exit"
 2250        B       poll
 2260
 2270.mymessages
 2280.message_taskinitialise
 2290        EQUD    &400C2
 2300.message_taskclosedown
 2310        EQUD    &400C3
 2320        EQUD    0
 2330
 2340.installall
 2350        STMFD   (sp)!,{R1,link}
 2360        ADR     R4,tmname
 2370        BL      gettaskhandle
 2380        CMP     R3,#0
 2390        BLNE    tmfilterinstall
 2400        ADR     R4,paname
 2410        BL      gettaskhandle
 2420        CMP     R3,#0
 2430        BLNE    pafilterinstall
 2440        LDMFD   (sp)!,{R1,pc}
 2450
 2460.taskinitialise
 2470        ADD     R0,R1,#28
 2480        ADR     R3,tmname
 2490        BL      stringcompare
 2500        CMP     R3,#1
 2510        LDREQ   R3,[R1,#4]
 2520        BLEQ    tmfilterinstall
 2530        ADR     R3,paname
 2540        BL      stringcompare
 2550        CMP     R3,#1
 2560        LDREQ   R3,[R1,#4]
 2570        BLEQ    pafilterinstall
 2580        ADR     R3,faname
 2590        BL      stringcompare
 2600        CMP     R3,#1
 2610        LDREQ   R3,[R1,#4]
 2620        BLEQ    fafilterinstall
 2630        B       poll
 2640
 2650.taskclosedown
 2660        LDR     R0,[R1,#4]
 2670        LDR     R2,[R12,#tmhandle]
 2680        CMP     R0,R2
 2690        BLEQ    tmfilterremove
 2700        LDR     R2,[R12,#pahandle]
 2710        CMP     R0,R2
 2720        BLEQ    pafilterremove
 2730        LDR     R2,[R12,#fahandle]
 2740        CMP     R0,R2
 2750        BLEQ    fafilterremove
 2760        B       poll
 2770
 2780.stringcompare
 2790        STMFD   (sp)!,{R0,link}
 2800.compareloop                       ; compares string pointed to by R0
 2810        LDRB    R7,[R0],#1         ; with that pointed to by R3
 2820        LDRB    R5,[R3],#1         ; returning 1 in R3 if same
 2830        CMP     R7,R5
 2840        MOVNE   R3,#0
 2850        LDMNEFD (sp)!,{R0,pc}
 2860        CMP     R5,#0
 2870        BNE     compareloop
 2880        MOV     R3,#1
 2890        LDMFD   (sp)!,{R0,pc}
 2900
 2910.tmfilterinstall                             ; pass tm task handle in R3
 2920        STMFD   (sp)!,{R0,link}
 2930        LDR     R1,[R12,#moduleflags]
 2940        TST     R1,#tmfilterinstalled
 2950        LDMNEFD (sp)!,{R0,pc}               ; if already installed, just exit
 2960        TST     R1,#setcsdon
 2970        LDMEQFD (sp)!,{R0,pc}               ; if not selected, exit
 2980        ADR     R0,tmfiltername
 2990        ADR     R1,tmfiltercode
 3000        MOV     R2,R12                       ; note passes workspace pointer
 3010        LDR     R4,tmfiltermask              ; not private word pointer as
 3020        SWI     "XFilter_RegisterPostFilter" ; before
 3030        STRVC   R3,[R12,#tmhandle]
 3040        LDRVC   R1,[R12,#moduleflags]
 3050        ORRVC   R1,R1,#tmfilterinstalled
 3060        STRVC   R1,[R12,#moduleflags]
 3070        LDMFD   (sp)!,{R0,pc}
 3080
 3090.tmfilterremove
 3100        STMFD   (sp)!,{R0,link}
 3110        LDR     R1,[R12,#moduleflags]
 3120        TST     R1,#tmfilterinstalled
 3130        LDMEQFD (sp)!,{R0,pc}               ; if not installed, just exit
 3140        ADR     R0,tmfiltername
 3150        ADR     R1,tmfiltercode
 3160        MOV     R2,R12
 3170        LDR     R3,[R12,#tmhandle]
 3180        LDR     R4,tmfiltermask
 3190        SWI     "XFilter_DeRegisterPostFilter"
 3200        LDRVC   R1,[R12,#moduleflags]
 3210        BICVC   R1,R1,#tmfilterinstalled
 3220        STRVC   R1,[R12,#moduleflags]
 3230        LDMFD   (sp)!,{R0,pc}
 3240
 3250.tmfiltername
 3260        EQUS    "SetCSD"
 3270        EQUB    0
 3280        ALIGN
 3290
 3300.pafilterinstall                             ; pass pa task handle in R3
 3310        STMFD   (sp)!,{R0,link}
 3320        LDR     R1,[R12,#moduleflags]
 3330        TST     R1,#pafilterinstalled
 3340        LDMNEFD (sp)!,{R0,pc}               ; if already installed, just exit
 3350        TST     R1,#iconspron
 3360        LDMEQFD (sp)!,{R0,pc}               ; if not selected, exit
 3370        ADR     R0,pafiltername
 3380        ADR     R1,pafiltercode
 3390        MOV     R2,R12                       ; note passes workspace pointer
 3400        LDR     R4,pafiltermask              ; not private word pointer as
 3410        SWI     "XFilter_RegisterPostFilter" ; before
 3420        STRVC   R3,[R12,#pahandle]
 3430        LDRVC   R1,[R12,#moduleflags]
 3440        ORRVC   R1,R1,#pafilterinstalled
 3450        STRVC   R1,[R12,#moduleflags]
 3460        LDMFD   (sp)!,{R0,pc}
 3470
 3480.pafilterremove
 3490        STMFD   (sp)!,{R0,link}
 3500        LDR     R1,[R12,#moduleflags]
 3510        TST     R1,#pafilterinstalled
 3520        LDMEQFD (sp)!,{R0,pc}               ; if not installed, just exit
 3530        ADR     R0,pafiltername
 3540        ADR     R1,pafiltercode
 3550        MOV     R2,R12
 3560        LDR     R3,[R12,#pahandle]
 3570        LDR     R4,pafiltermask
 3580        SWI     "XFilter_DeRegisterPostFilter"
 3590        LDRVC   R1,[R12,#moduleflags]
 3600        BICVC   R1,R1,#pafilterinstalled
 3610        STRVC   R1,[R12,#moduleflags]
 3620        LDMFD   (sp)!,{R0,pc}
 3630
 3640.pafiltername
 3650        EQUS    "IconSpr"
 3660        EQUB    0
 3670        ALIGN
 3680
 3690.pafiltercode
 3700        STMFD   (sp)!,{R1-R11,link}
 3710        TEQ     R0,#18
 3720        BEQ     pamessagereceived
 3730        TEQ     R0,#6                ; mouse click routine
 3740        LDREQ   R2,[R1,#12]
 3750        CMNEQ   R2,#2
 3760        LDREQ   R2,[R1,#8]
 3770        CMPEQ   R2,#1
 3780        BLEQ    forceredraw
 3790        B       endfilter
 3800
 3810.pamessagereceived
 3820        LDR     R2,[R1,#16]
 3830        CMP     R2,#3
 3840        BNE     endfilter
 3850        LDR     R2,[R1,#40]
 3860        MOV     R3,#&ff0
 3870        ADD     R3,R3,#9
 3880        CMP     R2,R3
 3890        BNE     endfilter
 3900        STMFD   (sp)!,{R1}
 3910        MOV     R0,#129
 3920        MOV     R1,#(&FF EOR 0)
 3930        MOV     R2,#&FF
 3940        SWI     "XOS_Byte"
 3950        CMP     R1,#&FF
 3960        LDMFD   (sp)!,{R1}
 3970        BEQ     toolsprites
 3980        MOV     R0,#11
 3990        ADD     R2,R1,#44
 4000        SWI     "XWimp_SpriteOp"
 4010        BVS     spriteoperror     : REM TAB(TAB( fall through TAB(TAB(
 4020
 4030.senddataloadack
 4040        BL      forceredraw
 4050        MOV     R2,#4
 4060        STR     R2,[R1,#16]
 4070        LDR     R2,[R1,#8]
 4080        STR     R2,[R1,#12]
 4090        MOV     R0,#17
 4100        LDR     R2,[R1,#4]
 4110        SWI     "XWimp_SendMessage"
 4120        MVN     R0,#(NOT -1)
 4130        B       endfilter
 4140
 4150.spriteoperror
 4160        MOV     R1,#%0001010
 4170        ADR     R2,paname
 4180        SWI     "XWimp_ReportError"
 4190        MVN     R0,#(NOT -1)
 4200        B       endfilter
 4210
 4220.toolsprites
 4230        ADR     R2,toolspritestart
 4240        ADD     R3,R1,#(44-LEN("ToolSprites "))
 4250        MOV     R0,R3
 4260        BL      stringcopy
 4270        SWI     "XOS_CLI"
 4280        BVS     spriteoperror
 4290        B       senddataloadack
 4300
 4310.stringcopy
 4320        STMFD   (sp)!,{R0,link}
 4330.stringcopyloop
 4340        LDRB    R0,[R2],#1
 4350        CMP     R0,#32
 4360        STRGEB  R0,[R3],#1
 4370        BGE     stringcopyloop
 4380        LDMFD   (sp)!,{R0,pc}
 4390
 4400.toolspritestart
 4410        EQUS    "ToolSprites "
 4420        EQUB    0
 4430        ALIGN
 4440
 4450.forceredraw
 4460        STMFD   (sp)!,{R1,link}
 4470        MVN     R0,#(NOT -1)
 4480        MOV     R1,#0
 4490        MOV     R2,#0
 4500        BL      screenmax
 4510        SWI     "XWimp_ForceRedraw"
 4520        LDMFD   (sp)!,{R1,pc}
 4530
 4540.gettaskhandle
 4550        STMFD   (sp)!,{link}
 4560        MOV     R0,#0
 4570.nexthandle
 4580        ADD     R1,R12,#pollblock             ; use poll block as buffer for SWI
 4590        MOV     R2,#20
 4600        SWI     "XTaskManager_EnumerateTasks"
 4610        BVS     jumpout
 4620        CMN     R0,#1
 4630        BEQ     jumpout
 4640        MOV     R6,R0
 4650        LDR     R0,[R12,#(pollblock+4)]      ; read task name
 4660        MOV     R3,R4                     ; passed task name
 4670        BL      stringcompare
 4680        MOV     R0,R6
 4690        CMP     R3,#1
 4700        LDREQ   R3,[R12,#pollblock]
 4710        LDMEQFD (sp)!,{pc}
 4720        B       nexthandle
 4730.jumpout
 4740        MOV     R3,#0
 4750        LDMFD   (sp)!,{pc}
 4760
 4770.fafilterinstall                             ; pass pa task handle in R3
 4780        STMFD   (sp)!,{R0,link}
 4790        LDR     R1,[R12,#moduleflags]
 4800        TST     R1,#confirmon
 4810        LDMEQFD (sp)!,{R0,pc}               ; if not selected, exit
 4820        TST     R1,#fafilterinstalled
 4830        BEQ     fadoinstall                  ; if not installed, get on with it
 4840        TST     R1,#fareplaceable
 4850        LDMEQFD (sp)!,{R0,pc}                ; if not replaceable return
 4860        MOV     R0,R3
 4870        BL      fafilterremove               ; if replacable, remove existing
 4880        MOV     R3,R0
 4890.fadoinstall
 4900        ADR     R0,fafiltername
 4910        ADR     R1,fafiltercode
 4920        MOV     R2,R12                       ; note passes workspace pointer
 4930        LDR     R4,fafiltermask              ; not private word pointer as
 4940        SWI     "XFilter_RegisterPostFilter" ; before
 4950        STRVC   R3,[R12,#fahandle]
 4960        LDRVC   R1,[R12,#moduleflags]
 4970        ORRVC   R1,R1,#fafilterinstalled
 4980        STRVC   R1,[R12,#moduleflags]
 4990        LDMFD   (sp)!,{R0,pc}
 5000
 5010.fafilterremove
 5020        STMFD   (sp)!,{R0,link}
 5030        LDR     R1,[R12,#moduleflags]
 5040        TST     R1,#fafilterinstalled
 5050        LDMEQFD (sp)!,{R0,pc}               ; if not installed, just exit
 5060        ADR     R0,fafiltername
 5070        ADR     R1,fafiltercode
 5080        MOV     R2,R12
 5090        LDR     R3,[R12,#fahandle]
 5100        LDR     R4,fafiltermask
 5110        SWI     "XFilter_DeRegisterPostFilter"
 5120        LDRVC   R1,[R12,#moduleflags]
 5130        BICVC   R1,R1,#fafilterinstalled
 5140        BICVC   R1,R1,#fareplaceable
 5150        STRVC   R1,[R12,#moduleflags]
 5160        LDMFD   (sp)!,{R0,pc}
 5170
 5180.fafiltercode
 5190        STMFD   (sp)!,{R1-R11,link}
 5200        TEQ     R0,#17
 5210        BNE     endfilter
 5220        LDR     R3,[R1,#16]
 5230        MOV     R4,#&400
 5240        ADD     R4,R4,#&005
 5250        TEQ     R3,R4
 5260        BNE     endfilter
 5270        LDR     R3,[R1,#20]
 5280        TEQ     R3,#2
 5290        BNE     endfafilter
 5300        LDR     R3,[R1,#24]
 5310        ORR     R3,R3,#%00010
 5320        STR     R3,[R1,#24]
 5330.endfafilter
 5340        LDR     R3,[R12,#moduleflags]
 5350        ORR     R3,R3,#fareplaceable
 5360        STR     R3,[R12,#moduleflags]
 5370        B       endfilter
 5380
 5390.fafiltername
 5400        EQUS    "Confirm"
 5410        EQUB    0
 5420        ALIGN
 5430
 5440.tmname
 5450        EQUS    "Task Manager"
 5460        EQUB    0
 5470        ALIGN
 5480
 5490.paname
 5500        EQUS    "Palette Utility"
 5510        EQUB    0
 5520        ALIGN
 5530
 5540.faname
 5550        EQUS    "Filer Action Window"
 5560        EQUB    0
 5570        ALIGN
 5580
 5590.tmfiltercode
 5600        STMFD   (sp)!,{R1-R11,link}
 5610        LDR     R3,[R12,#moduleflags]
 5620        TST     R3,#tmmessagesadded
 5630        BLEQ    tmaddmessages
 5640        TEQ     R0,#6
 5650        BEQ     tmmouseclick
 5660        TEQ     R0,#7
 5670        BEQ     enddrag
 5680        TEQ     R0,#17
 5690        TEQNE   R0,#18
 5700        TEQNE   R0,#19
 5710        BEQ     tmmessagereceived
 5720.endfilter
 5730        LDMFD   (sp)!,{R1-R11,link}
 5740        MOVS    pc,link
 5750
 5760.tmmessagereceived
 5770        LDR     R2,[R1,#16]
 5780        CMP     R2,#1
 5790        BEQ     returned
 5800        CMP     R2,#2
 5810        BNE     endfilter
 5820        LDR     R2,[R12,#moduleflags]
 5830        TST     R2,#tmowndrag
 5840        BEQ     endfilter
 5850        BIC     R2,R2,#(tmowndrag OR tmsolidity)
 5860        STR     R2,[R12,#moduleflags]
 5870        MOV     R0,#43
 5880.getstring
 5890        ADD     R0,R0,#1
 5900        LDRB    R2,[R1,R0]
 5910        CMP     R2,#32
 5920        BGT     getstring
 5930        SUB     R0,R0,#1
 5940        LDRB    R2,[R1,R0]
 5950        CMP     R2,#ASC(".")
 5960        BNE     endfilter
 5970        MOV     R2,#0
 5980        STRB    R2,[R1,R0]
 5990        ADD     R1,R1,#44
 6000        MOV     R0,#0
 6010        SWI     "XOS_FSControl"
 6020        MVN     R0,#(NOT -1)
 6030        B       endfilter
 6040
 6050.returned
 6060        LDR     R2,[R1,#4]
 6070        LDR     R3,[R12,#tmhandle]
 6080        CMP     R2,R3
 6090        BNE     endfilter
 6100        LDR     R2,[R12,#moduleflags]
 6110        TST     R2,#tmowndrag
 6120        BICNE   R2,R2,#(tmowndrag OR tmsolidity)
 6130        STRNE   R2,[R12,#moduleflags]
 6140        MVNNE   R0,#(NOT -1)
 6150        B       endfilter
 6160
 6170.tmaddmessages
 6180        STMFD   (sp)!,{R0,link}
 6190        ORR     R3,R3,#tmmessagesadded
 6200        STR     R3,[R12,#moduleflags]
 6210        ADR     R0,tmmessages
 6220        SWI     "XWimp_AddMessages"
 6230        LDMFD   (sp)!,{R0,pc}
 6240
 6250.enddrag
 6260        LDR     R2,[R12,#moduleflags]
 6270        TST     R2,#tmowndrag
 6280        BEQ     endfilter
 6290        TST     R2,#tmsolidity
 6300        SWINE   "XDragASprite_Stop"
 6310        SWI     "XWimp_GetPointerInfo"
 6320        LDR     R0,[R1,#4]
 6330        STR     R0,[R1,#32]
 6340        LDR     R0,[R1,#0]
 6350        STR     R0,[R1,#28]
 6360        LDR     R0,[R1,#16]
 6370        STR     R0,[R1,#24]
 6380        LDR     R0,[R1,#12]
 6390        STR     R0,[R1,#20]
 6400        MOV     R0,#1
 6410        STR     R0,[R1,#16]
 6420        MOV     R0,#0
 6430        STR     R0,[R1,#12]
 6440        STR     R0,[R1,#36]
 6450        STR     R0,[R1,#40]
 6460        STR     R0,[R1,#44]
 6470        MOV     R0,#60
 6480        STR     R0,[R1,#0]
 6490        MOV     R0,#18
 6500        LDR     R2,[R1,#20]
 6510        SWI     "XWimp_SendMessage"
 6520        MVN     R0,#(NOT -1)
 6530        B       endfilter
 6540
 6550.tmmessages
 6560        EQUD    1
 6570        EQUD    0
 6580
 6590.tmmouseclick
 6600        LDR     R2,[R1,#12]
 6610        CMN     R2,#2
 6620        BNE     endfilter
 6630        LDR     R2,[R1,#8]
 6640        TEQ     R2,#1
 6650        BNE     endfilter
 6660        MOV     R5,R1
 6670        LDR     R0,[R5,#12]
 6680        STR     R0,[R5,#0]
 6690        LDR     R4,[R5,#16]
 6700        SWI     "XWimp_GetWindowState"
 6710        LDR     R2,[R5,#4]
 6720        LDR     R0,[R5,#20]
 6730        SUB     R2,R2,R0
 6740        LDR     R3,[R5,#16]
 6750        LDR     R0,[R5,#24]
 6760        SUB     R3,R3,R0
 6770        STR     R4,[R5,#4]
 6780        SWI     "XWimp_GetIconState"
 6790        MOV     R0,#0
 6800        STR     R0,[R5,#0]
 6810        MOV     R0,#5
 6820        STR     R0,[R5,#4]
 6830        LDR     R0,[R5,#8]
 6840        ADD     R0,R0,R2
 6850        STR     R0,[R5,#8]
 6860        LDR     R0,[R5,#12]
 6870        ADD     R0,R0,R3
 6880        STR     R0,[R5,#12]
 6890        LDR     R0,[R5,#16]
 6900        ADD     R0,R0,R2
 6910        STR     R0,[R5,#16]
 6920        LDR     R0,[R5,#20]
 6930        ADD     R0,R0,R3
 6940        STR     R0,[R5,#20]
 6950        MOV     R0,#0
 6960        STR     R0,[R5,#24]
 6970        MOV     R0,#0
 6980        STR     R0,[R5,#28]
 6990        BL      screenmax
 7000        STR     R3,[R5,#32]
 7010        STR     R4,[R5,#36]
 7020        MOV     R0,#161
 7030        MOV     R1,#28
 7040        SWI     "XOS_Byte"
 7050        AND     R2,R2,#2
 7060        CMP     R2,#0
 7070        BNE     soliddrag
 7080
 7090.ordinarydrag
 7100        MOV     R1,R5
 7110        SWI     "XWimp_DragBox"
 7120        LDR     R0,[R12,#moduleflags]
 7130        BIC     R0,R0,#tmsolidity
 7140        ORR     R0,R0,#tmowndrag
 7150        STR     R0,[R12,#moduleflags]
 7160        MVN     R0,#(NOT -1)
 7170        B       endfilter
 7180
 7190.soliddrag
 7200        LDR     R0,solidflags
 7210        MOV     R1,#1
 7220        ADR     R2,spritename
 7230        ADD     R3,R5,#8
 7240        SWI     "XDragASprite_Start"
 7250        LDR     R0,[R12,#moduleflags]
 7260        ORR     R0,R0,#(tmowndrag OR tmsolidity)
 7270        STR     R0,[R12,#moduleflags]
 7280        MVN     R0,#(NOT -1)
 7290        B       endfilter
 7300
 7310.solidflags
 7320        EQUD    %11001010
 7330
 7340.spritename
 7350        EQUS    "switcher"
 7360        EQUB    0
 7370        ALIGN
 7380
 7390.screenmax                                    ; returns maxx in r3
 7400        STMFD   R13!,{R0-R2,R5-R12,link}      ; maxy in r4
 7410        MVN     R0,#(NOT -1)
 7420        MOV     R1,#11
 7430        SWI     "XOS_ReadModeVariable"
 7440        ADD     R6,R2,#1
 7450        MOV     R1,#4
 7460        SWI     "XOS_ReadModeVariable"
 7470        MOV     R3,R6,LSL R2
 7480        MOV     R1,#12
 7490        SWI     "XOS_ReadModeVariable"
 7500        ADD     R6,R2,#1
 7510        MOV     R1,#5
 7520        SWI     "XOS_ReadModeVariable"
 7530        MOV     R4,R6,LSL R2
 7540        LDMFD   R13!,{R0-R2,R5-R12,pc}
 7550
 7560.finalcode
 7570        STMFD   (sp)!,{R7-R11,link}
 7580        LDR     R12,[R12]
 7590        LDR     R0,[R12,#myhandle]
 7600        TEQ     R0,#0
 7610        BLE     finalskip
 7620        LDR     R1,task
 7630        SWI     "XWimp_CloseDown"
 7640        BL      tmfilterremove
 7650        BL      pafilterremove
 7660        BL      fafilterremove
 7670.finalskip
 7680        MOV     R1,#0
 7690        STR     R1,[R12,#myhandle]
 7700        MOV     R0,#7
 7710        MOV     R2,R12
 7720        SWI     "XOS_Module"
 7730        LDMFD   (sp)!,{R7-R11,pc}
 7740
 7750.servicecode
 7760        STMFD   (sp)!,{link}
 7770        LDR     R12,[R12]
 7780        TEQ     R1,#&49
 7790        BEQ     startwimp
 7800        TEQ     R1,#&4A
 7810        BEQ     startedwimp
 7820        TEQ     R1,#&87
 7830        BLEQ    installall
 7840        TEQ     R1,#&88
 7850        BEQ     filtermanagerdying
 7860        TEQ     R1,#&27
 7870        LDMNEFD (sp)!,{pc}
 7880        MOV     R14,#0
 7890        STR     R14,[R12,#myhandle]
 7900        BL      tmfilterremove
 7910        BL      pafilterremove
 7920        BL      fafilterremove
 7930        LDMFD   (sp)!,{pc}
 7940
 7950.filtermanagerdying
 7960        LDR     R3,[R12,#moduleflags]
 7970        BIC     R3,R3,#(tmfilterinstalled OR pafilterinstalled OR fafilterinstalled)
 7980        BIC     R3,R3,#fareplaceable
 7990        STR     R3,[R12,#moduleflags]
 8000        LDMFD   (sp)!,{pc}
 8010
 8020.startedwimp
 8030        LDR     R14,[R12,#myhandle]
 8040        CMN     R14,#1
 8050        MOVEQ   R14,#0
 8060        STREQ   R14,[R12,#myhandle]
 8070        LDMFD   (sp)!,{pc}
 8080
 8090.mymask
 8100        EQUD    %10000011100101110011
 8110
 8120.tmfiltermask
 8130        EQUD    %00000011100100110011
 8140
 8150.pafiltermask
 8160        EQUD    %10100011100100110011
 8170
 8180.fafiltermask
 8190        EQUD    %11000011100101110011
 8200
 8210]
 8220NEXT pass%
 8230ENDPROC

� >FiltSource
#� By KCE Software (Andrew Kemp)
� � June 1994
(:
2� workspace :
<Q�  __________________________________________________________________________
FR� |  offset | contents                                                       |
PR� |--------------------------------------------------------------------------|
ZR� |       0 | options flag word : bit 0 => task manager messages added       |
dR� |         |                     bit 1 => own current drag operation        |
nR� |         |                     bit 2 => current drag is solid             |
xR� |         |                     bit 3 => current fa filter may be replaced |
�R� |         |                     bit 4 => SetCSD turned on                  |
�R� |         |                     bit 5 => IconSpr turned on                 |
�R� |         |                     bit 6 => Confirm turned on                 |
�R� |         |                                                                |
�R� |         |                     bit 16 => TaskManager filter installed     |
�R� |         |                     bit 17 => Palette filter installed         |
�R� |         |                     bit 18 => FilerAction filter installed     |
�R� |       4 | my task handle                                                 |
�R� |       8 | task manager's task handle                                     |
�R� |      12 | palette utility's task handle                                  |
�R� |      16 | filer action window's task handle                              |
�R� |  20-275 | polling block                                                  |
�R� | 276-295 | full descending stack, five registers                          |
Q�  --------------------------------------------------------------------------
:
moduleflags =   0
"myhandle    =   4
,tmhandle    =   8
6pahandle    =  12
@fahandle    =  16
Jpollblock   =  20
TAstack       = 292 : � pointer to top word of descending stack
^:
htmmessagesadded   =  1<<0
rtmowndrag         =  1<<1
|tmsolidity        =  1<<2
�fareplaceable     =  1<<3
�setcsdon          =  1<<4
�iconspron         =  1<<5
�confirmon         =  1<<6
�tmfilterinstalled = 1<<16
�pafilterinstalled = 1<<17
�fafilterinstalled = 1<<18
�:
�
run%=�
�#� � � 7:� �$;" at line ";�(�):�
�:
�	�init
�
�assemble
%�save("TaskFilter",&ffa,code%,O%)
�
:
&� �init
0date$=��$,5,11)
:version$="0.28"
D� code% &10000
N�
X:
b#� �save(file$,type%,base%,end%)
l+ș "OS_File",10,file$,type%,,base%,end%
v(� run% � ș "OS_CLI","RMLoad "+file$
��
�:
�� �assemble
� wp=12: sp=13: link=14: pc=15
�� pass%=4 � 6 � 2
�P%=0: O%=code%
�[OPT pass%
�        EQUD    startcode
�        EQUD    initcode
�        EQUD    finalcode
�        EQUD    servicecode
�        EQUD    titlestring
�        EQUD    helpstring
        EQUD    helptable

.titlestring
 !        EQUS    "TaskFilters"
*        EQUB    0
4        ALIGN
>
H.helpstring
R        EQUS "TaskFilters"
\        EQUB 9
f(        EQUS version$+" ("+date$+")"
p        EQUB 0
z        ALIGN
�
�.helptable
�)        EQUS    "Desktop_TaskFilters"
�        EQUB    0
�        ALIGN
�        EQUD    starcommand
�        EQUD    0
�        EQUD    0
�        EQUD    help
�        EQUB    0
�
�	.help
�        EQUB    13
L        EQUS    "Do not use *Desktop_TaskFilters, use *Desktop instead."
        EQUB    13
        EQUB    13
$T        EQUS    "TaskFilters provides simple and low-memory patches to various "
.P        EQUS    "aspects of the operating system, using RISC OS 3's filter "
8M        EQUS    "manager. See the !Help file for details of the various "
B        EQUS    "filters."
L        EQUB    13
V        EQUB    13
`=        EQUS    "TaskFilters was written by Andrew Kemp."
j        EQUB    13
t        EQUB    13
~;        EQUS    "� KCE Software, June 1994."+�(13)+�(0)
�        ALIGN
�
�.startwimp
�'        LDR     R14,[R12,#myhandle]
�        TEQ     R14,#0
�        MVNEQ   R14,#(� -1)
�'        STREQ   R14,[R12,#myhandle]
�         ADREQ   R0,helptable
�        �Q   R1,#0
�        LDMFD   (sp)!,{pc}
�
�
.initcode
'        STMFD   (sp)!,{R7-R11,link}

        MOV     R0,#6
        MOV     R3,#296
         SWI     "XOS_Module"
(        BVS     initexit
2        STR     R2,[R12]
<        MOV     R0,#0
F%        STR     R0,[R2,#myhandle]
P        LDRB    R3,[R10]
Z        CMP     R3,#�("-")
d        BNE     initexit
n        LDRB    R3,[R10,#1]
x        CMP     R3,#�("o")
�        BEQ     readopts
�
.initexit
�%        LDMFD   (sp)!,{R7-R11,pc}
�
�
.readopts
�<        �R     R0,R0,#(setcsdon � iconspron � confirmon)
�R        STR     R0,[R2,#moduleflags]           ; default options in case error
�        MOV     R0,#17
�        ADR     R1,pathname
�        SWI     "XOS_File"
�;        BVS     initexit       ; exit if error occurred
�I        CMP     R0,#1          ; exit if not a file, or doesn't exist
�>        CMPEQ   R4,#4          ; exit if file wrong length
        BNE     initexit
        MOV     R0,#16
        LDR     R2,[R12]
"&        ADD     R2,R2,#moduleflags
,        MOV     R3,#0
6        SWI     "XOS_File"
@        B       initexit
J
T
.pathname
^(        EQUS    "TaskFilter:Options"
h        EQUB    0
r        ALIGN
|
�.starcommand
�         STMFD   (sp)!,{link}
�        MOV     R2,R0
�"        ADR     R1,titlestring
�        MOV     R0,#2
�         SWI     "XOS_Module"
�        LDMFD   (sp)!,{pc}
�
�	.task
�        EQUS    "TASK"
�
�.startcode
�        LDR     R12,[R12]
&        LDR     R0,[R12,#myhandle]
        TEQ     R0,#0
        LDRGT   R1,task
&%        SWIGT   "XWimp_CloseDown"
0        MOVGT   R0,#0
:&        STRGT   R0,[R12,#myhandle]
D
N        MOV     R0,#308
X        ADD     R0,R0,#2
b        LDR     R1,task
l"        ADR     R2,titlestring
v!        ADR     R3,mymessages
�&        SWI     "XWimp_Initialise"
�        SWIVS   "XOS_Exit"
�&        STR     R1,[R12,#myhandle]
�
�!        ADD     sp,R12,#stack
�
�@        BL      installall            : � �� fall through ��
�
�	.poll
�        LDR     R0,mymask
�%        ADD     R1,R12,#pollblock
�         SWI     "XWimp_Poll"
�        CMP     R0,#17
        CMPNE   R0,#18
        BNE     poll
        LDR     R0,[R1,#16]
 -        LDR     R2,message_taskinitialise
*        CMP     R0,R2
4"        BEQ     taskinitialise
>,        LDR     R2,message_taskclosedown
H        CMP     R0,R2
R!        BEQ     taskclosedown
\        CMP     R0,#0
f        BNE     poll
p"        BL      tmfilterremove
z"        BL      pafilterremove
�"        BL      fafilterremove
�&        LDR     R0,[R12,#myhandle]
�        ADR     R1,task
�%        SWI     "XWimp_CloseDown"
�        MOV     R1,#0
�&        STR     R1,[R12,#myhandle]
�        SWI     "XOS_Exit"
�        B       poll
�
�.mymessages
�.message_taskinitialise
�        EQUD    &400C2
�.message_taskclosedown
	        EQUD    &400C3
	        EQUD    0
	
	$.installall
	.#        STMFD   (sp)!,{R1,link}
	8        ADR     R4,tmname
	B!        BL      gettaskhandle
	L        CMP     R3,#0
	V#        BLNE    tmfilterinstall
	`        ADR     R4,paname
	j!        BL      gettaskhandle
	t        CMP     R3,#0
	~#        BLNE    pafilterinstall
	�!        LDMFD   (sp)!,{R1,pc}
	�
	�.taskinitialise
	�        ADD     R0,R1,#28
	�        ADR     R3,tmname
	�!        BL      stringcompare
	�        CMP     R3,#1
	�        LDREQ   R3,[R1,#4]
	�#        BLEQ    tmfilterinstall
	�        ADR     R3,paname
	�!        BL      stringcompare
	�        CMP     R3,#1
        LDREQ   R3,[R1,#4]

#        BLEQ    pafilterinstall
        ADR     R3,faname
!        BL      stringcompare
(        CMP     R3,#1
2        LDREQ   R3,[R1,#4]
<#        BLEQ    fafilterinstall
F        B       poll
P
Z.taskclosedown
d        LDR     R0,[R1,#4]
n&        LDR     R2,[R12,#tmhandle]
x        CMP     R0,R2
�"        BLEQ    tmfilterremove
�&        LDR     R2,[R12,#pahandle]
�        CMP     R0,R2
�"        BLEQ    pafilterremove
�&        LDR     R2,[R12,#fahandle]
�        CMP     R0,R2
�"        BLEQ    fafilterremove
�        B       poll
�
�.stringcompare
�#        STMFD   (sp)!,{R0,link}
�I.compareloop                       ; compares string pointed to by R0
�C        LDRB    R7,[R0],#1         ; with that pointed to by R3
B        LDRB    R5,[R3],#1         ; returning 1 in R3 if same
        CMP     R7,R5
        MOVNE   R3,#0
"!        LDMNEFD (sp)!,{R0,pc}
,        CMP     R5,#0
6        BNE     compareloop
@        MOV     R3,#1
J!        LDMFD   (sp)!,{R0,pc}
T
^L.tmfilterinstall                             ; pass tm task handle in R3
h#        STMFD   (sp)!,{R0,link}
r)        LDR     R1,[R12,#moduleflags]
|)        TST     R1,#tmfilterinstalled
�Q        LDMNEFD (sp)!,{R0,pc}               ; if already installed, just exit
�         TST     R1,#setcsdon
�G        LDMEQFD (sp)!,{R0,pc}               ; if not selected, exit
�#        ADR     R0,tmfiltername
�#        ADR     R1,tmfiltercode
�P        MOV     R2,R12                       ; note passes workspace pointer
�N        LDR     R4,tmfiltermask              ; not private word pointer as
�9        SWI     "XFilter_RegisterPostFilter" ; before
�&        STRVC   R3,[R12,#tmhandle]
�)        LDRVC   R1,[R12,#moduleflags]
�+        �RVC   R1,R1,#tmfilterinstalled
�)        STRVC   R1,[R12,#moduleflags]
�!        LDMFD   (sp)!,{R0,pc}

.tmfilterremove
#        STMFD   (sp)!,{R0,link}
&)        LDR     R1,[R12,#moduleflags]
0)        TST     R1,#tmfilterinstalled
:M        LDMEQFD (sp)!,{R0,pc}               ; if not installed, just exit
D#        ADR     R0,tmfiltername
N#        ADR     R1,tmfiltercode
X        MOV     R2,R12
b&        LDR     R3,[R12,#tmhandle]
l#        LDR     R4,tmfiltermask
v2        SWI     "XFilter_DeRegisterPostFilter"
�)        LDRVC   R1,[R12,#moduleflags]
�,        BICVC   R1,R1,#tmfilterinstalled
�)        STRVC   R1,[R12,#moduleflags]
�!        LDMFD   (sp)!,{R0,pc}
�
�.tmfiltername
�        EQUS    "SetCSD"
�        EQUB    0
�        ALIGN
�
�L.pafilterinstall                             ; pass pa task handle in R3
�#        STMFD   (sp)!,{R0,link}
�)        LDR     R1,[R12,#moduleflags]

)        TST     R1,#pafilterinstalled

Q        LDMNEFD (sp)!,{R0,pc}               ; if already installed, just exit

!        TST     R1,#iconspron

 G        LDMEQFD (sp)!,{R0,pc}               ; if not selected, exit

*#        ADR     R0,pafiltername

4#        ADR     R1,pafiltercode

>P        MOV     R2,R12                       ; note passes workspace pointer

HN        LDR     R4,pafiltermask              ; not private word pointer as

R9        SWI     "XFilter_RegisterPostFilter" ; before

\&        STRVC   R3,[R12,#pahandle]

f)        LDRVC   R1,[R12,#moduleflags]

p+        �RVC   R1,R1,#pafilterinstalled

z)        STRVC   R1,[R12,#moduleflags]

�!        LDMFD   (sp)!,{R0,pc}

�

�.pafilterremove

�#        STMFD   (sp)!,{R0,link}

�)        LDR     R1,[R12,#moduleflags]

�)        TST     R1,#pafilterinstalled

�M        LDMEQFD (sp)!,{R0,pc}               ; if not installed, just exit

�#        ADR     R0,pafiltername

�#        ADR     R1,pafiltercode

�        MOV     R2,R12

�&        LDR     R3,[R12,#pahandle]

�#        LDR     R4,pafiltermask

�2        SWI     "XFilter_DeRegisterPostFilter"
)        LDRVC   R1,[R12,#moduleflags]
,        BICVC   R1,R1,#pafilterinstalled
)        STRVC   R1,[R12,#moduleflags]
$!        LDMFD   (sp)!,{R0,pc}
.
8.pafiltername
B        EQUS    "IconSpr"
L        EQUB    0
V        ALIGN
`
j.pafiltercode
t'        STMFD   (sp)!,{R1-R11,link}
~        TEQ     R0,#18
�%        BEQ     pamessagereceived
�>        TEQ     R0,#6                ; mouse click routine
�        LDREQ   R2,[R1,#12]
�        CMNEQ   R2,#2
�        LDREQ   R2,[R1,#8]
�        CMPEQ   R2,#1
�        BLEQ    forceredraw
�        B       endfilter
�
�.pamessagereceived
�        LDR     R2,[R1,#16]
�        CMP     R2,#3
        BNE     endfilter

        LDR     R2,[R1,#40]
        MOV     R3,#&ff0
        ADD     R3,R3,#9
(        CMP     R2,R3
2        BNE     endfilter
<        STMFD   (sp)!,{R1}
F        MOV     R0,#129
P!        MOV     R1,#(&FF � 0)
Z        MOV     R2,#&FF
d        SWI     "XOS_Byte"
n        CMP     R1,#&FF
x        LDMFD   (sp)!,{R1}
�        BEQ     toolsprites
�        MOV     R0,#11
�        ADD     R2,R1,#44
�$        SWI     "XWimp_SpriteOp"
�<        BVS     spriteoperror     : � �� fall through ��
�
�.senddataloadack
�        BL      forceredraw
�        MOV     R2,#4
�        STR     R2,[R1,#16]
�        LDR     R2,[R1,#8]
�        STR     R2,[R1,#12]
�        MOV     R0,#17
        LDR     R2,[R1,#4]
'        SWI     "XWimp_SendMessage"
        MVN     R0,#(� -1)
"        B       endfilter
,
6.spriteoperror
@         MOV     R1,#%0001010
J        ADR     R2,paname
T'        SWI     "XWimp_ReportError"
^        MVN     R0,#(� -1)
h        B       endfilter
r
|.toolsprites
�&        ADR     R2,toolspritestart
�1        ADD     R3,R1,#(44-�("ToolSprites "))
�        MOV     R0,R3
�        BL      stringcopy
�        SWI     "XOS_CLI"
�!        BVS     spriteoperror
�#        B       senddataloadack
�
�.stringcopy
�#        STMFD   (sp)!,{R0,link}
�.stringcopyloop
�        LDRB    R0,[R2],#1
�        CMP     R0,#32
        STRGEB  R0,[R3],#1
"        BGE     stringcopyloop
!        LDMFD   (sp)!,{R0,pc}
&
0.toolspritestart
:"        EQUS    "ToolSprites "
D        EQUB    0
N        ALIGN
X
b.forceredraw
l#        STMFD   (sp)!,{R1,link}
v        MVN     R0,#(� -1)
�        MOV     R1,#0
�        MOV     R2,#0
�        BL      screenmax
�'        SWI     "XWimp_ForceRedraw"
�!        LDMFD   (sp)!,{R1,pc}
�
�.gettaskhandle
�         STMFD   (sp)!,{link}
�        MOV     R0,#0
�.nexthandle
�T        ADD     R1,R12,#pollblock             ; use poll block as buffer for SWI
�        MOV     R2,#20
�1        SWI     "XTaskManager_EnumerateTasks"
        BVS     jumpout
        CMN     R0,#1
        BEQ     jumpout
         MOV     R6,R0
*A        LDR     R0,[R12,#(pollblock+4)]      ; read task name
4@        MOV     R3,R4                     ; passed task name
>!        BL      stringcompare
H        MOV     R0,R6
R        CMP     R3,#1
\'        LDREQ   R3,[R12,#pollblock]
f        LDMEQFD (sp)!,{pc}
p        B       nexthandle
z.jumpout
�        MOV     R3,#0
�        LDMFD   (sp)!,{pc}
�
�L.fafilterinstall                             ; pass pa task handle in R3
�#        STMFD   (sp)!,{R0,link}
�)        LDR     R1,[R12,#moduleflags]
�!        TST     R1,#confirmon
�G        LDMEQFD (sp)!,{R0,pc}               ; if not selected, exit
�)        TST     R1,#fafilterinstalled
�S        BEQ     fadoinstall                  ; if not installed, get on with it
�%        TST     R1,#fareplaceable
�L        LDMEQFD (sp)!,{R0,pc}                ; if not replaceable return
�        MOV     R0,R3
Q        BL      fafilterremove               ; if replacable, remove existing
        MOV     R3,R0
.fadoinstall
$#        ADR     R0,fafiltername
.#        ADR     R1,fafiltercode
8P        MOV     R2,R12                       ; note passes workspace pointer
BN        LDR     R4,fafiltermask              ; not private word pointer as
L9        SWI     "XFilter_RegisterPostFilter" ; before
V&        STRVC   R3,[R12,#fahandle]
`)        LDRVC   R1,[R12,#moduleflags]
j+        �RVC   R1,R1,#fafilterinstalled
t)        STRVC   R1,[R12,#moduleflags]
~!        LDMFD   (sp)!,{R0,pc}
�
�.fafilterremove
�#        STMFD   (sp)!,{R0,link}
�)        LDR     R1,[R12,#moduleflags]
�)        TST     R1,#fafilterinstalled
�M        LDMEQFD (sp)!,{R0,pc}               ; if not installed, just exit
�#        ADR     R0,fafiltername
�#        ADR     R1,fafiltercode
�        MOV     R2,R12
�&        LDR     R3,[R12,#fahandle]
�#        LDR     R4,fafiltermask
�2        SWI     "XFilter_DeRegisterPostFilter"
)        LDRVC   R1,[R12,#moduleflags]

,        BICVC   R1,R1,#fafilterinstalled
(        BICVC   R1,R1,#fareplaceable
)        STRVC   R1,[R12,#moduleflags]
(!        LDMFD   (sp)!,{R0,pc}
2
<.fafiltercode
F'        STMFD   (sp)!,{R1-R11,link}
P        TEQ     R0,#17
Z        BNE     endfilter
d        LDR     R3,[R1,#16]
n        MOV     R4,#&400
x        ADD     R4,R4,#&005
�        TEQ     R3,R4
�        BNE     endfilter
�        LDR     R3,[R1,#20]
�        TEQ     R3,#2
�        BNE     endfafilter
�        LDR     R3,[R1,#24]
�         �R     R3,R3,#%00010
�        STR     R3,[R1,#24]
�.endfafilter
�)        LDR     R3,[R12,#moduleflags]
�'        �R     R3,R3,#fareplaceable
�)        STR     R3,[R12,#moduleflags]
�        B       endfilter

.fafiltername
        EQUS    "Confirm"
"        EQUB    0
,        ALIGN
6
@.tmname
J"        EQUS    "Task Manager"
T        EQUB    0
^        ALIGN
h
r.paname
|%        EQUS    "Palette Utility"
�        EQUB    0
�        ALIGN
�
�.faname
�)        EQUS    "Filer Action Window"
�        EQUB    0
�        ALIGN
�
�.tmfiltercode
�'        STMFD   (sp)!,{R1-R11,link}
�)        LDR     R3,[R12,#moduleflags]
�'        TST     R3,#tmmessagesadded
�!        BLEQ    tmaddmessages
        TEQ     R0,#6
         BEQ     tmmouseclick
        TEQ     R0,#7
&        BEQ     enddrag
0        TEQ     R0,#17
:        TEQNE   R0,#18
D        TEQNE   R0,#19
N%        BEQ     tmmessagereceived
X.endfilter
b'        LDMFD   (sp)!,{R1-R11,link}
l        MOVS    pc,link
v
�.tmmessagereceived
�        LDR     R2,[R1,#16]
�        CMP     R2,#1
�        BEQ     returned
�        CMP     R2,#2
�        BNE     endfilter
�)        LDR     R2,[R12,#moduleflags]
�!        TST     R2,#tmowndrag
�        BEQ     endfilter
�3        BIC     R2,R2,#(tmowndrag � tmsolidity)
�)        STR     R2,[R12,#moduleflags]
�        MOV     R0,#43
�.getstring
        ADD     R0,R0,#1
        LDRB    R2,[R1,R0]
        CMP     R2,#32
         BGT     getstring
*        SUB     R0,R0,#1
4        LDRB    R2,[R1,R0]
>        CMP     R2,#�(".")
H        BNE     endfilter
R        MOV     R2,#0
\        STRB    R2,[R1,R0]
f        ADD     R1,R1,#44
p        MOV     R0,#0
z#        SWI     "XOS_FSControl"
�        MVN     R0,#(� -1)
�        B       endfilter
�
�
.returned
�        LDR     R2,[R1,#4]
�&        LDR     R3,[R12,#tmhandle]
�        CMP     R2,R3
�        BNE     endfilter
�)        LDR     R2,[R12,#moduleflags]
�!        TST     R2,#tmowndrag
�3        BICNE   R2,R2,#(tmowndrag � tmsolidity)
�)        STRNE   R2,[R12,#moduleflags]
�        MVNNE   R0,#(� -1)
        B       endfilter

.tmaddmessages
$#        STMFD   (sp)!,{R0,link}
.)        �R     R3,R3,#tmmessagesadded
8)        STR     R3,[R12,#moduleflags]
B!        ADR     R0,tmmessages
L'        SWI     "XWimp_AddMessages"
V!        LDMFD   (sp)!,{R0,pc}
`
j.enddrag
t)        LDR     R2,[R12,#moduleflags]
~!        TST     R2,#tmowndrag
�        BEQ     endfilter
�"        TST     R2,#tmsolidity
�'        SWINE   "XDragASprite_Stop"
�*        SWI     "XWimp_GetPointerInfo"
�        LDR     R0,[R1,#4]
�        STR     R0,[R1,#32]
�        LDR     R0,[R1,#0]
�        STR     R0,[R1,#28]
�        LDR     R0,[R1,#16]
�        STR     R0,[R1,#24]
�        LDR     R0,[R1,#12]
�        STR     R0,[R1,#20]
        MOV     R0,#1

        STR     R0,[R1,#16]
        MOV     R0,#0
        STR     R0,[R1,#12]
(        STR     R0,[R1,#36]
2        STR     R0,[R1,#40]
<        STR     R0,[R1,#44]
F        MOV     R0,#60
P        STR     R0,[R1,#0]
Z        MOV     R0,#18
d        LDR     R2,[R1,#20]
n'        SWI     "XWimp_SendMessage"
x        MVN     R0,#(� -1)
�        B       endfilter
�
�.tmmessages
�        EQUD    1
�        EQUD    0
�
�.tmmouseclick
�        LDR     R2,[R1,#12]
�        CMN     R2,#2
�        BNE     endfilter
�        LDR     R2,[R1,#8]
�        TEQ     R2,#1
�        BNE     endfilter
        MOV     R5,R1
        LDR     R0,[R5,#12]
        STR     R0,[R5,#0]
"        LDR     R4,[R5,#16]
,*        SWI     "XWimp_GetWindowState"
6        LDR     R2,[R5,#4]
@        LDR     R0,[R5,#20]
J        SUB     R2,R2,R0
T        LDR     R3,[R5,#16]
^        LDR     R0,[R5,#24]
h        SUB     R3,R3,R0
r        STR     R4,[R5,#4]
|(        SWI     "XWimp_GetIconState"
�        MOV     R0,#0
�        STR     R0,[R5,#0]
�        MOV     R0,#5
�        STR     R0,[R5,#4]
�        LDR     R0,[R5,#8]
�        ADD     R0,R0,R2
�        STR     R0,[R5,#8]
�        LDR     R0,[R5,#12]
�        ADD     R0,R0,R3
�        STR     R0,[R5,#12]
�        LDR     R0,[R5,#16]
�        ADD     R0,R0,R2
�        STR     R0,[R5,#16]
        LDR     R0,[R5,#20]
        ADD     R0,R0,R3
        STR     R0,[R5,#20]
&        MOV     R0,#0
0        STR     R0,[R5,#24]
:        MOV     R0,#0
D        STR     R0,[R5,#28]
N        BL      screenmax
X        STR     R3,[R5,#32]
b        STR     R4,[R5,#36]
l        MOV     R0,#161
v        MOV     R1,#28
�        SWI     "XOS_Byte"
�        �     R2,R2,#2
�        CMP     R2,#0
�        BNE     soliddrag
�
�.ordinarydrag
�        MOV     R1,R5
�#        SWI     "XWimp_DragBox"
�)        LDR     R0,[R12,#moduleflags]
�%        BIC     R0,R0,#tmsolidity
�#        �R     R0,R0,#tmowndrag
�)        STR     R0,[R12,#moduleflags]
�        MVN     R0,#(� -1)
        B       endfilter

.soliddrag
 !        LDR     R0,solidflags
*        MOV     R1,#1
4!        ADR     R2,spritename
>        ADD     R3,R5,#8
H(        SWI     "XDragASprite_Start"
R)        LDR     R0,[R12,#moduleflags]
\2        �R     R0,R0,#(tmowndrag � tmsolidity)
f)        STR     R0,[R12,#moduleflags]
p        MVN     R0,#(� -1)
z        B       endfilter
�
�.solidflags
�        EQUD    %11001010
�
�.spritename
�        EQUS    "switcher"
�        EQUB    0
�        ALIGN
�
�F.screenmax                                    ; returns maxx in r3
�>        STMFD   R13!,{R0-R2,R5-R12,link}      ; maxy in r4
�        MVN     R0,#(� -1)
�        MOV     R1,#11
*        SWI     "XOS_ReadModeVariable"
        ADD     R6,R2,#1
        MOV     R1,#4
$*        SWI     "XOS_ReadModeVariable"
.         MOV     R3,R6,LSL R2
8        MOV     R1,#12
B*        SWI     "XOS_ReadModeVariable"
L        ADD     R6,R2,#1
V        MOV     R1,#5
`*        SWI     "XOS_ReadModeVariable"
j         MOV     R4,R6,LSL R2
t*        LDMFD   R13!,{R0-R2,R5-R12,pc}
~
�.finalcode
�'        STMFD   (sp)!,{R7-R11,link}
�        LDR     R12,[R12]
�&        LDR     R0,[R12,#myhandle]
�        TEQ     R0,#0
�        BLE     finalskip
�        LDR     R1,task
�%        SWI     "XWimp_CloseDown"
�"        BL      tmfilterremove
�"        BL      pafilterremove
�"        BL      fafilterremove
�.finalskip
        MOV     R1,#0

&        STR     R1,[R12,#myhandle]
        MOV     R0,#7
        MOV     R2,R12
(         SWI     "XOS_Module"
2%        LDMFD   (sp)!,{R7-R11,pc}
<
F.servicecode
P         STMFD   (sp)!,{link}
Z        LDR     R12,[R12]
d        TEQ     R1,#&49
n        BEQ     startwimp
x        TEQ     R1,#&4A
�        BEQ     startedwimp
�        TEQ     R1,#&87
�        BLEQ    installall
�        TEQ     R1,#&88
�&        BEQ     filtermanagerdying
�        TEQ     R1,#&27
�        LDMNEFD (sp)!,{pc}
�        MOV     R14,#0
�'        STR     R14,[R12,#myhandle]
�"        BL      tmfilterremove
�"        BL      pafilterremove
�"        BL      fafilterremove
�        LDMFD   (sp)!,{pc}

.filtermanagerdying
)        LDR     R3,[R12,#moduleflags]
"V        BIC     R3,R3,#(tmfilterinstalled � pafilterinstalled � fafilterinstalled)
,(        BIC     R3,R3,#fareplaceable
6)        STR     R3,[R12,#moduleflags]
@        LDMFD   (sp)!,{pc}
J
T.startedwimp
^'        LDR     R14,[R12,#myhandle]
h        CMN     R14,#1
r        �Q   R14,#0
|'        STREQ   R14,[R12,#myhandle]
�        LDMFD   (sp)!,{pc}
�
�.mymask
�)        EQUD    %10000011100101110011
�
�.tmfiltermask
�)        EQUD    %00000011100100110011
�
�.pafiltermask
�)        EQUD    %10100011100100110011
�
�.fafiltermask
�)        EQUD    %11000011100101110011
 
 ]
 � pass%
 &�
�
00000000  0d 00 0a 11 f4 20 3e 46  69 6c 74 53 6f 75 72 63  |..... >FiltSourc|
00000010  65 0d 00 14 23 f4 20 42  79 20 4b 43 45 20 53 6f  |e...#. By KCE So|
00000020  66 74 77 61 72 65 20 28  41 6e 64 72 65 77 20 4b  |ftware (Andrew K|
00000030  65 6d 70 29 0d 00 1e 11  f4 20 a9 20 4a 75 6e 65  |emp)..... . June|
00000040  20 31 39 39 34 0d 00 28  05 3a 0d 00 32 11 f4 20  | 1994..(.:..2.. |
00000050  77 6f 72 6b 73 70 61 63  65 20 3a 0d 00 3c 51 f4  |workspace :..<Q.|
00000060  20 20 5f 5f 5f 5f 5f 5f  5f 5f 5f 5f 5f 5f 5f 5f  |  ______________|
00000070  5f 5f 5f 5f 5f 5f 5f 5f  5f 5f 5f 5f 5f 5f 5f 5f  |________________|
*
000000a0  5f 5f 5f 5f 5f 5f 5f 5f  5f 5f 5f 5f 0d 00 46 52  |____________..FR|
000000b0  f4 20 7c 20 20 6f 66 66  73 65 74 20 7c 20 63 6f  |. |  offset | co|
000000c0  6e 74 65 6e 74 73 20 20  20 20 20 20 20 20 20 20  |ntents          |
000000d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000000f0  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 0d 00  |             |..|
00000100  50 52 f4 20 7c 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |PR. |-----------|
00000110  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000140  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 7c  |---------------||
00000150  0d 00 5a 52 f4 20 7c 20  20 20 20 20 20 20 30 20  |..ZR. |       0 |
00000160  7c 20 6f 70 74 69 6f 6e  73 20 66 6c 61 67 20 77  || options flag w|
00000170  6f 72 64 20 3a 20 62 69  74 20 30 20 3d 3e 20 74  |ord : bit 0 => t|
00000180  61 73 6b 20 6d 61 6e 61  67 65 72 20 6d 65 73 73  |ask manager mess|
00000190  61 67 65 73 20 61 64 64  65 64 20 20 20 20 20 20  |ages added      |
000001a0  20 7c 0d 00 64 52 f4 20  7c 20 20 20 20 20 20 20  | |..dR. |       |
000001b0  20 20 7c 20 20 20 20 20  20 20 20 20 20 20 20 20  |  |             |
000001c0  20 20 20 20 20 20 20 20  62 69 74 20 31 20 3d 3e  |        bit 1 =>|
000001d0  20 6f 77 6e 20 63 75 72  72 65 6e 74 20 64 72 61  | own current dra|
000001e0  67 20 6f 70 65 72 61 74  69 6f 6e 20 20 20 20 20  |g operation     |
000001f0  20 20 20 7c 0d 00 6e 52  f4 20 7c 20 20 20 20 20  |   |..nR. |     |
00000200  20 20 20 20 7c 20 20 20  20 20 20 20 20 20 20 20  |    |           |
00000210  20 20 20 20 20 20 20 20  20 20 62 69 74 20 32 20  |          bit 2 |
00000220  3d 3e 20 63 75 72 72 65  6e 74 20 64 72 61 67 20  |=> current drag |
00000230  69 73 20 73 6f 6c 69 64  20 20 20 20 20 20 20 20  |is solid        |
00000240  20 20 20 20 20 7c 0d 00  78 52 f4 20 7c 20 20 20  |     |..xR. |   |
00000250  20 20 20 20 20 20 7c 20  20 20 20 20 20 20 20 20  |      |         |
00000260  20 20 20 20 20 20 20 20  20 20 20 20 62 69 74 20  |            bit |
00000270  33 20 3d 3e 20 63 75 72  72 65 6e 74 20 66 61 20  |3 => current fa |
00000280  66 69 6c 74 65 72 20 6d  61 79 20 62 65 20 72 65  |filter may be re|
00000290  70 6c 61 63 65 64 20 7c  0d 00 82 52 f4 20 7c 20  |placed |...R. | |
000002a0  20 20 20 20 20 20 20 20  7c 20 20 20 20 20 20 20  |        |       |
000002b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 62 69  |              bi|
000002c0  74 20 34 20 3d 3e 20 53  65 74 43 53 44 20 74 75  |t 4 => SetCSD tu|
000002d0  72 6e 65 64 20 6f 6e 20  20 20 20 20 20 20 20 20  |rned on         |
000002e0  20 20 20 20 20 20 20 20  20 7c 0d 00 8c 52 f4 20  |         |...R. |
000002f0  7c 20 20 20 20 20 20 20  20 20 7c 20 20 20 20 20  ||         |     |
00000300  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000310  62 69 74 20 35 20 3d 3e  20 49 63 6f 6e 53 70 72  |bit 5 => IconSpr|
00000320  20 74 75 72 6e 65 64 20  6f 6e 20 20 20 20 20 20  | turned on      |
00000330  20 20 20 20 20 20 20 20  20 20 20 7c 0d 00 96 52  |           |...R|
00000340  f4 20 7c 20 20 20 20 20  20 20 20 20 7c 20 20 20  |. |         |   |
00000350  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000360  20 20 62 69 74 20 36 20  3d 3e 20 43 6f 6e 66 69  |  bit 6 => Confi|
00000370  72 6d 20 74 75 72 6e 65  64 20 6f 6e 20 20 20 20  |rm turned on    |
00000380  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 0d 00  |             |..|
00000390  a0 52 f4 20 7c 20 20 20  20 20 20 20 20 20 7c 20  |.R. |         | |
000003a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000003d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 7c  |               ||
000003e0  0d 00 aa 52 f4 20 7c 20  20 20 20 20 20 20 20 20  |...R. |         |
000003f0  7c 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  ||               |
00000400  20 20 20 20 20 20 62 69  74 20 31 36 20 3d 3e 20  |      bit 16 => |
00000410  54 61 73 6b 4d 61 6e 61  67 65 72 20 66 69 6c 74  |TaskManager filt|
00000420  65 72 20 69 6e 73 74 61  6c 6c 65 64 20 20 20 20  |er installed    |
00000430  20 7c 0d 00 b4 52 f4 20  7c 20 20 20 20 20 20 20  | |...R. |       |
00000440  20 20 7c 20 20 20 20 20  20 20 20 20 20 20 20 20  |  |             |
00000450  20 20 20 20 20 20 20 20  62 69 74 20 31 37 20 3d  |        bit 17 =|
00000460  3e 20 50 61 6c 65 74 74  65 20 66 69 6c 74 65 72  |> Palette filter|
00000470  20 69 6e 73 74 61 6c 6c  65 64 20 20 20 20 20 20  | installed      |
00000480  20 20 20 7c 0d 00 be 52  f4 20 7c 20 20 20 20 20  |   |...R. |     |
00000490  20 20 20 20 7c 20 20 20  20 20 20 20 20 20 20 20  |    |           |
000004a0  20 20 20 20 20 20 20 20  20 20 62 69 74 20 31 38  |          bit 18|
000004b0  20 3d 3e 20 46 69 6c 65  72 41 63 74 69 6f 6e 20  | => FilerAction |
000004c0  66 69 6c 74 65 72 20 69  6e 73 74 61 6c 6c 65 64  |filter installed|
000004d0  20 20 20 20 20 7c 0d 00  c8 52 f4 20 7c 20 20 20  |     |...R. |   |
000004e0  20 20 20 20 34 20 7c 20  6d 79 20 74 61 73 6b 20  |    4 | my task |
000004f0  68 61 6e 64 6c 65 20 20  20 20 20 20 20 20 20 20  |handle          |
00000500  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000520  20 20 20 20 20 20 20 7c  0d 00 d2 52 f4 20 7c 20  |       |...R. | |
00000530  20 20 20 20 20 20 38 20  7c 20 74 61 73 6b 20 6d  |      8 | task m|
00000540  61 6e 61 67 65 72 27 73  20 74 61 73 6b 20 68 61  |anager's task ha|
00000550  6e 64 6c 65 20 20 20 20  20 20 20 20 20 20 20 20  |ndle            |
00000560  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000570  20 20 20 20 20 20 20 20  20 7c 0d 00 dc 52 f4 20  |         |...R. |
00000580  7c 20 20 20 20 20 20 31  32 20 7c 20 70 61 6c 65  ||      12 | pale|
00000590  74 74 65 20 75 74 69 6c  69 74 79 27 73 20 74 61  |tte utility's ta|
000005a0  73 6b 20 68 61 6e 64 6c  65 20 20 20 20 20 20 20  |sk handle       |
000005b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000005c0  20 20 20 20 20 20 20 20  20 20 20 7c 0d 00 e6 52  |           |...R|
000005d0  f4 20 7c 20 20 20 20 20  20 31 36 20 7c 20 66 69  |. |      16 | fi|
000005e0  6c 65 72 20 61 63 74 69  6f 6e 20 77 69 6e 64 6f  |ler action windo|
000005f0  77 27 73 20 74 61 73 6b  20 68 61 6e 64 6c 65 20  |w's task handle |
00000600  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000610  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 0d 00  |             |..|
00000620  f0 52 f4 20 7c 20 20 32  30 2d 32 37 35 20 7c 20  |.R. |  20-275 | |
00000630  70 6f 6c 6c 69 6e 67 20  62 6c 6f 63 6b 20 20 20  |polling block   |
00000640  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000660  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 7c  |               ||
00000670  0d 00 fa 52 f4 20 7c 20  32 37 36 2d 32 39 35 20  |...R. | 276-295 |
00000680  7c 20 66 75 6c 6c 20 64  65 73 63 65 6e 64 69 6e  || full descendin|
00000690  67 20 73 74 61 63 6b 2c  20 66 69 76 65 20 72 65  |g stack, five re|
000006a0  67 69 73 74 65 72 73 20  20 20 20 20 20 20 20 20  |gisters         |
000006b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000006c0  20 7c 0d 01 04 51 f4 20  20 2d 2d 2d 2d 2d 2d 2d  | |...Q.  -------|
000006d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000710  2d 2d 2d 0d 01 0e 05 3a  0d 01 18 15 6d 6f 64 75  |---....:....modu|
00000720  6c 65 66 6c 61 67 73 20  3d 20 20 20 30 0d 01 22  |leflags =   0.."|
00000730  15 6d 79 68 61 6e 64 6c  65 20 20 20 20 3d 20 20  |.myhandle    =  |
00000740  20 34 0d 01 2c 15 74 6d  68 61 6e 64 6c 65 20 20  | 4..,.tmhandle  |
00000750  20 20 3d 20 20 20 38 0d  01 36 15 70 61 68 61 6e  |  =   8..6.pahan|
00000760  64 6c 65 20 20 20 20 3d  20 20 31 32 0d 01 40 15  |dle    =  12..@.|
00000770  66 61 68 61 6e 64 6c 65  20 20 20 20 3d 20 20 31  |fahandle    =  1|
00000780  36 0d 01 4a 15 70 6f 6c  6c 62 6c 6f 63 6b 20 20  |6..J.pollblock  |
00000790  20 3d 20 20 32 30 0d 01  54 41 73 74 61 63 6b 20  | =  20..TAstack |
000007a0  20 20 20 20 20 20 3d 20  32 39 32 20 3a 20 f4 20  |      = 292 : . |
000007b0  70 6f 69 6e 74 65 72 20  74 6f 20 74 6f 70 20 77  |pointer to top w|
000007c0  6f 72 64 20 6f 66 20 64  65 73 63 65 6e 64 69 6e  |ord of descendin|
000007d0  67 20 73 74 61 63 6b 0d  01 5e 05 3a 0d 01 68 1d  |g stack..^.:..h.|
000007e0  74 6d 6d 65 73 73 61 67  65 73 61 64 64 65 64 20  |tmmessagesadded |
000007f0  20 20 3d 20 20 31 3c 3c  30 0d 01 72 1d 74 6d 6f  |  =  1<<0..r.tmo|
00000800  77 6e 64 72 61 67 20 20  20 20 20 20 20 20 20 3d  |wndrag         =|
00000810  20 20 31 3c 3c 31 0d 01  7c 1d 74 6d 73 6f 6c 69  |  1<<1..|.tmsoli|
00000820  64 69 74 79 20 20 20 20  20 20 20 20 3d 20 20 31  |dity        =  1|
00000830  3c 3c 32 0d 01 86 1d 66  61 72 65 70 6c 61 63 65  |<<2....fareplace|
00000840  61 62 6c 65 20 20 20 20  20 3d 20 20 31 3c 3c 33  |able     =  1<<3|
00000850  0d 01 90 1d 73 65 74 63  73 64 6f 6e 20 20 20 20  |....setcsdon    |
00000860  20 20 20 20 20 20 3d 20  20 31 3c 3c 34 0d 01 9a  |      =  1<<4...|
00000870  1d 69 63 6f 6e 73 70 72  6f 6e 20 20 20 20 20 20  |.iconspron      |
00000880  20 20 20 3d 20 20 31 3c  3c 35 0d 01 a4 1d 63 6f  |   =  1<<5....co|
00000890  6e 66 69 72 6d 6f 6e 20  20 20 20 20 20 20 20 20  |nfirmon         |
000008a0  3d 20 20 31 3c 3c 36 0d  01 ae 1d 74 6d 66 69 6c  |=  1<<6....tmfil|
000008b0  74 65 72 69 6e 73 74 61  6c 6c 65 64 20 3d 20 31  |terinstalled = 1|
000008c0  3c 3c 31 36 0d 01 b8 1d  70 61 66 69 6c 74 65 72  |<<16....pafilter|
000008d0  69 6e 73 74 61 6c 6c 65  64 20 3d 20 31 3c 3c 31  |installed = 1<<1|
000008e0  37 0d 01 c2 1d 66 61 66  69 6c 74 65 72 69 6e 73  |7....fafilterins|
000008f0  74 61 6c 6c 65 64 20 3d  20 31 3c 3c 31 38 0d 01  |talled = 1<<18..|
00000900  cc 05 3a 0d 01 d6 0a 72  75 6e 25 3d a3 0d 01 e0  |..:....run%=....|
00000910  23 ee 20 85 20 ef 20 37  3a f1 20 f6 24 3b 22 20  |#. . . 7:. .$;" |
00000920  61 74 20 6c 69 6e 65 20  22 3b c3 28 9e 29 3a e0  |at line ";.(.):.|
00000930  0d 01 ea 05 3a 0d 01 f4  09 f2 69 6e 69 74 0d 01  |....:.....init..|
00000940  fe 0d f2 61 73 73 65 6d  62 6c 65 0d 02 08 25 f2  |...assemble...%.|
00000950  73 61 76 65 28 22 54 61  73 6b 46 69 6c 74 65 72  |save("TaskFilter|
00000960  22 2c 26 66 66 61 2c 63  6f 64 65 25 2c 4f 25 29  |",&ffa,code%,O%)|
00000970  0d 02 12 05 e0 0d 02 1c  05 3a 0d 02 26 0b dd 20  |.........:..&.. |
00000980  f2 69 6e 69 74 0d 02 30  13 64 61 74 65 24 3d c1  |.init..0.date$=.|
00000990  91 24 2c 35 2c 31 31 29  0d 02 3a 13 76 65 72 73  |.$,5,11)..:.vers|
000009a0  69 6f 6e 24 3d 22 30 2e  32 38 22 0d 02 44 12 de  |ion$="0.28"..D..|
000009b0  20 63 6f 64 65 25 20 26  31 30 30 30 30 0d 02 4e  | code% &10000..N|
000009c0  05 e1 0d 02 58 05 3a 0d  02 62 23 dd 20 f2 73 61  |....X.:..b#. .sa|
000009d0  76 65 28 66 69 6c 65 24  2c 74 79 70 65 25 2c 62  |ve(file$,type%,b|
000009e0  61 73 65 25 2c 65 6e 64  25 29 0d 02 6c 2b c8 99  |ase%,end%)..l+..|
000009f0  20 22 4f 53 5f 46 69 6c  65 22 2c 31 30 2c 66 69  | "OS_File",10,fi|
00000a00  6c 65 24 2c 74 79 70 65  25 2c 2c 62 61 73 65 25  |le$,type%,,base%|
00000a10  2c 65 6e 64 25 0d 02 76  28 e7 20 72 75 6e 25 20  |,end%..v(. run% |
00000a20  8c 20 c8 99 20 22 4f 53  5f 43 4c 49 22 2c 22 52  |. .. "OS_CLI","R|
00000a30  4d 4c 6f 61 64 20 22 2b  66 69 6c 65 24 0d 02 80  |MLoad "+file$...|
00000a40  05 e1 0d 02 8a 05 3a 0d  02 94 0f dd 20 f2 61 73  |......:..... .as|
00000a50  73 65 6d 62 6c 65 0d 02  9e 20 77 70 3d 31 32 3a  |semble... wp=12:|
00000a60  20 73 70 3d 31 33 3a 20  6c 69 6e 6b 3d 31 34 3a  | sp=13: link=14:|
00000a70  20 70 63 3d 31 35 0d 02  a8 15 e3 20 70 61 73 73  | pc=15..... pass|
00000a80  25 3d 34 20 b8 20 36 20  88 20 32 0d 02 b2 12 50  |%=4 . 6 . 2....P|
00000a90  25 3d 30 3a 20 4f 25 3d  63 6f 64 65 25 0d 02 bc  |%=0: O%=code%...|
00000aa0  0e 5b 4f 50 54 20 70 61  73 73 25 0d 02 c6 1d 20  |.[OPT pass%.... |
00000ab0  20 20 20 20 20 20 20 45  51 55 44 20 20 20 20 73  |       EQUD    s|
00000ac0  74 61 72 74 63 6f 64 65  0d 02 d0 1c 20 20 20 20  |tartcode....    |
00000ad0  20 20 20 20 45 51 55 44  20 20 20 20 69 6e 69 74  |    EQUD    init|
00000ae0  63 6f 64 65 0d 02 da 1d  20 20 20 20 20 20 20 20  |code....        |
00000af0  45 51 55 44 20 20 20 20  66 69 6e 61 6c 63 6f 64  |EQUD    finalcod|
00000b00  65 0d 02 e4 1f 20 20 20  20 20 20 20 20 45 51 55  |e....        EQU|
00000b10  44 20 20 20 20 73 65 72  76 69 63 65 63 6f 64 65  |D    servicecode|
00000b20  0d 02 ee 1f 20 20 20 20  20 20 20 20 45 51 55 44  |....        EQUD|
00000b30  20 20 20 20 74 69 74 6c  65 73 74 72 69 6e 67 0d  |    titlestring.|
00000b40  02 f8 1e 20 20 20 20 20  20 20 20 45 51 55 44 20  |...        EQUD |
00000b50  20 20 20 68 65 6c 70 73  74 72 69 6e 67 0d 03 02  |   helpstring...|
00000b60  1d 20 20 20 20 20 20 20  20 45 51 55 44 20 20 20  |.        EQUD   |
00000b70  20 68 65 6c 70 74 61 62  6c 65 0d 03 0c 04 0d 03  | helptable......|
00000b80  16 10 2e 74 69 74 6c 65  73 74 72 69 6e 67 0d 03  |...titlestring..|
00000b90  20 21 20 20 20 20 20 20  20 20 45 51 55 53 20 20  | !        EQUS  |
00000ba0  20 20 22 54 61 73 6b 46  69 6c 74 65 72 73 22 0d  |  "TaskFilters".|
00000bb0  03 2a 15 20 20 20 20 20  20 20 20 45 51 55 42 20  |.*.        EQUB |
00000bc0  20 20 20 30 0d 03 34 11  20 20 20 20 20 20 20 20  |   0..4.        |
00000bd0  41 4c 49 47 4e 0d 03 3e  04 0d 03 48 0f 2e 68 65  |ALIGN..>...H..he|
00000be0  6c 70 73 74 72 69 6e 67  0d 03 52 1e 20 20 20 20  |lpstring..R.    |
00000bf0  20 20 20 20 45 51 55 53  20 22 54 61 73 6b 46 69  |    EQUS "TaskFi|
00000c00  6c 74 65 72 73 22 0d 03  5c 12 20 20 20 20 20 20  |lters"..\.      |
00000c10  20 20 45 51 55 42 20 39  0d 03 66 28 20 20 20 20  |  EQUB 9..f(    |
00000c20  20 20 20 20 45 51 55 53  20 76 65 72 73 69 6f 6e  |    EQUS version|
00000c30  24 2b 22 20 28 22 2b 64  61 74 65 24 2b 22 29 22  |$+" ("+date$+")"|
00000c40  0d 03 70 12 20 20 20 20  20 20 20 20 45 51 55 42  |..p.        EQUB|
00000c50  20 30 0d 03 7a 11 20 20  20 20 20 20 20 20 41 4c  | 0..z.        AL|
00000c60  49 47 4e 0d 03 84 04 0d  03 8e 0e 2e 68 65 6c 70  |IGN.........help|
00000c70  74 61 62 6c 65 0d 03 98  29 20 20 20 20 20 20 20  |table...)       |
00000c80  20 45 51 55 53 20 20 20  20 22 44 65 73 6b 74 6f  | EQUS    "Deskto|
00000c90  70 5f 54 61 73 6b 46 69  6c 74 65 72 73 22 0d 03  |p_TaskFilters"..|
00000ca0  a2 15 20 20 20 20 20 20  20 20 45 51 55 42 20 20  |..        EQUB  |
00000cb0  20 20 30 0d 03 ac 11 20  20 20 20 20 20 20 20 41  |  0....        A|
00000cc0  4c 49 47 4e 0d 03 b6 1f  20 20 20 20 20 20 20 20  |LIGN....        |
00000cd0  45 51 55 44 20 20 20 20  73 74 61 72 63 6f 6d 6d  |EQUD    starcomm|
00000ce0  61 6e 64 0d 03 c0 15 20  20 20 20 20 20 20 20 45  |and....        E|
00000cf0  51 55 44 20 20 20 20 30  0d 03 ca 15 20 20 20 20  |QUD    0....    |
00000d00  20 20 20 20 45 51 55 44  20 20 20 20 30 0d 03 d4  |    EQUD    0...|
00000d10  18 20 20 20 20 20 20 20  20 45 51 55 44 20 20 20  |.        EQUD   |
00000d20  20 68 65 6c 70 0d 03 de  15 20 20 20 20 20 20 20  | help....       |
00000d30  20 45 51 55 42 20 20 20  20 30 0d 03 e8 04 0d 03  | EQUB    0......|
00000d40  f2 09 2e 68 65 6c 70 0d  03 fc 16 20 20 20 20 20  |...help....     |
00000d50  20 20 20 45 51 55 42 20  20 20 20 31 33 0d 04 06  |   EQUB    13...|
00000d60  4c 20 20 20 20 20 20 20  20 45 51 55 53 20 20 20  |L        EQUS   |
00000d70  20 22 44 6f 20 6e 6f 74  20 75 73 65 20 2a 44 65  | "Do not use *De|
00000d80  73 6b 74 6f 70 5f 54 61  73 6b 46 69 6c 74 65 72  |sktop_TaskFilter|
00000d90  73 2c 20 75 73 65 20 2a  44 65 73 6b 74 6f 70 20  |s, use *Desktop |
00000da0  69 6e 73 74 65 61 64 2e  22 0d 04 10 16 20 20 20  |instead."....   |
00000db0  20 20 20 20 20 45 51 55  42 20 20 20 20 31 33 0d  |     EQUB    13.|
00000dc0  04 1a 16 20 20 20 20 20  20 20 20 45 51 55 42 20  |...        EQUB |
00000dd0  20 20 20 31 33 0d 04 24  54 20 20 20 20 20 20 20  |   13..$T       |
00000de0  20 45 51 55 53 20 20 20  20 22 54 61 73 6b 46 69  | EQUS    "TaskFi|
00000df0  6c 74 65 72 73 20 70 72  6f 76 69 64 65 73 20 73  |lters provides s|
00000e00  69 6d 70 6c 65 20 61 6e  64 20 6c 6f 77 2d 6d 65  |imple and low-me|
00000e10  6d 6f 72 79 20 70 61 74  63 68 65 73 20 74 6f 20  |mory patches to |
00000e20  76 61 72 69 6f 75 73 20  22 0d 04 2e 50 20 20 20  |various "...P   |
00000e30  20 20 20 20 20 45 51 55  53 20 20 20 20 22 61 73  |     EQUS    "as|
00000e40  70 65 63 74 73 20 6f 66  20 74 68 65 20 6f 70 65  |pects of the ope|
00000e50  72 61 74 69 6e 67 20 73  79 73 74 65 6d 2c 20 75  |rating system, u|
00000e60  73 69 6e 67 20 52 49 53  43 20 4f 53 20 33 27 73  |sing RISC OS 3's|
00000e70  20 66 69 6c 74 65 72 20  22 0d 04 38 4d 20 20 20  | filter "..8M   |
00000e80  20 20 20 20 20 45 51 55  53 20 20 20 20 22 6d 61  |     EQUS    "ma|
00000e90  6e 61 67 65 72 2e 20 53  65 65 20 74 68 65 20 21  |nager. See the !|
00000ea0  48 65 6c 70 20 66 69 6c  65 20 66 6f 72 20 64 65  |Help file for de|
00000eb0  74 61 69 6c 73 20 6f 66  20 74 68 65 20 76 61 72  |tails of the var|
00000ec0  69 6f 75 73 20 22 0d 04  42 1e 20 20 20 20 20 20  |ious "..B.      |
00000ed0  20 20 45 51 55 53 20 20  20 20 22 66 69 6c 74 65  |  EQUS    "filte|
00000ee0  72 73 2e 22 0d 04 4c 16  20 20 20 20 20 20 20 20  |rs."..L.        |
00000ef0  45 51 55 42 20 20 20 20  31 33 0d 04 56 16 20 20  |EQUB    13..V.  |
00000f00  20 20 20 20 20 20 45 51  55 42 20 20 20 20 31 33  |      EQUB    13|
00000f10  0d 04 60 3d 20 20 20 20  20 20 20 20 45 51 55 53  |..`=        EQUS|
00000f20  20 20 20 20 22 54 61 73  6b 46 69 6c 74 65 72 73  |    "TaskFilters|
00000f30  20 77 61 73 20 77 72 69  74 74 65 6e 20 62 79 20  | was written by |
00000f40  41 6e 64 72 65 77 20 4b  65 6d 70 2e 22 0d 04 6a  |Andrew Kemp."..j|
00000f50  16 20 20 20 20 20 20 20  20 45 51 55 42 20 20 20  |.        EQUB   |
00000f60  20 31 33 0d 04 74 16 20  20 20 20 20 20 20 20 45  | 13..t.        E|
00000f70  51 55 42 20 20 20 20 31  33 0d 04 7e 3b 20 20 20  |QUB    13..~;   |
00000f80  20 20 20 20 20 45 51 55  53 20 20 20 20 22 a9 20  |     EQUS    ". |
00000f90  4b 43 45 20 53 6f 66 74  77 61 72 65 2c 20 4a 75  |KCE Software, Ju|
00000fa0  6e 65 20 31 39 39 34 2e  22 2b bd 28 31 33 29 2b  |ne 1994."+.(13)+|
00000fb0  bd 28 30 29 0d 04 88 11  20 20 20 20 20 20 20 20  |.(0)....        |
00000fc0  41 4c 49 47 4e 0d 04 92  04 0d 04 9c 0e 2e 73 74  |ALIGN.........st|
00000fd0  61 72 74 77 69 6d 70 0d  04 a6 27 20 20 20 20 20  |artwimp...'     |
00000fe0  20 20 20 4c 44 52 20 20  20 20 20 52 31 34 2c 5b  |   LDR     R14,[|
00000ff0  52 31 32 2c 23 6d 79 68  61 6e 64 6c 65 5d 0d 04  |R12,#myhandle]..|
00001000  b0 1a 20 20 20 20 20 20  20 20 54 45 51 20 20 20  |..        TEQ   |
00001010  20 20 52 31 34 2c 23 30  0d 04 ba 1f 20 20 20 20  |  R14,#0....    |
00001020  20 20 20 20 4d 56 4e 45  51 20 20 20 52 31 34 2c  |    MVNEQ   R14,|
00001030  23 28 ac 20 2d 31 29 0d  04 c4 27 20 20 20 20 20  |#(. -1)...'     |
00001040  20 20 20 53 54 52 45 51  20 20 20 52 31 34 2c 5b  |   STREQ   R14,[|
00001050  52 31 32 2c 23 6d 79 68  61 6e 64 6c 65 5d 0d 04  |R12,#myhandle]..|
00001060  ce 20 20 20 20 20 20 20  20 20 41 44 52 45 51 20  |.         ADREQ |
00001070  20 20 52 30 2c 68 65 6c  70 74 61 62 6c 65 0d 04  |  R0,helptable..|
00001080  d8 16 20 20 20 20 20 20  20 20 ec 51 20 20 20 52  |..        .Q   R|
00001090  31 2c 23 30 0d 04 e2 1e  20 20 20 20 20 20 20 20  |1,#0....        |
000010a0  4c 44 4d 46 44 20 20 20  28 73 70 29 21 2c 7b 70  |LDMFD   (sp)!,{p|
000010b0  63 7d 0d 04 ec 04 0d 04  f6 0d 2e 69 6e 69 74 63  |c}.........initc|
000010c0  6f 64 65 0d 05 00 27 20  20 20 20 20 20 20 20 53  |ode...'        S|
000010d0  54 4d 46 44 20 20 20 28  73 70 29 21 2c 7b 52 37  |TMFD   (sp)!,{R7|
000010e0  2d 52 31 31 2c 6c 69 6e  6b 7d 0d 05 0a 19 20 20  |-R11,link}....  |
000010f0  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 52 30  |      MOV     R0|
00001100  2c 23 36 0d 05 14 1b 20  20 20 20 20 20 20 20 4d  |,#6....        M|
00001110  4f 56 20 20 20 20 20 52  33 2c 23 32 39 36 0d 05  |OV     R3,#296..|
00001120  1e 20 20 20 20 20 20 20  20 20 53 57 49 20 20 20  |.         SWI   |
00001130  20 20 22 58 4f 53 5f 4d  6f 64 75 6c 65 22 0d 05  |  "XOS_Module"..|
00001140  28 1c 20 20 20 20 20 20  20 20 42 56 53 20 20 20  |(.        BVS   |
00001150  20 20 69 6e 69 74 65 78  69 74 0d 05 32 1c 20 20  |  initexit..2.  |
00001160  20 20 20 20 20 20 53 54  52 20 20 20 20 20 52 32  |      STR     R2|
00001170  2c 5b 52 31 32 5d 0d 05  3c 19 20 20 20 20 20 20  |,[R12]..<.      |
00001180  20 20 4d 4f 56 20 20 20  20 20 52 30 2c 23 30 0d  |  MOV     R0,#0.|
00001190  05 46 25 20 20 20 20 20  20 20 20 53 54 52 20 20  |.F%        STR  |
000011a0  20 20 20 52 30 2c 5b 52  32 2c 23 6d 79 68 61 6e  |   R0,[R2,#myhan|
000011b0  64 6c 65 5d 0d 05 50 1c  20 20 20 20 20 20 20 20  |dle]..P.        |
000011c0  4c 44 52 42 20 20 20 20  52 33 2c 5b 52 31 30 5d  |LDRB    R3,[R10]|
000011d0  0d 05 5a 1e 20 20 20 20  20 20 20 20 43 4d 50 20  |..Z.        CMP |
000011e0  20 20 20 20 52 33 2c 23  97 28 22 2d 22 29 0d 05  |    R3,#.("-")..|
000011f0  64 1c 20 20 20 20 20 20  20 20 42 4e 45 20 20 20  |d.        BNE   |
00001200  20 20 69 6e 69 74 65 78  69 74 0d 05 6e 1f 20 20  |  initexit..n.  |
00001210  20 20 20 20 20 20 4c 44  52 42 20 20 20 20 52 33  |      LDRB    R3|
00001220  2c 5b 52 31 30 2c 23 31  5d 0d 05 78 1e 20 20 20  |,[R10,#1]..x.   |
00001230  20 20 20 20 20 43 4d 50  20 20 20 20 20 52 33 2c  |     CMP     R3,|
00001240  23 97 28 22 6f 22 29 0d  05 82 1c 20 20 20 20 20  |#.("o")....     |
00001250  20 20 20 42 45 51 20 20  20 20 20 72 65 61 64 6f  |   BEQ     reado|
00001260  70 74 73 0d 05 8c 0d 2e  69 6e 69 74 65 78 69 74  |pts.....initexit|
00001270  0d 05 96 25 20 20 20 20  20 20 20 20 4c 44 4d 46  |...%        LDMF|
00001280  44 20 20 20 28 73 70 29  21 2c 7b 52 37 2d 52 31  |D   (sp)!,{R7-R1|
00001290  31 2c 70 63 7d 0d 05 a0  04 0d 05 aa 0d 2e 72 65  |1,pc}.........re|
000012a0  61 64 6f 70 74 73 0d 05  b4 3c 20 20 20 20 20 20  |adopts...<      |
000012b0  20 20 84 52 20 20 20 20  20 52 30 2c 52 30 2c 23  |  .R     R0,R0,#|
000012c0  28 73 65 74 63 73 64 6f  6e 20 84 20 69 63 6f 6e  |(setcsdon . icon|
000012d0  73 70 72 6f 6e 20 84 20  63 6f 6e 66 69 72 6d 6f  |spron . confirmo|
000012e0  6e 29 0d 05 be 52 20 20  20 20 20 20 20 20 53 54  |n)...R        ST|
000012f0  52 20 20 20 20 20 52 30  2c 5b 52 32 2c 23 6d 6f  |R     R0,[R2,#mo|
00001300  64 75 6c 65 66 6c 61 67  73 5d 20 20 20 20 20 20  |duleflags]      |
00001310  20 20 20 20 20 3b 20 64  65 66 61 75 6c 74 20 6f  |     ; default o|
00001320  70 74 69 6f 6e 73 20 69  6e 20 63 61 73 65 20 65  |ptions in case e|
00001330  72 72 6f 72 0d 05 c8 1a  20 20 20 20 20 20 20 20  |rror....        |
00001340  4d 4f 56 20 20 20 20 20  52 30 2c 23 31 37 0d 05  |MOV     R0,#17..|
00001350  d2 1f 20 20 20 20 20 20  20 20 41 44 52 20 20 20  |..        ADR   |
00001360  20 20 52 31 2c 70 61 74  68 6e 61 6d 65 0d 05 dc  |  R1,pathname...|
00001370  1e 20 20 20 20 20 20 20  20 53 57 49 20 20 20 20  |.        SWI    |
00001380  20 22 58 4f 53 5f 46 69  6c 65 22 0d 05 e6 3b 20  | "XOS_File"...; |
00001390  20 20 20 20 20 20 20 42  56 53 20 20 20 20 20 69  |       BVS     i|
000013a0  6e 69 74 65 78 69 74 20  20 20 20 20 20 20 3b 20  |nitexit       ; |
000013b0  65 78 69 74 20 69 66 20  65 72 72 6f 72 20 6f 63  |exit if error oc|
000013c0  63 75 72 72 65 64 0d 05  f0 49 20 20 20 20 20 20  |curred...I      |
000013d0  20 20 43 4d 50 20 20 20  20 20 52 30 2c 23 31 20  |  CMP     R0,#1 |
000013e0  20 20 20 20 20 20 20 20  20 3b 20 65 78 69 74 20  |         ; exit |
000013f0  69 66 20 6e 6f 74 20 61  20 66 69 6c 65 2c 20 6f  |if not a file, o|
00001400  72 20 64 6f 65 73 6e 27  74 20 65 78 69 73 74 0d  |r doesn't exist.|
00001410  05 fa 3e 20 20 20 20 20  20 20 20 43 4d 50 45 51  |..>        CMPEQ|
00001420  20 20 20 52 34 2c 23 34  20 20 20 20 20 20 20 20  |   R4,#4        |
00001430  20 20 3b 20 65 78 69 74  20 69 66 20 66 69 6c 65  |  ; exit if file|
00001440  20 77 72 6f 6e 67 20 6c  65 6e 67 74 68 0d 06 04  | wrong length...|
00001450  1c 20 20 20 20 20 20 20  20 42 4e 45 20 20 20 20  |.        BNE    |
00001460  20 69 6e 69 74 65 78 69  74 0d 06 0e 1a 20 20 20  | initexit....   |
00001470  20 20 20 20 20 4d 4f 56  20 20 20 20 20 52 30 2c  |     MOV     R0,|
00001480  23 31 36 0d 06 18 1c 20  20 20 20 20 20 20 20 4c  |#16....        L|
00001490  44 52 20 20 20 20 20 52  32 2c 5b 52 31 32 5d 0d  |DR     R2,[R12].|
000014a0  06 22 26 20 20 20 20 20  20 20 20 41 44 44 20 20  |."&        ADD  |
000014b0  20 20 20 52 32 2c 52 32  2c 23 6d 6f 64 75 6c 65  |   R2,R2,#module|
000014c0  66 6c 61 67 73 0d 06 2c  19 20 20 20 20 20 20 20  |flags..,.       |
000014d0  20 4d 4f 56 20 20 20 20  20 52 33 2c 23 30 0d 06  | MOV     R3,#0..|
000014e0  36 1e 20 20 20 20 20 20  20 20 53 57 49 20 20 20  |6.        SWI   |
000014f0  20 20 22 58 4f 53 5f 46  69 6c 65 22 0d 06 40 1c  |  "XOS_File"..@.|
00001500  20 20 20 20 20 20 20 20  42 20 20 20 20 20 20 20  |        B       |
00001510  69 6e 69 74 65 78 69 74  0d 06 4a 04 0d 06 54 0d  |initexit..J...T.|
00001520  2e 70 61 74 68 6e 61 6d  65 0d 06 5e 28 20 20 20  |.pathname..^(   |
00001530  20 20 20 20 20 45 51 55  53 20 20 20 20 22 54 61  |     EQUS    "Ta|
00001540  73 6b 46 69 6c 74 65 72  3a 4f 70 74 69 6f 6e 73  |skFilter:Options|
00001550  22 0d 06 68 15 20 20 20  20 20 20 20 20 45 51 55  |"..h.        EQU|
00001560  42 20 20 20 20 30 0d 06  72 11 20 20 20 20 20 20  |B    0..r.      |
00001570  20 20 41 4c 49 47 4e 0d  06 7c 04 0d 06 86 10 2e  |  ALIGN..|......|
00001580  73 74 61 72 63 6f 6d 6d  61 6e 64 0d 06 90 20 20  |starcommand...  |
00001590  20 20 20 20 20 20 20 53  54 4d 46 44 20 20 20 28  |       STMFD   (|
000015a0  73 70 29 21 2c 7b 6c 69  6e 6b 7d 0d 06 9a 19 20  |sp)!,{link}.... |
000015b0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
000015c0  32 2c 52 30 0d 06 a4 22  20 20 20 20 20 20 20 20  |2,R0..."        |
000015d0  41 44 52 20 20 20 20 20  52 31 2c 74 69 74 6c 65  |ADR     R1,title|
000015e0  73 74 72 69 6e 67 0d 06  ae 19 20 20 20 20 20 20  |string....      |
000015f0  20 20 4d 4f 56 20 20 20  20 20 52 30 2c 23 32 0d  |  MOV     R0,#2.|
00001600  06 b8 20 20 20 20 20 20  20 20 20 53 57 49 20 20  |..         SWI  |
00001610  20 20 20 22 58 4f 53 5f  4d 6f 64 75 6c 65 22 0d  |   "XOS_Module".|
00001620  06 c2 1e 20 20 20 20 20  20 20 20 4c 44 4d 46 44  |...        LDMFD|
00001630  20 20 20 28 73 70 29 21  2c 7b 70 63 7d 0d 06 cc  |   (sp)!,{pc}...|
00001640  04 0d 06 d6 09 2e 74 61  73 6b 0d 06 e0 1a 20 20  |......task....  |
00001650  20 20 20 20 20 20 45 51  55 53 20 20 20 20 22 54  |      EQUS    "T|
00001660  41 53 4b 22 0d 06 ea 04  0d 06 f4 0e 2e 73 74 61  |ASK".........sta|
00001670  72 74 63 6f 64 65 0d 06  fe 1d 20 20 20 20 20 20  |rtcode....      |
00001680  20 20 4c 44 52 20 20 20  20 20 52 31 32 2c 5b 52  |  LDR     R12,[R|
00001690  31 32 5d 0d 07 08 26 20  20 20 20 20 20 20 20 4c  |12]...&        L|
000016a0  44 52 20 20 20 20 20 52  30 2c 5b 52 31 32 2c 23  |DR     R0,[R12,#|
000016b0  6d 79 68 61 6e 64 6c 65  5d 0d 07 12 19 20 20 20  |myhandle]....   |
000016c0  20 20 20 20 20 54 45 51  20 20 20 20 20 52 30 2c  |     TEQ     R0,|
000016d0  23 30 0d 07 1c 1b 20 20  20 20 20 20 20 20 4c 44  |#0....        LD|
000016e0  52 47 54 20 20 20 52 31  2c 74 61 73 6b 0d 07 26  |RGT   R1,task..&|
000016f0  25 20 20 20 20 20 20 20  20 53 57 49 47 54 20 20  |%        SWIGT  |
00001700  20 22 58 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  | "XWimp_CloseDow|
00001710  6e 22 0d 07 30 19 20 20  20 20 20 20 20 20 4d 4f  |n"..0.        MO|
00001720  56 47 54 20 20 20 52 30  2c 23 30 0d 07 3a 26 20  |VGT   R0,#0..:& |
00001730  20 20 20 20 20 20 20 53  54 52 47 54 20 20 20 52  |       STRGT   R|
00001740  30 2c 5b 52 31 32 2c 23  6d 79 68 61 6e 64 6c 65  |0,[R12,#myhandle|
00001750  5d 0d 07 44 04 0d 07 4e  1b 20 20 20 20 20 20 20  |]..D...N.       |
00001760  20 4d 4f 56 20 20 20 20  20 52 30 2c 23 33 30 38  | MOV     R0,#308|
00001770  0d 07 58 1c 20 20 20 20  20 20 20 20 41 44 44 20  |..X.        ADD |
00001780  20 20 20 20 52 30 2c 52  30 2c 23 32 0d 07 62 1b  |    R0,R0,#2..b.|
00001790  20 20 20 20 20 20 20 20  4c 44 52 20 20 20 20 20  |        LDR     |
000017a0  52 31 2c 74 61 73 6b 0d  07 6c 22 20 20 20 20 20  |R1,task..l"     |
000017b0  20 20 20 41 44 52 20 20  20 20 20 52 32 2c 74 69  |   ADR     R2,ti|
000017c0  74 6c 65 73 74 72 69 6e  67 0d 07 76 21 20 20 20  |tlestring..v!   |
000017d0  20 20 20 20 20 41 44 52  20 20 20 20 20 52 33 2c  |     ADR     R3,|
000017e0  6d 79 6d 65 73 73 61 67  65 73 0d 07 80 26 20 20  |mymessages...&  |
000017f0  20 20 20 20 20 20 53 57  49 20 20 20 20 20 22 58  |      SWI     "X|
00001800  57 69 6d 70 5f 49 6e 69  74 69 61 6c 69 73 65 22  |Wimp_Initialise"|
00001810  0d 07 8a 1e 20 20 20 20  20 20 20 20 53 57 49 56  |....        SWIV|
00001820  53 20 20 20 22 58 4f 53  5f 45 78 69 74 22 0d 07  |S   "XOS_Exit"..|
00001830  94 26 20 20 20 20 20 20  20 20 53 54 52 20 20 20  |.&        STR   |
00001840  20 20 52 31 2c 5b 52 31  32 2c 23 6d 79 68 61 6e  |  R1,[R12,#myhan|
00001850  64 6c 65 5d 0d 07 9e 04  0d 07 a8 21 20 20 20 20  |dle].......!    |
00001860  20 20 20 20 41 44 44 20  20 20 20 20 73 70 2c 52  |    ADD     sp,R|
00001870  31 32 2c 23 73 74 61 63  6b 0d 07 b2 04 0d 07 bc  |12,#stack.......|
00001880  40 20 20 20 20 20 20 20  20 42 4c 20 20 20 20 20  |@        BL     |
00001890  20 69 6e 73 74 61 6c 6c  61 6c 6c 20 20 20 20 20  | installall     |
000018a0  20 20 20 20 20 20 20 3a  20 f4 20 8a 8a 20 66 61  |       : . .. fa|
000018b0  6c 6c 20 74 68 72 6f 75  67 68 20 8a 8a 0d 07 c6  |ll through .....|
000018c0  04 0d 07 d0 09 2e 70 6f  6c 6c 0d 07 da 1d 20 20  |......poll....  |
000018d0  20 20 20 20 20 20 4c 44  52 20 20 20 20 20 52 30  |      LDR     R0|
000018e0  2c 6d 79 6d 61 73 6b 0d  07 e4 25 20 20 20 20 20  |,mymask...%     |
000018f0  20 20 20 41 44 44 20 20  20 20 20 52 31 2c 52 31  |   ADD     R1,R1|
00001900  32 2c 23 70 6f 6c 6c 62  6c 6f 63 6b 0d 07 ee 20  |2,#pollblock... |
00001910  20 20 20 20 20 20 20 20  53 57 49 20 20 20 20 20  |        SWI     |
00001920  22 58 57 69 6d 70 5f 50  6f 6c 6c 22 0d 07 f8 1a  |"XWimp_Poll"....|
00001930  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
00001940  52 30 2c 23 31 37 0d 08  02 1a 20 20 20 20 20 20  |R0,#17....      |
00001950  20 20 43 4d 50 4e 45 20  20 20 52 30 2c 23 31 38  |  CMPNE   R0,#18|
00001960  0d 08 0c 18 20 20 20 20  20 20 20 20 42 4e 45 20  |....        BNE |
00001970  20 20 20 20 70 6f 6c 6c  0d 08 16 1f 20 20 20 20  |    poll....    |
00001980  20 20 20 20 4c 44 52 20  20 20 20 20 52 30 2c 5b  |    LDR     R0,[|
00001990  52 31 2c 23 31 36 5d 0d  08 20 2d 20 20 20 20 20  |R1,#16].. -     |
000019a0  20 20 20 4c 44 52 20 20  20 20 20 52 32 2c 6d 65  |   LDR     R2,me|
000019b0  73 73 61 67 65 5f 74 61  73 6b 69 6e 69 74 69 61  |ssage_taskinitia|
000019c0  6c 69 73 65 0d 08 2a 19  20 20 20 20 20 20 20 20  |lise..*.        |
000019d0  43 4d 50 20 20 20 20 20  52 30 2c 52 32 0d 08 34  |CMP     R0,R2..4|
000019e0  22 20 20 20 20 20 20 20  20 42 45 51 20 20 20 20  |"        BEQ    |
000019f0  20 74 61 73 6b 69 6e 69  74 69 61 6c 69 73 65 0d  | taskinitialise.|
00001a00  08 3e 2c 20 20 20 20 20  20 20 20 4c 44 52 20 20  |.>,        LDR  |
00001a10  20 20 20 52 32 2c 6d 65  73 73 61 67 65 5f 74 61  |   R2,message_ta|
00001a20  73 6b 63 6c 6f 73 65 64  6f 77 6e 0d 08 48 19 20  |skclosedown..H. |
00001a30  20 20 20 20 20 20 20 43  4d 50 20 20 20 20 20 52  |       CMP     R|
00001a40  30 2c 52 32 0d 08 52 21  20 20 20 20 20 20 20 20  |0,R2..R!        |
00001a50  42 45 51 20 20 20 20 20  74 61 73 6b 63 6c 6f 73  |BEQ     taskclos|
00001a60  65 64 6f 77 6e 0d 08 5c  19 20 20 20 20 20 20 20  |edown..\.       |
00001a70  20 43 4d 50 20 20 20 20  20 52 30 2c 23 30 0d 08  | CMP     R0,#0..|
00001a80  66 18 20 20 20 20 20 20  20 20 42 4e 45 20 20 20  |f.        BNE   |
00001a90  20 20 70 6f 6c 6c 0d 08  70 22 20 20 20 20 20 20  |  poll..p"      |
00001aa0  20 20 42 4c 20 20 20 20  20 20 74 6d 66 69 6c 74  |  BL      tmfilt|
00001ab0  65 72 72 65 6d 6f 76 65  0d 08 7a 22 20 20 20 20  |erremove..z"    |
00001ac0  20 20 20 20 42 4c 20 20  20 20 20 20 70 61 66 69  |    BL      pafi|
00001ad0  6c 74 65 72 72 65 6d 6f  76 65 0d 08 84 22 20 20  |lterremove..."  |
00001ae0  20 20 20 20 20 20 42 4c  20 20 20 20 20 20 66 61  |      BL      fa|
00001af0  66 69 6c 74 65 72 72 65  6d 6f 76 65 0d 08 8e 26  |filterremove...&|
00001b00  20 20 20 20 20 20 20 20  4c 44 52 20 20 20 20 20  |        LDR     |
00001b10  52 30 2c 5b 52 31 32 2c  23 6d 79 68 61 6e 64 6c  |R0,[R12,#myhandl|
00001b20  65 5d 0d 08 98 1b 20 20  20 20 20 20 20 20 41 44  |e]....        AD|
00001b30  52 20 20 20 20 20 52 31  2c 74 61 73 6b 0d 08 a2  |R     R1,task...|
00001b40  25 20 20 20 20 20 20 20  20 53 57 49 20 20 20 20  |%        SWI    |
00001b50  20 22 58 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  | "XWimp_CloseDow|
00001b60  6e 22 0d 08 ac 19 20 20  20 20 20 20 20 20 4d 4f  |n"....        MO|
00001b70  56 20 20 20 20 20 52 31  2c 23 30 0d 08 b6 26 20  |V     R1,#0...& |
00001b80  20 20 20 20 20 20 20 53  54 52 20 20 20 20 20 52  |       STR     R|
00001b90  31 2c 5b 52 31 32 2c 23  6d 79 68 61 6e 64 6c 65  |1,[R12,#myhandle|
00001ba0  5d 0d 08 c0 1e 20 20 20  20 20 20 20 20 53 57 49  |]....        SWI|
00001bb0  20 20 20 20 20 22 58 4f  53 5f 45 78 69 74 22 0d  |     "XOS_Exit".|
00001bc0  08 ca 18 20 20 20 20 20  20 20 20 42 20 20 20 20  |...        B    |
00001bd0  20 20 20 70 6f 6c 6c 0d  08 d4 04 0d 08 de 0f 2e  |   poll.........|
00001be0  6d 79 6d 65 73 73 61 67  65 73 0d 08 e8 1b 2e 6d  |mymessages.....m|
00001bf0  65 73 73 61 67 65 5f 74  61 73 6b 69 6e 69 74 69  |essage_taskiniti|
00001c00  61 6c 69 73 65 0d 08 f2  1a 20 20 20 20 20 20 20  |alise....       |
00001c10  20 45 51 55 44 20 20 20  20 26 34 30 30 43 32 0d  | EQUD    &400C2.|
00001c20  08 fc 1a 2e 6d 65 73 73  61 67 65 5f 74 61 73 6b  |....message_task|
00001c30  63 6c 6f 73 65 64 6f 77  6e 0d 09 06 1a 20 20 20  |closedown....   |
00001c40  20 20 20 20 20 45 51 55  44 20 20 20 20 26 34 30  |     EQUD    &40|
00001c50  30 43 33 0d 09 10 15 20  20 20 20 20 20 20 20 45  |0C3....        E|
00001c60  51 55 44 20 20 20 20 30  0d 09 1a 04 0d 09 24 0f  |QUD    0......$.|
00001c70  2e 69 6e 73 74 61 6c 6c  61 6c 6c 0d 09 2e 23 20  |.installall...# |
00001c80  20 20 20 20 20 20 20 53  54 4d 46 44 20 20 20 28  |       STMFD   (|
00001c90  73 70 29 21 2c 7b 52 31  2c 6c 69 6e 6b 7d 0d 09  |sp)!,{R1,link}..|
00001ca0  38 1d 20 20 20 20 20 20  20 20 41 44 52 20 20 20  |8.        ADR   |
00001cb0  20 20 52 34 2c 74 6d 6e  61 6d 65 0d 09 42 21 20  |  R4,tmname..B! |
00001cc0  20 20 20 20 20 20 20 42  4c 20 20 20 20 20 20 67  |       BL      g|
00001cd0  65 74 74 61 73 6b 68 61  6e 64 6c 65 0d 09 4c 19  |ettaskhandle..L.|
00001ce0  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
00001cf0  52 33 2c 23 30 0d 09 56  23 20 20 20 20 20 20 20  |R3,#0..V#       |
00001d00  20 42 4c 4e 45 20 20 20  20 74 6d 66 69 6c 74 65  | BLNE    tmfilte|
00001d10  72 69 6e 73 74 61 6c 6c  0d 09 60 1d 20 20 20 20  |rinstall..`.    |
00001d20  20 20 20 20 41 44 52 20  20 20 20 20 52 34 2c 70  |    ADR     R4,p|
00001d30  61 6e 61 6d 65 0d 09 6a  21 20 20 20 20 20 20 20  |aname..j!       |
00001d40  20 42 4c 20 20 20 20 20  20 67 65 74 74 61 73 6b  | BL      gettask|
00001d50  68 61 6e 64 6c 65 0d 09  74 19 20 20 20 20 20 20  |handle..t.      |
00001d60  20 20 43 4d 50 20 20 20  20 20 52 33 2c 23 30 0d  |  CMP     R3,#0.|
00001d70  09 7e 23 20 20 20 20 20  20 20 20 42 4c 4e 45 20  |.~#        BLNE |
00001d80  20 20 20 70 61 66 69 6c  74 65 72 69 6e 73 74 61  |   pafilterinsta|
00001d90  6c 6c 0d 09 88 21 20 20  20 20 20 20 20 20 4c 44  |ll...!        LD|
00001da0  4d 46 44 20 20 20 28 73  70 29 21 2c 7b 52 31 2c  |MFD   (sp)!,{R1,|
00001db0  70 63 7d 0d 09 92 04 0d  09 9c 13 2e 74 61 73 6b  |pc}.........task|
00001dc0  69 6e 69 74 69 61 6c 69  73 65 0d 09 a6 1d 20 20  |initialise....  |
00001dd0  20 20 20 20 20 20 41 44  44 20 20 20 20 20 52 30  |      ADD     R0|
00001de0  2c 52 31 2c 23 32 38 0d  09 b0 1d 20 20 20 20 20  |,R1,#28....     |
00001df0  20 20 20 41 44 52 20 20  20 20 20 52 33 2c 74 6d  |   ADR     R3,tm|
00001e00  6e 61 6d 65 0d 09 ba 21  20 20 20 20 20 20 20 20  |name...!        |
00001e10  42 4c 20 20 20 20 20 20  73 74 72 69 6e 67 63 6f  |BL      stringco|
00001e20  6d 70 61 72 65 0d 09 c4  19 20 20 20 20 20 20 20  |mpare....       |
00001e30  20 43 4d 50 20 20 20 20  20 52 33 2c 23 31 0d 09  | CMP     R3,#1..|
00001e40  ce 1e 20 20 20 20 20 20  20 20 4c 44 52 45 51 20  |..        LDREQ |
00001e50  20 20 52 33 2c 5b 52 31  2c 23 34 5d 0d 09 d8 23  |  R3,[R1,#4]...#|
00001e60  20 20 20 20 20 20 20 20  42 4c 45 51 20 20 20 20  |        BLEQ    |
00001e70  74 6d 66 69 6c 74 65 72  69 6e 73 74 61 6c 6c 0d  |tmfilterinstall.|
00001e80  09 e2 1d 20 20 20 20 20  20 20 20 41 44 52 20 20  |...        ADR  |
00001e90  20 20 20 52 33 2c 70 61  6e 61 6d 65 0d 09 ec 21  |   R3,paname...!|
00001ea0  20 20 20 20 20 20 20 20  42 4c 20 20 20 20 20 20  |        BL      |
00001eb0  73 74 72 69 6e 67 63 6f  6d 70 61 72 65 0d 09 f6  |stringcompare...|
00001ec0  19 20 20 20 20 20 20 20  20 43 4d 50 20 20 20 20  |.        CMP    |
00001ed0  20 52 33 2c 23 31 0d 0a  00 1e 20 20 20 20 20 20  | R3,#1....      |
00001ee0  20 20 4c 44 52 45 51 20  20 20 52 33 2c 5b 52 31  |  LDREQ   R3,[R1|
00001ef0  2c 23 34 5d 0d 0a 0a 23  20 20 20 20 20 20 20 20  |,#4]...#        |
00001f00  42 4c 45 51 20 20 20 20  70 61 66 69 6c 74 65 72  |BLEQ    pafilter|
00001f10  69 6e 73 74 61 6c 6c 0d  0a 14 1d 20 20 20 20 20  |install....     |
00001f20  20 20 20 41 44 52 20 20  20 20 20 52 33 2c 66 61  |   ADR     R3,fa|
00001f30  6e 61 6d 65 0d 0a 1e 21  20 20 20 20 20 20 20 20  |name...!        |
00001f40  42 4c 20 20 20 20 20 20  73 74 72 69 6e 67 63 6f  |BL      stringco|
00001f50  6d 70 61 72 65 0d 0a 28  19 20 20 20 20 20 20 20  |mpare..(.       |
00001f60  20 43 4d 50 20 20 20 20  20 52 33 2c 23 31 0d 0a  | CMP     R3,#1..|
00001f70  32 1e 20 20 20 20 20 20  20 20 4c 44 52 45 51 20  |2.        LDREQ |
00001f80  20 20 52 33 2c 5b 52 31  2c 23 34 5d 0d 0a 3c 23  |  R3,[R1,#4]..<#|
00001f90  20 20 20 20 20 20 20 20  42 4c 45 51 20 20 20 20  |        BLEQ    |
00001fa0  66 61 66 69 6c 74 65 72  69 6e 73 74 61 6c 6c 0d  |fafilterinstall.|
00001fb0  0a 46 18 20 20 20 20 20  20 20 20 42 20 20 20 20  |.F.        B    |
00001fc0  20 20 20 70 6f 6c 6c 0d  0a 50 04 0d 0a 5a 12 2e  |   poll..P...Z..|
00001fd0  74 61 73 6b 63 6c 6f 73  65 64 6f 77 6e 0d 0a 64  |taskclosedown..d|
00001fe0  1e 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |.        LDR    |
00001ff0  20 52 30 2c 5b 52 31 2c  23 34 5d 0d 0a 6e 26 20  | R0,[R1,#4]..n& |
00002000  20 20 20 20 20 20 20 4c  44 52 20 20 20 20 20 52  |       LDR     R|
00002010  32 2c 5b 52 31 32 2c 23  74 6d 68 61 6e 64 6c 65  |2,[R12,#tmhandle|
00002020  5d 0d 0a 78 19 20 20 20  20 20 20 20 20 43 4d 50  |]..x.        CMP|
00002030  20 20 20 20 20 52 30 2c  52 32 0d 0a 82 22 20 20  |     R0,R2..."  |
00002040  20 20 20 20 20 20 42 4c  45 51 20 20 20 20 74 6d  |      BLEQ    tm|
00002050  66 69 6c 74 65 72 72 65  6d 6f 76 65 0d 0a 8c 26  |filterremove...&|
00002060  20 20 20 20 20 20 20 20  4c 44 52 20 20 20 20 20  |        LDR     |
00002070  52 32 2c 5b 52 31 32 2c  23 70 61 68 61 6e 64 6c  |R2,[R12,#pahandl|
00002080  65 5d 0d 0a 96 19 20 20  20 20 20 20 20 20 43 4d  |e]....        CM|
00002090  50 20 20 20 20 20 52 30  2c 52 32 0d 0a a0 22 20  |P     R0,R2..." |
000020a0  20 20 20 20 20 20 20 42  4c 45 51 20 20 20 20 70  |       BLEQ    p|
000020b0  61 66 69 6c 74 65 72 72  65 6d 6f 76 65 0d 0a aa  |afilterremove...|
000020c0  26 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |&        LDR    |
000020d0  20 52 32 2c 5b 52 31 32  2c 23 66 61 68 61 6e 64  | R2,[R12,#fahand|
000020e0  6c 65 5d 0d 0a b4 19 20  20 20 20 20 20 20 20 43  |le]....        C|
000020f0  4d 50 20 20 20 20 20 52  30 2c 52 32 0d 0a be 22  |MP     R0,R2..."|
00002100  20 20 20 20 20 20 20 20  42 4c 45 51 20 20 20 20  |        BLEQ    |
00002110  66 61 66 69 6c 74 65 72  72 65 6d 6f 76 65 0d 0a  |fafilterremove..|
00002120  c8 18 20 20 20 20 20 20  20 20 42 20 20 20 20 20  |..        B     |
00002130  20 20 70 6f 6c 6c 0d 0a  d2 04 0d 0a dc 12 2e 73  |  poll.........s|
00002140  74 72 69 6e 67 63 6f 6d  70 61 72 65 0d 0a e6 23  |tringcompare...#|
00002150  20 20 20 20 20 20 20 20  53 54 4d 46 44 20 20 20  |        STMFD   |
00002160  28 73 70 29 21 2c 7b 52  30 2c 6c 69 6e 6b 7d 0d  |(sp)!,{R0,link}.|
00002170  0a f0 49 2e 63 6f 6d 70  61 72 65 6c 6f 6f 70 20  |..I.compareloop |
00002180  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002190  20 20 20 20 20 20 3b 20  63 6f 6d 70 61 72 65 73  |      ; compares|
000021a0  20 73 74 72 69 6e 67 20  70 6f 69 6e 74 65 64 20  | string pointed |
000021b0  74 6f 20 62 79 20 52 30  0d 0a fa 43 20 20 20 20  |to by R0...C    |
000021c0  20 20 20 20 4c 44 52 42  20 20 20 20 52 37 2c 5b  |    LDRB    R7,[|
000021d0  52 30 5d 2c 23 31 20 20  20 20 20 20 20 20 20 3b  |R0],#1         ;|
000021e0  20 77 69 74 68 20 74 68  61 74 20 70 6f 69 6e 74  | with that point|
000021f0  65 64 20 74 6f 20 62 79  20 52 33 0d 0b 04 42 20  |ed to by R3...B |
00002200  20 20 20 20 20 20 20 4c  44 52 42 20 20 20 20 52  |       LDRB    R|
00002210  35 2c 5b 52 33 5d 2c 23  31 20 20 20 20 20 20 20  |5,[R3],#1       |
00002220  20 20 3b 20 72 65 74 75  72 6e 69 6e 67 20 31 20  |  ; returning 1 |
00002230  69 6e 20 52 33 20 69 66  20 73 61 6d 65 0d 0b 0e  |in R3 if same...|
00002240  19 20 20 20 20 20 20 20  20 43 4d 50 20 20 20 20  |.        CMP    |
00002250  20 52 37 2c 52 35 0d 0b  18 19 20 20 20 20 20 20  | R7,R5....      |
00002260  20 20 4d 4f 56 4e 45 20  20 20 52 33 2c 23 30 0d  |  MOVNE   R3,#0.|
00002270  0b 22 21 20 20 20 20 20  20 20 20 4c 44 4d 4e 45  |."!        LDMNE|
00002280  46 44 20 28 73 70 29 21  2c 7b 52 30 2c 70 63 7d  |FD (sp)!,{R0,pc}|
00002290  0d 0b 2c 19 20 20 20 20  20 20 20 20 43 4d 50 20  |..,.        CMP |
000022a0  20 20 20 20 52 35 2c 23  30 0d 0b 36 1f 20 20 20  |    R5,#0..6.   |
000022b0  20 20 20 20 20 42 4e 45  20 20 20 20 20 63 6f 6d  |     BNE     com|
000022c0  70 61 72 65 6c 6f 6f 70  0d 0b 40 19 20 20 20 20  |pareloop..@.    |
000022d0  20 20 20 20 4d 4f 56 20  20 20 20 20 52 33 2c 23  |    MOV     R3,#|
000022e0  31 0d 0b 4a 21 20 20 20  20 20 20 20 20 4c 44 4d  |1..J!        LDM|
000022f0  46 44 20 20 20 28 73 70  29 21 2c 7b 52 30 2c 70  |FD   (sp)!,{R0,p|
00002300  63 7d 0d 0b 54 04 0d 0b  5e 4c 2e 74 6d 66 69 6c  |c}..T...^L.tmfil|
00002310  74 65 72 69 6e 73 74 61  6c 6c 20 20 20 20 20 20  |terinstall      |
00002320  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002330  20 20 20 20 20 20 20 3b  20 70 61 73 73 20 74 6d  |       ; pass tm|
00002340  20 74 61 73 6b 20 68 61  6e 64 6c 65 20 69 6e 20  | task handle in |
00002350  52 33 0d 0b 68 23 20 20  20 20 20 20 20 20 53 54  |R3..h#        ST|
00002360  4d 46 44 20 20 20 28 73  70 29 21 2c 7b 52 30 2c  |MFD   (sp)!,{R0,|
00002370  6c 69 6e 6b 7d 0d 0b 72  29 20 20 20 20 20 20 20  |link}..r)       |
00002380  20 4c 44 52 20 20 20 20  20 52 31 2c 5b 52 31 32  | LDR     R1,[R12|
00002390  2c 23 6d 6f 64 75 6c 65  66 6c 61 67 73 5d 0d 0b  |,#moduleflags]..|
000023a0  7c 29 20 20 20 20 20 20  20 20 54 53 54 20 20 20  ||)        TST   |
000023b0  20 20 52 31 2c 23 74 6d  66 69 6c 74 65 72 69 6e  |  R1,#tmfilterin|
000023c0  73 74 61 6c 6c 65 64 0d  0b 86 51 20 20 20 20 20  |stalled...Q     |
000023d0  20 20 20 4c 44 4d 4e 45  46 44 20 28 73 70 29 21  |   LDMNEFD (sp)!|
000023e0  2c 7b 52 30 2c 70 63 7d  20 20 20 20 20 20 20 20  |,{R0,pc}        |
000023f0  20 20 20 20 20 20 20 3b  20 69 66 20 61 6c 72 65  |       ; if alre|
00002400  61 64 79 20 69 6e 73 74  61 6c 6c 65 64 2c 20 6a  |ady installed, j|
00002410  75 73 74 20 65 78 69 74  0d 0b 90 20 20 20 20 20  |ust exit...     |
00002420  20 20 20 20 54 53 54 20  20 20 20 20 52 31 2c 23  |    TST     R1,#|
00002430  73 65 74 63 73 64 6f 6e  0d 0b 9a 47 20 20 20 20  |setcsdon...G    |
00002440  20 20 20 20 4c 44 4d 45  51 46 44 20 28 73 70 29  |    LDMEQFD (sp)|
00002450  21 2c 7b 52 30 2c 70 63  7d 20 20 20 20 20 20 20  |!,{R0,pc}       |
00002460  20 20 20 20 20 20 20 20  3b 20 69 66 20 6e 6f 74  |        ; if not|
00002470  20 73 65 6c 65 63 74 65  64 2c 20 65 78 69 74 0d  | selected, exit.|
00002480  0b a4 23 20 20 20 20 20  20 20 20 41 44 52 20 20  |..#        ADR  |
00002490  20 20 20 52 30 2c 74 6d  66 69 6c 74 65 72 6e 61  |   R0,tmfilterna|
000024a0  6d 65 0d 0b ae 23 20 20  20 20 20 20 20 20 41 44  |me...#        AD|
000024b0  52 20 20 20 20 20 52 31  2c 74 6d 66 69 6c 74 65  |R     R1,tmfilte|
000024c0  72 63 6f 64 65 0d 0b b8  50 20 20 20 20 20 20 20  |rcode...P       |
000024d0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 31 32 20  | MOV     R2,R12 |
000024e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000024f0  20 20 20 20 20 20 3b 20  6e 6f 74 65 20 70 61 73  |      ; note pas|
00002500  73 65 73 20 77 6f 72 6b  73 70 61 63 65 20 70 6f  |ses workspace po|
00002510  69 6e 74 65 72 0d 0b c2  4e 20 20 20 20 20 20 20  |inter...N       |
00002520  20 4c 44 52 20 20 20 20  20 52 34 2c 74 6d 66 69  | LDR     R4,tmfi|
00002530  6c 74 65 72 6d 61 73 6b  20 20 20 20 20 20 20 20  |ltermask        |
00002540  20 20 20 20 20 20 3b 20  6e 6f 74 20 70 72 69 76  |      ; not priv|
00002550  61 74 65 20 77 6f 72 64  20 70 6f 69 6e 74 65 72  |ate word pointer|
00002560  20 61 73 0d 0b cc 39 20  20 20 20 20 20 20 20 53  | as...9        S|
00002570  57 49 20 20 20 20 20 22  58 46 69 6c 74 65 72 5f  |WI     "XFilter_|
00002580  52 65 67 69 73 74 65 72  50 6f 73 74 46 69 6c 74  |RegisterPostFilt|
00002590  65 72 22 20 3b 20 62 65  66 6f 72 65 0d 0b d6 26  |er" ; before...&|
000025a0  20 20 20 20 20 20 20 20  53 54 52 56 43 20 20 20  |        STRVC   |
000025b0  52 33 2c 5b 52 31 32 2c  23 74 6d 68 61 6e 64 6c  |R3,[R12,#tmhandl|
000025c0  65 5d 0d 0b e0 29 20 20  20 20 20 20 20 20 4c 44  |e]...)        LD|
000025d0  52 56 43 20 20 20 52 31  2c 5b 52 31 32 2c 23 6d  |RVC   R1,[R12,#m|
000025e0  6f 64 75 6c 65 66 6c 61  67 73 5d 0d 0b ea 2b 20  |oduleflags]...+ |
000025f0  20 20 20 20 20 20 20 84  52 56 43 20 20 20 52 31  |       .RVC   R1|
00002600  2c 52 31 2c 23 74 6d 66  69 6c 74 65 72 69 6e 73  |,R1,#tmfilterins|
00002610  74 61 6c 6c 65 64 0d 0b  f4 29 20 20 20 20 20 20  |talled...)      |
00002620  20 20 53 54 52 56 43 20  20 20 52 31 2c 5b 52 31  |  STRVC   R1,[R1|
00002630  32 2c 23 6d 6f 64 75 6c  65 66 6c 61 67 73 5d 0d  |2,#moduleflags].|
00002640  0b fe 21 20 20 20 20 20  20 20 20 4c 44 4d 46 44  |..!        LDMFD|
00002650  20 20 20 28 73 70 29 21  2c 7b 52 30 2c 70 63 7d  |   (sp)!,{R0,pc}|
00002660  0d 0c 08 04 0d 0c 12 13  2e 74 6d 66 69 6c 74 65  |.........tmfilte|
00002670  72 72 65 6d 6f 76 65 0d  0c 1c 23 20 20 20 20 20  |rremove...#     |
00002680  20 20 20 53 54 4d 46 44  20 20 20 28 73 70 29 21  |   STMFD   (sp)!|
00002690  2c 7b 52 30 2c 6c 69 6e  6b 7d 0d 0c 26 29 20 20  |,{R0,link}..&)  |
000026a0  20 20 20 20 20 20 4c 44  52 20 20 20 20 20 52 31  |      LDR     R1|
000026b0  2c 5b 52 31 32 2c 23 6d  6f 64 75 6c 65 66 6c 61  |,[R12,#modulefla|
000026c0  67 73 5d 0d 0c 30 29 20  20 20 20 20 20 20 20 54  |gs]..0)        T|
000026d0  53 54 20 20 20 20 20 52  31 2c 23 74 6d 66 69 6c  |ST     R1,#tmfil|
000026e0  74 65 72 69 6e 73 74 61  6c 6c 65 64 0d 0c 3a 4d  |terinstalled..:M|
000026f0  20 20 20 20 20 20 20 20  4c 44 4d 45 51 46 44 20  |        LDMEQFD |
00002700  28 73 70 29 21 2c 7b 52  30 2c 70 63 7d 20 20 20  |(sp)!,{R0,pc}   |
00002710  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 69 66  |            ; if|
00002720  20 6e 6f 74 20 69 6e 73  74 61 6c 6c 65 64 2c 20  | not installed, |
00002730  6a 75 73 74 20 65 78 69  74 0d 0c 44 23 20 20 20  |just exit..D#   |
00002740  20 20 20 20 20 41 44 52  20 20 20 20 20 52 30 2c  |     ADR     R0,|
00002750  74 6d 66 69 6c 74 65 72  6e 61 6d 65 0d 0c 4e 23  |tmfiltername..N#|
00002760  20 20 20 20 20 20 20 20  41 44 52 20 20 20 20 20  |        ADR     |
00002770  52 31 2c 74 6d 66 69 6c  74 65 72 63 6f 64 65 0d  |R1,tmfiltercode.|
00002780  0c 58 1a 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |.X.        MOV  |
00002790  20 20 20 52 32 2c 52 31  32 0d 0c 62 26 20 20 20  |   R2,R12..b&   |
000027a0  20 20 20 20 20 4c 44 52  20 20 20 20 20 52 33 2c  |     LDR     R3,|
000027b0  5b 52 31 32 2c 23 74 6d  68 61 6e 64 6c 65 5d 0d  |[R12,#tmhandle].|
000027c0  0c 6c 23 20 20 20 20 20  20 20 20 4c 44 52 20 20  |.l#        LDR  |
000027d0  20 20 20 52 34 2c 74 6d  66 69 6c 74 65 72 6d 61  |   R4,tmfilterma|
000027e0  73 6b 0d 0c 76 32 20 20  20 20 20 20 20 20 53 57  |sk..v2        SW|
000027f0  49 20 20 20 20 20 22 58  46 69 6c 74 65 72 5f 44  |I     "XFilter_D|
00002800  65 52 65 67 69 73 74 65  72 50 6f 73 74 46 69 6c  |eRegisterPostFil|
00002810  74 65 72 22 0d 0c 80 29  20 20 20 20 20 20 20 20  |ter"...)        |
00002820  4c 44 52 56 43 20 20 20  52 31 2c 5b 52 31 32 2c  |LDRVC   R1,[R12,|
00002830  23 6d 6f 64 75 6c 65 66  6c 61 67 73 5d 0d 0c 8a  |#moduleflags]...|
00002840  2c 20 20 20 20 20 20 20  20 42 49 43 56 43 20 20  |,        BICVC  |
00002850  20 52 31 2c 52 31 2c 23  74 6d 66 69 6c 74 65 72  | R1,R1,#tmfilter|
00002860  69 6e 73 74 61 6c 6c 65  64 0d 0c 94 29 20 20 20  |installed...)   |
00002870  20 20 20 20 20 53 54 52  56 43 20 20 20 52 31 2c  |     STRVC   R1,|
00002880  5b 52 31 32 2c 23 6d 6f  64 75 6c 65 66 6c 61 67  |[R12,#moduleflag|
00002890  73 5d 0d 0c 9e 21 20 20  20 20 20 20 20 20 4c 44  |s]...!        LD|
000028a0  4d 46 44 20 20 20 28 73  70 29 21 2c 7b 52 30 2c  |MFD   (sp)!,{R0,|
000028b0  70 63 7d 0d 0c a8 04 0d  0c b2 11 2e 74 6d 66 69  |pc}.........tmfi|
000028c0  6c 74 65 72 6e 61 6d 65  0d 0c bc 1c 20 20 20 20  |ltername....    |
000028d0  20 20 20 20 45 51 55 53  20 20 20 20 22 53 65 74  |    EQUS    "Set|
000028e0  43 53 44 22 0d 0c c6 15  20 20 20 20 20 20 20 20  |CSD"....        |
000028f0  45 51 55 42 20 20 20 20  30 0d 0c d0 11 20 20 20  |EQUB    0....   |
00002900  20 20 20 20 20 41 4c 49  47 4e 0d 0c da 04 0d 0c  |     ALIGN......|
00002910  e4 4c 2e 70 61 66 69 6c  74 65 72 69 6e 73 74 61  |.L.pafilterinsta|
00002920  6c 6c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ll              |
00002930  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00002940  20 70 61 73 73 20 70 61  20 74 61 73 6b 20 68 61  | pass pa task ha|
00002950  6e 64 6c 65 20 69 6e 20  52 33 0d 0c ee 23 20 20  |ndle in R3...#  |
00002960  20 20 20 20 20 20 53 54  4d 46 44 20 20 20 28 73  |      STMFD   (s|
00002970  70 29 21 2c 7b 52 30 2c  6c 69 6e 6b 7d 0d 0c f8  |p)!,{R0,link}...|
00002980  29 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |)        LDR    |
00002990  20 52 31 2c 5b 52 31 32  2c 23 6d 6f 64 75 6c 65  | R1,[R12,#module|
000029a0  66 6c 61 67 73 5d 0d 0d  02 29 20 20 20 20 20 20  |flags]...)      |
000029b0  20 20 54 53 54 20 20 20  20 20 52 31 2c 23 70 61  |  TST     R1,#pa|
000029c0  66 69 6c 74 65 72 69 6e  73 74 61 6c 6c 65 64 0d  |filterinstalled.|
000029d0  0d 0c 51 20 20 20 20 20  20 20 20 4c 44 4d 4e 45  |..Q        LDMNE|
000029e0  46 44 20 28 73 70 29 21  2c 7b 52 30 2c 70 63 7d  |FD (sp)!,{R0,pc}|
000029f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00002a00  20 69 66 20 61 6c 72 65  61 64 79 20 69 6e 73 74  | if already inst|
00002a10  61 6c 6c 65 64 2c 20 6a  75 73 74 20 65 78 69 74  |alled, just exit|
00002a20  0d 0d 16 21 20 20 20 20  20 20 20 20 54 53 54 20  |...!        TST |
00002a30  20 20 20 20 52 31 2c 23  69 63 6f 6e 73 70 72 6f  |    R1,#iconspro|
00002a40  6e 0d 0d 20 47 20 20 20  20 20 20 20 20 4c 44 4d  |n.. G        LDM|
00002a50  45 51 46 44 20 28 73 70  29 21 2c 7b 52 30 2c 70  |EQFD (sp)!,{R0,p|
00002a60  63 7d 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |c}              |
00002a70  20 3b 20 69 66 20 6e 6f  74 20 73 65 6c 65 63 74  | ; if not select|
00002a80  65 64 2c 20 65 78 69 74  0d 0d 2a 23 20 20 20 20  |ed, exit..*#    |
00002a90  20 20 20 20 41 44 52 20  20 20 20 20 52 30 2c 70  |    ADR     R0,p|
00002aa0  61 66 69 6c 74 65 72 6e  61 6d 65 0d 0d 34 23 20  |afiltername..4# |
00002ab0  20 20 20 20 20 20 20 41  44 52 20 20 20 20 20 52  |       ADR     R|
00002ac0  31 2c 70 61 66 69 6c 74  65 72 63 6f 64 65 0d 0d  |1,pafiltercode..|
00002ad0  3e 50 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |>P        MOV   |
00002ae0  20 20 52 32 2c 52 31 32  20 20 20 20 20 20 20 20  |  R2,R12        |
00002af0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00002b00  20 6e 6f 74 65 20 70 61  73 73 65 73 20 77 6f 72  | note passes wor|
00002b10  6b 73 70 61 63 65 20 70  6f 69 6e 74 65 72 0d 0d  |kspace pointer..|
00002b20  48 4e 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |HN        LDR   |
00002b30  20 20 52 34 2c 70 61 66  69 6c 74 65 72 6d 61 73  |  R4,pafiltermas|
00002b40  6b 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |k              ;|
00002b50  20 6e 6f 74 20 70 72 69  76 61 74 65 20 77 6f 72  | not private wor|
00002b60  64 20 70 6f 69 6e 74 65  72 20 61 73 0d 0d 52 39  |d pointer as..R9|
00002b70  20 20 20 20 20 20 20 20  53 57 49 20 20 20 20 20  |        SWI     |
00002b80  22 58 46 69 6c 74 65 72  5f 52 65 67 69 73 74 65  |"XFilter_Registe|
00002b90  72 50 6f 73 74 46 69 6c  74 65 72 22 20 3b 20 62  |rPostFilter" ; b|
00002ba0  65 66 6f 72 65 0d 0d 5c  26 20 20 20 20 20 20 20  |efore..\&       |
00002bb0  20 53 54 52 56 43 20 20  20 52 33 2c 5b 52 31 32  | STRVC   R3,[R12|
00002bc0  2c 23 70 61 68 61 6e 64  6c 65 5d 0d 0d 66 29 20  |,#pahandle]..f) |
00002bd0  20 20 20 20 20 20 20 4c  44 52 56 43 20 20 20 52  |       LDRVC   R|
00002be0  31 2c 5b 52 31 32 2c 23  6d 6f 64 75 6c 65 66 6c  |1,[R12,#modulefl|
00002bf0  61 67 73 5d 0d 0d 70 2b  20 20 20 20 20 20 20 20  |ags]..p+        |
00002c00  84 52 56 43 20 20 20 52  31 2c 52 31 2c 23 70 61  |.RVC   R1,R1,#pa|
00002c10  66 69 6c 74 65 72 69 6e  73 74 61 6c 6c 65 64 0d  |filterinstalled.|
00002c20  0d 7a 29 20 20 20 20 20  20 20 20 53 54 52 56 43  |.z)        STRVC|
00002c30  20 20 20 52 31 2c 5b 52  31 32 2c 23 6d 6f 64 75  |   R1,[R12,#modu|
00002c40  6c 65 66 6c 61 67 73 5d  0d 0d 84 21 20 20 20 20  |leflags]...!    |
00002c50  20 20 20 20 4c 44 4d 46  44 20 20 20 28 73 70 29  |    LDMFD   (sp)|
00002c60  21 2c 7b 52 30 2c 70 63  7d 0d 0d 8e 04 0d 0d 98  |!,{R0,pc}.......|
00002c70  13 2e 70 61 66 69 6c 74  65 72 72 65 6d 6f 76 65  |..pafilterremove|
00002c80  0d 0d a2 23 20 20 20 20  20 20 20 20 53 54 4d 46  |...#        STMF|
00002c90  44 20 20 20 28 73 70 29  21 2c 7b 52 30 2c 6c 69  |D   (sp)!,{R0,li|
00002ca0  6e 6b 7d 0d 0d ac 29 20  20 20 20 20 20 20 20 4c  |nk}...)        L|
00002cb0  44 52 20 20 20 20 20 52  31 2c 5b 52 31 32 2c 23  |DR     R1,[R12,#|
00002cc0  6d 6f 64 75 6c 65 66 6c  61 67 73 5d 0d 0d b6 29  |moduleflags]...)|
00002cd0  20 20 20 20 20 20 20 20  54 53 54 20 20 20 20 20  |        TST     |
00002ce0  52 31 2c 23 70 61 66 69  6c 74 65 72 69 6e 73 74  |R1,#pafilterinst|
00002cf0  61 6c 6c 65 64 0d 0d c0  4d 20 20 20 20 20 20 20  |alled...M       |
00002d00  20 4c 44 4d 45 51 46 44  20 28 73 70 29 21 2c 7b  | LDMEQFD (sp)!,{|
00002d10  52 30 2c 70 63 7d 20 20  20 20 20 20 20 20 20 20  |R0,pc}          |
00002d20  20 20 20 20 20 3b 20 69  66 20 6e 6f 74 20 69 6e  |     ; if not in|
00002d30  73 74 61 6c 6c 65 64 2c  20 6a 75 73 74 20 65 78  |stalled, just ex|
00002d40  69 74 0d 0d ca 23 20 20  20 20 20 20 20 20 41 44  |it...#        AD|
00002d50  52 20 20 20 20 20 52 30  2c 70 61 66 69 6c 74 65  |R     R0,pafilte|
00002d60  72 6e 61 6d 65 0d 0d d4  23 20 20 20 20 20 20 20  |rname...#       |
00002d70  20 41 44 52 20 20 20 20  20 52 31 2c 70 61 66 69  | ADR     R1,pafi|
00002d80  6c 74 65 72 63 6f 64 65  0d 0d de 1a 20 20 20 20  |ltercode....    |
00002d90  20 20 20 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |    MOV     R2,R|
00002da0  31 32 0d 0d e8 26 20 20  20 20 20 20 20 20 4c 44  |12...&        LD|
00002db0  52 20 20 20 20 20 52 33  2c 5b 52 31 32 2c 23 70  |R     R3,[R12,#p|
00002dc0  61 68 61 6e 64 6c 65 5d  0d 0d f2 23 20 20 20 20  |ahandle]...#    |
00002dd0  20 20 20 20 4c 44 52 20  20 20 20 20 52 34 2c 70  |    LDR     R4,p|
00002de0  61 66 69 6c 74 65 72 6d  61 73 6b 0d 0d fc 32 20  |afiltermask...2 |
00002df0  20 20 20 20 20 20 20 53  57 49 20 20 20 20 20 22  |       SWI     "|
00002e00  58 46 69 6c 74 65 72 5f  44 65 52 65 67 69 73 74  |XFilter_DeRegist|
00002e10  65 72 50 6f 73 74 46 69  6c 74 65 72 22 0d 0e 06  |erPostFilter"...|
00002e20  29 20 20 20 20 20 20 20  20 4c 44 52 56 43 20 20  |)        LDRVC  |
00002e30  20 52 31 2c 5b 52 31 32  2c 23 6d 6f 64 75 6c 65  | R1,[R12,#module|
00002e40  66 6c 61 67 73 5d 0d 0e  10 2c 20 20 20 20 20 20  |flags]...,      |
00002e50  20 20 42 49 43 56 43 20  20 20 52 31 2c 52 31 2c  |  BICVC   R1,R1,|
00002e60  23 70 61 66 69 6c 74 65  72 69 6e 73 74 61 6c 6c  |#pafilterinstall|
00002e70  65 64 0d 0e 1a 29 20 20  20 20 20 20 20 20 53 54  |ed...)        ST|
00002e80  52 56 43 20 20 20 52 31  2c 5b 52 31 32 2c 23 6d  |RVC   R1,[R12,#m|
00002e90  6f 64 75 6c 65 66 6c 61  67 73 5d 0d 0e 24 21 20  |oduleflags]..$! |
00002ea0  20 20 20 20 20 20 20 4c  44 4d 46 44 20 20 20 28  |       LDMFD   (|
00002eb0  73 70 29 21 2c 7b 52 30  2c 70 63 7d 0d 0e 2e 04  |sp)!,{R0,pc}....|
00002ec0  0d 0e 38 11 2e 70 61 66  69 6c 74 65 72 6e 61 6d  |..8..pafilternam|
00002ed0  65 0d 0e 42 1d 20 20 20  20 20 20 20 20 45 51 55  |e..B.        EQU|
00002ee0  53 20 20 20 20 22 49 63  6f 6e 53 70 72 22 0d 0e  |S    "IconSpr"..|
00002ef0  4c 15 20 20 20 20 20 20  20 20 45 51 55 42 20 20  |L.        EQUB  |
00002f00  20 20 30 0d 0e 56 11 20  20 20 20 20 20 20 20 41  |  0..V.        A|
00002f10  4c 49 47 4e 0d 0e 60 04  0d 0e 6a 11 2e 70 61 66  |LIGN..`...j..paf|
00002f20  69 6c 74 65 72 63 6f 64  65 0d 0e 74 27 20 20 20  |iltercode..t'   |
00002f30  20 20 20 20 20 53 54 4d  46 44 20 20 20 28 73 70  |     STMFD   (sp|
00002f40  29 21 2c 7b 52 31 2d 52  31 31 2c 6c 69 6e 6b 7d  |)!,{R1-R11,link}|
00002f50  0d 0e 7e 1a 20 20 20 20  20 20 20 20 54 45 51 20  |..~.        TEQ |
00002f60  20 20 20 20 52 30 2c 23  31 38 0d 0e 88 25 20 20  |    R0,#18...%  |
00002f70  20 20 20 20 20 20 42 45  51 20 20 20 20 20 70 61  |      BEQ     pa|
00002f80  6d 65 73 73 61 67 65 72  65 63 65 69 76 65 64 0d  |messagereceived.|
00002f90  0e 92 3e 20 20 20 20 20  20 20 20 54 45 51 20 20  |..>        TEQ  |
00002fa0  20 20 20 52 30 2c 23 36  20 20 20 20 20 20 20 20  |   R0,#6        |
00002fb0  20 20 20 20 20 20 20 20  3b 20 6d 6f 75 73 65 20  |        ; mouse |
00002fc0  63 6c 69 63 6b 20 72 6f  75 74 69 6e 65 0d 0e 9c  |click routine...|
00002fd0  1f 20 20 20 20 20 20 20  20 4c 44 52 45 51 20 20  |.        LDREQ  |
00002fe0  20 52 32 2c 5b 52 31 2c  23 31 32 5d 0d 0e a6 19  | R2,[R1,#12]....|
00002ff0  20 20 20 20 20 20 20 20  43 4d 4e 45 51 20 20 20  |        CMNEQ   |
00003000  52 32 2c 23 32 0d 0e b0  1e 20 20 20 20 20 20 20  |R2,#2....       |
00003010  20 4c 44 52 45 51 20 20  20 52 32 2c 5b 52 31 2c  | LDREQ   R2,[R1,|
00003020  23 38 5d 0d 0e ba 19 20  20 20 20 20 20 20 20 43  |#8]....        C|
00003030  4d 50 45 51 20 20 20 52  32 2c 23 31 0d 0e c4 1f  |MPEQ   R2,#1....|
00003040  20 20 20 20 20 20 20 20  42 4c 45 51 20 20 20 20  |        BLEQ    |
00003050  66 6f 72 63 65 72 65 64  72 61 77 0d 0e ce 1d 20  |forceredraw.... |
00003060  20 20 20 20 20 20 20 42  20 20 20 20 20 20 20 65  |       B       e|
00003070  6e 64 66 69 6c 74 65 72  0d 0e d8 04 0d 0e e2 16  |ndfilter........|
00003080  2e 70 61 6d 65 73 73 61  67 65 72 65 63 65 69 76  |.pamessagereceiv|
00003090  65 64 0d 0e ec 1f 20 20  20 20 20 20 20 20 4c 44  |ed....        LD|
000030a0  52 20 20 20 20 20 52 32  2c 5b 52 31 2c 23 31 36  |R     R2,[R1,#16|
000030b0  5d 0d 0e f6 19 20 20 20  20 20 20 20 20 43 4d 50  |]....        CMP|
000030c0  20 20 20 20 20 52 32 2c  23 33 0d 0f 00 1d 20 20  |     R2,#3....  |
000030d0  20 20 20 20 20 20 42 4e  45 20 20 20 20 20 65 6e  |      BNE     en|
000030e0  64 66 69 6c 74 65 72 0d  0f 0a 1f 20 20 20 20 20  |dfilter....     |
000030f0  20 20 20 4c 44 52 20 20  20 20 20 52 32 2c 5b 52  |   LDR     R2,[R|
00003100  31 2c 23 34 30 5d 0d 0f  14 1c 20 20 20 20 20 20  |1,#40]....      |
00003110  20 20 4d 4f 56 20 20 20  20 20 52 33 2c 23 26 66  |  MOV     R3,#&f|
00003120  66 30 0d 0f 1e 1c 20 20  20 20 20 20 20 20 41 44  |f0....        AD|
00003130  44 20 20 20 20 20 52 33  2c 52 33 2c 23 39 0d 0f  |D     R3,R3,#9..|
00003140  28 19 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |(.        CMP   |
00003150  20 20 52 32 2c 52 33 0d  0f 32 1d 20 20 20 20 20  |  R2,R3..2.     |
00003160  20 20 20 42 4e 45 20 20  20 20 20 65 6e 64 66 69  |   BNE     endfi|
00003170  6c 74 65 72 0d 0f 3c 1e  20 20 20 20 20 20 20 20  |lter..<.        |
00003180  53 54 4d 46 44 20 20 20  28 73 70 29 21 2c 7b 52  |STMFD   (sp)!,{R|
00003190  31 7d 0d 0f 46 1b 20 20  20 20 20 20 20 20 4d 4f  |1}..F.        MO|
000031a0  56 20 20 20 20 20 52 30  2c 23 31 32 39 0d 0f 50  |V     R0,#129..P|
000031b0  21 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |!        MOV    |
000031c0  20 52 31 2c 23 28 26 46  46 20 82 20 30 29 0d 0f  | R1,#(&FF . 0)..|
000031d0  5a 1b 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |Z.        MOV   |
000031e0  20 20 52 32 2c 23 26 46  46 0d 0f 64 1e 20 20 20  |  R2,#&FF..d.   |
000031f0  20 20 20 20 20 53 57 49  20 20 20 20 20 22 58 4f  |     SWI     "XO|
00003200  53 5f 42 79 74 65 22 0d  0f 6e 1b 20 20 20 20 20  |S_Byte"..n.     |
00003210  20 20 20 43 4d 50 20 20  20 20 20 52 31 2c 23 26  |   CMP     R1,#&|
00003220  46 46 0d 0f 78 1e 20 20  20 20 20 20 20 20 4c 44  |FF..x.        LD|
00003230  4d 46 44 20 20 20 28 73  70 29 21 2c 7b 52 31 7d  |MFD   (sp)!,{R1}|
00003240  0d 0f 82 1f 20 20 20 20  20 20 20 20 42 45 51 20  |....        BEQ |
00003250  20 20 20 20 74 6f 6f 6c  73 70 72 69 74 65 73 0d  |    toolsprites.|
00003260  0f 8c 1a 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |...        MOV  |
00003270  20 20 20 52 30 2c 23 31  31 0d 0f 96 1d 20 20 20  |   R0,#11....   |
00003280  20 20 20 20 20 41 44 44  20 20 20 20 20 52 32 2c  |     ADD     R2,|
00003290  52 31 2c 23 34 34 0d 0f  a0 24 20 20 20 20 20 20  |R1,#44...$      |
000032a0  20 20 53 57 49 20 20 20  20 20 22 58 57 69 6d 70  |  SWI     "XWimp|
000032b0  5f 53 70 72 69 74 65 4f  70 22 0d 0f aa 3c 20 20  |_SpriteOp"...<  |
000032c0  20 20 20 20 20 20 42 56  53 20 20 20 20 20 73 70  |      BVS     sp|
000032d0  72 69 74 65 6f 70 65 72  72 6f 72 20 20 20 20 20  |riteoperror     |
000032e0  3a 20 f4 20 8a 8a 20 66  61 6c 6c 20 74 68 72 6f  |: . .. fall thro|
000032f0  75 67 68 20 8a 8a 0d 0f  b4 04 0d 0f be 14 2e 73  |ugh ...........s|
00003300  65 6e 64 64 61 74 61 6c  6f 61 64 61 63 6b 0d 0f  |enddataloadack..|
00003310  c8 1f 20 20 20 20 20 20  20 20 42 4c 20 20 20 20  |..        BL    |
00003320  20 20 66 6f 72 63 65 72  65 64 72 61 77 0d 0f d2  |  forceredraw...|
00003330  19 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |.        MOV    |
00003340  20 52 32 2c 23 34 0d 0f  dc 1f 20 20 20 20 20 20  | R2,#4....      |
00003350  20 20 53 54 52 20 20 20  20 20 52 32 2c 5b 52 31  |  STR     R2,[R1|
00003360  2c 23 31 36 5d 0d 0f e6  1e 20 20 20 20 20 20 20  |,#16]....       |
00003370  20 4c 44 52 20 20 20 20  20 52 32 2c 5b 52 31 2c  | LDR     R2,[R1,|
00003380  23 38 5d 0d 0f f0 1f 20  20 20 20 20 20 20 20 53  |#8]....        S|
00003390  54 52 20 20 20 20 20 52  32 2c 5b 52 31 2c 23 31  |TR     R2,[R1,#1|
000033a0  32 5d 0d 0f fa 1a 20 20  20 20 20 20 20 20 4d 4f  |2]....        MO|
000033b0  56 20 20 20 20 20 52 30  2c 23 31 37 0d 10 04 1e  |V     R0,#17....|
000033c0  20 20 20 20 20 20 20 20  4c 44 52 20 20 20 20 20  |        LDR     |
000033d0  52 32 2c 5b 52 31 2c 23  34 5d 0d 10 0e 27 20 20  |R2,[R1,#4]...'  |
000033e0  20 20 20 20 20 20 53 57  49 20 20 20 20 20 22 58  |      SWI     "X|
000033f0  57 69 6d 70 5f 53 65 6e  64 4d 65 73 73 61 67 65  |Wimp_SendMessage|
00003400  22 0d 10 18 1e 20 20 20  20 20 20 20 20 4d 56 4e  |"....        MVN|
00003410  20 20 20 20 20 52 30 2c  23 28 ac 20 2d 31 29 0d  |     R0,#(. -1).|
00003420  10 22 1d 20 20 20 20 20  20 20 20 42 20 20 20 20  |.".        B    |
00003430  20 20 20 65 6e 64 66 69  6c 74 65 72 0d 10 2c 04  |   endfilter..,.|
00003440  0d 10 36 12 2e 73 70 72  69 74 65 6f 70 65 72 72  |..6..spriteoperr|
00003450  6f 72 0d 10 40 20 20 20  20 20 20 20 20 20 4d 4f  |or..@         MO|
00003460  56 20 20 20 20 20 52 31  2c 23 25 30 30 30 31 30  |V     R1,#%00010|
00003470  31 30 0d 10 4a 1d 20 20  20 20 20 20 20 20 41 44  |10..J.        AD|
00003480  52 20 20 20 20 20 52 32  2c 70 61 6e 61 6d 65 0d  |R     R2,paname.|
00003490  10 54 27 20 20 20 20 20  20 20 20 53 57 49 20 20  |.T'        SWI  |
000034a0  20 20 20 22 58 57 69 6d  70 5f 52 65 70 6f 72 74  |   "XWimp_Report|
000034b0  45 72 72 6f 72 22 0d 10  5e 1e 20 20 20 20 20 20  |Error"..^.      |
000034c0  20 20 4d 56 4e 20 20 20  20 20 52 30 2c 23 28 ac  |  MVN     R0,#(.|
000034d0  20 2d 31 29 0d 10 68 1d  20 20 20 20 20 20 20 20  | -1)..h.        |
000034e0  42 20 20 20 20 20 20 20  65 6e 64 66 69 6c 74 65  |B       endfilte|
000034f0  72 0d 10 72 04 0d 10 7c  10 2e 74 6f 6f 6c 73 70  |r..r...|..toolsp|
00003500  72 69 74 65 73 0d 10 86  26 20 20 20 20 20 20 20  |rites...&       |
00003510  20 41 44 52 20 20 20 20  20 52 32 2c 74 6f 6f 6c  | ADR     R2,tool|
00003520  73 70 72 69 74 65 73 74  61 72 74 0d 10 90 31 20  |spritestart...1 |
00003530  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 52  |       ADD     R|
00003540  33 2c 52 31 2c 23 28 34  34 2d a9 28 22 54 6f 6f  |3,R1,#(44-.("Too|
00003550  6c 53 70 72 69 74 65 73  20 22 29 29 0d 10 9a 19  |lSprites "))....|
00003560  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00003570  52 30 2c 52 33 0d 10 a4  1e 20 20 20 20 20 20 20  |R0,R3....       |
00003580  20 42 4c 20 20 20 20 20  20 73 74 72 69 6e 67 63  | BL      stringc|
00003590  6f 70 79 0d 10 ae 1d 20  20 20 20 20 20 20 20 53  |opy....        S|
000035a0  57 49 20 20 20 20 20 22  58 4f 53 5f 43 4c 49 22  |WI     "XOS_CLI"|
000035b0  0d 10 b8 21 20 20 20 20  20 20 20 20 42 56 53 20  |...!        BVS |
000035c0  20 20 20 20 73 70 72 69  74 65 6f 70 65 72 72 6f  |    spriteoperro|
000035d0  72 0d 10 c2 23 20 20 20  20 20 20 20 20 42 20 20  |r...#        B  |
000035e0  20 20 20 20 20 73 65 6e  64 64 61 74 61 6c 6f 61  |     senddataloa|
000035f0  64 61 63 6b 0d 10 cc 04  0d 10 d6 0f 2e 73 74 72  |dack.........str|
00003600  69 6e 67 63 6f 70 79 0d  10 e0 23 20 20 20 20 20  |ingcopy...#     |
00003610  20 20 20 53 54 4d 46 44  20 20 20 28 73 70 29 21  |   STMFD   (sp)!|
00003620  2c 7b 52 30 2c 6c 69 6e  6b 7d 0d 10 ea 13 2e 73  |,{R0,link}.....s|
00003630  74 72 69 6e 67 63 6f 70  79 6c 6f 6f 70 0d 10 f4  |tringcopyloop...|
00003640  1e 20 20 20 20 20 20 20  20 4c 44 52 42 20 20 20  |.        LDRB   |
00003650  20 52 30 2c 5b 52 32 5d  2c 23 31 0d 10 fe 1a 20  | R0,[R2],#1.... |
00003660  20 20 20 20 20 20 20 43  4d 50 20 20 20 20 20 52  |       CMP     R|
00003670  30 2c 23 33 32 0d 11 08  1e 20 20 20 20 20 20 20  |0,#32....       |
00003680  20 53 54 52 47 45 42 20  20 52 30 2c 5b 52 33 5d  | STRGEB  R0,[R3]|
00003690  2c 23 31 0d 11 12 22 20  20 20 20 20 20 20 20 42  |,#1..."        B|
000036a0  47 45 20 20 20 20 20 73  74 72 69 6e 67 63 6f 70  |GE     stringcop|
000036b0  79 6c 6f 6f 70 0d 11 1c  21 20 20 20 20 20 20 20  |yloop...!       |
000036c0  20 4c 44 4d 46 44 20 20  20 28 73 70 29 21 2c 7b  | LDMFD   (sp)!,{|
000036d0  52 30 2c 70 63 7d 0d 11  26 04 0d 11 30 14 2e 74  |R0,pc}..&...0..t|
000036e0  6f 6f 6c 73 70 72 69 74  65 73 74 61 72 74 0d 11  |oolspritestart..|
000036f0  3a 22 20 20 20 20 20 20  20 20 45 51 55 53 20 20  |:"        EQUS  |
00003700  20 20 22 54 6f 6f 6c 53  70 72 69 74 65 73 20 22  |  "ToolSprites "|
00003710  0d 11 44 15 20 20 20 20  20 20 20 20 45 51 55 42  |..D.        EQUB|
00003720  20 20 20 20 30 0d 11 4e  11 20 20 20 20 20 20 20  |    0..N.       |
00003730  20 41 4c 49 47 4e 0d 11  58 04 0d 11 62 10 2e 66  | ALIGN..X...b..f|
00003740  6f 72 63 65 72 65 64 72  61 77 0d 11 6c 23 20 20  |orceredraw..l#  |
00003750  20 20 20 20 20 20 53 54  4d 46 44 20 20 20 28 73  |      STMFD   (s|
00003760  70 29 21 2c 7b 52 31 2c  6c 69 6e 6b 7d 0d 11 76  |p)!,{R1,link}..v|
00003770  1e 20 20 20 20 20 20 20  20 4d 56 4e 20 20 20 20  |.        MVN    |
00003780  20 52 30 2c 23 28 ac 20  2d 31 29 0d 11 80 19 20  | R0,#(. -1).... |
00003790  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
000037a0  31 2c 23 30 0d 11 8a 19  20 20 20 20 20 20 20 20  |1,#0....        |
000037b0  4d 4f 56 20 20 20 20 20  52 32 2c 23 30 0d 11 94  |MOV     R2,#0...|
000037c0  1d 20 20 20 20 20 20 20  20 42 4c 20 20 20 20 20  |.        BL     |
000037d0  20 73 63 72 65 65 6e 6d  61 78 0d 11 9e 27 20 20  | screenmax...'  |
000037e0  20 20 20 20 20 20 53 57  49 20 20 20 20 20 22 58  |      SWI     "X|
000037f0  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
00003800  22 0d 11 a8 21 20 20 20  20 20 20 20 20 4c 44 4d  |"...!        LDM|
00003810  46 44 20 20 20 28 73 70  29 21 2c 7b 52 31 2c 70  |FD   (sp)!,{R1,p|
00003820  63 7d 0d 11 b2 04 0d 11  bc 12 2e 67 65 74 74 61  |c}.........getta|
00003830  73 6b 68 61 6e 64 6c 65  0d 11 c6 20 20 20 20 20  |skhandle...     |
00003840  20 20 20 20 53 54 4d 46  44 20 20 20 28 73 70 29  |    STMFD   (sp)|
00003850  21 2c 7b 6c 69 6e 6b 7d  0d 11 d0 19 20 20 20 20  |!,{link}....    |
00003860  20 20 20 20 4d 4f 56 20  20 20 20 20 52 30 2c 23  |    MOV     R0,#|
00003870  30 0d 11 da 0f 2e 6e 65  78 74 68 61 6e 64 6c 65  |0.....nexthandle|
00003880  0d 11 e4 54 20 20 20 20  20 20 20 20 41 44 44 20  |...T        ADD |
00003890  20 20 20 20 52 31 2c 52  31 32 2c 23 70 6f 6c 6c  |    R1,R12,#poll|
000038a0  62 6c 6f 63 6b 20 20 20  20 20 20 20 20 20 20 20  |block           |
000038b0  20 20 3b 20 75 73 65 20  70 6f 6c 6c 20 62 6c 6f  |  ; use poll blo|
000038c0  63 6b 20 61 73 20 62 75  66 66 65 72 20 66 6f 72  |ck as buffer for|
000038d0  20 53 57 49 0d 11 ee 1a  20 20 20 20 20 20 20 20  | SWI....        |
000038e0  4d 4f 56 20 20 20 20 20  52 32 2c 23 32 30 0d 11  |MOV     R2,#20..|
000038f0  f8 31 20 20 20 20 20 20  20 20 53 57 49 20 20 20  |.1        SWI   |
00003900  20 20 22 58 54 61 73 6b  4d 61 6e 61 67 65 72 5f  |  "XTaskManager_|
00003910  45 6e 75 6d 65 72 61 74  65 54 61 73 6b 73 22 0d  |EnumerateTasks".|
00003920  12 02 1b 20 20 20 20 20  20 20 20 42 56 53 20 20  |...        BVS  |
00003930  20 20 20 6a 75 6d 70 6f  75 74 0d 12 0c 19 20 20  |   jumpout....  |
00003940  20 20 20 20 20 20 43 4d  4e 20 20 20 20 20 52 30  |      CMN     R0|
00003950  2c 23 31 0d 12 16 1b 20  20 20 20 20 20 20 20 42  |,#1....        B|
00003960  45 51 20 20 20 20 20 6a  75 6d 70 6f 75 74 0d 12  |EQ     jumpout..|
00003970  20 19 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  | .        MOV   |
00003980  20 20 52 36 2c 52 30 0d  12 2a 41 20 20 20 20 20  |  R6,R0..*A     |
00003990  20 20 20 4c 44 52 20 20  20 20 20 52 30 2c 5b 52  |   LDR     R0,[R|
000039a0  31 32 2c 23 28 70 6f 6c  6c 62 6c 6f 63 6b 2b 34  |12,#(pollblock+4|
000039b0  29 5d 20 20 20 20 20 20  3b 20 72 65 61 64 20 74  |)]      ; read t|
000039c0  61 73 6b 20 6e 61 6d 65  0d 12 34 40 20 20 20 20  |ask name..4@    |
000039d0  20 20 20 20 4d 4f 56 20  20 20 20 20 52 33 2c 52  |    MOV     R3,R|
000039e0  34 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |4               |
000039f0  20 20 20 20 20 20 3b 20  70 61 73 73 65 64 20 74  |      ; passed t|
00003a00  61 73 6b 20 6e 61 6d 65  0d 12 3e 21 20 20 20 20  |ask name..>!    |
00003a10  20 20 20 20 42 4c 20 20  20 20 20 20 73 74 72 69  |    BL      stri|
00003a20  6e 67 63 6f 6d 70 61 72  65 0d 12 48 19 20 20 20  |ngcompare..H.   |
00003a30  20 20 20 20 20 4d 4f 56  20 20 20 20 20 52 30 2c  |     MOV     R0,|
00003a40  52 36 0d 12 52 19 20 20  20 20 20 20 20 20 43 4d  |R6..R.        CM|
00003a50  50 20 20 20 20 20 52 33  2c 23 31 0d 12 5c 27 20  |P     R3,#1..\' |
00003a60  20 20 20 20 20 20 20 4c  44 52 45 51 20 20 20 52  |       LDREQ   R|
00003a70  33 2c 5b 52 31 32 2c 23  70 6f 6c 6c 62 6c 6f 63  |3,[R12,#pollbloc|
00003a80  6b 5d 0d 12 66 1e 20 20  20 20 20 20 20 20 4c 44  |k]..f.        LD|
00003a90  4d 45 51 46 44 20 28 73  70 29 21 2c 7b 70 63 7d  |MEQFD (sp)!,{pc}|
00003aa0  0d 12 70 1e 20 20 20 20  20 20 20 20 42 20 20 20  |..p.        B   |
00003ab0  20 20 20 20 6e 65 78 74  68 61 6e 64 6c 65 0d 12  |    nexthandle..|
00003ac0  7a 0c 2e 6a 75 6d 70 6f  75 74 0d 12 84 19 20 20  |z..jumpout....  |
00003ad0  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 52 33  |      MOV     R3|
00003ae0  2c 23 30 0d 12 8e 1e 20  20 20 20 20 20 20 20 4c  |,#0....        L|
00003af0  44 4d 46 44 20 20 20 28  73 70 29 21 2c 7b 70 63  |DMFD   (sp)!,{pc|
00003b00  7d 0d 12 98 04 0d 12 a2  4c 2e 66 61 66 69 6c 74  |}.......L.fafilt|
00003b10  65 72 69 6e 73 74 61 6c  6c 20 20 20 20 20 20 20  |erinstall       |
00003b20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003b30  20 20 20 20 20 20 3b 20  70 61 73 73 20 70 61 20  |      ; pass pa |
00003b40  74 61 73 6b 20 68 61 6e  64 6c 65 20 69 6e 20 52  |task handle in R|
00003b50  33 0d 12 ac 23 20 20 20  20 20 20 20 20 53 54 4d  |3...#        STM|
00003b60  46 44 20 20 20 28 73 70  29 21 2c 7b 52 30 2c 6c  |FD   (sp)!,{R0,l|
00003b70  69 6e 6b 7d 0d 12 b6 29  20 20 20 20 20 20 20 20  |ink}...)        |
00003b80  4c 44 52 20 20 20 20 20  52 31 2c 5b 52 31 32 2c  |LDR     R1,[R12,|
00003b90  23 6d 6f 64 75 6c 65 66  6c 61 67 73 5d 0d 12 c0  |#moduleflags]...|
00003ba0  21 20 20 20 20 20 20 20  20 54 53 54 20 20 20 20  |!        TST    |
00003bb0  20 52 31 2c 23 63 6f 6e  66 69 72 6d 6f 6e 0d 12  | R1,#confirmon..|
00003bc0  ca 47 20 20 20 20 20 20  20 20 4c 44 4d 45 51 46  |.G        LDMEQF|
00003bd0  44 20 28 73 70 29 21 2c  7b 52 30 2c 70 63 7d 20  |D (sp)!,{R0,pc} |
00003be0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00003bf0  69 66 20 6e 6f 74 20 73  65 6c 65 63 74 65 64 2c  |if not selected,|
00003c00  20 65 78 69 74 0d 12 d4  29 20 20 20 20 20 20 20  | exit...)       |
00003c10  20 54 53 54 20 20 20 20  20 52 31 2c 23 66 61 66  | TST     R1,#faf|
00003c20  69 6c 74 65 72 69 6e 73  74 61 6c 6c 65 64 0d 12  |ilterinstalled..|
00003c30  de 53 20 20 20 20 20 20  20 20 42 45 51 20 20 20  |.S        BEQ   |
00003c40  20 20 66 61 64 6f 69 6e  73 74 61 6c 6c 20 20 20  |  fadoinstall   |
00003c50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00003c60  20 69 66 20 6e 6f 74 20  69 6e 73 74 61 6c 6c 65  | if not installe|
00003c70  64 2c 20 67 65 74 20 6f  6e 20 77 69 74 68 20 69  |d, get on with i|
00003c80  74 0d 12 e8 25 20 20 20  20 20 20 20 20 54 53 54  |t...%        TST|
00003c90  20 20 20 20 20 52 31 2c  23 66 61 72 65 70 6c 61  |     R1,#farepla|
00003ca0  63 65 61 62 6c 65 0d 12  f2 4c 20 20 20 20 20 20  |ceable...L      |
00003cb0  20 20 4c 44 4d 45 51 46  44 20 28 73 70 29 21 2c  |  LDMEQFD (sp)!,|
00003cc0  7b 52 30 2c 70 63 7d 20  20 20 20 20 20 20 20 20  |{R0,pc}         |
00003cd0  20 20 20 20 20 20 20 3b  20 69 66 20 6e 6f 74 20  |       ; if not |
00003ce0  72 65 70 6c 61 63 65 61  62 6c 65 20 72 65 74 75  |replaceable retu|
00003cf0  72 6e 0d 12 fc 19 20 20  20 20 20 20 20 20 4d 4f  |rn....        MO|
00003d00  56 20 20 20 20 20 52 30  2c 52 33 0d 13 06 51 20  |V     R0,R3...Q |
00003d10  20 20 20 20 20 20 20 42  4c 20 20 20 20 20 20 66  |       BL      f|
00003d20  61 66 69 6c 74 65 72 72  65 6d 6f 76 65 20 20 20  |afilterremove   |
00003d30  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 69 66  |            ; if|
00003d40  20 72 65 70 6c 61 63 61  62 6c 65 2c 20 72 65 6d  | replacable, rem|
00003d50  6f 76 65 20 65 78 69 73  74 69 6e 67 0d 13 10 19  |ove existing....|
00003d60  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00003d70  52 33 2c 52 30 0d 13 1a  10 2e 66 61 64 6f 69 6e  |R3,R0.....fadoin|
00003d80  73 74 61 6c 6c 0d 13 24  23 20 20 20 20 20 20 20  |stall..$#       |
00003d90  20 41 44 52 20 20 20 20  20 52 30 2c 66 61 66 69  | ADR     R0,fafi|
00003da0  6c 74 65 72 6e 61 6d 65  0d 13 2e 23 20 20 20 20  |ltername...#    |
00003db0  20 20 20 20 41 44 52 20  20 20 20 20 52 31 2c 66  |    ADR     R1,f|
00003dc0  61 66 69 6c 74 65 72 63  6f 64 65 0d 13 38 50 20  |afiltercode..8P |
00003dd0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00003de0  32 2c 52 31 32 20 20 20  20 20 20 20 20 20 20 20  |2,R12           |
00003df0  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 6e 6f  |            ; no|
00003e00  74 65 20 70 61 73 73 65  73 20 77 6f 72 6b 73 70  |te passes worksp|
00003e10  61 63 65 20 70 6f 69 6e  74 65 72 0d 13 42 4e 20  |ace pointer..BN |
00003e20  20 20 20 20 20 20 20 4c  44 52 20 20 20 20 20 52  |       LDR     R|
00003e30  34 2c 66 61 66 69 6c 74  65 72 6d 61 73 6b 20 20  |4,fafiltermask  |
00003e40  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 6e 6f  |            ; no|
00003e50  74 20 70 72 69 76 61 74  65 20 77 6f 72 64 20 70  |t private word p|
00003e60  6f 69 6e 74 65 72 20 61  73 0d 13 4c 39 20 20 20  |ointer as..L9   |
00003e70  20 20 20 20 20 53 57 49  20 20 20 20 20 22 58 46  |     SWI     "XF|
00003e80  69 6c 74 65 72 5f 52 65  67 69 73 74 65 72 50 6f  |ilter_RegisterPo|
00003e90  73 74 46 69 6c 74 65 72  22 20 3b 20 62 65 66 6f  |stFilter" ; befo|
00003ea0  72 65 0d 13 56 26 20 20  20 20 20 20 20 20 53 54  |re..V&        ST|
00003eb0  52 56 43 20 20 20 52 33  2c 5b 52 31 32 2c 23 66  |RVC   R3,[R12,#f|
00003ec0  61 68 61 6e 64 6c 65 5d  0d 13 60 29 20 20 20 20  |ahandle]..`)    |
00003ed0  20 20 20 20 4c 44 52 56  43 20 20 20 52 31 2c 5b  |    LDRVC   R1,[|
00003ee0  52 31 32 2c 23 6d 6f 64  75 6c 65 66 6c 61 67 73  |R12,#moduleflags|
00003ef0  5d 0d 13 6a 2b 20 20 20  20 20 20 20 20 84 52 56  |]..j+        .RV|
00003f00  43 20 20 20 52 31 2c 52  31 2c 23 66 61 66 69 6c  |C   R1,R1,#fafil|
00003f10  74 65 72 69 6e 73 74 61  6c 6c 65 64 0d 13 74 29  |terinstalled..t)|
00003f20  20 20 20 20 20 20 20 20  53 54 52 56 43 20 20 20  |        STRVC   |
00003f30  52 31 2c 5b 52 31 32 2c  23 6d 6f 64 75 6c 65 66  |R1,[R12,#modulef|
00003f40  6c 61 67 73 5d 0d 13 7e  21 20 20 20 20 20 20 20  |lags]..~!       |
00003f50  20 4c 44 4d 46 44 20 20  20 28 73 70 29 21 2c 7b  | LDMFD   (sp)!,{|
00003f60  52 30 2c 70 63 7d 0d 13  88 04 0d 13 92 13 2e 66  |R0,pc}.........f|
00003f70  61 66 69 6c 74 65 72 72  65 6d 6f 76 65 0d 13 9c  |afilterremove...|
00003f80  23 20 20 20 20 20 20 20  20 53 54 4d 46 44 20 20  |#        STMFD  |
00003f90  20 28 73 70 29 21 2c 7b  52 30 2c 6c 69 6e 6b 7d  | (sp)!,{R0,link}|
00003fa0  0d 13 a6 29 20 20 20 20  20 20 20 20 4c 44 52 20  |...)        LDR |
00003fb0  20 20 20 20 52 31 2c 5b  52 31 32 2c 23 6d 6f 64  |    R1,[R12,#mod|
00003fc0  75 6c 65 66 6c 61 67 73  5d 0d 13 b0 29 20 20 20  |uleflags]...)   |
00003fd0  20 20 20 20 20 54 53 54  20 20 20 20 20 52 31 2c  |     TST     R1,|
00003fe0  23 66 61 66 69 6c 74 65  72 69 6e 73 74 61 6c 6c  |#fafilterinstall|
00003ff0  65 64 0d 13 ba 4d 20 20  20 20 20 20 20 20 4c 44  |ed...M        LD|
00004000  4d 45 51 46 44 20 28 73  70 29 21 2c 7b 52 30 2c  |MEQFD (sp)!,{R0,|
00004010  70 63 7d 20 20 20 20 20  20 20 20 20 20 20 20 20  |pc}             |
00004020  20 20 3b 20 69 66 20 6e  6f 74 20 69 6e 73 74 61  |  ; if not insta|
00004030  6c 6c 65 64 2c 20 6a 75  73 74 20 65 78 69 74 0d  |lled, just exit.|
00004040  13 c4 23 20 20 20 20 20  20 20 20 41 44 52 20 20  |..#        ADR  |
00004050  20 20 20 52 30 2c 66 61  66 69 6c 74 65 72 6e 61  |   R0,fafilterna|
00004060  6d 65 0d 13 ce 23 20 20  20 20 20 20 20 20 41 44  |me...#        AD|
00004070  52 20 20 20 20 20 52 31  2c 66 61 66 69 6c 74 65  |R     R1,fafilte|
00004080  72 63 6f 64 65 0d 13 d8  1a 20 20 20 20 20 20 20  |rcode....       |
00004090  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 31 32 0d  | MOV     R2,R12.|
000040a0  13 e2 26 20 20 20 20 20  20 20 20 4c 44 52 20 20  |..&        LDR  |
000040b0  20 20 20 52 33 2c 5b 52  31 32 2c 23 66 61 68 61  |   R3,[R12,#faha|
000040c0  6e 64 6c 65 5d 0d 13 ec  23 20 20 20 20 20 20 20  |ndle]...#       |
000040d0  20 4c 44 52 20 20 20 20  20 52 34 2c 66 61 66 69  | LDR     R4,fafi|
000040e0  6c 74 65 72 6d 61 73 6b  0d 13 f6 32 20 20 20 20  |ltermask...2    |
000040f0  20 20 20 20 53 57 49 20  20 20 20 20 22 58 46 69  |    SWI     "XFi|
00004100  6c 74 65 72 5f 44 65 52  65 67 69 73 74 65 72 50  |lter_DeRegisterP|
00004110  6f 73 74 46 69 6c 74 65  72 22 0d 14 00 29 20 20  |ostFilter"...)  |
00004120  20 20 20 20 20 20 4c 44  52 56 43 20 20 20 52 31  |      LDRVC   R1|
00004130  2c 5b 52 31 32 2c 23 6d  6f 64 75 6c 65 66 6c 61  |,[R12,#modulefla|
00004140  67 73 5d 0d 14 0a 2c 20  20 20 20 20 20 20 20 42  |gs]...,        B|
00004150  49 43 56 43 20 20 20 52  31 2c 52 31 2c 23 66 61  |ICVC   R1,R1,#fa|
00004160  66 69 6c 74 65 72 69 6e  73 74 61 6c 6c 65 64 0d  |filterinstalled.|
00004170  14 14 28 20 20 20 20 20  20 20 20 42 49 43 56 43  |..(        BICVC|
00004180  20 20 20 52 31 2c 52 31  2c 23 66 61 72 65 70 6c  |   R1,R1,#farepl|
00004190  61 63 65 61 62 6c 65 0d  14 1e 29 20 20 20 20 20  |aceable...)     |
000041a0  20 20 20 53 54 52 56 43  20 20 20 52 31 2c 5b 52  |   STRVC   R1,[R|
000041b0  31 32 2c 23 6d 6f 64 75  6c 65 66 6c 61 67 73 5d  |12,#moduleflags]|
000041c0  0d 14 28 21 20 20 20 20  20 20 20 20 4c 44 4d 46  |..(!        LDMF|
000041d0  44 20 20 20 28 73 70 29  21 2c 7b 52 30 2c 70 63  |D   (sp)!,{R0,pc|
000041e0  7d 0d 14 32 04 0d 14 3c  11 2e 66 61 66 69 6c 74  |}..2...<..fafilt|
000041f0  65 72 63 6f 64 65 0d 14  46 27 20 20 20 20 20 20  |ercode..F'      |
00004200  20 20 53 54 4d 46 44 20  20 20 28 73 70 29 21 2c  |  STMFD   (sp)!,|
00004210  7b 52 31 2d 52 31 31 2c  6c 69 6e 6b 7d 0d 14 50  |{R1-R11,link}..P|
00004220  1a 20 20 20 20 20 20 20  20 54 45 51 20 20 20 20  |.        TEQ    |
00004230  20 52 30 2c 23 31 37 0d  14 5a 1d 20 20 20 20 20  | R0,#17..Z.     |
00004240  20 20 20 42 4e 45 20 20  20 20 20 65 6e 64 66 69  |   BNE     endfi|
00004250  6c 74 65 72 0d 14 64 1f  20 20 20 20 20 20 20 20  |lter..d.        |
00004260  4c 44 52 20 20 20 20 20  52 33 2c 5b 52 31 2c 23  |LDR     R3,[R1,#|
00004270  31 36 5d 0d 14 6e 1c 20  20 20 20 20 20 20 20 4d  |16]..n.        M|
00004280  4f 56 20 20 20 20 20 52  34 2c 23 26 34 30 30 0d  |OV     R4,#&400.|
00004290  14 78 1f 20 20 20 20 20  20 20 20 41 44 44 20 20  |.x.        ADD  |
000042a0  20 20 20 52 34 2c 52 34  2c 23 26 30 30 35 0d 14  |   R4,R4,#&005..|
000042b0  82 19 20 20 20 20 20 20  20 20 54 45 51 20 20 20  |..        TEQ   |
000042c0  20 20 52 33 2c 52 34 0d  14 8c 1d 20 20 20 20 20  |  R3,R4....     |
000042d0  20 20 20 42 4e 45 20 20  20 20 20 65 6e 64 66 69  |   BNE     endfi|
000042e0  6c 74 65 72 0d 14 96 1f  20 20 20 20 20 20 20 20  |lter....        |
000042f0  4c 44 52 20 20 20 20 20  52 33 2c 5b 52 31 2c 23  |LDR     R3,[R1,#|
00004300  32 30 5d 0d 14 a0 19 20  20 20 20 20 20 20 20 54  |20]....        T|
00004310  45 51 20 20 20 20 20 52  33 2c 23 32 0d 14 aa 1f  |EQ     R3,#2....|
00004320  20 20 20 20 20 20 20 20  42 4e 45 20 20 20 20 20  |        BNE     |
00004330  65 6e 64 66 61 66 69 6c  74 65 72 0d 14 b4 1f 20  |endfafilter.... |
00004340  20 20 20 20 20 20 20 4c  44 52 20 20 20 20 20 52  |       LDR     R|
00004350  33 2c 5b 52 31 2c 23 32  34 5d 0d 14 be 20 20 20  |3,[R1,#24]...   |
00004360  20 20 20 20 20 20 84 52  20 20 20 20 20 52 33 2c  |      .R     R3,|
00004370  52 33 2c 23 25 30 30 30  31 30 0d 14 c8 1f 20 20  |R3,#%00010....  |
00004380  20 20 20 20 20 20 53 54  52 20 20 20 20 20 52 33  |      STR     R3|
00004390  2c 5b 52 31 2c 23 32 34  5d 0d 14 d2 10 2e 65 6e  |,[R1,#24].....en|
000043a0  64 66 61 66 69 6c 74 65  72 0d 14 dc 29 20 20 20  |dfafilter...)   |
000043b0  20 20 20 20 20 4c 44 52  20 20 20 20 20 52 33 2c  |     LDR     R3,|
000043c0  5b 52 31 32 2c 23 6d 6f  64 75 6c 65 66 6c 61 67  |[R12,#moduleflag|
000043d0  73 5d 0d 14 e6 27 20 20  20 20 20 20 20 20 84 52  |s]...'        .R|
000043e0  20 20 20 20 20 52 33 2c  52 33 2c 23 66 61 72 65  |     R3,R3,#fare|
000043f0  70 6c 61 63 65 61 62 6c  65 0d 14 f0 29 20 20 20  |placeable...)   |
00004400  20 20 20 20 20 53 54 52  20 20 20 20 20 52 33 2c  |     STR     R3,|
00004410  5b 52 31 32 2c 23 6d 6f  64 75 6c 65 66 6c 61 67  |[R12,#moduleflag|
00004420  73 5d 0d 14 fa 1d 20 20  20 20 20 20 20 20 42 20  |s]....        B |
00004430  20 20 20 20 20 20 65 6e  64 66 69 6c 74 65 72 0d  |      endfilter.|
00004440  15 04 04 0d 15 0e 11 2e  66 61 66 69 6c 74 65 72  |........fafilter|
00004450  6e 61 6d 65 0d 15 18 1d  20 20 20 20 20 20 20 20  |name....        |
00004460  45 51 55 53 20 20 20 20  22 43 6f 6e 66 69 72 6d  |EQUS    "Confirm|
00004470  22 0d 15 22 15 20 20 20  20 20 20 20 20 45 51 55  |"..".        EQU|
00004480  42 20 20 20 20 30 0d 15  2c 11 20 20 20 20 20 20  |B    0..,.      |
00004490  20 20 41 4c 49 47 4e 0d  15 36 04 0d 15 40 0b 2e  |  ALIGN..6...@..|
000044a0  74 6d 6e 61 6d 65 0d 15  4a 22 20 20 20 20 20 20  |tmname..J"      |
000044b0  20 20 45 51 55 53 20 20  20 20 22 54 61 73 6b 20  |  EQUS    "Task |
000044c0  4d 61 6e 61 67 65 72 22  0d 15 54 15 20 20 20 20  |Manager"..T.    |
000044d0  20 20 20 20 45 51 55 42  20 20 20 20 30 0d 15 5e  |    EQUB    0..^|
000044e0  11 20 20 20 20 20 20 20  20 41 4c 49 47 4e 0d 15  |.        ALIGN..|
000044f0  68 04 0d 15 72 0b 2e 70  61 6e 61 6d 65 0d 15 7c  |h...r..paname..||
00004500  25 20 20 20 20 20 20 20  20 45 51 55 53 20 20 20  |%        EQUS   |
00004510  20 22 50 61 6c 65 74 74  65 20 55 74 69 6c 69 74  | "Palette Utilit|
00004520  79 22 0d 15 86 15 20 20  20 20 20 20 20 20 45 51  |y"....        EQ|
00004530  55 42 20 20 20 20 30 0d  15 90 11 20 20 20 20 20  |UB    0....     |
00004540  20 20 20 41 4c 49 47 4e  0d 15 9a 04 0d 15 a4 0b  |   ALIGN........|
00004550  2e 66 61 6e 61 6d 65 0d  15 ae 29 20 20 20 20 20  |.faname...)     |
00004560  20 20 20 45 51 55 53 20  20 20 20 22 46 69 6c 65  |   EQUS    "File|
00004570  72 20 41 63 74 69 6f 6e  20 57 69 6e 64 6f 77 22  |r Action Window"|
00004580  0d 15 b8 15 20 20 20 20  20 20 20 20 45 51 55 42  |....        EQUB|
00004590  20 20 20 20 30 0d 15 c2  11 20 20 20 20 20 20 20  |    0....       |
000045a0  20 41 4c 49 47 4e 0d 15  cc 04 0d 15 d6 11 2e 74  | ALIGN.........t|
000045b0  6d 66 69 6c 74 65 72 63  6f 64 65 0d 15 e0 27 20  |mfiltercode...' |
000045c0  20 20 20 20 20 20 20 53  54 4d 46 44 20 20 20 28  |       STMFD   (|
000045d0  73 70 29 21 2c 7b 52 31  2d 52 31 31 2c 6c 69 6e  |sp)!,{R1-R11,lin|
000045e0  6b 7d 0d 15 ea 29 20 20  20 20 20 20 20 20 4c 44  |k}...)        LD|
000045f0  52 20 20 20 20 20 52 33  2c 5b 52 31 32 2c 23 6d  |R     R3,[R12,#m|
00004600  6f 64 75 6c 65 66 6c 61  67 73 5d 0d 15 f4 27 20  |oduleflags]...' |
00004610  20 20 20 20 20 20 20 54  53 54 20 20 20 20 20 52  |       TST     R|
00004620  33 2c 23 74 6d 6d 65 73  73 61 67 65 73 61 64 64  |3,#tmmessagesadd|
00004630  65 64 0d 15 fe 21 20 20  20 20 20 20 20 20 42 4c  |ed...!        BL|
00004640  45 51 20 20 20 20 74 6d  61 64 64 6d 65 73 73 61  |EQ    tmaddmessa|
00004650  67 65 73 0d 16 08 19 20  20 20 20 20 20 20 20 54  |ges....        T|
00004660  45 51 20 20 20 20 20 52  30 2c 23 36 0d 16 12 20  |EQ     R0,#6... |
00004670  20 20 20 20 20 20 20 20  42 45 51 20 20 20 20 20  |        BEQ     |
00004680  74 6d 6d 6f 75 73 65 63  6c 69 63 6b 0d 16 1c 19  |tmmouseclick....|
00004690  20 20 20 20 20 20 20 20  54 45 51 20 20 20 20 20  |        TEQ     |
000046a0  52 30 2c 23 37 0d 16 26  1b 20 20 20 20 20 20 20  |R0,#7..&.       |
000046b0  20 42 45 51 20 20 20 20  20 65 6e 64 64 72 61 67  | BEQ     enddrag|
000046c0  0d 16 30 1a 20 20 20 20  20 20 20 20 54 45 51 20  |..0.        TEQ |
000046d0  20 20 20 20 52 30 2c 23  31 37 0d 16 3a 1a 20 20  |    R0,#17..:.  |
000046e0  20 20 20 20 20 20 54 45  51 4e 45 20 20 20 52 30  |      TEQNE   R0|
000046f0  2c 23 31 38 0d 16 44 1a  20 20 20 20 20 20 20 20  |,#18..D.        |
00004700  54 45 51 4e 45 20 20 20  52 30 2c 23 31 39 0d 16  |TEQNE   R0,#19..|
00004710  4e 25 20 20 20 20 20 20  20 20 42 45 51 20 20 20  |N%        BEQ   |
00004720  20 20 74 6d 6d 65 73 73  61 67 65 72 65 63 65 69  |  tmmessagerecei|
00004730  76 65 64 0d 16 58 0e 2e  65 6e 64 66 69 6c 74 65  |ved..X..endfilte|
00004740  72 0d 16 62 27 20 20 20  20 20 20 20 20 4c 44 4d  |r..b'        LDM|
00004750  46 44 20 20 20 28 73 70  29 21 2c 7b 52 31 2d 52  |FD   (sp)!,{R1-R|
00004760  31 31 2c 6c 69 6e 6b 7d  0d 16 6c 1b 20 20 20 20  |11,link}..l.    |
00004770  20 20 20 20 4d 4f 56 53  20 20 20 20 70 63 2c 6c  |    MOVS    pc,l|
00004780  69 6e 6b 0d 16 76 04 0d  16 80 16 2e 74 6d 6d 65  |ink..v......tmme|
00004790  73 73 61 67 65 72 65 63  65 69 76 65 64 0d 16 8a  |ssagereceived...|
000047a0  1f 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |.        LDR    |
000047b0  20 52 32 2c 5b 52 31 2c  23 31 36 5d 0d 16 94 19  | R2,[R1,#16]....|
000047c0  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
000047d0  52 32 2c 23 31 0d 16 9e  1c 20 20 20 20 20 20 20  |R2,#1....       |
000047e0  20 42 45 51 20 20 20 20  20 72 65 74 75 72 6e 65  | BEQ     returne|
000047f0  64 0d 16 a8 19 20 20 20  20 20 20 20 20 43 4d 50  |d....        CMP|
00004800  20 20 20 20 20 52 32 2c  23 32 0d 16 b2 1d 20 20  |     R2,#2....  |
00004810  20 20 20 20 20 20 42 4e  45 20 20 20 20 20 65 6e  |      BNE     en|
00004820  64 66 69 6c 74 65 72 0d  16 bc 29 20 20 20 20 20  |dfilter...)     |
00004830  20 20 20 4c 44 52 20 20  20 20 20 52 32 2c 5b 52  |   LDR     R2,[R|
00004840  31 32 2c 23 6d 6f 64 75  6c 65 66 6c 61 67 73 5d  |12,#moduleflags]|
00004850  0d 16 c6 21 20 20 20 20  20 20 20 20 54 53 54 20  |...!        TST |
00004860  20 20 20 20 52 32 2c 23  74 6d 6f 77 6e 64 72 61  |    R2,#tmowndra|
00004870  67 0d 16 d0 1d 20 20 20  20 20 20 20 20 42 45 51  |g....        BEQ|
00004880  20 20 20 20 20 65 6e 64  66 69 6c 74 65 72 0d 16  |     endfilter..|
00004890  da 33 20 20 20 20 20 20  20 20 42 49 43 20 20 20  |.3        BIC   |
000048a0  20 20 52 32 2c 52 32 2c  23 28 74 6d 6f 77 6e 64  |  R2,R2,#(tmownd|
000048b0  72 61 67 20 84 20 74 6d  73 6f 6c 69 64 69 74 79  |rag . tmsolidity|
000048c0  29 0d 16 e4 29 20 20 20  20 20 20 20 20 53 54 52  |)...)        STR|
000048d0  20 20 20 20 20 52 32 2c  5b 52 31 32 2c 23 6d 6f  |     R2,[R12,#mo|
000048e0  64 75 6c 65 66 6c 61 67  73 5d 0d 16 ee 1a 20 20  |duleflags]....  |
000048f0  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 52 30  |      MOV     R0|
00004900  2c 23 34 33 0d 16 f8 0e  2e 67 65 74 73 74 72 69  |,#43.....getstri|
00004910  6e 67 0d 17 02 1c 20 20  20 20 20 20 20 20 41 44  |ng....        AD|
00004920  44 20 20 20 20 20 52 30  2c 52 30 2c 23 31 0d 17  |D     R0,R0,#1..|
00004930  0c 1e 20 20 20 20 20 20  20 20 4c 44 52 42 20 20  |..        LDRB  |
00004940  20 20 52 32 2c 5b 52 31  2c 52 30 5d 0d 17 16 1a  |  R2,[R1,R0]....|
00004950  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
00004960  52 32 2c 23 33 32 0d 17  20 1d 20 20 20 20 20 20  |R2,#32.. .      |
00004970  20 20 42 47 54 20 20 20  20 20 67 65 74 73 74 72  |  BGT     getstr|
00004980  69 6e 67 0d 17 2a 1c 20  20 20 20 20 20 20 20 53  |ing..*.        S|
00004990  55 42 20 20 20 20 20 52  30 2c 52 30 2c 23 31 0d  |UB     R0,R0,#1.|
000049a0  17 34 1e 20 20 20 20 20  20 20 20 4c 44 52 42 20  |.4.        LDRB |
000049b0  20 20 20 52 32 2c 5b 52  31 2c 52 30 5d 0d 17 3e  |   R2,[R1,R0]..>|
000049c0  1e 20 20 20 20 20 20 20  20 43 4d 50 20 20 20 20  |.        CMP    |
000049d0  20 52 32 2c 23 97 28 22  2e 22 29 0d 17 48 1d 20  | R2,#.(".")..H. |
000049e0  20 20 20 20 20 20 20 42  4e 45 20 20 20 20 20 65  |       BNE     e|
000049f0  6e 64 66 69 6c 74 65 72  0d 17 52 19 20 20 20 20  |ndfilter..R.    |
00004a00  20 20 20 20 4d 4f 56 20  20 20 20 20 52 32 2c 23  |    MOV     R2,#|
00004a10  30 0d 17 5c 1e 20 20 20  20 20 20 20 20 53 54 52  |0..\.        STR|
00004a20  42 20 20 20 20 52 32 2c  5b 52 31 2c 52 30 5d 0d  |B    R2,[R1,R0].|
00004a30  17 66 1d 20 20 20 20 20  20 20 20 41 44 44 20 20  |.f.        ADD  |
00004a40  20 20 20 52 31 2c 52 31  2c 23 34 34 0d 17 70 19  |   R1,R1,#44..p.|
00004a50  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00004a60  52 30 2c 23 30 0d 17 7a  23 20 20 20 20 20 20 20  |R0,#0..z#       |
00004a70  20 53 57 49 20 20 20 20  20 22 58 4f 53 5f 46 53  | SWI     "XOS_FS|
00004a80  43 6f 6e 74 72 6f 6c 22  0d 17 84 1e 20 20 20 20  |Control"....    |
00004a90  20 20 20 20 4d 56 4e 20  20 20 20 20 52 30 2c 23  |    MVN     R0,#|
00004aa0  28 ac 20 2d 31 29 0d 17  8e 1d 20 20 20 20 20 20  |(. -1)....      |
00004ab0  20 20 42 20 20 20 20 20  20 20 65 6e 64 66 69 6c  |  B       endfil|
00004ac0  74 65 72 0d 17 98 04 0d  17 a2 0d 2e 72 65 74 75  |ter.........retu|
00004ad0  72 6e 65 64 0d 17 ac 1e  20 20 20 20 20 20 20 20  |rned....        |
00004ae0  4c 44 52 20 20 20 20 20  52 32 2c 5b 52 31 2c 23  |LDR     R2,[R1,#|
00004af0  34 5d 0d 17 b6 26 20 20  20 20 20 20 20 20 4c 44  |4]...&        LD|
00004b00  52 20 20 20 20 20 52 33  2c 5b 52 31 32 2c 23 74  |R     R3,[R12,#t|
00004b10  6d 68 61 6e 64 6c 65 5d  0d 17 c0 19 20 20 20 20  |mhandle]....    |
00004b20  20 20 20 20 43 4d 50 20  20 20 20 20 52 32 2c 52  |    CMP     R2,R|
00004b30  33 0d 17 ca 1d 20 20 20  20 20 20 20 20 42 4e 45  |3....        BNE|
00004b40  20 20 20 20 20 65 6e 64  66 69 6c 74 65 72 0d 17  |     endfilter..|
00004b50  d4 29 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |.)        LDR   |
00004b60  20 20 52 32 2c 5b 52 31  32 2c 23 6d 6f 64 75 6c  |  R2,[R12,#modul|
00004b70  65 66 6c 61 67 73 5d 0d  17 de 21 20 20 20 20 20  |eflags]...!     |
00004b80  20 20 20 54 53 54 20 20  20 20 20 52 32 2c 23 74  |   TST     R2,#t|
00004b90  6d 6f 77 6e 64 72 61 67  0d 17 e8 33 20 20 20 20  |mowndrag...3    |
00004ba0  20 20 20 20 42 49 43 4e  45 20 20 20 52 32 2c 52  |    BICNE   R2,R|
00004bb0  32 2c 23 28 74 6d 6f 77  6e 64 72 61 67 20 84 20  |2,#(tmowndrag . |
00004bc0  74 6d 73 6f 6c 69 64 69  74 79 29 0d 17 f2 29 20  |tmsolidity)...) |
00004bd0  20 20 20 20 20 20 20 53  54 52 4e 45 20 20 20 52  |       STRNE   R|
00004be0  32 2c 5b 52 31 32 2c 23  6d 6f 64 75 6c 65 66 6c  |2,[R12,#modulefl|
00004bf0  61 67 73 5d 0d 17 fc 1e  20 20 20 20 20 20 20 20  |ags]....        |
00004c00  4d 56 4e 4e 45 20 20 20  52 30 2c 23 28 ac 20 2d  |MVNNE   R0,#(. -|
00004c10  31 29 0d 18 06 1d 20 20  20 20 20 20 20 20 42 20  |1)....        B |
00004c20  20 20 20 20 20 20 65 6e  64 66 69 6c 74 65 72 0d  |      endfilter.|
00004c30  18 10 04 0d 18 1a 12 2e  74 6d 61 64 64 6d 65 73  |........tmaddmes|
00004c40  73 61 67 65 73 0d 18 24  23 20 20 20 20 20 20 20  |sages..$#       |
00004c50  20 53 54 4d 46 44 20 20  20 28 73 70 29 21 2c 7b  | STMFD   (sp)!,{|
00004c60  52 30 2c 6c 69 6e 6b 7d  0d 18 2e 29 20 20 20 20  |R0,link}...)    |
00004c70  20 20 20 20 84 52 20 20  20 20 20 52 33 2c 52 33  |    .R     R3,R3|
00004c80  2c 23 74 6d 6d 65 73 73  61 67 65 73 61 64 64 65  |,#tmmessagesadde|
00004c90  64 0d 18 38 29 20 20 20  20 20 20 20 20 53 54 52  |d..8)        STR|
00004ca0  20 20 20 20 20 52 33 2c  5b 52 31 32 2c 23 6d 6f  |     R3,[R12,#mo|
00004cb0  64 75 6c 65 66 6c 61 67  73 5d 0d 18 42 21 20 20  |duleflags]..B!  |
00004cc0  20 20 20 20 20 20 41 44  52 20 20 20 20 20 52 30  |      ADR     R0|
00004cd0  2c 74 6d 6d 65 73 73 61  67 65 73 0d 18 4c 27 20  |,tmmessages..L' |
00004ce0  20 20 20 20 20 20 20 53  57 49 20 20 20 20 20 22  |       SWI     "|
00004cf0  58 57 69 6d 70 5f 41 64  64 4d 65 73 73 61 67 65  |XWimp_AddMessage|
00004d00  73 22 0d 18 56 21 20 20  20 20 20 20 20 20 4c 44  |s"..V!        LD|
00004d10  4d 46 44 20 20 20 28 73  70 29 21 2c 7b 52 30 2c  |MFD   (sp)!,{R0,|
00004d20  70 63 7d 0d 18 60 04 0d  18 6a 0c 2e 65 6e 64 64  |pc}..`...j..endd|
00004d30  72 61 67 0d 18 74 29 20  20 20 20 20 20 20 20 4c  |rag..t)        L|
00004d40  44 52 20 20 20 20 20 52  32 2c 5b 52 31 32 2c 23  |DR     R2,[R12,#|
00004d50  6d 6f 64 75 6c 65 66 6c  61 67 73 5d 0d 18 7e 21  |moduleflags]..~!|
00004d60  20 20 20 20 20 20 20 20  54 53 54 20 20 20 20 20  |        TST     |
00004d70  52 32 2c 23 74 6d 6f 77  6e 64 72 61 67 0d 18 88  |R2,#tmowndrag...|
00004d80  1d 20 20 20 20 20 20 20  20 42 45 51 20 20 20 20  |.        BEQ    |
00004d90  20 65 6e 64 66 69 6c 74  65 72 0d 18 92 22 20 20  | endfilter..."  |
00004da0  20 20 20 20 20 20 54 53  54 20 20 20 20 20 52 32  |      TST     R2|
00004db0  2c 23 74 6d 73 6f 6c 69  64 69 74 79 0d 18 9c 27  |,#tmsolidity...'|
00004dc0  20 20 20 20 20 20 20 20  53 57 49 4e 45 20 20 20  |        SWINE   |
00004dd0  22 58 44 72 61 67 41 53  70 72 69 74 65 5f 53 74  |"XDragASprite_St|
00004de0  6f 70 22 0d 18 a6 2a 20  20 20 20 20 20 20 20 53  |op"...*        S|
00004df0  57 49 20 20 20 20 20 22  58 57 69 6d 70 5f 47 65  |WI     "XWimp_Ge|
00004e00  74 50 6f 69 6e 74 65 72  49 6e 66 6f 22 0d 18 b0  |tPointerInfo"...|
00004e10  1e 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |.        LDR    |
00004e20  20 52 30 2c 5b 52 31 2c  23 34 5d 0d 18 ba 1f 20  | R0,[R1,#4].... |
00004e30  20 20 20 20 20 20 20 53  54 52 20 20 20 20 20 52  |       STR     R|
00004e40  30 2c 5b 52 31 2c 23 33  32 5d 0d 18 c4 1e 20 20  |0,[R1,#32]....  |
00004e50  20 20 20 20 20 20 4c 44  52 20 20 20 20 20 52 30  |      LDR     R0|
00004e60  2c 5b 52 31 2c 23 30 5d  0d 18 ce 1f 20 20 20 20  |,[R1,#0]....    |
00004e70  20 20 20 20 53 54 52 20  20 20 20 20 52 30 2c 5b  |    STR     R0,[|
00004e80  52 31 2c 23 32 38 5d 0d  18 d8 1f 20 20 20 20 20  |R1,#28]....     |
00004e90  20 20 20 4c 44 52 20 20  20 20 20 52 30 2c 5b 52  |   LDR     R0,[R|
00004ea0  31 2c 23 31 36 5d 0d 18  e2 1f 20 20 20 20 20 20  |1,#16]....      |
00004eb0  20 20 53 54 52 20 20 20  20 20 52 30 2c 5b 52 31  |  STR     R0,[R1|
00004ec0  2c 23 32 34 5d 0d 18 ec  1f 20 20 20 20 20 20 20  |,#24]....       |
00004ed0  20 4c 44 52 20 20 20 20  20 52 30 2c 5b 52 31 2c  | LDR     R0,[R1,|
00004ee0  23 31 32 5d 0d 18 f6 1f  20 20 20 20 20 20 20 20  |#12]....        |
00004ef0  53 54 52 20 20 20 20 20  52 30 2c 5b 52 31 2c 23  |STR     R0,[R1,#|
00004f00  32 30 5d 0d 19 00 19 20  20 20 20 20 20 20 20 4d  |20]....        M|
00004f10  4f 56 20 20 20 20 20 52  30 2c 23 31 0d 19 0a 1f  |OV     R0,#1....|
00004f20  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
00004f30  52 30 2c 5b 52 31 2c 23  31 36 5d 0d 19 14 19 20  |R0,[R1,#16].... |
00004f40  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00004f50  30 2c 23 30 0d 19 1e 1f  20 20 20 20 20 20 20 20  |0,#0....        |
00004f60  53 54 52 20 20 20 20 20  52 30 2c 5b 52 31 2c 23  |STR     R0,[R1,#|
00004f70  31 32 5d 0d 19 28 1f 20  20 20 20 20 20 20 20 53  |12]..(.        S|
00004f80  54 52 20 20 20 20 20 52  30 2c 5b 52 31 2c 23 33  |TR     R0,[R1,#3|
00004f90  36 5d 0d 19 32 1f 20 20  20 20 20 20 20 20 53 54  |6]..2.        ST|
00004fa0  52 20 20 20 20 20 52 30  2c 5b 52 31 2c 23 34 30  |R     R0,[R1,#40|
00004fb0  5d 0d 19 3c 1f 20 20 20  20 20 20 20 20 53 54 52  |]..<.        STR|
00004fc0  20 20 20 20 20 52 30 2c  5b 52 31 2c 23 34 34 5d  |     R0,[R1,#44]|
00004fd0  0d 19 46 1a 20 20 20 20  20 20 20 20 4d 4f 56 20  |..F.        MOV |
00004fe0  20 20 20 20 52 30 2c 23  36 30 0d 19 50 1e 20 20  |    R0,#60..P.  |
00004ff0  20 20 20 20 20 20 53 54  52 20 20 20 20 20 52 30  |      STR     R0|
00005000  2c 5b 52 31 2c 23 30 5d  0d 19 5a 1a 20 20 20 20  |,[R1,#0]..Z.    |
00005010  20 20 20 20 4d 4f 56 20  20 20 20 20 52 30 2c 23  |    MOV     R0,#|
00005020  31 38 0d 19 64 1f 20 20  20 20 20 20 20 20 4c 44  |18..d.        LD|
00005030  52 20 20 20 20 20 52 32  2c 5b 52 31 2c 23 32 30  |R     R2,[R1,#20|
00005040  5d 0d 19 6e 27 20 20 20  20 20 20 20 20 53 57 49  |]..n'        SWI|
00005050  20 20 20 20 20 22 58 57  69 6d 70 5f 53 65 6e 64  |     "XWimp_Send|
00005060  4d 65 73 73 61 67 65 22  0d 19 78 1e 20 20 20 20  |Message"..x.    |
00005070  20 20 20 20 4d 56 4e 20  20 20 20 20 52 30 2c 23  |    MVN     R0,#|
00005080  28 ac 20 2d 31 29 0d 19  82 1d 20 20 20 20 20 20  |(. -1)....      |
00005090  20 20 42 20 20 20 20 20  20 20 65 6e 64 66 69 6c  |  B       endfil|
000050a0  74 65 72 0d 19 8c 04 0d  19 96 0f 2e 74 6d 6d 65  |ter.........tmme|
000050b0  73 73 61 67 65 73 0d 19  a0 15 20 20 20 20 20 20  |ssages....      |
000050c0  20 20 45 51 55 44 20 20  20 20 31 0d 19 aa 15 20  |  EQUD    1.... |
000050d0  20 20 20 20 20 20 20 45  51 55 44 20 20 20 20 30  |       EQUD    0|
000050e0  0d 19 b4 04 0d 19 be 11  2e 74 6d 6d 6f 75 73 65  |.........tmmouse|
000050f0  63 6c 69 63 6b 0d 19 c8  1f 20 20 20 20 20 20 20  |click....       |
00005100  20 4c 44 52 20 20 20 20  20 52 32 2c 5b 52 31 2c  | LDR     R2,[R1,|
00005110  23 31 32 5d 0d 19 d2 19  20 20 20 20 20 20 20 20  |#12]....        |
00005120  43 4d 4e 20 20 20 20 20  52 32 2c 23 32 0d 19 dc  |CMN     R2,#2...|
00005130  1d 20 20 20 20 20 20 20  20 42 4e 45 20 20 20 20  |.        BNE    |
00005140  20 65 6e 64 66 69 6c 74  65 72 0d 19 e6 1e 20 20  | endfilter....  |
00005150  20 20 20 20 20 20 4c 44  52 20 20 20 20 20 52 32  |      LDR     R2|
00005160  2c 5b 52 31 2c 23 38 5d  0d 19 f0 19 20 20 20 20  |,[R1,#8]....    |
00005170  20 20 20 20 54 45 51 20  20 20 20 20 52 32 2c 23  |    TEQ     R2,#|
00005180  31 0d 19 fa 1d 20 20 20  20 20 20 20 20 42 4e 45  |1....        BNE|
00005190  20 20 20 20 20 65 6e 64  66 69 6c 74 65 72 0d 1a  |     endfilter..|
000051a0  04 19 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |..        MOV   |
000051b0  20 20 52 35 2c 52 31 0d  1a 0e 1f 20 20 20 20 20  |  R5,R1....     |
000051c0  20 20 20 4c 44 52 20 20  20 20 20 52 30 2c 5b 52  |   LDR     R0,[R|
000051d0  35 2c 23 31 32 5d 0d 1a  18 1e 20 20 20 20 20 20  |5,#12]....      |
000051e0  20 20 53 54 52 20 20 20  20 20 52 30 2c 5b 52 35  |  STR     R0,[R5|
000051f0  2c 23 30 5d 0d 1a 22 1f  20 20 20 20 20 20 20 20  |,#0]..".        |
00005200  4c 44 52 20 20 20 20 20  52 34 2c 5b 52 35 2c 23  |LDR     R4,[R5,#|
00005210  31 36 5d 0d 1a 2c 2a 20  20 20 20 20 20 20 20 53  |16]..,*        S|
00005220  57 49 20 20 20 20 20 22  58 57 69 6d 70 5f 47 65  |WI     "XWimp_Ge|
00005230  74 57 69 6e 64 6f 77 53  74 61 74 65 22 0d 1a 36  |tWindowState"..6|
00005240  1e 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |.        LDR    |
00005250  20 52 32 2c 5b 52 35 2c  23 34 5d 0d 1a 40 1f 20  | R2,[R5,#4]..@. |
00005260  20 20 20 20 20 20 20 4c  44 52 20 20 20 20 20 52  |       LDR     R|
00005270  30 2c 5b 52 35 2c 23 32  30 5d 0d 1a 4a 1c 20 20  |0,[R5,#20]..J.  |
00005280  20 20 20 20 20 20 53 55  42 20 20 20 20 20 52 32  |      SUB     R2|
00005290  2c 52 32 2c 52 30 0d 1a  54 1f 20 20 20 20 20 20  |,R2,R0..T.      |
000052a0  20 20 4c 44 52 20 20 20  20 20 52 33 2c 5b 52 35  |  LDR     R3,[R5|
000052b0  2c 23 31 36 5d 0d 1a 5e  1f 20 20 20 20 20 20 20  |,#16]..^.       |
000052c0  20 4c 44 52 20 20 20 20  20 52 30 2c 5b 52 35 2c  | LDR     R0,[R5,|
000052d0  23 32 34 5d 0d 1a 68 1c  20 20 20 20 20 20 20 20  |#24]..h.        |
000052e0  53 55 42 20 20 20 20 20  52 33 2c 52 33 2c 52 30  |SUB     R3,R3,R0|
000052f0  0d 1a 72 1e 20 20 20 20  20 20 20 20 53 54 52 20  |..r.        STR |
00005300  20 20 20 20 52 34 2c 5b  52 35 2c 23 34 5d 0d 1a  |    R4,[R5,#4]..|
00005310  7c 28 20 20 20 20 20 20  20 20 53 57 49 20 20 20  ||(        SWI   |
00005320  20 20 22 58 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |  "XWimp_GetIcon|
00005330  53 74 61 74 65 22 0d 1a  86 19 20 20 20 20 20 20  |State"....      |
00005340  20 20 4d 4f 56 20 20 20  20 20 52 30 2c 23 30 0d  |  MOV     R0,#0.|
00005350  1a 90 1e 20 20 20 20 20  20 20 20 53 54 52 20 20  |...        STR  |
00005360  20 20 20 52 30 2c 5b 52  35 2c 23 30 5d 0d 1a 9a  |   R0,[R5,#0]...|
00005370  19 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |.        MOV    |
00005380  20 52 30 2c 23 35 0d 1a  a4 1e 20 20 20 20 20 20  | R0,#5....      |
00005390  20 20 53 54 52 20 20 20  20 20 52 30 2c 5b 52 35  |  STR     R0,[R5|
000053a0  2c 23 34 5d 0d 1a ae 1e  20 20 20 20 20 20 20 20  |,#4]....        |
000053b0  4c 44 52 20 20 20 20 20  52 30 2c 5b 52 35 2c 23  |LDR     R0,[R5,#|
000053c0  38 5d 0d 1a b8 1c 20 20  20 20 20 20 20 20 41 44  |8]....        AD|
000053d0  44 20 20 20 20 20 52 30  2c 52 30 2c 52 32 0d 1a  |D     R0,R0,R2..|
000053e0  c2 1e 20 20 20 20 20 20  20 20 53 54 52 20 20 20  |..        STR   |
000053f0  20 20 52 30 2c 5b 52 35  2c 23 38 5d 0d 1a cc 1f  |  R0,[R5,#8]....|
00005400  20 20 20 20 20 20 20 20  4c 44 52 20 20 20 20 20  |        LDR     |
00005410  52 30 2c 5b 52 35 2c 23  31 32 5d 0d 1a d6 1c 20  |R0,[R5,#12].... |
00005420  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 52  |       ADD     R|
00005430  30 2c 52 30 2c 52 33 0d  1a e0 1f 20 20 20 20 20  |0,R0,R3....     |
00005440  20 20 20 53 54 52 20 20  20 20 20 52 30 2c 5b 52  |   STR     R0,[R|
00005450  35 2c 23 31 32 5d 0d 1a  ea 1f 20 20 20 20 20 20  |5,#12]....      |
00005460  20 20 4c 44 52 20 20 20  20 20 52 30 2c 5b 52 35  |  LDR     R0,[R5|
00005470  2c 23 31 36 5d 0d 1a f4  1c 20 20 20 20 20 20 20  |,#16]....       |
00005480  20 41 44 44 20 20 20 20  20 52 30 2c 52 30 2c 52  | ADD     R0,R0,R|
00005490  32 0d 1a fe 1f 20 20 20  20 20 20 20 20 53 54 52  |2....        STR|
000054a0  20 20 20 20 20 52 30 2c  5b 52 35 2c 23 31 36 5d  |     R0,[R5,#16]|
000054b0  0d 1b 08 1f 20 20 20 20  20 20 20 20 4c 44 52 20  |....        LDR |
000054c0  20 20 20 20 52 30 2c 5b  52 35 2c 23 32 30 5d 0d  |    R0,[R5,#20].|
000054d0  1b 12 1c 20 20 20 20 20  20 20 20 41 44 44 20 20  |...        ADD  |
000054e0  20 20 20 52 30 2c 52 30  2c 52 33 0d 1b 1c 1f 20  |   R0,R0,R3.... |
000054f0  20 20 20 20 20 20 20 53  54 52 20 20 20 20 20 52  |       STR     R|
00005500  30 2c 5b 52 35 2c 23 32  30 5d 0d 1b 26 19 20 20  |0,[R5,#20]..&.  |
00005510  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 52 30  |      MOV     R0|
00005520  2c 23 30 0d 1b 30 1f 20  20 20 20 20 20 20 20 53  |,#0..0.        S|
00005530  54 52 20 20 20 20 20 52  30 2c 5b 52 35 2c 23 32  |TR     R0,[R5,#2|
00005540  34 5d 0d 1b 3a 19 20 20  20 20 20 20 20 20 4d 4f  |4]..:.        MO|
00005550  56 20 20 20 20 20 52 30  2c 23 30 0d 1b 44 1f 20  |V     R0,#0..D. |
00005560  20 20 20 20 20 20 20 53  54 52 20 20 20 20 20 52  |       STR     R|
00005570  30 2c 5b 52 35 2c 23 32  38 5d 0d 1b 4e 1d 20 20  |0,[R5,#28]..N.  |
00005580  20 20 20 20 20 20 42 4c  20 20 20 20 20 20 73 63  |      BL      sc|
00005590  72 65 65 6e 6d 61 78 0d  1b 58 1f 20 20 20 20 20  |reenmax..X.     |
000055a0  20 20 20 53 54 52 20 20  20 20 20 52 33 2c 5b 52  |   STR     R3,[R|
000055b0  35 2c 23 33 32 5d 0d 1b  62 1f 20 20 20 20 20 20  |5,#32]..b.      |
000055c0  20 20 53 54 52 20 20 20  20 20 52 34 2c 5b 52 35  |  STR     R4,[R5|
000055d0  2c 23 33 36 5d 0d 1b 6c  1b 20 20 20 20 20 20 20  |,#36]..l.       |
000055e0  20 4d 4f 56 20 20 20 20  20 52 30 2c 23 31 36 31  | MOV     R0,#161|
000055f0  0d 1b 76 1a 20 20 20 20  20 20 20 20 4d 4f 56 20  |..v.        MOV |
00005600  20 20 20 20 52 31 2c 23  32 38 0d 1b 80 1e 20 20  |    R1,#28....  |
00005610  20 20 20 20 20 20 53 57  49 20 20 20 20 20 22 58  |      SWI     "X|
00005620  4f 53 5f 42 79 74 65 22  0d 1b 8a 1a 20 20 20 20  |OS_Byte"....    |
00005630  20 20 20 20 80 20 20 20  20 20 52 32 2c 52 32 2c  |    .     R2,R2,|
00005640  23 32 0d 1b 94 19 20 20  20 20 20 20 20 20 43 4d  |#2....        CM|
00005650  50 20 20 20 20 20 52 32  2c 23 30 0d 1b 9e 1d 20  |P     R2,#0.... |
00005660  20 20 20 20 20 20 20 42  4e 45 20 20 20 20 20 73  |       BNE     s|
00005670  6f 6c 69 64 64 72 61 67  0d 1b a8 04 0d 1b b2 11  |oliddrag........|
00005680  2e 6f 72 64 69 6e 61 72  79 64 72 61 67 0d 1b bc  |.ordinarydrag...|
00005690  19 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |.        MOV    |
000056a0  20 52 31 2c 52 35 0d 1b  c6 23 20 20 20 20 20 20  | R1,R5...#      |
000056b0  20 20 53 57 49 20 20 20  20 20 22 58 57 69 6d 70  |  SWI     "XWimp|
000056c0  5f 44 72 61 67 42 6f 78  22 0d 1b d0 29 20 20 20  |_DragBox"...)   |
000056d0  20 20 20 20 20 4c 44 52  20 20 20 20 20 52 30 2c  |     LDR     R0,|
000056e0  5b 52 31 32 2c 23 6d 6f  64 75 6c 65 66 6c 61 67  |[R12,#moduleflag|
000056f0  73 5d 0d 1b da 25 20 20  20 20 20 20 20 20 42 49  |s]...%        BI|
00005700  43 20 20 20 20 20 52 30  2c 52 30 2c 23 74 6d 73  |C     R0,R0,#tms|
00005710  6f 6c 69 64 69 74 79 0d  1b e4 23 20 20 20 20 20  |olidity...#     |
00005720  20 20 20 84 52 20 20 20  20 20 52 30 2c 52 30 2c  |   .R     R0,R0,|
00005730  23 74 6d 6f 77 6e 64 72  61 67 0d 1b ee 29 20 20  |#tmowndrag...)  |
00005740  20 20 20 20 20 20 53 54  52 20 20 20 20 20 52 30  |      STR     R0|
00005750  2c 5b 52 31 32 2c 23 6d  6f 64 75 6c 65 66 6c 61  |,[R12,#modulefla|
00005760  67 73 5d 0d 1b f8 1e 20  20 20 20 20 20 20 20 4d  |gs]....        M|
00005770  56 4e 20 20 20 20 20 52  30 2c 23 28 ac 20 2d 31  |VN     R0,#(. -1|
00005780  29 0d 1c 02 1d 20 20 20  20 20 20 20 20 42 20 20  |)....        B  |
00005790  20 20 20 20 20 65 6e 64  66 69 6c 74 65 72 0d 1c  |     endfilter..|
000057a0  0c 04 0d 1c 16 0e 2e 73  6f 6c 69 64 64 72 61 67  |.......soliddrag|
000057b0  0d 1c 20 21 20 20 20 20  20 20 20 20 4c 44 52 20  |.. !        LDR |
000057c0  20 20 20 20 52 30 2c 73  6f 6c 69 64 66 6c 61 67  |    R0,solidflag|
000057d0  73 0d 1c 2a 19 20 20 20  20 20 20 20 20 4d 4f 56  |s..*.        MOV|
000057e0  20 20 20 20 20 52 31 2c  23 31 0d 1c 34 21 20 20  |     R1,#1..4!  |
000057f0  20 20 20 20 20 20 41 44  52 20 20 20 20 20 52 32  |      ADR     R2|
00005800  2c 73 70 72 69 74 65 6e  61 6d 65 0d 1c 3e 1c 20  |,spritename..>. |
00005810  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 52  |       ADD     R|
00005820  33 2c 52 35 2c 23 38 0d  1c 48 28 20 20 20 20 20  |3,R5,#8..H(     |
00005830  20 20 20 53 57 49 20 20  20 20 20 22 58 44 72 61  |   SWI     "XDra|
00005840  67 41 53 70 72 69 74 65  5f 53 74 61 72 74 22 0d  |gASprite_Start".|
00005850  1c 52 29 20 20 20 20 20  20 20 20 4c 44 52 20 20  |.R)        LDR  |
00005860  20 20 20 52 30 2c 5b 52  31 32 2c 23 6d 6f 64 75  |   R0,[R12,#modu|
00005870  6c 65 66 6c 61 67 73 5d  0d 1c 5c 32 20 20 20 20  |leflags]..\2    |
00005880  20 20 20 20 84 52 20 20  20 20 20 52 30 2c 52 30  |    .R     R0,R0|
00005890  2c 23 28 74 6d 6f 77 6e  64 72 61 67 20 84 20 74  |,#(tmowndrag . t|
000058a0  6d 73 6f 6c 69 64 69 74  79 29 0d 1c 66 29 20 20  |msolidity)..f)  |
000058b0  20 20 20 20 20 20 53 54  52 20 20 20 20 20 52 30  |      STR     R0|
000058c0  2c 5b 52 31 32 2c 23 6d  6f 64 75 6c 65 66 6c 61  |,[R12,#modulefla|
000058d0  67 73 5d 0d 1c 70 1e 20  20 20 20 20 20 20 20 4d  |gs]..p.        M|
000058e0  56 4e 20 20 20 20 20 52  30 2c 23 28 ac 20 2d 31  |VN     R0,#(. -1|
000058f0  29 0d 1c 7a 1d 20 20 20  20 20 20 20 20 42 20 20  |)..z.        B  |
00005900  20 20 20 20 20 65 6e 64  66 69 6c 74 65 72 0d 1c  |     endfilter..|
00005910  84 04 0d 1c 8e 0f 2e 73  6f 6c 69 64 66 6c 61 67  |.......solidflag|
00005920  73 0d 1c 98 1d 20 20 20  20 20 20 20 20 45 51 55  |s....        EQU|
00005930  44 20 20 20 20 25 31 31  30 30 31 30 31 30 0d 1c  |D    %11001010..|
00005940  a2 04 0d 1c ac 0f 2e 73  70 72 69 74 65 6e 61 6d  |.......spritenam|
00005950  65 0d 1c b6 1e 20 20 20  20 20 20 20 20 45 51 55  |e....        EQU|
00005960  53 20 20 20 20 22 73 77  69 74 63 68 65 72 22 0d  |S    "switcher".|
00005970  1c c0 15 20 20 20 20 20  20 20 20 45 51 55 42 20  |...        EQUB |
00005980  20 20 20 30 0d 1c ca 11  20 20 20 20 20 20 20 20  |   0....        |
00005990  41 4c 49 47 4e 0d 1c d4  04 0d 1c de 46 2e 73 63  |ALIGN.......F.sc|
000059a0  72 65 65 6e 6d 61 78 20  20 20 20 20 20 20 20 20  |reenmax         |
000059b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000059c0  20 20 20 20 20 20 20 20  20 20 20 3b 20 72 65 74  |           ; ret|
000059d0  75 72 6e 73 20 6d 61 78  78 20 69 6e 20 72 33 0d  |urns maxx in r3.|
000059e0  1c e8 3e 20 20 20 20 20  20 20 20 53 54 4d 46 44  |..>        STMFD|
000059f0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 32 2c 52  |   R13!,{R0-R2,R|
00005a00  35 2d 52 31 32 2c 6c 69  6e 6b 7d 20 20 20 20 20  |5-R12,link}     |
00005a10  20 3b 20 6d 61 78 79 20  69 6e 20 72 34 0d 1c f2  | ; maxy in r4...|
00005a20  1e 20 20 20 20 20 20 20  20 4d 56 4e 20 20 20 20  |.        MVN    |
00005a30  20 52 30 2c 23 28 ac 20  2d 31 29 0d 1c fc 1a 20  | R0,#(. -1).... |
00005a40  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00005a50  31 2c 23 31 31 0d 1d 06  2a 20 20 20 20 20 20 20  |1,#11...*       |
00005a60  20 53 57 49 20 20 20 20  20 22 58 4f 53 5f 52 65  | SWI     "XOS_Re|
00005a70  61 64 4d 6f 64 65 56 61  72 69 61 62 6c 65 22 0d  |adModeVariable".|
00005a80  1d 10 1c 20 20 20 20 20  20 20 20 41 44 44 20 20  |...        ADD  |
00005a90  20 20 20 52 36 2c 52 32  2c 23 31 0d 1d 1a 19 20  |   R6,R2,#1.... |
00005aa0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 52  |       MOV     R|
00005ab0  31 2c 23 34 0d 1d 24 2a  20 20 20 20 20 20 20 20  |1,#4..$*        |
00005ac0  53 57 49 20 20 20 20 20  22 58 4f 53 5f 52 65 61  |SWI     "XOS_Rea|
00005ad0  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 22 0d 1d  |dModeVariable"..|
00005ae0  2e 20 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |.         MOV   |
00005af0  20 20 52 33 2c 52 36 2c  4c 53 4c 20 52 32 0d 1d  |  R3,R6,LSL R2..|
00005b00  38 1a 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |8.        MOV   |
00005b10  20 20 52 31 2c 23 31 32  0d 1d 42 2a 20 20 20 20  |  R1,#12..B*    |
00005b20  20 20 20 20 53 57 49 20  20 20 20 20 22 58 4f 53  |    SWI     "XOS|
00005b30  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
00005b40  65 22 0d 1d 4c 1c 20 20  20 20 20 20 20 20 41 44  |e"..L.        AD|
00005b50  44 20 20 20 20 20 52 36  2c 52 32 2c 23 31 0d 1d  |D     R6,R2,#1..|
00005b60  56 19 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |V.        MOV   |
00005b70  20 20 52 31 2c 23 35 0d  1d 60 2a 20 20 20 20 20  |  R1,#5..`*     |
00005b80  20 20 20 53 57 49 20 20  20 20 20 22 58 4f 53 5f  |   SWI     "XOS_|
00005b90  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
00005ba0  22 0d 1d 6a 20 20 20 20  20 20 20 20 20 4d 4f 56  |"..j         MOV|
00005bb0  20 20 20 20 20 52 34 2c  52 36 2c 4c 53 4c 20 52  |     R4,R6,LSL R|
00005bc0  32 0d 1d 74 2a 20 20 20  20 20 20 20 20 4c 44 4d  |2..t*        LDM|
00005bd0  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 32  |FD   R13!,{R0-R2|
00005be0  2c 52 35 2d 52 31 32 2c  70 63 7d 0d 1d 7e 04 0d  |,R5-R12,pc}..~..|
00005bf0  1d 88 0e 2e 66 69 6e 61  6c 63 6f 64 65 0d 1d 92  |....finalcode...|
00005c00  27 20 20 20 20 20 20 20  20 53 54 4d 46 44 20 20  |'        STMFD  |
00005c10  20 28 73 70 29 21 2c 7b  52 37 2d 52 31 31 2c 6c  | (sp)!,{R7-R11,l|
00005c20  69 6e 6b 7d 0d 1d 9c 1d  20 20 20 20 20 20 20 20  |ink}....        |
00005c30  4c 44 52 20 20 20 20 20  52 31 32 2c 5b 52 31 32  |LDR     R12,[R12|
00005c40  5d 0d 1d a6 26 20 20 20  20 20 20 20 20 4c 44 52  |]...&        LDR|
00005c50  20 20 20 20 20 52 30 2c  5b 52 31 32 2c 23 6d 79  |     R0,[R12,#my|
00005c60  68 61 6e 64 6c 65 5d 0d  1d b0 19 20 20 20 20 20  |handle]....     |
00005c70  20 20 20 54 45 51 20 20  20 20 20 52 30 2c 23 30  |   TEQ     R0,#0|
00005c80  0d 1d ba 1d 20 20 20 20  20 20 20 20 42 4c 45 20  |....        BLE |
00005c90  20 20 20 20 66 69 6e 61  6c 73 6b 69 70 0d 1d c4  |    finalskip...|
00005ca0  1b 20 20 20 20 20 20 20  20 4c 44 52 20 20 20 20  |.        LDR    |
00005cb0  20 52 31 2c 74 61 73 6b  0d 1d ce 25 20 20 20 20  | R1,task...%    |
00005cc0  20 20 20 20 53 57 49 20  20 20 20 20 22 58 57 69  |    SWI     "XWi|
00005cd0  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 22 0d 1d d8  |mp_CloseDown"...|
00005ce0  22 20 20 20 20 20 20 20  20 42 4c 20 20 20 20 20  |"        BL     |
00005cf0  20 74 6d 66 69 6c 74 65  72 72 65 6d 6f 76 65 0d  | tmfilterremove.|
00005d00  1d e2 22 20 20 20 20 20  20 20 20 42 4c 20 20 20  |.."        BL   |
00005d10  20 20 20 70 61 66 69 6c  74 65 72 72 65 6d 6f 76  |   pafilterremov|
00005d20  65 0d 1d ec 22 20 20 20  20 20 20 20 20 42 4c 20  |e..."        BL |
00005d30  20 20 20 20 20 66 61 66  69 6c 74 65 72 72 65 6d  |     fafilterrem|
00005d40  6f 76 65 0d 1d f6 0e 2e  66 69 6e 61 6c 73 6b 69  |ove.....finalski|
00005d50  70 0d 1e 00 19 20 20 20  20 20 20 20 20 4d 4f 56  |p....        MOV|
00005d60  20 20 20 20 20 52 31 2c  23 30 0d 1e 0a 26 20 20  |     R1,#0...&  |
00005d70  20 20 20 20 20 20 53 54  52 20 20 20 20 20 52 31  |      STR     R1|
00005d80  2c 5b 52 31 32 2c 23 6d  79 68 61 6e 64 6c 65 5d  |,[R12,#myhandle]|
00005d90  0d 1e 14 19 20 20 20 20  20 20 20 20 4d 4f 56 20  |....        MOV |
00005da0  20 20 20 20 52 30 2c 23  37 0d 1e 1e 1a 20 20 20  |    R0,#7....   |
00005db0  20 20 20 20 20 4d 4f 56  20 20 20 20 20 52 32 2c  |     MOV     R2,|
00005dc0  52 31 32 0d 1e 28 20 20  20 20 20 20 20 20 20 53  |R12..(         S|
00005dd0  57 49 20 20 20 20 20 22  58 4f 53 5f 4d 6f 64 75  |WI     "XOS_Modu|
00005de0  6c 65 22 0d 1e 32 25 20  20 20 20 20 20 20 20 4c  |le"..2%        L|
00005df0  44 4d 46 44 20 20 20 28  73 70 29 21 2c 7b 52 37  |DMFD   (sp)!,{R7|
00005e00  2d 52 31 31 2c 70 63 7d  0d 1e 3c 04 0d 1e 46 10  |-R11,pc}..<...F.|
00005e10  2e 73 65 72 76 69 63 65  63 6f 64 65 0d 1e 50 20  |.servicecode..P |
00005e20  20 20 20 20 20 20 20 20  53 54 4d 46 44 20 20 20  |        STMFD   |
00005e30  28 73 70 29 21 2c 7b 6c  69 6e 6b 7d 0d 1e 5a 1d  |(sp)!,{link}..Z.|
00005e40  20 20 20 20 20 20 20 20  4c 44 52 20 20 20 20 20  |        LDR     |
00005e50  52 31 32 2c 5b 52 31 32  5d 0d 1e 64 1b 20 20 20  |R12,[R12]..d.   |
00005e60  20 20 20 20 20 54 45 51  20 20 20 20 20 52 31 2c  |     TEQ     R1,|
00005e70  23 26 34 39 0d 1e 6e 1d  20 20 20 20 20 20 20 20  |#&49..n.        |
00005e80  42 45 51 20 20 20 20 20  73 74 61 72 74 77 69 6d  |BEQ     startwim|
00005e90  70 0d 1e 78 1b 20 20 20  20 20 20 20 20 54 45 51  |p..x.        TEQ|
00005ea0  20 20 20 20 20 52 31 2c  23 26 34 41 0d 1e 82 1f  |     R1,#&4A....|
00005eb0  20 20 20 20 20 20 20 20  42 45 51 20 20 20 20 20  |        BEQ     |
00005ec0  73 74 61 72 74 65 64 77  69 6d 70 0d 1e 8c 1b 20  |startedwimp.... |
00005ed0  20 20 20 20 20 20 20 54  45 51 20 20 20 20 20 52  |       TEQ     R|
00005ee0  31 2c 23 26 38 37 0d 1e  96 1e 20 20 20 20 20 20  |1,#&87....      |
00005ef0  20 20 42 4c 45 51 20 20  20 20 69 6e 73 74 61 6c  |  BLEQ    instal|
00005f00  6c 61 6c 6c 0d 1e a0 1b  20 20 20 20 20 20 20 20  |lall....        |
00005f10  54 45 51 20 20 20 20 20  52 31 2c 23 26 38 38 0d  |TEQ     R1,#&88.|
00005f20  1e aa 26 20 20 20 20 20  20 20 20 42 45 51 20 20  |..&        BEQ  |
00005f30  20 20 20 66 69 6c 74 65  72 6d 61 6e 61 67 65 72  |   filtermanager|
00005f40  64 79 69 6e 67 0d 1e b4  1b 20 20 20 20 20 20 20  |dying....       |
00005f50  20 54 45 51 20 20 20 20  20 52 31 2c 23 26 32 37  | TEQ     R1,#&27|
00005f60  0d 1e be 1e 20 20 20 20  20 20 20 20 4c 44 4d 4e  |....        LDMN|
00005f70  45 46 44 20 28 73 70 29  21 2c 7b 70 63 7d 0d 1e  |EFD (sp)!,{pc}..|
00005f80  c8 1a 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |..        MOV   |
00005f90  20 20 52 31 34 2c 23 30  0d 1e d2 27 20 20 20 20  |  R14,#0...'    |
00005fa0  20 20 20 20 53 54 52 20  20 20 20 20 52 31 34 2c  |    STR     R14,|
00005fb0  5b 52 31 32 2c 23 6d 79  68 61 6e 64 6c 65 5d 0d  |[R12,#myhandle].|
00005fc0  1e dc 22 20 20 20 20 20  20 20 20 42 4c 20 20 20  |.."        BL   |
00005fd0  20 20 20 74 6d 66 69 6c  74 65 72 72 65 6d 6f 76  |   tmfilterremov|
00005fe0  65 0d 1e e6 22 20 20 20  20 20 20 20 20 42 4c 20  |e..."        BL |
00005ff0  20 20 20 20 20 70 61 66  69 6c 74 65 72 72 65 6d  |     pafilterrem|
00006000  6f 76 65 0d 1e f0 22 20  20 20 20 20 20 20 20 42  |ove..."        B|
00006010  4c 20 20 20 20 20 20 66  61 66 69 6c 74 65 72 72  |L      fafilterr|
00006020  65 6d 6f 76 65 0d 1e fa  1e 20 20 20 20 20 20 20  |emove....       |
00006030  20 4c 44 4d 46 44 20 20  20 28 73 70 29 21 2c 7b  | LDMFD   (sp)!,{|
00006040  70 63 7d 0d 1f 04 04 0d  1f 0e 17 2e 66 69 6c 74  |pc}.........filt|
00006050  65 72 6d 61 6e 61 67 65  72 64 79 69 6e 67 0d 1f  |ermanagerdying..|
00006060  18 29 20 20 20 20 20 20  20 20 4c 44 52 20 20 20  |.)        LDR   |
00006070  20 20 52 33 2c 5b 52 31  32 2c 23 6d 6f 64 75 6c  |  R3,[R12,#modul|
00006080  65 66 6c 61 67 73 5d 0d  1f 22 56 20 20 20 20 20  |eflags].."V     |
00006090  20 20 20 42 49 43 20 20  20 20 20 52 33 2c 52 33  |   BIC     R3,R3|
000060a0  2c 23 28 74 6d 66 69 6c  74 65 72 69 6e 73 74 61  |,#(tmfilterinsta|
000060b0  6c 6c 65 64 20 84 20 70  61 66 69 6c 74 65 72 69  |lled . pafilteri|
000060c0  6e 73 74 61 6c 6c 65 64  20 84 20 66 61 66 69 6c  |nstalled . fafil|
000060d0  74 65 72 69 6e 73 74 61  6c 6c 65 64 29 0d 1f 2c  |terinstalled)..,|
000060e0  28 20 20 20 20 20 20 20  20 42 49 43 20 20 20 20  |(        BIC    |
000060f0  20 52 33 2c 52 33 2c 23  66 61 72 65 70 6c 61 63  | R3,R3,#fareplac|
00006100  65 61 62 6c 65 0d 1f 36  29 20 20 20 20 20 20 20  |eable..6)       |
00006110  20 53 54 52 20 20 20 20  20 52 33 2c 5b 52 31 32  | STR     R3,[R12|
00006120  2c 23 6d 6f 64 75 6c 65  66 6c 61 67 73 5d 0d 1f  |,#moduleflags]..|
00006130  40 1e 20 20 20 20 20 20  20 20 4c 44 4d 46 44 20  |@.        LDMFD |
00006140  20 20 28 73 70 29 21 2c  7b 70 63 7d 0d 1f 4a 04  |  (sp)!,{pc}..J.|
00006150  0d 1f 54 10 2e 73 74 61  72 74 65 64 77 69 6d 70  |..T..startedwimp|
00006160  0d 1f 5e 27 20 20 20 20  20 20 20 20 4c 44 52 20  |..^'        LDR |
00006170  20 20 20 20 52 31 34 2c  5b 52 31 32 2c 23 6d 79  |    R14,[R12,#my|
00006180  68 61 6e 64 6c 65 5d 0d  1f 68 1a 20 20 20 20 20  |handle]..h.     |
00006190  20 20 20 43 4d 4e 20 20  20 20 20 52 31 34 2c 23  |   CMN     R14,#|
000061a0  31 0d 1f 72 17 20 20 20  20 20 20 20 20 ec 51 20  |1..r.        .Q |
000061b0  20 20 52 31 34 2c 23 30  0d 1f 7c 27 20 20 20 20  |  R14,#0..|'    |
000061c0  20 20 20 20 53 54 52 45  51 20 20 20 52 31 34 2c  |    STREQ   R14,|
000061d0  5b 52 31 32 2c 23 6d 79  68 61 6e 64 6c 65 5d 0d  |[R12,#myhandle].|
000061e0  1f 86 1e 20 20 20 20 20  20 20 20 4c 44 4d 46 44  |...        LDMFD|
000061f0  20 20 20 28 73 70 29 21  2c 7b 70 63 7d 0d 1f 90  |   (sp)!,{pc}...|
00006200  04 0d 1f 9a 0b 2e 6d 79  6d 61 73 6b 0d 1f a4 29  |......mymask...)|
00006210  20 20 20 20 20 20 20 20  45 51 55 44 20 20 20 20  |        EQUD    |
00006220  25 31 30 30 30 30 30 31  31 31 30 30 31 30 31 31  |%100000111001011|
00006230  31 30 30 31 31 0d 1f ae  04 0d 1f b8 11 2e 74 6d  |10011.........tm|
00006240  66 69 6c 74 65 72 6d 61  73 6b 0d 1f c2 29 20 20  |filtermask...)  |
00006250  20 20 20 20 20 20 45 51  55 44 20 20 20 20 25 30  |      EQUD    %0|
00006260  30 30 30 30 30 31 31 31  30 30 31 30 30 31 31 30  |0000011100100110|
00006270  30 31 31 0d 1f cc 04 0d  1f d6 11 2e 70 61 66 69  |011.........pafi|
00006280  6c 74 65 72 6d 61 73 6b  0d 1f e0 29 20 20 20 20  |ltermask...)    |
00006290  20 20 20 20 45 51 55 44  20 20 20 20 25 31 30 31  |    EQUD    %101|
000062a0  30 30 30 31 31 31 30 30  31 30 30 31 31 30 30 31  |0001110010011001|
000062b0  31 0d 1f ea 04 0d 1f f4  11 2e 66 61 66 69 6c 74  |1.........fafilt|
000062c0  65 72 6d 61 73 6b 0d 1f  fe 29 20 20 20 20 20 20  |ermask...)      |
000062d0  20 20 45 51 55 44 20 20  20 20 25 31 31 30 30 30  |  EQUD    %11000|
000062e0  30 31 31 31 30 30 31 30  31 31 31 30 30 31 31 0d  |011100101110011.|
000062f0  20 08 04 0d 20 12 05 5d  0d 20 1c 0b ed 20 70 61  | ... ..]. ... pa|
00006300  73 73 25 0d 20 26 05 e1  0d ff                    |ss%. &....|
0000630a