* === rexx/rexxio.i ====================================================
*
* Copyright (c) 1986, 1987 by William S. Hawes (All Rights Reserved)
*
* ======================================================================
* Include file for Input/Output related structures

         IFND     REXX_REXXIO_I
REXX_REXXIO_I  SET   1

         IFND     REXX_STORAGE_I
         INCLUDE  "rexx/storage.i"
         ENDC

RXBUFFSZ EQU      204                  ; buffer length

* The IoBuff is a resource node used to maintain the File List.  Nodes are
* allocated and linked into the list whenever a file is opened.

         STRUCTURE IoBuff,rr_SIZEOF    ; structure for files/strings
         APTR     iobRpt               ; read/write pointer
         LONG     iobRct               ; character count
         LONG     iobDFH               ; DOS filehandle
         APTR     iobLock              ; DOS lock
         LONG     iobBct               ; buffer length
         STRUCT   iobArea,RXBUFFSZ     ; buffer area
         LABEL    iobSIZEOF            ; size: 256 bytes

IOBNAME  EQU      LN_NAME              ; logical name
IOBMODE  EQU      rr_Arg1              ; access mode
IOBEOF   EQU      rr_Arg1+1            ; EOF flag
IOBPOS   EQU      rr_Arg2              ; current position

* Access mode definitions
RXIO_EXIST  EQU      -1                ; an existing filehandle
RXIO_STRF   EQU      0                 ; a "string file"
RXIO_READ   EQU      1                 ; read-only access
RXIO_WRITE  EQU      2                 ; write mode
RXIO_APPEND EQU      3                 ; append mode (existing file)

* Offset anchors for SeekF()
RXIO_BEGIN  EQU      -1                ; relative to start
RXIO_CURR   EQU      0                 ; relative to current position
RXIO_END    EQU      1                 ; relative to end

* The Library List contains just plain resource nodes.
LLOFFSET EQU      rr_Arg1              ; "Query" offset
LLVERS   EQU      rr_Arg2              ; library version

* The RexxClipNode structure is used to maintain the Clip List.  The
* value string is stored as an argstring in the rr_Arg1 field.
CLVALUE  EQU      rr_Arg1              ; value string

* A message port structure, maintained as a resource node.
* The ReplyList holds packets that have been received but haven't been
* replied.

         STRUCTURE RexxMsgPort,rr_SIZEOF
         STRUCT   rmp_Port,MP_SIZE           ; the message port
         STRUCT   rmp_ReplyList,LH_SIZE      ; messages awaiting reply 
         LABEL    rmp_SIZEOF

* Device types
DT_DEV   EQU      0                    ; a device
DT_DIR   EQU      1                    ; an ASSIGNed directory
DT_VOL   EQU      2                    ; a volume

* Private packet types
ACTION_STACK   EQU   2002              ; stack a line
ACTION_QUEUE   EQU   2003              ; queue a line

         ENDC
