; stub routines for the fastdir routines

	XDEF	_xLock
	XDEF	_xOpen
	XDEF	_xLoadSeg

	XDEF	_dosLock
	XDEF	_dosOpen
	XDEF	_dosLoadSeg
	
	XREF	_NewLock
	XREF	_oldLock
	XREF	_oldLockd0

	XREF	_NewOpen
	XREF	_oldOpen
	XREF	_oldOpend0

	XREF	_NewLoadSeg
	XREF	_oldLoadSeg
	XREF	_oldLoadSegd0

	XREF	_DosBase
	XREF	_geta4


;	vectoroffset->stub->NewRoutines->stub->routines

;	Lock->jmp _xLock->jmp _NewLock->rts(Lock)
	
;	NewLock->_dosLock->jmp (a5)->rts(NewLock)

;	arp believes that the return from a dos function is not only in d0,
;	but also in d1

_xLock:
	movem.l	d2-d7/a0-a6,-(sp)
	move.l	a7,a5
	jsr	_geta4
	jsr	_NewLock
	move.l	d0,d1
	movem.l	(sp)+,d2-d7/a0-a6
	rts

_dosLock:
	move.l	4(sp),d1
	move.l	8(sp),d2
	movem.l	d1-d7/a0-a6,-(sp)
	move.l	_oldLock,a5
	move.l	_oldLockd0,d0
	move.l	_DosBase,a6
	jsr	(a5)
	movem.l	(sp)+,d1-d7/a0-a6
	rts

;****************************;

_xOpen:
	movem.l	d2-d7/a0-a6,-(sp)
	move.l	a7,a5
	jsr	_geta4
	jsr	_NewOpen
	move.l	d0,d1
	movem.l	(sp)+,d2-d7/a0-a6
	rts

_dosOpen:
	move.l	4(sp),d1
	move.l	8(sp),d2
	movem.l	d1-d7/a0-a6,-(sp)
	move.l	_oldOpen,a5
	move.l	_oldOpend0,d0
	move.l	_DosBase,a6
	jsr	(a5)
	movem.l	(sp)+,d1-d7/a0-a6
	rts

;****************************;

_xLoadSeg:
	movem.l	d2-d7/a0-a6,-(sp)
	move.l	a7,a5
	jsr	_geta4
	jsr	_NewLoadSeg
	move.l	d0,d1
	movem.l	(sp)+,d2-d7/a0-a6
	rts

_dosLoadSeg:
	move.l	4(sp),d1
	movem.l	d1-d7/a0-a6,-(sp)
	move.l	_oldLoadSeg,a5
	move.l	_oldLoadSegd0,d0
	move.l	_DosBase,a6
	jsr	(a5)
	movem.l	(sp)+,d1-d7/a0-a6
	rts
