
; Verschiedene Interfaces

	INCLUDE	"lvo/misc.i"

	XREF	_PotgoBase
	XREF	_TimerBase
	XREF	_TranslatorBase
	XREF	_ConsoleDevice
	XREF	_DiskfontBase
	XREF	_RomBootBase





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

	IFD	\2
	XDEF	_\2

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

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

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

	ENDC

	ENDM





SATZ	MACRO	Satz1,Anzahl1,Satz2,Anzahl2...
	IFEQ	 \2-1			 ;	ein Register ?
	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





; Potgo

; AllocPotBits(bits)(D0)
	CREATE	_PotgoBase,AllocPotBits,a6,1,d0,1

; FreePotBits(bits)(D0)
	CREATE	_PotgoBase,FreePotBits,a6,1,d0,1

; WritePotgo(word,mask)(D0,D1)
	CREATE	_PotgoBase,WritePotgo,a6,1,d0-d1,2

; Offsets

	IFD	PotgoOFFSETS

	XDEF	_LVOAllocPotBits
	XDEF	_LVOFreePotBits
	XDEF	_LVOWritePotgo

	ENDC





; Timer

; AddTime(dest,src)(A0/A1)
	CREATE	_TimerBase,AddTime,a6,1,a0-a1,2

; SubTime(dest,src)(A0/A1)
	CREATE	_TimerBase,SubTime,a6,1,a0-a1,2

; CmpTime(dest,src)(A0/A1)
	CREATE	_TimerBase,CmpTime,a6,1,a0-a1,2

; Offsets

	IFD	TimerOFFSETS

	XDEF	_LVOAddTime
	XDEF	_LVOSubTime
	XDEF	_LVOCmpTime

	ENDC





; Translator

; Translate(inputString,inputLength,outputBuffer,bufferSize)(A0,D0/A1,D1)
	CREATE	_TranslatorBase,Translate,a6,1,a0,1,d0/a1,2,d1,1

; Offsets

	IFD	TranslatorOFFSETS

	XDEF	_LVOTranslate

	ENDC





; Console

; CDInputHandler(events,device)(A0/A1)
	CREATE	_ConsoleDevice,CDInputHandler,a6,1,a0-a1,2

; RawKeyConvert(events,buffer,length,keyMap)(A0/A1,D1/A2)
	CREATE	_ConsoleDevice,RawKeyConvert,a2/a6,2,a0-a1,2,d1/a2,2

; AskDefaultKeyMap(keyMap)(A0)
	CREATE	_ConsoleDevice,AskDefaultKeyMap,a6,1,a0,1

; SetDefaultKeyMap(keyMap)(A0)
	CREATE	_ConsoleDevice,SetDefaultKeyMap,a6,1,a0,1

; Offsets

	IFD	ConsoleOFFSETS

	XDEF	_LVOCDInputHandler
	XDEF	_LVORawKeyConvert
	XDEF	_LVOAskDefaultKeyMap
	XDEF	_LVOSetDefaultKeyMap

	ENDC





; Diskfont

; OpenDiskFont(textAttr)(A0)
	CREATE	_DiskfontBase,OpenDiskFont,a6,1,a0,1

; AvailFonts(buffer,bufBytes,flags)(A0,D0/D1)
	CREATE	_DiskfontBase,AvailFonts,a6,1,a0,1,d0-d1,2

; NewFontContents(fontsLock,fontName)(A0/A1)
	CREATE	_DiskfontBase,NewFontContents,a6,1,a0-a1,2

; DisposeFontContents(fontContentsHeader)(A1)
	CREATE	_DiskfontBase,DisposeFontContents,a6,1,a1,1

; Offsets

	IFD	DiskfontOFFSETS

	XDEF	_LVOOpenDiskFont
	XDEF	_LVOAvailFonts
	XDEF	_LVONewFontContents
	XDEF	_LVODisposeFontContents

	ENDC





; RomBoot

; RomBoot()
	CREATE	_RomBootBase,RomBoot,a6,1

; Offsets

	IFD	RomBootOFFSETS

	XDEF	_LVORomBoot

	ENDC





	END

