home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / dreamscape / utilities / Dreamscape / Utilities / MaskThrow / s / module
Encoding:
Text File  |  1996-04-26  |  1.1 KB  |  79 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 Masked
  20.  
  21. rm_title
  22.  = "MaskThrowback", 0
  23.  ALIGN
  24.  
  25. rm_init
  26.  stmfd    r13!, {r14}
  27.  bl    |__RelocCode|
  28.  adr    r0, rm_title
  29.  adr    r1, filter
  30.  mov    r2, #0
  31.  mov    r3, #0
  32.  swi    XFilter_RegisterPostFilter
  33.  mov    r0, #0
  34.  ldmfd    r13!, {pc}
  35.  
  36. rm_final
  37.  stmfd    r13!, {r14}
  38.  adr    r0, rm_title
  39.  adr    r1, filter
  40.  mov    r2, #0
  41.  mov    r3, #0
  42.  swi    XFilter_DeRegisterPostFilter
  43.  mov    r0, #0
  44.  ldmfd    r13!, {pc}
  45.  
  46.  
  47. message
  48.  DCD    &42583
  49.  
  50. filter
  51.  ; is this a wimp message?
  52.  cmp    r0, #17
  53.  cmpne    r0, #18
  54.  movnes    pc, r14
  55.  stmfd    r13!, {r3-r4, r14}
  56.  
  57.  ; is this a throwback message?
  58.  ldr    r3, [r1, #16]
  59.  ldr    r4, message
  60.  cmp    r3, r4
  61.  ldmnefds r13!, {r3-r4, pc}
  62.  
  63.  ; check if the description matches
  64.  WHILE no_messages>0
  65.  stmfd    r13!, {r0-r3}
  66.  adr    r0, message$no_messages
  67.  add    r1, r1, #28
  68.  bl    match
  69.  cmp    r0, #0
  70.  ldmfd    r13!, {r0-r3}
  71.  movne    r0, #-1
  72. no_messages SETA no_messages-1
  73.  WEND
  74.  
  75.  ; ...and return
  76.  ldmfds    r13!, {r3-r4, pc}
  77.  
  78.  END
  79.