	IFND	REXX_RXSLIB_I
REXX_RXSLIB_I	EQU	1
**
**	$Filename: rexx/rxslib.i $
**	$Release: 2.04 Includes, V37.4 $
**	$Revision: 1.15 $
**	$Date: 91/11/08 $
**
**	Include file for the REXX Systems Library
**
**	(C) Copyright 1986,1987,1988,1989,1990 William S. Hawes.
**	(C) Copyright 1990-1991 Commodore-Amiga, Inc.
**		All Rights Reserved
**

	IFND	REXX_STORAGE_I
	INCLUDE	"rexx/storage.i"
	ENDC

	; Macro definitions

RXSLIBNAME	MACRO
	dc.b	'rexxsyslib.library',0
	ENDM

RXSDIR	MACRO	; public port name
	dc.b	'REXX',0
	ENDM

RXSTNAME	MACRO	; name for tasks
	dc.b	'ARexx',0
	ENDM

	; Structure definition for the REXX systems library

	STRUCTURE	RxsLib,LIB_SIZE     ; EXEC library node
	UBYTE	rl_Flags	       ; global flags
	UBYTE	rl_Shadow	       ; shadow flags
	APTR	rl_SysBase	       ; EXEC library base
	APTR	rl_DOSBase	       ; DOS library base
	APTR	rl_IeeeDPBase        ; IEEE DP math library base
	LONG	rl_SegList	       ; library seglist
	LONG	rl_NIL	       ; NIL: stream
	LONG	rl_Chunk	       ; allocation quantum
	LONG	rl_MaxNest	       ; maximum expression nesting

	APTR	rl_NULL	       ; static string: NULL
	APTR	rl_FALSE	       ; static string: FALSE
	APTR	rl_TRUE	       ; static string: TRUE
	APTR	rl_REXX	       ; static string: REXX
	APTR	rl_COMMAND	       ; static string: COMMAND
	APTR	rl_STDIN	       ; static string: STDIN
	APTR	rl_STDOUT	       ; static string: STDOUT
	APTR	rl_STDERR	       ; static string: STDERR
	APTR	rl_Version	       ; version string

	APTR	rl_TaskName	       ; name string for tasks
	LONG	rl_TaskPri	       ; starting priority
	LONG	rl_TaskSeg	       ; startup seglist
	LONG	rl_StackSize	       ; stack size
	APTR	rl_RexxDir	       ; REXX directory
	APTR	rl_CTABLE	       ; character attribute table
	APTR	rl_Notice	       ; copyright notice

	STRUCT	rl_RexxPort,MP_SIZE  ; public port
	UWORD	rl_ReadLock	       ; lock count
	APTR	rl_TraceFH	       ; global trace console

	STRUCT	rl_TaskList,LH_SIZE  ; REXX task list
	WORD	rl_NumTask
	STRUCT	rl_LibList,LH_SIZE   ; Library List header
	WORD	rl_NumLib
	STRUCT	rl_ClipList,LH_SIZE  ; ClipList header
	WORD	rl_NumClip
	STRUCT	rl_MsgList,LH_SIZE   ; pending messages
	WORD	rl_NumMsg
	STRUCT	rl_PgmList,LH_SIZE   ; cached programs
	WORD	rl_NumPgm	       ; cache count

	UWORD	rl_TraceCnt	       ; trace console usage count
	WORD	rl_avail
	LABEL	rl_SIZEOF

* Global flag bit definitions for RexxMaster
RLFB_TRACE	EQU	RTFB_TRACE	       ; interactive tracing?
RLFB_HALT	EQU	RTFB_HALT	       ; halt execution?
RLFB_SUSP	EQU	RTFB_SUSP	       ; suspend execution?
RLFB_STOP	EQU	6		       ; deny further invocations
RLFB_CLOSE	EQU	7		       ; close the master

* Mask for control flags
RLFMASK	EQU	1<<RLFB_TRACE!1<<RLFB_HALT!1<<RLFB_SUSP

	; Initialization constants

RXSCHUNK	EQU	1024		       ; allocation quantum
RXSNEST	EQU	32		       ; expression nesting limit
RXSTPRI	EQU	0		       ; task priority
RXSSTACK	EQU	4096		       ; stack size

	; The library entry point offsets

	LIBINIT
	LIBDEF	_LVORexx	       ; Main entry point
	LIBDEF	_LVOrxParse	       ; (private)
	LIBDEF	_LVOrxInstruct       ; (private)
	LIBDEF	_LVOrxSuspend        ; (private)
	LIBDEF	_LVOEvalOp	       ; (private)

	LIBDEF	_LVOAssignValue      ; (private)
	LIBDEF	_LVOEnterSymbol      ; (private)
	LIBDEF	_LVOFetchValue       ; (private)
	LIBDEF	_LVOLookUpValue      ; (private)
	LIBDEF	_LVOSetValue	       ; (private)
	LIBDEF	_LVOSymExpand        ; (private)

	LIBDEF	_LVOErrorMsg
	LIBDEF	_LVOIsSymbol
	LIBDEF	_LVOCurrentEnv
	LIBDEF	_LVOGetSpace
	LIBDEF	_LVOFreeSpace

	LIBDEF	_LVOCreateArgstring
	LIBDEF	_LVODeleteArgstring
	LIBDEF	_LVOLengthArgstring
	LIBDEF	_LVOCreateRexxMsg
	LIBDEF	_LVODeleteRexxMsg
	LIBDEF	_LVOClearRexxMsg
	LIBDEF	_LVOFillRexxMsg
	LIBDEF	_LVOIsRexxMsg

	LIBDEF	_LVOAddRsrcNode
	LIBDEF	_LVOFindRsrcNode
	LIBDEF	_LVORemRsrcList
	LIBDEF	_LVORemRsrcNode
	LIBDEF	_LVOOpenPublicPort
	LIBDEF	_LVOClosePublicPort
	LIBDEF	_LVOListNames

	LIBDEF	_LVOClearMem
	LIBDEF	_LVOInitList
	LIBDEF	_LVOInitPort
	LIBDEF	_LVOFreePort

	LIBDEF	_LVOCmpString
	LIBDEF	_LVOStcToken
	LIBDEF	_LVOStrcmpN
	LIBDEF	_LVOStrcmpU
	LIBDEF	_LVOStrcpyA	       ; obsolete
	LIBDEF	_LVOStrcpyN
	LIBDEF	_LVOStrcpyU
	LIBDEF	_LVOStrflipN
	LIBDEF	_LVOStrlen
	LIBDEF	_LVOToUpper

	LIBDEF	_LVOCVa2i
	LIBDEF	_LVOCVi2a
	LIBDEF	_LVOCVi2arg
	LIBDEF	_LVOCVi2az
	LIBDEF	_LVOCVc2x
	LIBDEF	_LVOCVx2c

	LIBDEF	_LVOOpenF
	LIBDEF	_LVOCloseF
	LIBDEF	_LVOReadStr
	LIBDEF	_LVOReadF
	LIBDEF	_LVOWriteF
	LIBDEF	_LVOSeekF
	LIBDEF	_LVOQueueF
	LIBDEF	_LVOStackF
	LIBDEF	_LVOExistF

	LIBDEF	_LVODOSCommand
	LIBDEF	_LVODOSRead
	LIBDEF	_LVODOSWrite
	LIBDEF	_LVOCreateDOSPkt     ; obsolete
	LIBDEF	_LVODeleteDOSPkt     ; obsolete
	LIBDEF	_LVOSendDOSPkt       ; (private)
	LIBDEF	_LVOWaitDOSPkt       ; (private)
	LIBDEF	_LVOFindDevice       ; (private)

	LIBDEF	_LVOAddClipNode
	LIBDEF	_LVORemClipNode
	LIBDEF	_LVOLockRexxBase
	LIBDEF	_LVOUnlockRexxBase
	LIBDEF	_LVOCreateCLI        ; (private)
	LIBDEF	_LVODeleteCLI        ; (private)
	LIBDEF	_LVOCVs2i

* Character attribute flag bits used in REXX.
CTB_SPACE	EQU	0		       ; white space characters
CTB_DIGIT	EQU	1		       ; decimal digits 0-9
CTB_ALPHA	EQU	2		       ; alphabetic characters
CTB_REXXSYM	EQU	3		       ; REXX symbol characters
CTB_REXXOPR	EQU	4		       ; REXX operator characters
CTB_REXXSPC	EQU	5		       ; REXX special symbols
CTB_UPPER	EQU	6		       ; UPPERCASE alphabetic
CTB_LOWER	EQU	7		       ; lowercase alphabetic

* The flag form of the character attributes
CTF_SPACE	EQU	1<<CTB_SPACE
CTF_DIGIT	EQU	1<<CTB_DIGIT
CTF_ALPHA	EQU	1<<CTB_ALPHA
CTF_REXXSYM	EQU	1<<CTB_REXXSYM
CTF_REXXOPR	EQU	1<<CTB_REXXOPR
CTF_REXXSPC	EQU	1<<CTB_REXXSPC
CTF_UPPER	EQU	1<<CTB_UPPER
CTF_LOWER	EQU	1<<CTB_LOWER

	ENDC
