
; 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        ; ein Register ?
   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        ; ein Register ?
   move.l   (SP)+,\2
  ELSE
   movem.l  (SP)+,\2
  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





;; 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

