
; DOS-Interface

   INCLUDE  "lvo/dos.i"

   XREF  _DOSBase





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





; Open(name,accessMode)(D1/D2)
   CREATE   Open,d2-d3/a6,3,d1-d2,2

; Close(file)(D1)
   CREATE   Close,d2-d3/a6,3,d1,1

; Read(file,buffer,length)(D1/D2/D3)
   CREATE   Read,d2-d3/a6,3,d1-d3,3

; Write(file,buffer,length)(D1/D2/D3)
   CREATE   Write,d2-d3/a6,3,d1-d3,3

; Input()
   CREATE   Input,d2-d3/a6,3

; Output()
   CREATE   Output,d2-d3/a6,3

; Seek(file,position,offset)(D1/D2/D3)
   CREATE   Seek,d2-d3/a6,3,d1-d3,3

; DeleteFile(name)(D1)
   CREATE   DeleteFile,d2-d3/a6,3,d1,1

; Rename(oldName,newName)(D1/D2)
   CREATE   Rename,d2-d3/a6,3,d1-d2,2

; Lock(name,type)(D1/D2)
   CREATE   Lock,d2-d3/a6,3,d1-d2,2

; UnLock(lock)(D1)
   CREATE   UnLock,d2-d3/a6,3,d1,1

; DupLock(lock)(D1)
   CREATE   DupLock,d2-d3/a6,3,d1,1

; Examine(lock,fileInfoBlock)(D1/D2)
   CREATE   Examine,d2-d3/a6,3,d1-d2,2

; ExNext(lock,fileInfoBlock)(D1/D2)
   CREATE   ExNext,d2-d3/a6,3,d1-d2,2

; Info(lock,parameterBlock)(D1/D2)
   CREATE   Info,d2-d3/a6,3,d1-d2,2

; CreateDir(name)(D1)
   CREATE   CreateDir,d2-d3/a6,3,d1,1

; CurrentDir(lock)(D1)
   CREATE   CurrentDir,d2-d3/a6,3,d1,1

; IoErr()
   CREATE   IoErr,d2-d3/a6,3

; CreateProc(name,pri,segList,stackSize)(D1/D2/D3/D4)
   CREATE   CreateProc,d2-d4/a6,4,d1-d4,4

; Exit(returnCode)(D1)
   CREATE   Exit,d2-d3/a6,3,d1,1

; LoadSeg(fileName)(D1)
   CREATE   LoadSeg,d2-d3/a6,3,d1,1

; UnLoadSeg(segment)(D1)
   CREATE   UnLoadSeg,d2-d3/a6,3,d1,1

; GetPacket(wait)(D1)
   CREATE   GetPacket,d2-d3/a6,3,d1,1

; QueuePacket(packet)(D1)
   CREATE   QueuePacket,d2-d3/a6,3,d1,1

; DeviceProc(name)(D1)
   CREATE   DeviceProc,d2-d3/a6,3,d1,1

; SetComment(name,comment)(D1/D2)
   CREATE   SetComment,d2-d3/a6,3,d1-d2,2

; SetProtection(name,mask)(D1/D2)
   CREATE   SetProtection,d2-d3/a6,3,d1-d2,2

; DateStamp(date)(D1)
   CREATE   DateStamp,d2-d3/a6,3,d1,1

; Delay(timeout)(D1)
   CREATE   Delay,d2-d3/a6,3,d1,1

; WaitForChar(file,timeout)(D1/D2)
   CREATE   WaitForChar,d2-d3/a6,3,d1-d2,2

; ParentDir(lock)(D1)
   CREATE   ParentDir,d2-d3/a6,3,d1,1

; IsInteractive(file)(D1)
   CREATE   IsInteractive,d2-d3/a6,3,d1,1

; Execute(string,file,file)(D1/D2/D3)
   CREATE   Execute,d2-d3/a6,3,d1-d3,3





; Offsets

   IFD   OFFSETS

   XDEF  _LVOOpen
   XDEF  _LVOClose
   XDEF  _LVORead
   XDEF  _LVOWrite
   XDEF  _LVOInput
   XDEF  _LVOOutput
   XDEF  _LVOSeek
   XDEF  _LVODeleteFile
   XDEF  _LVORename
   XDEF  _LVOLock
   XDEF  _LVOUnLock
   XDEF  _LVODupLock
   XDEF  _LVOExamine
   XDEF  _LVOExNext
   XDEF  _LVOInfo
   XDEF  _LVOCreateDir
   XDEF  _LVOCurrentDir
   XDEF  _LVOIoErr
   XDEF  _LVOCreateProc
   XDEF  _LVOExit
   XDEF  _LVOLoadSeg
   XDEF  _LVOUnLoadSeg
   XDEF  _LVOGetPacket
   XDEF  _LVOQueuePacket
   XDEF  _LVODeviceProc
   XDEF  _LVOSetComment
   XDEF  _LVOSetProtection
   XDEF  _LVODateStamp
   XDEF  _LVODelay
   XDEF  _LVOWaitForChar
   XDEF  _LVOParentDir
   XDEF  _LVOIsInteractive
   XDEF  _LVOExecute

   ENDC





   END

