;
; $Id: noisesaver.asm,v 2.1 1994/10/30 00:23:29 mh Exp $
;

; BeginIO() patch for NoiseSaver

; offsets

FindTask		EQU -294

; export

	XDEF MyProc;
	XDEF CallBack;
	XDEF OrigProc;
	XDEF MyTask;
	XDEF ExecBase;

	section "bss_NoiseSaver",bss

; Read-Only vars (set by Oberon-process)
OrigProc:	dc.l	0
CallBack:	dc.l	0
MyTask:		dc.l	0
ExecBase:	dc.l	0

	section "asm_NoiseSaver",code

MyProc:
	movem.l a1/a6,-(sp)
	move.l	ExecBase,a6
	suba.l	a1,a1
	jsr	FindTask(a6)
	cmp.l	MyTask,d0
	beq	cont				; own task? -> do nothing

	movea.l	(a7),a1
	movea.l CallBack,a0
	jsr	(a0)

cont:	movem.l (sp)+,a1/a6
	movea.l OrigProc,a0
	jmp	(a0)

	END
