#ifndef	ARPFUNCTIONS_H
#define ARPFUNCTIONS_H

/* ARPfunctions.h -- declarations of the arp functions for 'C' convenience */
/* Created 11/8/87 by -=+SDB+=- 					   */
/* Corrected to provide function prototypes 11/30/87 by John Toebes        */
/* Corrected function and argument typing errors 1/10/88 -=+SDB+=-         */
/* more corrections, + V33 additions, 2/14/88 -=+SDB+=-			   */

#ifdef __ARGS
#undef	__ARGS
#endif

#define __ARGS(a) a  /* Lattice supports full prototype checking */

#ifndef LIBRARIES_DOS_H
#include <libraries/dos.h>	/* For BPTR declaration */
#endif !LIBRARIES_DOS_H

extern struct ArpBase *ArpBase;

LONG Printf __ARGS( (char *,) );
LONG FPrintf __ARGS( (BPTR, char*,) );
LONG Puts  __ARGS( ( char * ) );
LONG Readline __ARGS( (char *) );
LONG GADS  __ARGS( (char *,long, char *, char **, char *) );
LONG Atol __ARGS( (char *) );
ULONG EscapeString  __ARGS( (char *) );
LONG CheckAbort __ARGS( (void(*)) );
LONG CheckBreak __ARGS( (long, void(*)) );
BYTE *Getenv __ARGS( (char *, char *, long) );
BOOL Setenv __ARGS( (char *, char *) );
BYTE *FileRequest  __ARGS( (struct FileRequester *) );
VOID CloseWindowSafely __ARGS( (struct Window *, long) );
struct MsgPort	*CreatePort __ARGS( (char *, LONG) );
VOID DeletePort  __ARGS( (struct MsgPort *) );
LONG SendPacket  __ARGS( (long, long *, struct MsgPort *) );
VOID InitStdPacket __ARGS( (long, long *, struct DosPacket *, struct MsgPort *) );
ULONG PathName __ARGS( (BPTR, char *,long) );
ULONG Assign __ARGS( (char *, char *) );
VOID *DosAllocMem __ARGS( (long) );
VOID DosFreeMem __ARGS( (VOID *) );
ULONG BtoCStr __ARGS( (char *, BSTR, long) );
ULONG CtoBStr __ARGS( (char *, BSTR, long) );
struct DeviceList *GetDevInfo __ARGS( (struct DeviceList *) );
BOOL FreeTaskResList __ARGS( (void) );
VOID ArpExit  __ARGS( (long,long) );
VOID *ArpAlloc __ARGS( (long) );
VOID *ArpAllocMem __ARGS( (long, long) );
BPTR ArpOpen __ARGS( (char *, long) );
BPTR ArpDupLock __ARGS( (BPTR) );
BPTR ArpLock __ARGS( (char *, long) );
VOID *RListAlloc __ARGS( ( struct ArpResList *, long) );
struct Process *FindCLI __ARGS( (long) );
BOOL QSort __ARGS( (void *, long, long, int(*)) );
BOOL PatternMatch __ARGS( (char *,char *) );
LONG FindFirst __ARGS( (char *, struct AnchorPath *) );
LONG FindNext __ARGS( (struct AnchorPath *) );
VOID FreeAnchorChain __ARGS( (struct AnchorPath *) );
ULONG CompareLock __ARGS( (BPTR, BPTR) );
struct ArpResList *FindTaskResList __ARGS( (void) );
struct ArpResList *CreateTaskResList __ARGS( (void) );
VOID FreeResList __ARGS( (struct ArpResList *) );
VOID FreeTrackedItem __ARGS( (struct DefaultTracker *) );
struct DefaultTracker *GetTracker __ARGS( (long) );
VOID *GetAccess __ARGS( (struct DefaultTracker *) );
VOID FreeAccess __ARGS( (struct DefaultTracker *) );
VOID FreeDAList __ARGS( (struct DirectoryEntry *) );
struct DirectoryEntry *AddDANode __ARGS( (char *, struct DirectoryEntry **, long, long) );
ULONG AddDADevs __ARGS( (struct DirectoryEntry **, long) );
LONG Strcmp __ARGS( (char *, char *) );
LONG Strncmp __ARGS( (char *, char *, long) );
BYTE Toupper __ARGS( (BYTE) );
LONG SyncRun __ARGS( (char *, char *, BPTR, BPTR) );
/* Version 32+ stuff */
LONG ASyncRun __ARGS( (char *, char *, struct ProcessControlBlock *) );
BPTR LoadPrg __ARGS( (char *) );
BOOL PreParse __ARGS( (char *, char *) );
BOOL StamptoStr __ARGS( (struct DateTime *) );
BOOL StrtoStamp __ARGS( (struct DateTime *) );
struct ResidentProgramNode *ObtainResidentPrg __ARGS( (char *) );
struct ResidentProgramNode *AddResidentPrg __ARGS( (BPTR, char *) );
LONG RemResidentPrg __ARGS( (char *) );
VOID UnLoadPrg __ARGS( (BPTR) );
LONG LMult __ARGS( (LONG, LONG) );
LONG LDiv __ARGS( (LONG, LONG) );
LONG LMod __ARGS( (LONG, LONG) );
ULONG CheckSumPrg __ARGS( (struct ResidentProgramNode *) );
VOID TackOn __ARGS( (char *, char *));
BYTE *BaseName __ARGS( (char *) );
struct ResidentProgramNode *ReleaseResidentPrg __ARGS( (BPTR) );

/* arp_lib.fd, Created 10-Jan-88 by SDB,*/
/* for all you lettuce heads out there.*/
/* Use at your own risk, etc.,etc.,etc.*/
/* New functions added 24-Jan-88, SDB*/
/* Final additions for V33.4, 14-Feb-88, SDB*/
/* Final Final addition: 16-Feb-88, add register optimizations for Peabody.*/
/* --- DOS Identical functions*/
#pragma libcall ArpBase Open 1e 2102
#pragma libcall ArpBase Close 24 101
#pragma libcall ArpBase Read 2a 32103
#pragma libcall ArpBase Write 30 32103
#pragma libcall ArpBase Input 36 0
#pragma libcall ArpBase Output 3c 0
#pragma libcall ArpBase Seek 42 32103
#pragma libcall ArpBase DeleteFile 48 101
#pragma libcall ArpBase Rename 4e 2102
#pragma libcall ArpBase Lock 54 2102
#pragma libcall ArpBase UnLock 5a 101
#pragma libcall ArpBase DupLock 60 101
#pragma libcall ArpBase Examine 66 2102
#pragma libcall ArpBase ExNext 6c 2102
#pragma libcall ArpBase Info 72 2102
#pragma libcall ArpBase CreateDir 78 101
#pragma libcall ArpBase CurrentDir 7e 101
#pragma libcall ArpBase IoErr 84 0
#pragma libcall ArpBase CreateProc 8a 432104
#pragma libcall ArpBase Exit 90 101
#pragma libcall ArpBase LoadSeg 96 101
#pragma libcall ArpBase UnLoadSeg 9c 101
/*pragma libcall ArpBase GetPacket a2 101*/
/*pragma libcall ArpBase QueuePacket a8 101*/
#pragma libcall ArpBase DeviceProc ae 101
#pragma libcall ArpBase SetComment b4 2102
#pragma libcall ArpBase SetProtection ba 2102
#pragma libcall ArpBase DateStamp c0 101
#pragma libcall ArpBase Delay c6 101
#pragma libcall ArpBase WaitForChar cc 2102
#pragma libcall ArpBase ParentDir d2 101
#pragma libcall ArpBase IsInteractive d8 101
/* Introducing a Major Contributor to ARP, the Execute() function call...*/
#pragma libcall ArpBase Execute de 32103
/*--- ARP Functions*/
/*--- Functions marked private are only because we don't want lattice*/
/*--- to generate code, but rather use the stub routines in LatticeGlue.s*/
/*--- */
/*pragma libcall ArpBase Printf e4 9802*/
/*pragma libcall ArpBase FPrintf ea 98003*/
#pragma libcall ArpBase Puts f0 901
#pragma libcall ArpBase ReadLine f6 801
/*pragma libcall ArpBase GADS fc ba90805*/
/*pragma libcall ArpBase Atol 102 801*/
#pragma libcall ArpBase EscapeString 108 801
#pragma libcall ArpBase CheckAbort 10e 901
#pragma libcall ArpBase CheckBreak 114 9102
#pragma libcall ArpBase Getenv 11a 9803
#pragma libcall ArpBase Setenv 120 9802
#pragma libcall ArpBase FileRequest 126 801
#pragma libcall ArpBase CloseWindowSafely 12c 9802
#pragma libcall ArpBase CreatePort 132 802
#pragma libcall ArpBase DeletePort 138 901
#pragma libcall ArpBase SendPacket 13e 98003
#pragma libcall ArpBase InitStdPacket 144 a98004
#pragma libcall ArpBase PathName 14a 18003
#pragma libcall ArpBase Assign 150 9802
#pragma libcall ArpBase DosAllocMem 156 1
#pragma libcall ArpBase DosFreeMem 15c 901
#pragma libcall ArpBase BtoCStr 162 10803
#pragma libcall ArpBase CtoBstr 168 10803
#pragma libcall ArpBase GetDevInfo 16e a01
#pragma libcall ArpBase FreeTaskResList 174 0
#pragma libcall ArpBase ArpExit 17a 2002
/*pragma libcall ArpBase ArpAlloc 180 1*/
/*pragma libcall ArpBase ArpAllocMem 186 1002*/
/*pragma libcall ArpBase ArpOpen 18c 2102*/
/*pragma libcall ArpBase ArpDupLock 192 101*/
/*pragma libcall ArpBase ArpLock 198 2102*/
/*pragma libcall ArpBase RListAlloc 19e 802*/
#pragma libcall ArpBase FindCLI 1a4 1
#pragma libcall ArpBase QSort 1aa 910804
#pragma libcall ArpBase PatternMatch 1b0 9802
#pragma libcall ArpBase FindFirst 1b6 8002
#pragma libcall ArpBase FindNext 1bc 801
#pragma libcall ArpBase FreeAnchorChain 1c2 801
#pragma libcall ArpBase CompareLock 1c8 1002
#pragma libcall ArpBase FindTaskResList 1ce 0
#pragma libcall ArpBase CreateTaskResList 1d4 0
#pragma libcall ArpBase FreeResList 1da 901
#pragma libcall ArpBase FreeTrackedItem 1e0 901
/*pragma libcall ArpBase GetTracker 1e6 0*/
#pragma libcall ArpBase GetAccess 1ec 901
#pragma libcall ArpBase FreeAccess 1f2 901
#pragma libcall ArpBase FreeDAList 1f8 901
#pragma libcall ArpBase AddDANode 1fe 109804
#pragma libcall ArpBase AddDADevs 204 802
#pragma libcall ArpBase Strcmp 20a 9802
#pragma libcall ArpBase Strncmp 210 9803
#pragma libcall ArpBase Toupper 216 1
#pragma libcall ArpBase SyncRun 21c 109804
/* -- The Next generation, the adventure continues!*/
#pragma libcall ArpBase ASyncRun 222 a9803
#pragma libcall ArpBase LoadPrg 228 101
#pragma libcall ArpBase PreParse 22e 9802
#pragma libcall ArpBase StamptoStr 234 801
#pragma libcall ArpBase StrtoStamp 23a 801
#pragma libcall ArpBase ObtainResidentPrg 240 801
#pragma libcall ArpBase AddResidentPrg 246 8102
#pragma libcall ArpBase RemResidentPrg 24c 801
#pragma libcall ArpBase UnLoadPrg 252 101
#pragma libcall ArpBase LMult 258 1002
#pragma libcall ArpBase LDiv 25e 1002
#pragma libcall ArpBase LMod 264 1002
#pragma libcall ArpBase CheckSumPrg 26a 1
#pragma libcall ArpBase TackOn 270 9802
#pragma libcall ArpBase BaseName 276 801
#pragma libcall ArpBase ReleaseResidentPrg 27c 101

#undef __ARGS
#endif !ARPFUNCTIONS_H

