
*	DOS.asm (of PCQ Pascal runtime library)
*	Copyright (c) 1989 Patrick Quaid

*	This module implements the calls to the DOS routines.  In a
*	perfect world each of these calls would be in a separate
*	hunk, but there you go.  The reason you don't need to open
*	dos.library again, by the way, is that this file makes the
*	following external reference:

	XREF	_p%DOSBase

	section	one

	XDEF	_GetFileHandle
_GetFileHandle
	move.l	4(sp),a0
	move.l	(a0),d0
	rts

	XDEF	_DOSClose
_DOSClose
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOClose(a6)
	rts

	XDEF	_CreateDir
_CreateDir
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOCreateDir(a6)
	rts

	XDEF	_CurrentDir
_CurrentDir
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOCurrentDir(a6)
	rts

	XDEF	_DeleteFile
_DeleteFile
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVODeleteFile(a6)
	rts

	XDEF	_DupLock
_DupLock
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVODupLock(a6)
	rts

	XDEF	_Examine
_Examine
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOExamine(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_ExNext
_ExNext
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOExNext(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_Info
_Info
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOInfo(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_Input
_Input
	move.l	_p%DOSBase,a6
	jsr	_LVOInput(a6)
	rts

	XDEF	_IoErr
_IoErr
	move.l	_p%DOSBase,a6
	jsr	_LVOIoErr(a6)
	rts

	XDEF	_IsInteractive
_IsInteractive
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOIsInteractive(a6)
	rts

	XDEF	_Lock
_Lock
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOLock(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_DOSOpen
_DOSOpen
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOOpen(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_Output
_Output
	move.l	_p%DOSBase,a6
	jsr	_LVOOutput(a6)
	rts

	XDEF	_ParentDir
_ParentDir
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOParentDir(a6)
	rts

	XDEF	_DOSRead
_DOSRead
	movem.l	d2-d3,-(sp)
	move.l	20(sp),d1
	move.l	16(sp),d2
	move.l	12(sp),d3
	move.l	_p%DOSBase,a6
	jsr	_LVORead(a6)
	movem.l	(sp)+,d2-d3
	rts

	XDEF	_Rename
_Rename
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVORename(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_Seek
_Seek
	movem.l	d2-d3,-(sp)
	move.l	20(sp),d1
	move.l	16(sp),d2
	move.l	12(sp),d3
	move.l	_p%DOSBase,a6
	jsr	_LVOSeek(a6)
	movem.l	(sp)+,d2-d3
	rts

	XDEF	_SetComment
_SetComment
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOSetComment(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_SetProtection
_SetProtection
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOSetProtection(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_UnLock
_UnLock
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOUnLock(a6)
	rts

	XDEF	_WaitForChar
_WaitForChar
	move.l	d2,-(sp)
	move.l	12(sp),d1
	move.l	8(sp),d2
	move.l	_p%DOSBase,a6
	jsr	_LVOWaitForChar(a6)
	move.l	(sp)+,d2
	rts

	XDEF	_DOSWrite
_DOSWrite
	movem.l	d2-d3,-(sp)
	move.l	20(sp),d1
	move.l	16(sp),d2
	move.l	12(sp),d3
	move.l	_p%DOSBase,a6
	jsr	_LVOWrite(a6)
	movem.l	(sp)+,d2-d3
	rts

	XDEF	_CreateProc
_CreateProc
	movem.l	d2-d4,-(sp)
	move.l	28(sp),d1
	move.l	24(sp),d2
	move.l	20(sp),d3
	move.l	16(sp),d4
	move.l	_p%DOSBase,a6
	jsr	_LVOCreateProc(a6)
	movem.l	(sp)+,d2-d4
	rts

	XDEF	_DateStamp
_DateStamp
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVODateStamp(a6)
	rts

	XDEF	_Delay
_Delay
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVODelay(a6)
	rts

	XDEF	_DeviceProc
_DeviceProc
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVODeviceProc(a6)
	rts

	XDEF	_DOSExit
_DOSExit
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOExit(a6)
	rts

	XDEF	_Execute
_Execute
	movem.l	d2-d3,-(sp)
	move.l	20(sp),d1
	move.l	16(sp),d2
	move.l	12(sp),d3
	move.l	_p%DOSBase,a6
	jsr	_LVOExecute(a6)
	movem.l	(sp)+,d2-d3
	rts

	XDEF	_LoadSeg
_LoadSeg
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOLoadSeg(a6)
	rts

	XDEF	_UnLoadSeg
_UnLoadSeg
	move.l	4(sp),d1
	move.l	_p%DOSBase,a6
	jsr	_LVOUnLoadSeg(a6)
	rts

*	I should get around to defining these things in this file,
*	but I suppose it can wait.

	XREF	_LVOExecute
	XREF	_LVOIsInteractive
	XREF	_LVOParentDir
	XREF	_LVOWaitForChar
	XREF	_LVODelay
	XREF	_LVODateStamp
	XREF	_LVOSetProtection
	XREF	_LVOSetComment
	XREF	_LVODeviceProc
	XREF	_LVOQueuePacket
	XREF	_LVOGetPacket
	XREF	_LVOUnLoadSeg
	XREF	_LVOLoadSeg
	XREF	_LVOExit
	XREF	_LVOCreateProc
	XREF	_LVOIoErr
	XREF	_LVOCurrentDir
	XREF	_LVOCreateDir
	XREF	_LVOInfo
	XREF	_LVOExNext
	XREF	_LVOExamine
	XREF	_LVODupLock
	XREF	_LVOUnLock
	XREF	_LVOLock
	XREF	_LVORename
	XREF	_LVODeleteFile
	XREF	_LVOSeek
	XREF	_LVOOutput
	XREF	_LVOInput
	XREF	_LVOWrite
	XREF	_LVORead
	XREF	_LVOClose
	XREF	_LVOOpen

	END
