home *** CD-ROM | disk | FTP | other *** search
-
- GET OS:Hdr.Filter
- AREA |ObjAsm$$code|, CODE, READONLY
- IMPORT |__RelocCode|
-
- EXPORT rm_init
- EXPORT rm_final
- IMPORT match
-
- GBLA no_messages
- no_messages SETA 0
- MACRO
- add_message $msg
- no_messages SETA no_messages+1
- message$no_messages = "$msg", 0
- ALIGN
- MEND
-
- GET hdr.masklist
-
- rm_title
- = "MaskThrowback", 0
- ALIGN
-
- event_mask * -1 :AND: (:NOT: (1<<17 :OR: 1<<18 :OR: 1<<19))
-
- rm_init
- stmfd sp!, {lr}
- bl |__RelocCode|
- adr r0, rm_title
- adr r1, filter
- mov r2, #0
- mov r3, #0
- mov r4, #event_mask
- swi XFilter_RegisterPostFilter
- mov r0, #0
- ldmfd sp!, {pc}
-
- rm_final
- stmfd sp!, {lr}
- adr r0, rm_title
- adr r1, filter
- mov r2, #0
- mov r3, #0
- mov r4, #event_mask
- swi XFilter_DeRegisterPostFilter
- mov r0, #0
- ldmfd sp!, {pc}
-
-
- message
- DCD &42583
-
- filter
- ; is this a wimp message?
- cmp r0, #17
- cmpne r0, #18
- cmpne r0, #19
- movnes pc, lr
- stmfd sp!, {r3-r4, lr}
-
- ; is this a throwback message?
- ldr r3, [r1, #16]
- ldr r4, message
- cmp r3, r4
- ldmnefds sp!, {r3-r4, pc}
-
- ; check if the description matches
- WHILE no_messages>0
- stmfd sp!, {r0-r3}
- adr r0, message$no_messages
- add r1, r1, #28
- bl match
- cmp r0, #0
- ldmfd sp!, {r0-r3}
- movne r0, #-1
- no_messages SETA no_messages-1
- WEND
-
- ; ...and return
- ldmfds sp!, {r3-r4, pc}
-
- END
-