
; 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        ; ein Register ?
   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        ; ein Register ?
   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

