/*
 *   Includes for minrexx.c; please refer to that file for
 *   further documentation.
 */
#include <rexx/rxslib.h>

//STRPTR CreateArgstring(char *,long);
void DeleteArgstring(STRPTR);
struct RexxMsg *CreateRexxMsg(struct MsgPort *,char *,char *);
void DeleteRexxMsg(struct RexxMsg *);

#ifdef AZTEC_C
#pragma amicall(RexxSysBase, 0x7e, CreateArgstring(a0,d0))
#pragma amicall(RexxSysBase, 0x84, DeleteArgstring(a0))
#pragma amicall(RexxSysBase, 0x90, CreateRexxMsg(a0,a1,d0))
#pragma amicall(RexxSysBase, 0x96, DeleteRexxMsg(a0))
#endif //AZTEC_C

#ifdef LATTICE
#pragma libcall RexxSysBase CreateArgstring 7e  802
#pragma libcall RexxSysBase DeleteArgstring 84  801
#pragma libcall RexxSysBase CreateRexxMsg   90 9803
#pragma libcall RexxSysBase DeleteRexxMsg   96  801
#endif //LATTICE

/*
 *   This is the list of functions we can access.  (Cheap forward
 *   declarations, too.)
 */
long upRexxPort() ;
void dnRexxPort() ;
void dispRexxPort() ;
struct RexxMsg *sendRexxCmd() ;
struct RexxMsg *syncRexxCmd() ;
struct RexxMsg *asyncRexxCmd() ;
void replyRexxCmd() ;
/*
 *   Maximum messages that can be pending, and the return codes
 *   for two bad situations.
 */
#define MAXRXOUTSTANDING (300)
#define RXERRORIMGONE (100)
#define RXERRORNOCMD (30)
/*
 *   This is the association list you build up (statically or
 *   dynamically) that should be terminated with an entry with
 *   NULL for the name . . .
 */
struct rexxCommandList {
   char *name ;
   APTR userdata ;
} ;
