
; DOS-Interface

	INCLUDE	"lvo/dos.i"

	XREF	_DOSBase





CREATE MACRO Name,Registermaske,Registeranzahl,Satz1,Anzahl1,Satz2,Anzahl2...

	IFD	\1
	XDEF	_\1

_\1
	IFEQ	\3-1
	move.l	\2,-(SP)
	ELSE
	movem.l	\2,-(SP)
	ENDC

TIEFE	SET	4+4*\3
	IFNC	'\4',''
	SATZ	\4,\5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i,\j
	ENDC

	move.l	_DOSBase,a6
	jsr		_LVO\1(a6)
	IFEQ	\3-1
	move.l	(SP)+,\2
	ELSE
	movem.l	(SP)+,\2
	ENDC
	rts

	ENDC

	ENDM





SATZ	MACRO	Satz1,Anzahl1,Satz2,Anzahl2...
	IFEQ	\2-1
	move.l	TIEFE(SP),\1
	ELSE
	movem.l	TIEFE(SP),\1
	ENDC
TIEFE	SET	TIEFE+4*\2
	IFNC	'\3',''
	SATZ	\3,\4,\5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i
	ENDC
	ENDM





; Open(name,accessMode)(D1/D2)
	CREATE	Open,d2-d3/a6,3,d1-d2,2

; Close(file)(D1)
	CREATE	Close,d2-d3/a6,3,d1,1

; Read(file,buffer,length)(D1/D2/D3)
	CREATE	Read,d2-d3/a6,3,d1-d3,3

; Write(file,buffer,length)(D1/D2/D3)
	CREATE	Write,d2-d3/a6,3,d1-d3,3

; Input()
	CREATE	Input,d2-d3/a6,3

; Output()
	CREATE	Output,d2-d3/a6,3

; Seek(file,position,offset)(D1/D2/D3)
	CREATE	Seek,d2-d3/a6,3,d1-d3,3

; DeleteFile(name)(D1)
	CREATE	DeleteFile,d2-d3/a6,3,d1,1

; Rename(oldName,newName)(D1/D2)
	CREATE	Rename,d2-d3/a6,3,d1-d2,2

; Lock(name,type)(D1/D2)
	CREATE	Lock,d2-d3/a6,3,d1-d2,2

; UnLock(lock)(D1)
	CREATE	UnLock,d2-d3/a6,3,d1,1

; DupLock(lock)(D1)
	CREATE	DupLock,d2-d3/a6,3,d1,1

; Examine(lock,fileInfoBlock)(D1/D2)
	CREATE	Examine,d2-d3/a6,3,d1-d2,2

; ExNext(lock,fileInfoBlock)(D1/D2)
	CREATE	ExNext,d2-d3/a6,3,d1-d2,2

; Info(lock,parameterBlock)(D1/D2)
	CREATE	Info,d2-d3/a6,3,d1-d2,2

; CreateDir(name)(D1)
	CREATE	CreateDir,d2-d3/a6,3,d1,1

; CurrentDir(lock)(D1)
	CREATE	CurrentDir,d2-d3/a6,3,d1,1

; IoErr()
	CREATE	IoErr,d2-d3/a6,3

; CreateProc(name,pri,segList,stackSize)(D1/D2/D3/D4)
	CREATE	CreateProc,d2-d4/a6,4,d1-d4,4

; Exit(returnCode)(D1)
	CREATE	Exit,d2-d3/a6,3,d1,1

; LoadSeg(fileName)(D1)
	CREATE	LoadSeg,d2-d3/a6,3,d1,1

; UnLoadSeg(segment)(D1)
	CREATE	UnLoadSeg,d2-d3/a6,3,d1,1

; GetPacket(wait)(D1)
	CREATE	GetPacket,d2-d3/a6,3,d1,1

; QueuePacket(packet)(D1)
	CREATE	QueuePacket,d2-d3/a6,3,d1,1

; DeviceProc(name)(D1)
	CREATE	DeviceProc,d2-d3/a6,3,d1,1

; SetComment(name,comment)(D1/D2)
	CREATE	SetComment,d2-d3/a6,3,d1-d2,2

; SetProtection(name,mask)(D1/D2)
	CREATE	SetProtection,d2-d3/a6,3,d1-d2,2

; DateStamp(date)(D1)
	CREATE	DateStamp,d2-d3/a6,3,d1,1

; Delay(timeout)(D1)
	CREATE	Delay,d2-d3/a6,3,d1,1

; WaitForChar(file,timeout)(D1/D2)
	CREATE	WaitForChar,d2-d3/a6,3,d1-d2,2

; ParentDir(lock)(D1)
	CREATE	ParentDir,d2-d3/a6,3,d1,1

; IsInteractive(file)(D1)
	CREATE	IsInteractive,d2-d3/a6,3,d1,1

; Execute(string,file,file)(D1/D2/D3)
	CREATE	Execute,d2-d3/a6,3,d1-d3,3





; Offsets

	IFD	OFFSETS

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

	ENDC





	END

