(*---------------------------------------------------------------------------
  :Program.    ArpLopt.def
  :Author.     M2 implementation by Fridtjof Siebert
  :Address.    Nobileweg 67, D-7-Stgt-40
  :Shortcut.   [fbs]
  :Version.    1.0 (ARP version 34)
  :Date.       14-Jan-88
  :Copyright.  PD
  :Language.   Modula-II
  :Translator. M2Amiga v3.2d
  :History.    30-Dec-88 v0.1 created for ARP1.0          [fbs]
  :History.    14-Jan-88 v1.0 implementation for ARP1.1   [fbs]
  :History.    28-Sep-91 v1.1 split in ARPD AND ARPL for M2Amiga v4.0d
  :History.                   by Dieter WILHLEM
  :Contents.   Library Modul for arp.library.
  :Remark.     Contact me if your find errors. I wasn't able to all of it!
  :Remark.     Thanx to Martin Taillefer for his Benchmark ARP-code
---------------------------------------------------------------------------*)

DEFINITION MODULE ArpLopt;

  (*$ LargeVars:=FALSE LongAlign:=FALSE *)

FROM SYSTEM     IMPORT ADDRESS, LONGSET, SHIFT, BPTR;
FROM DosD       IMPORT DosLibrary, FileInfoBlock, FileInfoBlockPtr,
                       FileHandlePtr, FileLockPtr, ProcessPtr, DosPacketPtr,
                       DatePtr, BSTR, DeviceList, Date, InfoDataPtr;
FROM ExecD      IMPORT MinList, MinNode, MsgPortPtr, MemReqSet, LibraryPtr,
                       SignalSemaphore, TaskPtr, Node, Library, Message;
FROM GraphicsD  IMPORT GfxBasePtr;
FROM IntuitionD IMPORT IntuitionBase, WindowPtr;
IMPORT a: ArpD;

VAR optArpLibVersion: INTEGER;
    optArpLibBase: LibraryPtr;

(*------  Procedures:  ------*)

PROCEDURE Open(name{1}: a.STRPTR;
               accessMode{2}: LONGINT): FileHandlePtr;               CODE -30;
PROCEDURE Close(file{1}: FileHandlePtr);                             CODE -36;
PROCEDURE Read(file{1}: FileHandlePtr;
               buffer{2}: ADDRESS;
               length{3}: LONGINT): LONGINT;                         CODE -42;
PROCEDURE Write(file{1}: FileHandlePtr;
                buffer{2}: ADDRESS;
                length{3}: LONGINT): LONGINT;                        CODE -48;
PROCEDURE Input(): FileHandlePtr;                                    CODE -54;
PROCEDURE Output(): FileHandlePtr;                                   CODE -60;
PROCEDURE Seek(file{1}: FileHandlePtr;
               position{2}: LONGINT;
               mode{3}: LONGINT): LONGINT;                           CODE -66;
PROCEDURE DeleteFile(name{1}: a.STRPTR): BOOLEAN;                    CODE -72;
PROCEDURE Rename(oldName{1},newName{2}: a.STRPTR): BOOLEAN;          CODE -78;
PROCEDURE Lock(name{1}: a.STRPTR;
               accessMode{2}: LONGINT): FileLockPtr;                 CODE -84;
PROCEDURE UnLock(lock{1}: FileLockPtr);                              CODE -90;
PROCEDURE DupLock(lock{1}: FileLockPtr): FileLockPtr;                CODE -96;
PROCEDURE Examine(lock{1}: FileLockPtr;
                  infoBlock{2}: FileInfoBlockPtr): BOOLEAN;          CODE -102;
PROCEDURE ExNext(lock{1}: FileLockPtr;
                 infoBlock{2}: FileInfoBlockPtr): BOOLEAN;           CODE -108;
PROCEDURE Info(lock{1}: FileLockPtr;
               parameterBlock{2}: InfoDataPtr): BOOLEAN;             CODE -114;
PROCEDURE CreateDir(name{1}: a.STRPTR): FileLockPtr;                 CODE -120;
PROCEDURE CurrentDir(lock{1}: FileLockPtr): FileLockPtr;             CODE -126;
PROCEDURE IoErr(): LONGINT;                                          CODE -132;
PROCEDURE CreateProc(name{1}: a.STRPTR;
                     pri{2}: LONGINT;
                     segment{3}: BPTR;
                     stackSize{4}: LONGINT): ProcessPtr;             CODE -138;
PROCEDURE Exit(returnCode{1}: LONGINT);                              CODE -144;
PROCEDURE LoadSeg(name{1}: a.STRPTR): BPTR;                          CODE -150;
PROCEDURE UnLoadSeg(segment{1}: BPTR);                               CODE -156;
PROCEDURE GetPacket(wait{1}: LONGINT): DosPacketPtr;                 CODE -162;
PROCEDURE QueuePacket(packet{1}: DosPacketPtr): LONGINT;             CODE -168;
PROCEDURE DeviceProc(name{1}: a.STRPTR): ProcessPtr;                 CODE -174;
PROCEDURE SetComment(name{1},comment{2}: a.STRPTR): BOOLEAN;         CODE -180;
PROCEDURE SetProtection(name{1}:a.STRPTR;
                        mask{2}:LONGSET): BOOLEAN;                   CODE -186;
PROCEDURE DateStamp(v{1}: DatePtr);                                  CODE -192;
PROCEDURE Delay(ticks{1}: LONGINT);                                  CODE -198;
PROCEDURE WaitForChar(file{1}: FileHandlePtr;
                      timeout{2}: LONGINT): BOOLEAN;                 CODE -204;
PROCEDURE ParentDir(lock{1}: FileLockPtr): FileLockPtr;              CODE -210;
PROCEDURE IsInteractive(file{1}: FileHandlePtr): BOOLEAN;            CODE -216;
PROCEDURE Execute(commandString{1}: a.STRPTR;
                  input{2}: FileHandlePtr;
                  output{3}: FileHandlePtr): LONGINT;                CODE -222;

(*------  New ARP Routines:  ------*)

PROCEDURE AddDADevs(dalist{8}: a.DirectoryEntryPtr;
                    select{0}: a.DirEntryTypeSet): LONGINT;          CODE -516;
PROCEDURE AddDANode(data{8}: ADDRESS;
                    dalist{9}: a.DirectoryEntryPtr;
                    length{0}: LONGINT;
                    id{1}: a.DirEntryTypeSet): a.DirectoryEntryPtr;  CODE -510;
PROCEDURE AddResidentPrg(segment{1}: BPTR;
                         name{8}: a.STRPTR): a.ResidentPrgNodePtr;   CODE -582;
PROCEDURE ArpAlloc(size{0}: LONGINT): ADDRESS;                       CODE -384;
PROCEDURE ArpAllocMem(size{0}: LONGINT;
                      reqs{1}: MemReqSet): ADDRESS;                  CODE -390;
PROCEDURE ArpDupLock(lock{1}: FileLockPtr): FileLockPtr;             CODE -402;
PROCEDURE ArpExit(returncode{0}: LONGINT;
                  fault{2}: LONGINT);                                CODE -378;
PROCEDURE ArpLock(name{1}: a.STRPTR;
                  accessMode{2}: LONGINT): FileLockPtr;              CODE -408;
PROCEDURE ArpOpen(name{1}: a.STRPTR;
                  accessmode{2}: LONGINT): FileHandlePtr;            CODE -396;
PROCEDURE Assign(name{8}: a.STRPTR;
                 phys{9}: a.STRPTR): a.AssignRes;                    CODE -336;
PROCEDURE ASyncRun(command{8}: a.STRPTR;
                   args{9}: a.STRPTR;
                   pcb{10}: a.ProcessCtrlBlkPtr): LONGINT;           CODE -546;
PROCEDURE Atol(string{8}: a.STRPTR): LONGINT;                        CODE -258;
PROCEDURE BaseName(pathname{8}: a.STRPTR): a.STRPTR;                 CODE -630;
PROCEDURE BtoCStr(cstring{8}: a.STRPTR;
                  bstr{0}: BSTR;
                  maxlength{1}: LONGINT): LONGINT;                   CODE -354;
PROCEDURE CheckAbort(func{9}: PROC): LONGSET;                        CODE -270;
PROCEDURE CheckBreak(mask{1}: LONGSET;
                     func{9}: PROC): LONGSET;                        CODE -276;
PROCEDURE CheckSumPrg(node{1}: a.ResidentPrgNodePtr): LONGCARD;      CODE -618;
PROCEDURE CloseWindowSafely(window{8}: WindowPtr;
                            morewindows{9}: BOOLEAN);                CODE -300;
PROCEDURE CompareLock(lock1{0},lock2{1}: FileLockPtr): a.LockComp;   CODE -456;
PROCEDURE CreatePort(name{8}: a.STRPTR;
                     priority{0}: SHORTINT): MsgPortPtr;             CODE -306;
PROCEDURE CreateTaskResList(): a.ArpResListPtr;                      CODE -468;
PROCEDURE CtoBStr(cstring{8}: a.STRPTR;
                  bstr{0}: BSTR;
                  maxlength{1}: LONGINT): LONGINT;                   CODE -360;
PROCEDURE DeletePort(port{9}: MsgPortPtr);                           CODE -312;
PROCEDURE DosAllocMem(size{0}: LONGINT): ADDRESS;                    CODE -342;
PROCEDURE DosFreeMem(memBlk{9}: ADDRESS);                            CODE -348;
PROCEDURE EscapeString(string{8}: a.STRPTR): LONGINT;                CODE -264;
PROCEDURE FileRequest(filereq{8}: a.FileRequesterPtr): ADDRESS;      CODE -294;
PROCEDURE FindCLI(tasknum{0}: LONGINT): ProcessPtr;                  CODE -420;
PROCEDURE FindFirst(pat{0}: a.STRPTR;
                    chain{8}: a.AnchorPathPtr): LONGINT;             CODE -438;
PROCEDURE FindNext(chain{8}: a.AnchorPathPtr): LONGINT;              CODE -444;
PROCEDURE FindTaskResList(): a.ArpResListPtr;                        CODE -462;
PROCEDURE FPrintf(file{0}: FileHandlePtr;
                  string{8}: a.STRPTR;
                  args{9}: ADDRESS): LONGINT;                        CODE -234;
PROCEDURE FreeAccess(tracker{9}: a.TrackedResPtr);                   CODE -498;
PROCEDURE FreeAnchorChain(chain{8}: a.AnchorPathPtr);                CODE -450;
PROCEDURE FreeDAList(dalist{9}: ADDRESS);                            CODE -504;
PROCEDURE FreeResList(freelist{9}: ADDRESS);                         CODE -474;
PROCEDURE FreeTaskResList(): BOOLEAN;                                CODE -372;
PROCEDURE FreeTrackeItem(item{9}: a.TrackedResPtr);                  CODE -480;
PROCEDURE GADS(cmdLine{8}: ADDRESS;
               cmdLen{0}: LONGINT;
               help{9}: a.STRPTR;
               argarray{10}: ADDRESS;
               tplate{11}: a.STRPTR): LONGINT;                       CODE -252;
PROCEDURE GetAccess(tracker{9}: a.TrackedResPtr): a.TrackedResPtr;   CODE -492;
PROCEDURE GetDevInfo(devinfo{10}: a.DeviceListPtr): a.DeviceListPtr; CODE -366;
PROCEDURE GetEnv(string{8}: a.STRPTR;
                 buffer{9}: ADDRESS;
                 size{0}: LONGINT): a.STRPTR;                        CODE -282;
PROCEDURE GetTracker(id{9}: LONGINT): a.DefaultTrackerPtr;           CODE -486;
PROCEDURE InitStdPacket(action{0}: LONGINT;
                        args{8}: ADDRESS;
                        packet{9}: ADDRESS;
                        replyport{10}: MsgPortPtr);                  CODE -324;
PROCEDURE LDiv(dividend{0},divisor{1}: LONGINT): LONGINT;            CODE -606;
PROCEDURE LMod(dividend{0},divisor{1}: LONGINT): LONGINT;            CODE -612;
PROCEDURE LMult(num1{0},num2{1}: LONGINT): LONGINT;                  CODE -600;
PROCEDURE LoadPrg(name{1}: a.STRPTR): BPTR;                          CODE -552;
PROCEDURE ObtainResidentPrg(name{8}: a.STRPTR): a.ResidentPrgNodePtr;CODE -576;
PROCEDURE PathName(lock{0}: FileLockPtr;
                   dest{8}: a.STRPTR;
                   numberNames{1}: LONGINT): LONGINT;                CODE -330;
PROCEDURE PatternMatch(pat{8}: a.STRPTR;
                       str{9}: a.STRPTR): BOOLEAN;                   CODE -432;
PROCEDURE PreParse(source{8}: a.STRPTR;
                   dest{9}: a.STRPTR): BOOLEAN;                      CODE -558;
PROCEDURE Printf(string{8}: a.STRPTR;
                 args{9}: ADDRESS): LONGINT;                         CODE -228;
PROCEDURE Puts(string{9}: a.STRPTR): LONGINT;                        CODE -240;
PROCEDURE QSort(baseptr{8}: ADDRESS;
                regionsize{0}: LONGINT;
                bytesize{1}: LONGINT;
                userfunction{9}: PROC): BOOLEAN;                     CODE -426;
PROCEDURE ReadLine(buffer{8}: ADDRESS): LONGINT;                     CODE -246;
PROCEDURE ReleaseResidentPrg(segment{1}: ADDRESS):
                                      a.ResidentPrgNodePtr;          CODE -636;
PROCEDURE RemResidentPrg(name{8}: a.STRPTR): LONGCARD;               CODE -588;
PROCEDURE RListAlloc(reslist{8}: a.ArpResListPtr;
                     size{0}: LONGINT): ADDRESS;                     CODE -414;
PROCEDURE SendPacket(action{0}: LONGINT;
                     args{8}: ADDRESS;
                     handler{9}: MsgPortPtr): LONGINT;               CODE -318;
PROCEDURE SetEnv(string{8}: a.STRPTR;
                 buffer{9}: ADDRESS): BOOLEAN;                       CODE -288;
PROCEDURE StampToStr(datetime{8}: a.DateTimePtr): BOOLEAN;           CODE -564;
PROCEDURE Strcmp(s1{8},s2{9}: a.STRPTR): LONGINT;                    CODE -522;
PROCEDURE Strncmp(st{8},s2{9}: a.STRPTR;
                  n{0}: LONGINT): LONGINT;                           CODE -528;
PROCEDURE StrToStamp(datetime{8}: a.DateTimePtr): BOOLEAN;           CODE -570;
PROCEDURE SyncRun(filename{8}: a.STRPTR;
                  args{9}: a.STRPTR;
                  input{0}: FileHandlePtr;
                  output{1}: FileHandlePtr): LONGINT;                CODE -540;
PROCEDURE TackOn(pathname{8},filename{9}: a.STRPTR);                 CODE -624;
PROCEDURE ToUpper(old{0}: CHAR): CHAR;                               CODE -534;
PROCEDURE UnLoadPrg(segment{1}: BPTR);                               CODE -594;

END ArpLopt.
