;
; ** $VER: rxslib.h 1.6 (8.11.91)
; ** Includes Release 40.15
; **
; ** The header file for the REXX Systems Library
; **
; ** (C) Copyright 1987,1988,1989,1990 William S. Hawes
; ** (C) Copyright 1990-1993 Commodore-Amiga, Inc.
; **  All Rights Reserved
;

IncludePath    "PureInclude:"
XIncludeFile "rexx/storage.pb"

;#RXSNAME  = "rexxsyslib\library"
;#RXSDIR  = "REXX"
;#RXSTNAME = "ARexx"

;  The REXX systems library structure. This should be considered as
;  semi-private and read-only, except for documented exceptions.

Structure RxsLib
   rl_Node.Node        ;  EXEC library node
   rl_Flags.b         ;  global flags
   rl_Shadow.b         ;  shadow flags
   *rl_SysBase.l        ;  EXEC library base
   *rl_DOSBase.l        ;  DOS library base
   *rl_IeeeDPBase.l        ;  IEEE DP math library base
   rl_SegList.l        ;  library seglist
   rl_NIL.l         ;  global NIL: filehandle
   rl_Chunk.l         ;  allocation quantum
   rl_MaxNest.l        ;  maximum expression nesting
   *rl_NULL.NexxStr        ;  static string: NULL
   *rl_FALSE.NexxStr        ;  static string: FALSE
   *rl_TRUE.NexxStr        ;  static string: TRUE
   *rl_REXX.NexxStr        ;  static string: REXX
   *rl_COMMAND.NexxStr        ;  static string: COMMAND
   *rl_STDIN.NexxStr        ;  static string: STDIN
   *rl_STDOUT.NexxStr        ;  static string: STDOUT
   *rl_STDERR.NexxStr        ;  static string: STDERR
   *rl_Version.b        ;  version string

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

   rl_RexxPort.MsgPort        ;  REXX public port
   rl_ReadLock.w        ;  lock count
   rl_TraceFH.l        ;  global trace console
   rl_TaskList.List        ;  REXX task list
   rl_NumTask.w        ;  task count
   rl_LibList.List        ;  Library List header
   rl_NumLib.w        ;  library count
   rl_ClipList.List        ;  ClipList header
   rl_NumClip.w        ;  clip node count
   rl_MsgList.List        ;  pending messages
   rl_NumMsg.w        ;  pending count
   rl_PgmList.List        ;  cached programs
   rl_NumPgm.w        ;  program count

   rl_TraceCnt.w        ;  usage count for trace console
   rl_avail.w
   EndStructure

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

#RLFMASK    = (1 << #RLFB_TRACE) | (1 << #RLFB_HALT) | (1 << #RLFB_SUSP)

;  Initialization constants
#RXSCHUNK   = 1024        ;  allocation quantum
#RXSNEST    = 32         ;  expression nesting limit
#RXSTPRI    = 0         ;  task priority
#RXSSTACK   = 4096        ;  stack size

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

;  Attribute flags
#CTF_SPACE   = (1  <<  #CTB_SPACE)
#CTF_DIGIT   = (1  <<  #CTB_DIGIT)
#CTF_ALPHA   = (1  <<  #CTB_ALPHA)
#CTF_REXXSYM = (1  <<  #CTB_REXXSYM)
#CTF_REXXOPR = (1  <<  #CTB_REXXOPR)
#CTF_REXXSPC = (1  <<  #CTB_REXXSPC)
#CTF_UPPER   = (1  <<  #CTB_UPPER)
#CTF_LOWER   = (1  <<  #CTB_LOWER)

