home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma32.dms / ma32.adf / NoiseSaver / txt / noisesaver.asm next >
Assembly Source File  |  1994-11-02  |  636b  |  46 lines

  1. ;
  2. ; $Id: noisesaver.asm,v 2.1 1994/10/30 00:23:29 mh Exp $
  3. ;
  4.  
  5. ; BeginIO() patch for NoiseSaver
  6.  
  7. ; offsets
  8.  
  9. FindTask        EQU -294
  10.  
  11. ; export
  12.  
  13.     XDEF MyProc;
  14.     XDEF CallBack;
  15.     XDEF OrigProc;
  16.     XDEF MyTask;
  17.     XDEF ExecBase;
  18.  
  19.     section "bss_NoiseSaver",bss
  20.  
  21. ; Read-Only vars (set by Oberon-process)
  22. OrigProc:    dc.l    0
  23. CallBack:    dc.l    0
  24. MyTask:        dc.l    0
  25. ExecBase:    dc.l    0
  26.  
  27.     section "asm_NoiseSaver",code
  28.  
  29. MyProc:
  30.     movem.l a1/a6,-(sp)
  31.     move.l    ExecBase,a6
  32.     suba.l    a1,a1
  33.     jsr    FindTask(a6)
  34.     cmp.l    MyTask,d0
  35.     beq    cont                ; own task? -> do nothing
  36.  
  37.     movea.l    (a7),a1
  38.     movea.l CallBack,a0
  39.     jsr    (a0)
  40.  
  41. cont:    movem.l (sp)+,a1/a6
  42.     movea.l OrigProc,a0
  43.     jmp    (a0)
  44.  
  45.     END
  46.