home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / programming / maskthrow / s / module
Encoding:
Text File  |  1996-10-23  |  1.2 KB  |  84 lines

  1.  
  2.  GET    OS:Hdr.Filter
  3.  AREA    |ObjAsm$$code|, CODE, READONLY
  4.  IMPORT    |__RelocCode|
  5.  
  6.  EXPORT    rm_init
  7.  EXPORT    rm_final
  8.  IMPORT    match
  9.  
  10.  GBLA    no_messages
  11. no_messages SETA 0
  12.  MACRO
  13.  add_message $msg
  14. no_messages SETA no_messages+1
  15. message$no_messages = "$msg", 0
  16.  ALIGN
  17.  MEND
  18.  
  19.  GET    hdr.masklist
  20.  
  21. rm_title
  22.  = "MaskThrowback", 0
  23.  ALIGN
  24.  
  25. event_mask * -1 :AND: (:NOT: (1<<17 :OR: 1<<18 :OR: 1<<19))
  26.  
  27. rm_init
  28.  stmfd    sp!, {lr}
  29.  bl    |__RelocCode|
  30.  adr    r0, rm_title
  31.  adr    r1, filter
  32.  mov    r2, #0
  33.  mov    r3, #0
  34.  mov    r4, #event_mask
  35.  swi    XFilter_RegisterPostFilter
  36.  mov    r0, #0
  37.  ldmfd    sp!, {pc}
  38.  
  39. rm_final
  40.  stmfd    sp!, {lr}
  41.  adr    r0, rm_title
  42.  adr    r1, filter
  43.  mov    r2, #0
  44.  mov    r3, #0
  45.  mov    r4, #event_mask
  46.  swi    XFilter_DeRegisterPostFilter
  47.  mov    r0, #0
  48.  ldmfd    sp!, {pc}
  49.  
  50.  
  51. message
  52.  DCD    &42583
  53.  
  54. filter
  55.  ; is this a wimp message?
  56.  cmp    r0, #17
  57.  cmpne    r0, #18
  58.  cmpne    r0, #19
  59.  movnes    pc, lr
  60.  stmfd    sp!, {r3-r4, lr}
  61.  
  62.  ; is this a throwback message?
  63.  ldr    r3, [r1, #16]
  64.  ldr    r4, message
  65.  cmp    r3, r4
  66.  ldmnefds sp!, {r3-r4, pc}
  67.  
  68.  ; check if the description matches
  69.  WHILE no_messages>0
  70.  stmfd    sp!, {r0-r3}
  71.  adr    r0, message$no_messages
  72.  add    r1, r1, #28
  73.  bl    match
  74.  cmp    r0, #0
  75.  ldmfd    sp!, {r0-r3}
  76.  movne    r0, #-1
  77. no_messages SETA no_messages-1
  78.  WEND
  79.  
  80.  ; ...and return
  81.  ldmfds    sp!, {r3-r4, pc}
  82.  
  83.  END
  84.