*--------------------------------------------------------------------------
*
* SafeXEM_XPR.asm
*
* Safe XEM and XPR calling routines
*
* Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
*    All Rights Reserved
* 
*--------------------------------------------------------------------------

	section	text,code

	xref	_LinkerDB		; Global data area base address

*--------------------------------------------------------------------------

	csect	text,0,0,1,2

*--------------------------------------------------------------------------

SAVEXPR	macro

	xref	_xpr_\1
	xdef	_safe_xpr_\1

_safe_xpr_\1:

	movem.l	d2-d7/a2-a6,-(sp)	; Save registers
	lea	_LinkerDB,a4		; Get data base address
	jsr	_xpr_\1			; Call our routine
	movem.l	(sp)+,d2-d7/a2-a6	; Restore registers
	rts				; Get back...

	endm

*--------------------------------------------------------------------------

SAVEXEM	macro

	xref	_xem_\1
	xdef	_safe_xem_\1

_safe_xem_\1:

	movem.l	d2-d7/a2-a6,-(sp)	; Save registers
	lea	_LinkerDB,a4		; Get data base address
	jsr	_xem_\1			; Call our routine
	movem.l	(sp)+,d2-d7/a2-a6	; Restore registers
	rts				; Get back...

	endm

*--------------------------------------------------------------------------

	SAVEXPR	fopen
	SAVEXPR	fclose
	SAVEXPR	fread
	SAVEXPR	fwrite
	SAVEXPR	sread
	SAVEXPR	swrite
	SAVEXPR	sflush
	SAVEXPR	update
	SAVEXPR	chkabort
	SAVEXPR	gets
	SAVEXPR	setserial
	SAVEXPR	ffirst
	SAVEXPR	fnext
	SAVEXPR	finfo
	SAVEXPR	fseek
	SAVEXPR	options
	SAVEXPR	unlink
	SAVEXPR	squery
	SAVEXPR	getptr
	SAVEXPR	stealopts

*--------------------------------------------------------------------------

	SAVEXEM	swrite
	SAVEXEM	sbreak
	SAVEXEM	sstart
	SAVEXEM	sstop
	SAVEXEM	tgets
	SAVEXEM	tbeep
	SAVEXEM	macrodispatch

*--------------------------------------------------------------------------

	end
