/* $Revision Header * Header built automatically - do not edit! *************
 *
 *	(C) Copyright 1990 by MXM
 *
 *	Name .....: PreInclude.c
 *	Created ..: Sunday 25-Mar-90 12:57
 *	Revision .: 0
 *
 *	Date            Author          Comment
 *	=========       ========        ====================
 *	25-Mar-90       Olsen           Created this file!
 *
 * $Revision Header ********************************************************/

	/* Main system includes. */

#include <libraries/dosextens.h>
#include <exec/execbase.h>
#include <exec/resident.h>
#include <exec/memory.h>
#include <exec/alerts.h>

	/* Rexx definitions. */

#include <rexx/rxslib.h>

	/* Amiga prototypes/pragmas. */

#include <functions.h>

	/* BCPL 'NULL'. */

#define ZERO 0L

	/* The rexx host library base. */

struct RexxHostBase
{
	struct Library	 LibNode;
	struct RxsLib	*RexxSysBase;
};

	/* A rexx host, somewhat more than a simple MsgPort. */

struct RexxHost
{
	struct MsgPort	rh_Port;

	ULONG		rh_SpecialID;
	ULONG		rh_Reserved[4];
};

	/* Prototypes for all library functions. */

struct RexxHost *	CreateRexxHost(STRPTR);
VOID *			DeleteRexxHost(struct RexxHost *);
LONG			SendRexxCommand(struct RexxHost *,STRPTR,STRPTR,STRPTR);
VOID			FreeRexxCommand(struct RexxMsg *);
VOID			ReplyRexxCommand(struct RexxMsg *,LONG,LONG,STRPTR);
STRPTR			GetRexxCommand(struct RexxMsg *);
STRPTR			GetRexxArg(struct RexxMsg *);
LONG			GetRexxResult1(struct RexxMsg *);
LONG			GetRexxResult2(struct RexxMsg *);
STRPTR			GetToken(STRPTR,LONG *,STRPTR,LONG);
LONG			GetStringValue(STRPTR);
STRPTR			BuildValueString(LONG,STRPTR);
LONG			RexxStrCmp(STRPTR,STRPTR);

	/* Library calls for rexx host lib. */

#pragma amicall(RexxHostBase, 0x1e, CreateRexxHost(a0))
#pragma amicall(RexxHostBase, 0x24, DeleteRexxHost(a0))
#pragma amicall(RexxHostBase, 0x2a, SendRexxCommand(a0,a1,a2,a3))
#pragma amicall(RexxHostBase, 0x30, FreeRexxCommand(a0))
#pragma amicall(RexxHostBase, 0x36, ReplyRexxCommand(a0,d0,d1,a1))
#pragma amicall(RexxHostBase, 0x3c, GetRexxCommand(a0))
#pragma amicall(RexxHostBase, 0x42, GetRexxArg(a0))
#pragma amicall(RexxHostBase, 0x48, GetRexxResult1(a0))
#pragma amicall(RexxHostBase, 0x4e, GetRexxResult2(a0))
#pragma amicall(RexxHostBase, 0x54, GetToken(a0,a1,a2,d0))
#pragma amicall(RexxHostBase, 0x5a, GetStringValue(a0))
#pragma amicall(RexxHostBase, 0x60, BuildValueString(d0,a0))
#pragma amicall(RexxHostBase, 0x66, RexxStrCmp(a0,a1))

	/* Protos for assembly language string routines. */

LONG StrLen(char *);
VOID StrCpy(char *,char *);
VOID StrNCpy(char *,char *,LONG);

	/* And some more pragmas. */

#pragma regcall(StrLen(a0))
#pragma regcall(StrCpy(a0,a1))
#pragma regcall(StrNCpy(a0,a1,d0))
