* SR_REGS.s	// LaserC/DRI/AlcyonC version
* definition of save and restore function for registers (all except D0).
* by Markus Nick

	TEXT

	.globl _save_regs, _restore_regs
	.globl __lmpy

	.import  __lmul

	
_save_regs:
	move.l	A0, sav_A0
	move.l	sav_ptr, A0
	movem.l	D1-D7/A1-A6, -(A0)
	move.l	sav_A0, -(A0)
	move.l	A0, sav_ptr
	move.l	sav_A0, A0
	rts

_restore_regs:
	move	4(sp), D0
	move.l	sav_ptr, A0
	move.l	(A0)+, sav_A0
	movem.l	(A0)+, D1-D7/A1-A6
	move.l	A0, sav_ptr
	move.l	sav_A0, A0
	rts	
	
* __lmpy setzt long-Multiplikation von PureC nach LaserC um
* in: D0.L, D1.L   out: D0.L
__lmpy:
	move.l	D1, -(sp)
	move.l	D0, -(sp)
	jsr		__lmul
	move.l	(sp)+, D0			; hier fehlt kein addq #xx,sp !!
	rts

	DATA

sav_ptr:
	dc.l	sav_area+16*20
	
	BSS
sav_A0:
	ds.l	1
sav_area:
	ds.l	16*20
	
	
