
; Exec-Interface

	INCLUDE	"lvo/exec.i"

_SysBase	EQU	4





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	_SysBase,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





; Supervisor()
;	CREATE	Supervisor,a6,1

; ExitIntr()
;	CREATE	ExitIntr,a6,1

; Schedule()
;	CREATE	Schedule,a6,1

; Reschedule()
;	CREATE	Reschedule,a6,1

; Switch()
;	CREATE	Switch,a6,1

; Dispatch()
;	CREATE	Dispatch,a6,1

; Exception()
;	CREATE	Exception,a6,1

; InitCode(startClass,version)(D0/D1)
	CREATE	InitCode,a6,1,d0-d1,2

; InitStruct(initTable,memory,size)(A1/A2,D0)
	CREATE	InitStruct,a2/a6,2,a1-a2,2,d0,1

; MakeLibrary(funcInit,structInit,libInit,dataSize,codeSize)(A0/A1/A2,D0/D1)
	CREATE	MakeLibrary,a2/a6,2,a0-a2,3,d0-d1,2

; MakeFunctions(target,functionArray,funcDispBase)(A0,A1,A2)
	CREATE	MakeFunctions,a2/a6,2,a0-a2,3

; FindResident(name)(A1)
	CREATE	FindResident,a6,1,a1,1

; InitResident(resident,segList)(A1,D1)
	CREATE	InitResident,a6,1,a1,1,d1,1

; Alert(alertNum,parameters)(D7,A5)
	CREATE	Alert,d7/a5/a6,3,d7/a5,2

; Debug()
	CREATE	Debug,a6,1

; Disable()
	CREATE	Disable,a6,1

; Enable()
	CREATE	Enable,a6,1

; Forbid()
	CREATE	Forbid,a6,1

; Permit()
	CREATE	Permit,a6,1

; SetSR(newSR,mask)(D0/D1)
	CREATE	SetSR,a6,1,d0-d1,2

; SuperState()
	CREATE	SuperState,a6,1

; UserState(sysStack)(D0)
	CREATE	UserState,a6,1,d0,1

; SetIntVector(intNumber,interrupt)(D0/A1)
	CREATE	SetIntVector,a6,1,d0/a1,2

; AddIntServer(intNumber,interrupt)(D0/A1)
	CREATE	AddIntServer,a6,1,d0/a1,2

; RemIntServer(intNumber,interrupt)(D0/A1)
	CREATE	RemIntServer,a6,1,d0/a1,2

; Cause(interrupt)(A1)
	CREATE	Cause,a6,1,a1,1

; Allocate(freeList,byteSize)(A0,D0)
	CREATE	Allocate,a6,1,a0,1,d0,1

; Deallocate(freeList,memoryBlock,byteSize)(A0/A1,D0)
	CREATE	Deallocate,a6,1,a0-a1,2,d0,1

; AllocMem(byteSize,requirements)(D0/D1)
	CREATE	AllocMem,a6,1,d0-d1,2

; AllocAbs(byteSize,location)(D0/A1)
	CREATE	AllocAbs,a6,1,d0/a1,2

; FreeMem(memoryBlock,byteSize)(A1,D0)
	CREATE	FreeMem,a6,1,a1,1,d0,1

; AvailMem(requirements)(D1)
	CREATE	AvailMem,a6,1,d1,1

; AllocEntry(entry)(A0)
	CREATE	AllocEntry,a6,1,a0,1

; FreeEntry(entry)(A0)
	CREATE	FreeEntry,a6,1,a0,1

; Insert(list,node,pred)(A0/A1/A2)
	CREATE	Insert,a2/a6,2,a0-a2,3

; AddHead(list,node)(A0/A1)
	CREATE	AddHead,a6,1,a0-a1,2

; AddTail(list,node)(A0/A1)
	CREATE	AddTail,a6,1,a0-a1,2

; Remove(node)(A1)
	CREATE	Remove,a6,1,a1,1

; RemHead(list)(A0)
	CREATE	RemHead,a6,1,a0,1

; RemTail(list)(A0)
	CREATE	RemTail,a6,1,a0,1

; Enqueue(list,node)(A0/A1)
	CREATE	Enqueue,a6,1,a0-a1,2

; FindName(list,name)(A0/A1)
	CREATE	FindName,a6,1,a0-a1,2

; AddTask(task,initPC,finalPC)(A1/A2/A3)
	CREATE	AddTask,a2-a3/a6,3,a1-a3,3

; RemTask(task)(A1)
	CREATE	RemTask,a6,1,a1,1

; FindTask(name)(A1)
	CREATE	FindTask,a6,1,a1,1

; SetTaskPri(task,priority)(A1,D0)
	CREATE	SetTaskPri,a6,1,a1,1,d0,1

; SetSignal(newSignals,signalSet)(D0/D1)
	CREATE	SetSignal,a6,1,d0-d1,2

; SetExcept(newSignals,signalSet)(D0/D1)
	CREATE	SetExcept,a6,1,d0-d1,2

; Wait(signalSet)(D0)
	CREATE	Wait,a6,1,d0,1

; Signal(task,signalSet)(A1,D0)
	CREATE	Signal,a6,1,a1,1,d0,1

; AllocSignal(signalNum)(D0)
	CREATE	AllocSignal,a6,1,d0,1

; FreeSignal(signalNum)(D0)
	CREATE	FreeSignal,a6,1,d0,1

; AllocTrap(trapNum)(D0)
	CREATE	AllocTrap,a6,1,d0,1

; FreeTrap(trapNum)(D0)
	CREATE	FreeTrap,a6,1,d0,1

; AddPort(port)(A1)
	CREATE	AddPort,a6,1,a1,1

; RemPort(port)(A1)
	CREATE	RemPort,a6,1,a1,1

; PutMsg(port,message)(A0/A1)
	CREATE	PutMsg,a6,1,a0-a1,2

; GetMsg(port)(A0)
	CREATE	GetMsg,a6,1,a0,1

; ReplyMsg(message)(A1)
	CREATE	ReplyMsg,a6,1,a1,1

; WaitPort(port)(A0)
	CREATE	WaitPort,a6,1,a0,1

; FindPort(name)(A1)
	CREATE	FindPort,a6,1,a1,1

; AddLibrary(library)(A1)
	CREATE	AddLibrary,a6,1,a1,1

; RemLibrary(library)(A1)
	CREATE	RemLibrary,a6,1,a1,1

; OldOpenLibrary(libName)(A1)
	CREATE	OldOpenLibrary,a6,1,a1,1

; CloseLibrary(library)(A1)
	CREATE	CloseLibrary,a6,1,a1,1

; SetFunction(library,funcOffset,funcEntry)(A1,A0,D0)
	CREATE	SetFunction,a6,1,a1,1,a0,1,d0,1

; SumLibrary(library)(A1)
	CREATE	SumLibrary,a6,1,a1,1

; AddDevice(device)(A1)
	CREATE	AddDevice,a6,1,a1,1

; RemDevice(device)(A1)
	CREATE	RemDevice,a6,1,a1,1

; OpenDevice(devName,unit,ioRequest,flags)(A0,D0/A1,D1)
	CREATE	OpenDevice,a6,1,a0,1,d0/a1,2,d1,1

; CloseDevice(ioRequest)(A1)
	CREATE	CloseDevice,a6,1,a1,1

; DoIO(ioRequest)(A1)
	CREATE	DoIO,a6,1,a1,1

; SendIO(ioRequest)(A1)
	CREATE	SendIO,a6,1,a1,1

; CheckIO(ioRequest)(A1)
	CREATE	CheckIO,a6,1,a1,1

; WaitIO(ioRequest)(A1)
	CREATE	WaitIO,a6,1,a1,1

; AbortIO(ioRequest)(A1)
	CREATE	AbortIO,a6,1,a1,1

; AddResource(resource)(A1)
	CREATE	AddResource,a6,1,a1,1

; RemResource(resource)(A1)
	CREATE	RemResource,a6,1,a1,1

; OpenResource(resName,version)(A1,D0)
	CREATE	OpenResource,a6,1,a1,1,d0,1

; RawIOInit()
	CREATE	RawIOInit,a6,1

; RawMayGetChar()
	CREATE	RawMayGetChar,a6,1

; RawPutChar(char)(d0)
	CREATE	RawPutChar,a6,1,d0,1

; RawDoFmt()(A0/A1/A2/A3)
	CREATE	RawDoFmt,a2-a3/a6,3,a0-a3,4

; GetCC()
	CREATE	GetCC,a6,1

; TypeOfMem(address)(A1);
	CREATE	TypeOfMem,a6,1,a1,1

; Procure(semaport,bidMsg)(A0/A1)
	CREATE	Procure,a6,1,a0-a1,2

; Vacate(semaport)(A0)
	CREATE	Vacate,a6,1,a0,1

; OpenLibrary(libName,version)(A1,D0)
	CREATE	OpenLibrary,a6,1,a1,1,d0,1

; InitSemaphore(sigSem)(A0)
	CREATE	InitSemaphore,a6,1,a0,1

; ObtainSemaphore(sigSem)(A0)
	CREATE	ObtainSemaphore,a6,1,a0,1

; ReleaseSemaphore(sigSem)(A0)
	CREATE	ReleaseSemaphore,a6,1,a0,1

; AttemptSemaphore(sigSem)(A0)
	CREATE	AttemptSemaphore,a6,1,a0,1

; ObtainSemaphoreList(sigSem)(A0)
	CREATE	ObtainSemaphoreList,a6,1,a0,1

; ReleaseSemaphoreList(sigSem)(A0)
	CREATE	ReleaseSemaphoreList,a6,1,a0,1

; FindSemaphore(sigSem)(A1)
	CREATE	FindSemaphore,a6,1,a1,1

; AddSemaphore(sigSem)(A1)
	CREATE	AddSemaphore,a6,1,a1,1

; RemSemaphore(sigSem)(A1)
	CREATE	RemSemaphore,a6,1,a1,1

; SumKickData()
	CREATE	SumKickData,a6,1

; AddMemList(size,attributes,pri,base,name)(D0/D1/D2/A0/A1)
	CREATE	AddMemList,d2/a6,2,d0-d2,3,a0-a1,2

; CopyMem(source,dest,size)(A0/A1,D0)
	CREATE	CopyMem,a6,1,a0-a1,2,d0,1

; CopyMemQuick(source,dest,size)(A0/A1,D0)
	CREATE	CopyMemQuick,a6,1,a0-a1,2,d0,1





; Offsets

	IFD	OFFSETS

	XDEF	_LVOSupervisor
	XDEF	_LVOExitIntr
	XDEF	_LVOSchedule
	XDEF	_LVOReschedule
	XDEF	_LVOSwitch
	XDEF	_LVODispatch
	XDEF	_LVOException
	XDEF	_LVOInitCode
	XDEF	_LVOInitStruct
	XDEF	_LVOMakeLibrary
	XDEF	_LVOMakeFunctions
	XDEF	_LVOFindResident
	XDEF	_LVOInitResident
	XDEF	_LVOAlert
	XDEF	_LVODebug
	XDEF	_LVODisable
	XDEF	_LVOEnable
	XDEF	_LVOForbid
	XDEF	_LVOPermit
	XDEF	_LVOSetSR
	XDEF	_LVOSuperState
	XDEF	_LVOUserState
	XDEF	_LVOSetIntVector
	XDEF	_LVOAddIntServer
	XDEF	_LVORemIntServer
	XDEF	_LVOCause
	XDEF	_LVOAllocate
	XDEF	_LVODeallocate
	XDEF	_LVOAllocMem
	XDEF	_LVOAllocAbs
	XDEF	_LVOFreeMem
	XDEF	_LVOAvailMem
	XDEF	_LVOAllocEntry
	XDEF	_LVOFreeEntry
	XDEF	_LVOInsert
	XDEF	_LVOAddHead
	XDEF	_LVOAddTail
	XDEF	_LVORemove
	XDEF	_LVORemHead
	XDEF	_LVORemTail
	XDEF	_LVOEnqueue
	XDEF	_LVOFindName
	XDEF	_LVOAddTask
	XDEF	_LVORemTask
	XDEF	_LVOFindTask
	XDEF	_LVOSetTaskPri
	XDEF	_LVOSetSignal
	XDEF	_LVOSetExcept
	XDEF	_LVOWait
	XDEF	_LVOSignal
	XDEF	_LVOAllocSignal
	XDEF	_LVOFreeSignal
	XDEF	_LVOAllocTrap
	XDEF	_LVOFreeTrap
	XDEF	_LVOAddPort
	XDEF	_LVORemPort
	XDEF	_LVOPutMsg
	XDEF	_LVOGetMsg
	XDEF	_LVOReplyMsg
	XDEF	_LVOWaitPort
	XDEF	_LVOFindPort
	XDEF	_LVOAddLibrary
	XDEF	_LVORemLibrary
	XDEF	_LVOOldOpenLibrary
	XDEF	_LVOCloseLibrary
	XDEF	_LVOSetFunction
	XDEF	_LVOSumLibrary
	XDEF	_LVOAddDevice
	XDEF	_LVORemDevice
	XDEF	_LVOOpenDevice
	XDEF	_LVOCloseDevice
	XDEF	_LVODoIO
	XDEF	_LVOSendIO
	XDEF	_LVOCheckIO
	XDEF	_LVOWaitIO
	XDEF	_LVOAbortIO
	XDEF	_LVOAddResource
	XDEF	_LVORemResource
	XDEF	_LVOOpenResource
	XDEF	_LVORawIOInit
	XDEF	_LVORawMayGetChar
	XDEF	_LVORawPutChar
	XDEF	_LVORawDoFmt
	XDEF	_LVOGetCC
	XDEF	_LVOTypeOfMem
	XDEF	_LVOProcure
	XDEF	_LVOVacate
	XDEF	_LVOOpenLibrary
	XDEF	_LVOInitSemaphore
	XDEF	_LVOObtainSemaphore
	XDEF	_LVOReleaseSemaphore
	XDEF	_LVOAttemptSemaphore
	XDEF	_LVOObtainSemaphoreList
	XDEF	_LVOReleaseSemaphoreList
	XDEF	_LVOFindSemaphore
	XDEF	_LVOAddSemaphore
	XDEF	_LVORemSemaphore
	XDEF	_LVOSumKickData
	XDEF	_LVOAddMemList
	XDEF	_LVOCopyMem
	XDEF	_LVOCopyMemQuick

	ENDC





	END

