
typedef ULONG Tag;

struct TagItem	{
    Tag		ti_Tag;
    ULONG	ti_Data;
};

/* ----	system tag values -----------------------------	*/
#define TAG_DONE	(0L)		/* terminates array of TagItems. ti_Data unused	*/
#define TAG_USER	(1L<<31)	/* differentiates user tags from system tags*/


/* definitions for the System() call */

#define SYS_Dummy	TAG_USER + 32
#define SYS_Input	TAG_USER + 33
#define SYS_Output	TAG_USER + 34
#define SYS_Asynch	TAG_USER + 35


/* definitions for the CreateNewProc() call */
/* you MUST specify one of NP_Seglist or NP_Entry.  All else is optional. */

#define NP_Dummy		TAG_USER + 1000
#define NP_Seglist		TAG_USER + 1001
#define NP_FreeSeglist	TAG_USER + 1002
#define NP_Entry		TAG_USER + 1003
#define NP_Input		TAG_USER + 1004
#define NP_Output		TAG_USER + 1005
#define NP_CloseInput	TAG_USER + 1006
#define NP_CloseOutput	TAG_USER + 1007
#define NP_Error		TAG_USER + 1008
#define NP_CloseError	TAG_USER + 1009
#define NP_CurrentDir	TAG_USER + 1010
#define NP_StackSize	TAG_USER + 1011
#define NP_Name			TAG_USER + 1012
#define NP_Priority		TAG_USER + 1013
#define NP_ConsoleTask	TAG_USER + 1014


BPTR DupLockFromFH(BPTR fh);
BPTR OpenFromLock(BPTR lock, long mode);
LONG System(BYTE *command, struct TagItem *tags);

#pragma amicall(DOSBase, 0x174, DupLockFromFH(d1))
#pragma amicall(DOSBase, 0x17a, OpenFromLock(d1,d2))
#pragma amicall(DOSBase, 0x25e, System(d1,d2))

