
; Expansion-Interface

	INCLUDE	"lvo/misc.i"

	XREF	_ExpansionBase





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





; AddConfigDev(configDev)(A0)
	CREATE	AddConfigDev,a6,1,a0,1

; expansionUnused()
;	CREATE	expansionUnused,a6,1

; AllocBoardMem(slotSpec)(D0)
	CREATE	AllocBoardMem,a6,1,d0,1

; AllocConfigDev()
	CREATE	AllocConfigDev,a6,1

; AllocExpansionMem(numSlots,SlotAlign,SlotOffset)(D0/D1/D2)
	CREATE	AllocExpansionMem,d2/a6,2,d0-d2,3

; ConfigBoard(board,configDev)(A0/A1)
	CREATE	ConfigBoard,a6,1,a0-a1,2

; ConfigChain(baseAddr)(A0)
	CREATE	ConfigChain,a6,1,a0,1

; FindConfigDev(oldConfigDev,manufacturer,product)(A0,D0/D1)
	CREATE	FindConfigDev,a6,1,a0,1,d0-d1,2

; FreeBoardMem(startSlot,slotSpec)(D0/D1)
	CREATE	FreeBoardMem,a6,1,d0-d1,2

; FreeConfigDev(configDev)(A0)
	CREATE	FreeConfigDev,a6,1,a0,1

; FreeExpansionMem(startSlot,numSlots)(D0/D1)
	CREATE	FreeExpansionMem,a6,1,d0-d1,2

; ReadExpansionByte(board,offset)(A0,D0)
	CREATE	ReadExpansionByte,a6,1,a0,1,d0,1

; ReadExpansionRom(board,configDev)(A0/A1)
	CREATE	ReadExpansionRom,a6,1,a0-a1,2

; RemConfigDev(configDev)(A0)
	CREATE	RemConfigDev,a6,1,a0,1

; WriteExpansionByte(board,offset,byte)(A0,D0/D1)
	CREATE	WriteExpansionByte,a6,1,a0,1,d0-d1,2

; ObtainConfigBinding()
	CREATE	ObtainConfigBinding,a6,1

; ReleaseConfigBinding()
	CREATE	ReleaseConfigBinding,a6,1

; SetCurrentBinding(currentBinding,bindingSize)(A0,D0)
	CREATE	SetCurrentBinding,a6,1,a0,1,d0,1

; GetCurrentBinding(currentBinding,bindingSize)(A0,D0)
	CREATE	GetCurrentBinding,a6,1,a0,1,d0,1

; MakeDosNode(parmPacket)(A0)
	CREATE	MakeDosNode,a6,1,a0,1

; AddDosNode(bootPri,flags,dosNode)(D0/D1/A0)
	CREATE	AddDosNode,a6,1,d0-d1,2,a0,1





; Offsets

	IFD	OFFSETS

	XDEF	_LVOAddConfigDev
	XDEF	_LVOexpansionUnused
	XDEF	_LVOAllocBoardMem
	XDEF	_LVOAllocConfigDev
	XDEF	_LVOAllocExpansionMem
	XDEF	_LVOConfigBoard
	XDEF	_LVOConfigChain
	XDEF	_LVOFindConfigDev
	XDEF	_LVOFreeBoardMem
	XDEF	_LVOFreeConfigDev
	XDEF	_LVOFreeExpansionMem
	XDEF	_LVOReadExpansionByte
	XDEF	_LVOReadExpansionRom
	XDEF	_LVORemConfigDev
	XDEF	_LVOWriteExpansionByte
	XDEF	_LVOObtainConfigBinding
	XDEF	_LVOReleaseConfigBinding
	XDEF	_LVOSetCurrentBinding
	XDEF	_LVOGetCurrentBinding
	XDEF	_LVOMakeDosNode
	XDEF	_LVOAddDosNode

	ENDC





	END

