Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-07 - 43,50450/rsxmac.doc
There are no other files named rsxmac.doc in the archive.

















                          BLISS-11 Macro Libraries
                         for Interfacing to RSX-11M

                              Reference Manual















                              Keith E. Gorlen
                        Computer Systems Laboratory
                Division of Computer Research and Technology
                       National Institutes of Health
                          Bethesda, Maryland 20014




                                May 23, 1977
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                      T A B L E   O F   C O N T E N T S




    1      Introduction

           1.1       Purpose      .  .  .  .  .  .  .  .  .  .  .  .  . 1

           1.2       Problems and Questions   .  .  .  .  .  .  .  .  . 1

           1.3       Macro Library Organization  .  .  .  .  .  .  .  . 1

           1.4       Accessing the Macro Libraries  .  .  .  .  .  .  . 2

           1.5       Naming Conventions .  .  .  .  .  .  .  .  .  .  . 2

                1.5.1     External Names   .  .  .  .  .  .  .  .  .  . 2
                1.5.2     Internal Names   .  .  .  .  .  .  .  .  .  . 2

           1.6       Accessing Bit Fields  .  .  .  .  .  .  .  .  .  . 2

           1.7       Accessing Multi-word Fields .  .  .  .  .  .  .  . 3

           1.8       Parameter Sublist Notation  .  .  .  .  .  .  .  . 3

    2      RSXMAC.REQ -- Executive Services Macro Library

           2.1       ?DIR$ Macro  .  .  .  .  .  .  .  .  .  .  .  .  . 4

           2.2       Error Processing   .  .  .  .  .  .  .  .  .  .  . 4

           2.3       $-form Macros   .  .  .  .  .  .  .  .  .  .  .  . 5

           2.4       $S-form Macros  .  .  .  .  .  .  .  .  .  .  .  . 5

           2.5       $C-form Macros  .  .  .  .  .  .  .  .  .  .  .  . 6

           2.6       $C Macro     .  .  .  .  .  .  .  .  .  .  .  .  . 6

           2.7       $B-form Macros  .  .  .  .  .  .  .  .  .  .  .  . 7

           2.8       .DL DPB Length Symbols   .  .  .  .  .  .  .  .  . 7

           2.9       .BL Buffer Length Symbols   .  .  .  .  .  .  .  . 7

           2.10      RDB and WDB Macros .  .  .  .  .  .  .  .  .  .  . 7

           2.11      ?IOERR$ Macro   .  .  .  .  .  .  .  .  .  .  .  . 8

           2.12      Other Macros Defined in RSXMAC.REQ   .  .  .  .  . 8

                2.12.1    ?IOERR$ -- I/O Error Codes   .  .  .  .  .  . 8
                2.12.2    I/O Function Codes  .  .  .  .  .  .  .  .  . 8


                                      i
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                2.12.3    ?TTSYM$ -- Terminal Driver Symbols .  .  .  . 8
                2.12.4    Snapshot Dump Macros   .  .  .  .  .  .  .  . 8

    3      FCSMAC.REQ -- File Control Services Macro Library

           3.1       Error Processing   .  .  .  .  .  .  .  .  .  .   10

           3.2       Compile-time FDB Initialization Macros  .  .  .   10

           3.3       Compile-time Initialization of the FSR  .  .  .   11

           3.4       File Control Routines .  .  .  .  .  .  .  .  .   12

           3.5       Command Line Processing Macros .  .  .  .  .  .   12

                3.5.1     ?GCMLD$ Macro .  .  .  .  .  .  .  .  .  .   12
                3.5.2     ?CSI$2 Macro  .  .  .  .  .  .  .  .  .  .   12
                3.5.3     ?CSI$SW and ?CSI$SV Macros   .  .  .  .  .   13

    4      EXEMC.REQ -- System Data Structures and Symbols

           4.1       RSXMC.REQ -- System-Dependent Macro
                                  Definitions .  .  .  .  .  .  .  .   14

           4.2       Arguments to Offset Definition Macros   .  .  .   14

           4.3       ?ADBDF$ -- Attachment Descriptor Block
                                  Offset Definitions   .  .  .  .  .   15

           4.4       ?WBKDF$ -- Window Block Offset Definitions .  .   15

    5      UTLMAC.REQ -- Utility Conversion Routine Macro
                                  Library

           5.1       $CDTB -- Decimal to Binary Conversion   .  .  .   16

           5.2       $COTB -- Octal to Binary Conversion  .  .  .  .   16

           5.3       ?.ODCVT -- ASCII to Binary with Octal
                                  Default  .  .  .  .  .  .  .  .  .   16

           5.4       ?.DCCVT -- ASCII to Binary with Decimal
                                  Default  .  .  .  .  .  .  .  .  .   17

           5.5       $EDMSG -- Edit Message   .  .  .  .  .  .  .  .   17

                5.5.1     %A -- ASCII String Conversion   .  .  .  .   17
                5.5.2     %B -- Binary Byte to Octal Conversion .  .   17
                5.5.3     %D -- Signed Binary-to-Decimal
                                  Conversion  .  .  .  .  .  .  .  .   18
                5.5.4     %E -- Extended ASCII String
                                  Conversion  .  .  .  .  .  .  .  .   18
                5.5.5     %F -- Form Control  .  .  .  .  .  .  .  .   18



                                     ii
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                5.5.6     %M -- Magnitude Binary-to-Decimal
                                  Conversion with Zero
                                  Suppression .  .  .  .  .  .  .  .   18
                5.5.7     %N -- New Line   .  .  .  .  .  .  .  .  .   18
                5.5.8     %O -- Signed Binary-to-Octal
                                  Conversion  .  .  .  .  .  .  .  .   18
                5.5.9     %P -- Magnitude Binary-to-Octal
                                  Conversion  .  .  .  .  .  .  .  .   18
                5.5.10    %R -- RAD50-to-ASCII Conversion .  .  .  .   19
                5.5.11    %S -- Space Generation .  .  .  .  .  .  .   19
                5.5.12    %T -- Double Precision Binary-to-
                                  Decimal Conversion   .  .  .  .  .   19
                5.5.13    %U -- Magnitude Binary-to-Decimal
                                  Conversion without Zero
                                  Suppression .  .  .  .  .  .  .  .   19
                5.5.14    %X -- File Name Conversion   .  .  .  .  .   19
                5.5.15    %Y -- Date Conversion  .  .  .  .  .  .  .   20
                5.5.16    %Z -- Time Conversion  .  .  .  .  .  .  .   20
                5.5.17    %> -- Fixed Length Field Definition   .  .   20
                5.5.18    %< -- Locate Field Mark   .  .  .  .  .  .   21

           5.6       Dynamic Storage Allocation Macros .  .  .  .  .   21

                5.6.1     $RQCB -- Request Core Block  .  .  .  .  .   21
                5.6.2     $RLCB -- Release Core Block  .  .  .  .  .   21

    6      B11MAC.REQ -- Miscellaneous Useful Macros

           6.1       ?.PACKBYTE -- Pack Bytes for <plit-arg> .  .  .   22

           6.2       ?.REVERSE -- Reverse Parameter List  .  .  .  .   22

           6.3       ?.SAVEREG -- Save Registers .  .  .  .  .  .  .   22

           6.4       Position-Size Modifier Macros  .  .  .  .  .  .   22

                6.4.1     ?.POS -- Extract Position Component
                                  of PSM   .  .  .  .  .  .  .  .  .   22
                6.4.2     ?.SIZE -- Extract Size Component of
                                  PSM   .  .  .  .  .  .  .  .  .  .   23
                6.4.3     ?.MASK -- Form Mask from PSMs   .  .  .  .   23

           6.5       Macro Parameter Handling .  .  .  .  .  .  .  .   23

                6.5.1     ?.SUBLIST -- Extract Parameter
                                  Sublist  .  .  .  .  .  .  .  .  .   23
                6.5.2     ?.SELECT -- Selective Expansion .  .  .  .   23
                6.5.3     ?.COND -- Conditional Expansion .  .  .  .   23
                6.5.4     ?.DEFAULT -- Default Null Parameter   .  .   23







                                     iii
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                 APPENDICES
                                 ----------

    A      Summary of Current Known Bugs and Limitations

           A.1       Use of EXITLOOP in Error Expressions .  .  .  .   24

           A.2       ?GCMLB$      .  .  .  .  .  .  .  .  .  .  .  .   24

    B      Compile-time FDB Initialization Macro Summary

    C      Summary of Implemented Macros

           C.1       RSXMAC.REQ Macro Summary .  .  .  .  .  .  .  .   26

           C.2       FCSMAC.REQ Macro Summary .  .  .  .  .  .  .  .   29

           C.3       FSRMAC.REQ Macro Summary .  .  .  .  .  .  .  .   31

           C.4       EXEMC.REQ Macro Summary  .  .  .  .  .  .  .  .   31

           C.5       UTLMAC.REQ Macro Summary .  .  .  .  .  .  .  .   31

           C.6       B11MAC.REQ Macro Summary .  .  .  .  .  .  .  .   31
































                                     iv
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                  Section 1

                                Introduction





    1.1  Purpose


    The BLISS-11/RSX-11M Macro  Libraries furnish a  convenient interface
    to the RSX-11M operating  system for programs written  in BLISS-11(1)
    in   much   the   same  way   that   the   RSX-11M   macro  libraries
    (SY:[1,1]RSXMAC.SML and EXEMC.MLB) provide an interface  for MACRO-11
    assembly language programs.  Since a major design goal was  to retain
    as much  similarity in  both form and  function between  the BLISS-11
    macros and  their MACRO-11  counterparts, the  standard documentation
    found  in  the  reference  manuals  remains  the  primary  source  of
    information.  This documentation serves mainly to outline those areas
    of significant difference and assumes familiarity with RSX-11M.


    1.2  Problems and Questions


    Refer any  problems or  questions concerning the  use of  these macro
    libraries to the Author:

            Keith E. Gorlen
            Rm. 2017, Bg. 12A
            Division of Computer Research and Technology
            National Institutes of Health
            Bethesda, MD 20014
            Phone: (301) 496-5361

    Appendix  A   contains  a  summary   of  currently  known   bugs  and
    limitations.


    1.3  Macro Library Organization


    Since the macro library is quite large and it is  usually unnecessary
    to use all of it in any particular program module, there are a number
    of  library  files  each  containing  a  particular  class  of  macro
    definitions:

            B11MAC.REQ -- miscellaneous useful macros
            RSXMAC.REQ -- Executive Services macros
            FCSMAC.REQ -- File Control Services macros
    -----
    (1) developed  by  the Computer  Science  Department, Carnegie-Mellon
        University


                                      1
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


            FSRMAC.REQ -- File Storage Region macros
            EXEMC.REQ  -- System Data Structures and Symbols
            UTLMAC.REQ -- Utility Conversion Routine macros


    1.4  Accessing the Macro Libraries


    The macro definitions  are accessed from  a BLISS-11 program  via the
    REQUIRE SOURCE declaration; for example:

            REQUIRE 'RSXMAC.REQ[proj#,prog#]' SOURCE;
            REQUIRE 'FCSMAC.REQ[proj#,prog#]' SOURCE;
            REQUIRE 'FSRMAC.REQ[proj#,prog#]' SOURCE;
            REQUIRE 'EXEMC.REQ[proj#,prog#]' SOURCE;
            REQUIRE 'UTLMAC.REQ[proj#,prog#]' SOURCE;


    1.5  Naming Conventions


    1.5.1  External Names


    BLISS-11  names for  all macros  and symbols  are identical  to their
    corresponding MACRO-11 names, except that they must be preceeded by a
    '?' so that the BLISS compiler will recognize the characters  '.' and
    '$' as being a part of the name; for example:

            MACRO-11        BLISS-11

            ABRT$           ?ABRT$
            ABRT$S          ?ABRT$S
            A.BTTN          ?A.BTTN

    1.5.2  Internal Names


    The macros make  internal use of  names for labels,  OPCODES, macros,
    etc. which  are normally  of no  interest to  the user.   However, to
    avoid conflicts the user should not define names beginning with '?.'.


    1.6  Accessing Bit Fields


    The  BLISS-11  counterparts  to MACRO-11  names  for  bit  fields are
    defined  as  macros  which  expand  into   appropriate  position-size
    modifiers  (PSMs).   The  following  example  illustrates  equivalent
    BLISS-11 and MACRO-11 code for setting a bit.

            MACRO-11

            BISB    #FD.CR,FDB+F.RATT


                                      2
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


            BLISS-11

            ?F.RATT(FDB)<?FD.CR>=1;


    1.7  Accessing Multi-word Fields


    Subscript notation  is recommended  for accessing  multi-word fields;
    e.g.,

            ?F.FNAM(FDB)[0]         ! Word 0 of file name
            ?F.FNAM(FDB)[1]         ! Word 1 of file name

            ?QIO$C(QIODPB);         ! Define QIO DPB names
            ?Q.IOPL[0]=BUFADR;      ! Set buffer address
            ?Q.IOPL[1]=LEN;         ! Set byte count


    1.8  Parameter Sublist Notation


    Several macros require  that a list of  values be passed as  a single
    argument.  In MACRO-11 this  is done either by separating  the values
    by '!'  or by enclosing  the list of  values in angle  brackets.  The
    latter  method  is always  used  by the  equivalent  BLISS-11 macros;
    however,  a parameter  sublist  must either  be null  or  enclosed in
    brackets,  even  if  the  sublist  contains  only  one  element.  The
    following examples illustrate these differences.

            MACRO-11

            OPEN$W  #FDB,,,#FD.RWM!FD.RAN!FD.PLC
            OPEN$R  #FDB,,,#FD.RWM
            OPEN$A  #FDB,,,,#BUF,BUFLEN
            QIO$S   #IO.RLB,#1,,,#IOSB,,<#BUF,#72.>

            BLISS-11

            ?OPEN$W(FDB,,,<?FD.RWM,?FD.RAN,?FD.PLC>);
            ?OPEN$R(FDB,,,<?FD.RWM>);
            ?OPEN$A(FDB,,,,BUF,.BUFLEN);
            ?QIO$S(?IO.RLB,1,,,IOSB,,<BUF,72>);













                                      3
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                  Section 2

               RSXMAC.REQ -- Executive Services Macro Library




    This  macro  library  is the  BLISS-11  equivalent  of  the Executive
    Services macros described in the RSX-11M Executive  Reference Manual.
    Differences  from  the  cited  documentation  are  described  in  the
    following sections.


    2.1  ?DIR$ Macro


    The  ?$DIR macro  is the  basic macro  for calling  RSX-11M executive
    services.  It has the following form:

            ?DIR$(<dpb>[,err])

    The first argument may be  either a DPB address expression or  a list
    of expressions separated  by commas which  define the DPB.  In either
    case, this argument  must be enclosed  by a bracketing  pair(1).  The
    ?DIR$ macro will cause the  first argument to be pushed on  the stack
    followed by the execution of an EMT 377 instruction.

    The  second optional  argument is  a BLISS  expression which  will be
    evaluated  if an  error condition  occurs.  For  more  information on
    error expressions see Section 2.2.


    2.2  Error Processing


    The  ?DIR$ and  the  $S-form macros  will accept  any  valid BLISS-11
    expression(2)  as  an  optional  last  argument.   If  included,  the
    expression will be  evaluated if an  error indication (carry  set) is
    returned by the executive service call.

    Normally, if no error expression is specified then no  error checking
    is performed; however, a default error expression may be specified by
    re-defining  the  macro   ?RSXERRDF$,  in  which  case   the  default
    expression  will  be  evaluated if  an  error  occurs.  The following
    example illustrates the possibilities:

            ?ASTX$S();              ! No error processing
            ?ASTX$S(SIGNAL 1);      ! SIGNAL 1 if error
            BEGIN
    -----
    (1) the pair <> is recommended

    (2) A  BLISS-11 bug  currently limits  the use  of EXITLOOP  in error
        expressions.  See Appendix A.


                                      4
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                MACRO $QUOTE ?RSXERRDF$=
                    TRAP(0)$;       ! Define default error exp
                ?ASTX$S();          ! TRAP(0) if error
                ?ASTX$S(SIGNAL 2);  ! SIGNAL 2 if error
                END;

    Notice that the error parameter for BLISS-11 macros differs from that
    of the MACRO-11 macros.  BLISS-11 macros require an error expression,
    not a routine address; thus, the BLISS-11 macro call:

            ?DIR$(<DPB>,ERRSUB());

    will cause ERRSUB  to be called if  a directive error occurs,  and is
    equivalent to the MACRO-11 macro call:

            DIR$    DPB,ERRSUB


    2.3  $-form Macros


    The BLISS-11 $-form of  an RSX-11M macro produces a  <plit-arg> which
    defines the appropriate DPB; for example:

            BIND MRKTDPB=UPLIT(?MRKT$(1,5,2,MTRAP));

            OWN MRKTDPB[?MRKT.DL]=(?MRKT$(1,,2,MTRAP));

            ?DIR$(<?MRKT$(1,.TMG,2,MTRAP)>);

    In the second example a .DL DPB length symbol is used to  reserve the
    appropriate  number of  words  of storage  for the  DPB  (see Section
    2.8).

    It is recommended that PLITs or UPLITs be used for defining pure DPBs
    as in the first example, and  that impure DPBs be defined via  OWN or
    GLOBAL declarations as in the second example.

    The third example illustrates the use of the ?DIR$ macro to  push the
    entire  DPB on  the stack  before executing  an EMT  377 instruction.
    This is effectively what is generated by the $S-form macros.

    Task and partition names used in $-form macro calls must  be supplied
    as  six  RAD50  characters enclosed  in  quotes  when  not defaulted.
    Omitted names  are defaulted to  six blanks (two  words of  zeroes in
    RAD50).


    2.4  $S-form Macros


    This  form  is identical  to  the MACRO-11  $S-form,  except  for the
    optional <err> parameter as described in Section 2.2.   Some examples
    of the use of this macro form are:


                                      5
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


            ?MRKT$S(1,5,2,AST,ERROR());

            ?MRKT$S(1,.TMG*10,2,SIGNAL ERROR3);

    In general,  task and  partition names are  not defaulted  in $S-form
    macros --  the address of  a six character  RAD50 string  (usually an
    UPLIT)  must be  supplied.  Exceptions  are the  ?ALTP$S  and ?GPRT$S
    macros in which the task name  may be left null, causing the  name of
    the issuing task to be used by default.

    Note that if  all arguments to a  $S-form macro call are  constant at
    load-time, it  is more economical  to use the  $C macro  described in
    Section 2.6.


    2.5  $C-form Macros


    The $C-form macro simply BINDs  names to addresses within a  DPB; for
    example, to access the word ?M.KTMG in MRKTDPB:

            OWN MRKTDPB[?MRKT.DL]=(?MRKT$(1,,2,MTRAP));
            ?MRKT$C(MRKTDPB);
            ?M.KTMG=5;

    The names  BINDed by the  $C-form macros are  listed with  each macro
    description in the RSX-11M Executive Reference Manual.

    The same effect as the MACRO-11 $C-form can be produced  by combining
    the  $C  macro  with  the  $-form  macro  as  described   in  Section
    2.6.


    2.6  $C Macro


    The normal  function of  the MACRO-11 $C-form  macros is  to generate
    code to push a DPB address on the stack followed by an EMT 377, while
    generating the pure DPB itself in a separate PSECT.  This function is
    provided  for  BLISS-11  programs  by the  $C  macro,  which  has the
    following format:

            $C(<dpb>[,err]);

    The first  argument must  be a <plit-arg>  which defines  the desired
    DPB. This is usually generated by using a $-form macro.  The optional
    second argument is an error expression as described in Section 2.2.

    The following example shows a MACRO-11 $C-form macro and its BLISS-11
    equivalent:

            MACRO-11

            MRKT$C  1,5,2,MTRAP,ERR


                                      6
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


            BLISS-11

            $C(<?MRKT$(1,5,2,MTRAP)>,ERR());


    2.7  $B-form Macros


    The  $B-form  macros  are defined  for  only  those  directives which
    communicate via  a buffer area  whose address is  passed in  the DPB.
    This  macro form  binds names  to addresses  within the  buffer.  For
    example, to access the partition size returned by the ?GPRT$S macro:

            OWN BUF[?GPRT.BL];
            ?GPRT$B(BUF);
            ?GPRT$S(UPLIT RAD50 'ALPHA ',BUF);
            PARTITIONSIZE=.?G.PRPS*32;

    This example uses a .BL buffer length symbol to allocate  the correct
    number  of  words   for  the  buffer   area.  See  Section   2.9  for
    further information.


    2.8  .DL DPB Length Symbols


    All executive  services having  a $-form  macro also  have a  .DL DPB
    length symbol BINDed to the length (in words) of the DPB generated by
    the $-form macro.  This  is particularly useful in allocating  OWN or
    GLOBAL storage for an impure DPB; for example:

            OWN MRKTDPB[?MRKT.DL]=(?MRKT$(1,5,2,MTRAP));


    2.9  .BL Buffer Length Symbols


    All executive services having a $B-form macro also have a  .BL buffer
    length symbol  BINDed to the  length (in words)  of the  buffer whose
    address is  specified in  the DPB.  This  is particularly  useful for
    allocating storage for the buffer; e.g.,

            LOCAL BUF[?GPRT.BL];
            ?GPRT$S(UPLIT RAD50 'ALPHA ',BUF);


    2.10  RDB and WDB Macros


    When using the ?RDBBK$ and ?WDBBK$ macros to define Region  or Window
    Definition  Blocks, the  ?RDBDF$ and  ?WDBDF$ macros  must  be called
    before invoking  the ?RDBBK$ and  ?WDBBK$ macros,  respectively.  The
    following example illustrates the use of these macros:



                                      7
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


            ?RDBDF$;                        ! DEFINE RDB SYMBOLS
            OWN RDB[?R.GLGH/2]=(?RDBBK$(102,'ALPHA ','GEN   ',
                <?RS.NDL,?RS.ATT,?RS.WRT,?RS.RED>,#167000));
            ?CRRG$S(RDB);                   ! CREATE REGION
            IF NOT .?R.GSTS(RDB)<?RS.CRR>   ! TEST REGION STATUS
                THEN CRERR();               ! IF REGION NOT CREATED


    2.11  ?IOERR$ Macro


    The ?IE. symbols defined by the ?IOERR$ macro are defined as the low-
    order  eight  bits   of  the  corresponding  MACRO-11   symbol.  This
    facilitates comparison of the error byte of an IOSB to the  symbol. A
    BLISS-11 expression such as:

            .IOSB<0,8> EQL ?IE.UPN

    would not work as expected if ?IE.UPN were defined as -1.


    2.12  Other Macros Defined in RSXMAC.REQ


    The following  sections describe macros  available in  the RSXMAC.REQ
    library that  are not documented  in the RSX-11M  Executive Reference
    Manual.

    2.12.1  ?IOERR$ -- I/O Error Codes


    The  I/O  error  codes described  in  the  IAS/RSX-11  I/O Operations
    Reference Manual may be  defined by invoking the ?IOERR$  macro.  See
    Section 2.11  for important information  concerning the use  of these
    symbols.

    2.12.2  I/O Function Codes


    The standard, special, and diagnostic I/O function codes described in
    the RSX-11M I/O Drivers  Reference Manual may be defined  by invoking
    the ?FILIO$, ?SPCIO$, and ?UMDIO$ macros respectively.

    2.12.3  ?TTSYM$ -- Terminal Driver Symbols


    The terminal driver symbols described in Chapter 2 of  the IAS/RSX-11
    I/O Operations Reference Manual may be defined by invoking the ?TTSYM
    macro.

    2.12.4  Snapshot Dump Macros





                                      8
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    The snapshot dump macros ?SNPBK$, ?SNAP$, and ?SNPDF$ as described in
    the RSX-11M Task Builder  Reference Manual are also available  in the
    RSXMAC.REQ macro library.





















































                                      9
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                  Section 3

              FCSMAC.REQ -- File Control Services Macro Library




    This macro  library is  the BLISS-11 equivalent  of the  File Control
    Services  macros described  in  the RSX-11  I/O  Operations Reference
    Manual.  Differences  from the cited  documentation are  described in
    the following sections.


    3.1  Error Processing


    All macros that invoke FCS routines which return an  error indication
    via the  carry bit accept  as their last  argument an  optional error
    expression which is evaluated when an error occurs.  Normally,  if no
    error expression  is specified then  no error checking  is performed;
    however, a default error  expression may be specified  by re-defining
    the macro ?FCSERRDF$,  in which case  the default expression  will be
    evaluated when an error occurs. The following example illustrates the
    possibilities:

            ?CLOSE$(FDB);           ! no error processing
            ?CLOSE$(FDB,SIGNAL 1);  ! SIGNAL 1 if error
            BEGIN
                MACRO $QUOTE ?FCSERRDF$=
                    TRAP(0)$;       ! define default error exp.
                ?CLOSE$(FDB);       ! TRAP(0) if error
                ?CLOSE$(FDB,SIGNAL 2); ! SIGNAL 2 if error
                END;

    Notice that the error parameter for BLISS-11 macros differs from that
    of the MACRO-11 macros.  BLISS-11 macros require an error expression,
    not a routine address; thus, the BLISS-11 macro call:

            ?CLOSE$(FDB,ERRSUB());

    will  cause  ERRSUB to  be  called if  an  FCS error  occurs,  and is
    equivalent to the MACRO-11 macro call:

            CLOSE$  FDB,ERRSUB


    3.2  Compile-time FDB Initialization Macros


    Due to  the nature of  the BLISS-11 compile-time  data initialization
    facilities, the BLISS-11 macros for FDB initialization differ greatly
    from  their  MACRO-11  counterparts.  The  following  macros  are not
    directly implemented:



                                     10
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


            FDAT$A
            FDRC$A
            FDBK$A
            FDOP$A
            FDBF$A

    These compile-time  functions are performed  instead by  the BLISS-11
    version of the ?FDBDF$ macro:

            ?FDBDF$(fdbname,m1,m2, ... ,mn);

    This macro call generates (along with a lot of rubbish):

            OWN ?FDB$ fdbname=(?.FDBSYM,24:0);

    ?FDB$ is  the name  of a structure  that defines  a vector  of ?S.FDB
    bytes for the FDB, and ?.FDBSYM is the name of a macro defined by the
    ?FDBDF$ macro  which expands  into the  constant values  necessary to
    initialize  the  FDB  appropriately.   These  constant   values  (the
    compile-time initialization  of the FDB)  are determined by  means of
    the  optional  parameters  m1,m2,m3...  in  the  ?FDBDF$  macro call.
    These parameters are actually calls  to a special set of  macros that
    are  specifically defined  for and  useful only  in this  context.  A
    summary of these  macros and their  MACRO-11 equivalents is  given in
    Appendix  B.   Calls to  these  macros  may appear  in  any  order in
    the  ?FDBDF$ argument  list.   Note that  the ?FDOFF$  macro  must be
    invoked  prior to  using the  ?FDBDF$ macro.   The  following example
    illustrates equivalent BLISS-11 and MACRO-11 code:

            BLISS-11

            ?FDOFF$;                ! Define FDB offsets
            ?FDBDF$(OUT,
                ?AT$VAR,?AT$CR,     ! Attribute Section
                ?RC$URBA(OUTBUF),   ! Record Access Section
                    ?RC$URBS(512),
                ?OP$LUN(1),         ! File Open Section
                ?BF$EFN(2));        ! Block Buffer Section

            MACRO-11

            OUT:    FDBDF$
                    FDAT$A  R.VAR,FD.CR
                    FDRC$A  ,OUTBUF,512.
                    FDOP$A  1
                    FDBF$A  2


    3.3  Compile-time Initialization of the FSR


    Compile-time initialization of the  file storage region (FSR)  may be
    accomplished with a BLISS-11 module of the following form:



                                     11
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


            MODULE name=BEGIN
            REQUIRE 'FSRMAC.REQ[proj#,prog#]' SOURCE;
            ?FSRSZ$(files,bufsiz);
            END ELUDOM

    The  arguments to  ?FSRSZ$  are identical  to those  of  its MACRO-11
    counterpart  as  described  in the  RSX-11  I/O  Operations Reference
    Manual.


    3.4  File Control Routines


    BLISS-11 macros for invoking  all file control routines  described in
    Chapter  4  of  the  RSX-11  I/O  Operations  Reference   Manual  are
    available. Consult  the appropriate  macro definitions  in FCSMAC.REQ
    for further information.


    3.5  Command Line Processing Macros


    The  following  command  line processing  macros  are  implemented as
    described in Chapter 6 of the RSX-11 I/O Operations Reference Manual:

            ?GCMLB$ -- Initialize GCML Control Block
            ?GCML$ -- Get Command Line
            ?RCML$ -- Reset Indirect Command File Scan
            ?CCML$ -- Close Current Command File
            ?CSI$ -- Define CSI Control Block Symbols
            ?CSI$1 -- Command Syntax Analyzer

    The remaining command line processing macros are implemented with the
    differences described in the following sections.

    3.5.1  ?GCMLD$ Macro


    The ?GCMLD$ macro, which  defines GCML control block offsets  and bit
    values, is implemented  as described in  the manual, except  that the
    ?GE. symbols for error codes are defined as the low-order  eight bits
    of  the  corresponding   MACRO-11  symbols.   This   facilitates  the
    comparison of ?G.ERR to the symbol value. A BLISS-11  expression such
    as:

            .?G.ERR EQL ?GE.IOR

    would not work as expected of ?GE.IOR were defined as -1.

    3.5.2  ?CSI$2 Macro


    The ?CSI$2 macro  is implemented as  described in the  manual, except



                                     12
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    that the  IO parameter  in the macro  call must  be specified  as the
    character string 'INP' or 'OUT' for INPUT or OUTPUT, respectively.

    3.5.3  ?CSI$SW and ?CSI$SV Macros


    The ?CSI$SW  and ?CSI$SV  macros are  implemented as  iterated macros
    which generate  <plit-arg>s and  permit the  definition of  an entire
    switch descriptor or switch value table within a  single declaration,
    thus eliminating the need for an equivalent to the CSI$ND macro.  The
    "compflg" parameter  of the ?CSI$SW  macro is not  implemented; thus,
    only two-character switch names are permitted.  All  other parameters
    are as described in Section  6.2.4 of the manual, except  for keyword
    parameters as follows:

                            BLISS-11        MACRO-11

            ?CSI$SW
                    CSFLG
                            'CLR'           CLEAR
                            'SET'           SET
                    NFLG
                            'NEG'           NEG
            ?CSI$SV
                    TYPE
                            'ASC'           ASCII
                            'NUM'           NUMERIC
                            'OCT'           OCTAL
                            'DEC'           DECIMAL

    The following example illustrates the use of these macros to generate
    switch descriptor and switch  value tables identical to those  in the
    examples used in Section 6.2.4 of the manual:

            BIND ASMSK=1,NUMSK=2;   ! MASK VALUES
            OWN MASKX=(0);          ! MASK WORD
            OWN ASVAL[4];           ! ASCII VALUE STORAGE
            OWN NUVAL[2];           ! NUMERIC VALUE STORAGE
            BIND ASSWT=UPLIT(?CSI$SW(
                'AS',ASMSK,MASKX,'SET',,
                    UPLIT(?CSI$SV('ASC',ASVAL,3,
                        'ASC',ASVAL+4,3)),
                'NU',NUMSK,MASKX,'CLR','NEG',
                    UPLIT(?CSI$SV('OCT',NUVAL,2,
                        'DEC',NUVAL+2,2))));











                                     13
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                  Section 4

               EXEMC.REQ -- System Data Structures and Symbols




    This macro library is the BLISS-11 equivalent of the  EXEMC.MLB macro
    library described in  Appendix C of the  RSX-11M Guide to  Writing an
    I/O Driver.  Differences  from the cited documentation  are described
    in the following sections.


    4.1  RSXMC.REQ -- System-Dependent Macro Definitions


    The file RSXMC.REQ  is analogous to  the RSXMC.MAC file  generated by
    SYSGEN Phase  1 in  that it  contains information  as to  the options
    present on  a particular  RSX-11M system.  Since  some of  the system
    data structures and symbol values are dependent upon the  presence or
    absence of  certain options (e.g.,  memory management),  RSXMC.REQ is
    REQUIREd by EXEMC.REQ.

    RSXMC.REQ currently contains macros for the following options:

            ?R$$11M -- RSX-11M System
            ?R$$11D -- RSX-11D System
            ?M$$MGE -- Memory Management
            ?L$$DRV -- Loadable Device Drivers
            ?P$$LAS -- Program Logical Address Space
            ?E$$EAE -- Extended Arithmetic Element

    Each of these options has a macro definition named as  indicated.  If
    the option is  present, the macro expands  into its argument,  if the
    option is not  present, the macro  expansion is null.   The following
    example shows  the macro  definitions for  an RSX-11M  system without
    memory management:

            MACRO
                ?R$$11M(Y)=Y$,
                ?R$$11D(Y)= $,
                ?M$$MGE(Y)= $;

    Each site should insure that the macros are defined appropriately for
    its particular configuration.


    4.2  Arguments to Offset Definition Macros


    EXEMC.REQ contains macros which  define the symbolic offsets  for the
    various  blocks which  comprise  the RSX-11M  system  data structure.
    These macros have names of the form ?xxxDF$, and require one argument



                                     14
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    which is the base address of the block; offsets relative to the start
    of a block such as defined by the corresponding EXEMC.MLB  macros can
    be defined  by specifying  a base address  of zero,  i.e. ?xxxDF$(0).
    The following example illustrates the use of these macros:

            REQUIRE 'RSXMAC.REQ' SOURCE;
            REQUIRE 'EXEMC.REQ' SOURCE;
            EXTERNAL $TKTCB;                ! POINTER TO TASK TCB
            ?TCBDF$(.$TKTCB);               ! DEFINE TCB OFFSETS
            ?UCBDF$(.?T.UCB);               ! DEFINE TI: UCB OFFSETS
            IF NOT .?U.CW2<?U2.PRV>
                THEN ?EXIT$S();             ! EXIT IF TI: NOT PRIVILEGED


    4.3  ?ADBDF$ -- Attachment Descriptor Block Offset Definitions


    The  BLISS-11  version  of  the ?PCBDF$  macro  does  not  define the
    symbolic offsets for Attachment Descriptor Blocks.  A separate macro,
    ?ADBDF$, is provided  instead in order  to permit specification  of a
    base address as described in Section 4.2.


    4.4  ?WBKDF$ -- Window Block Offset Definitions


    The  BLISS-11  version  of  the ?HDRDF$  macro  does  not  define the
    symbolic offsets for  Window Blocks in  the task header.   A separate
    macro, ?WBKDF$, is provided instead in order to  permit specification
    of a base addres as described in Section 4.2.


























                                     15
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                  Section 5

           UTLMAC.REQ -- Utility Conversion Routine Macro Library




    This  macro library  provides  an interface  to some  of  the utility
    conversion routines documented  in Appendix A of  the RSX-11M/RSX-11S
    Release Notes (DEC-11-OMRNA-C-D).


    5.1  $CDTB -- Decimal to Binary Conversion


    The  $CDTB macro  calls a  routine to  perform conversion  from ASCII
    decimal to binary.  The calling sequence is as follows:

            [next=]$CDTB(instr,[num],[term]);

            next:   address of next byte in input string
            instr:  input string address
            num:    address to store converted result
            term:   address to return terminal character


    5.2  $COTB -- Octal to Binary Conversion


    The  $COTB macro  calls a  routine to  perform conversion  from ASCII
    octal to binary.  The calling sequence is as follows:

            [next=]$COTB(instr,[num],[term]);

            next:   address of next byte in input string
            instr:  input string address
            num:    address to store converted result
            term:   address to return converted character


    5.3  ?.ODCVT -- ASCII to Binary with Octal Default


    The ?.ODCVT macro calls a routine to perform conversion from ASCII to
    binary  with  octal   conversion  defaulted.   The  default   can  be
    overridden by terminating the number with '.'.  The  calling sequence
    is as follows:

            ?.ODCVT(result,inlen,instr[,err]);

            result: address to store converted result
            inlen:  length of input string in bytes
            instr:  input string address
            err:    optional error expression


                                     16
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    5.4  ?.DCCVT -- ASCII to Binary with Decimal Default


    The ?.DCCVT macro calls a routine to perform conversion from ASCII to
    binary  with  decimal  conversion  defaulted.   The  default  can  be
    overridden by preceeding the  number with '#'.  The  calling sequence
    is as follows:

            ?.DCCVT(result,inlen,instr[,err]);

            result: address to store converted result
            inlen:  length of input string in bytes
            instr:  input string address
            err:    optional error expression


    5.5  $EDMSG -- Edit Message


    The $EDMSG macro calls a routine to process an ASCIZ format string to
    produce  an  edited  output string.   The  format  string  is scanned
    looking  for  format  directives.  As  each  non-format  character is
    encountered, it is  simply copied into the  output string.  If  a '%'
    sign is  followed by a  'V' (value), then  the repeat count  is taken
    from  the  next  word  in the  argument  block.   Else  the  next 'N'
    characters (by  context) are  converted to binary  and this  value is
    taken as the repeat count.  A repeat count of zero is defaulted  to a
    repeat count of one in either case.  The next character in the format
    string  must  be a  format  directive.  The  calling  sequence  is as
    follows:

            [last=]$EDMSG(outstr,instr,argblk,[outlen],
                    [nxtarg]);

            last:   address of last byte in output string
            instr:  input string address
            argblk: argument block address
            outlen: address to store output string length
            nxtarg: address to store address of next
                    argument in the argument block.

    The following sections describe the implemented format directives.

    5.5.1  %A -- ASCII String Conversion


    The %nA format directive  copies 'n' characters to the  output string
    from the address supplied in the argument block.

    5.5.2  %B -- Binary Byte to Octal Conversion


    The %nB format directive converts 'n' bytes beginning at  the address



                                     17
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    specified in the  argument block to  ASCII octal with  leading zeros,
    and places the results in  the output string.  If more than  one byte
    is converted, spaces are inserted between numbers.

    5.5.3  %D -- Signed Binary-to-Decimal Conversion


    The %nD format directive converts the next 'n' words in  the argument
    block to signed ASCII decimal, leading zeroes suppressed,  and places
    the  results  in the  output  string.   If more  than  one  number is
    converted, tabs are inserted between numbers.

    5.5.4  %E -- Extended ASCII String Conversion


    The %nE format directive  copies 'n' characters to the  output string
    from the  address supplied in  the argument block.   The non-printing
    ASCII codes  0 through 37  (octal) and 177  (octal) are  converted to
    spaces.

    5.5.5  %F -- Form Control


    The %nF format directive causes 'n' form feeds to be inserted  in the
    output string.

    5.5.6  %M -- Magnitude Binary-to-Decimal Conversion with Zero
             Suppression


    The %nM format directive converts the next 'n' words in  the argument
    block  to  unsigned  ASCII decimal,  leading  zeroes  suppressed, and
    places the results in the output string.  If more than one  number is
    converted, tabs are inserted between numbers.

    5.5.7  %N -- New Line


    The %nN format directive causes 'n' CR-LF sequences to be inserted in
    the output string.

    5.5.8  %O -- Signed Binary-to-Octal Conversion


    The %nO format directive converts the next 'n' words in  the argument
    block  to  ASCII octal,  leading  zeroes suppressed,  and  places the
    results in the output string.  If more than one number  is converted,
    tabs are inserted between numbers.

    5.5.9  %P -- Magnitude Binary-to-Octal Conversion


    The %nP format directive converts the next 'n' words in  the argument



                                     18
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    block to ASCII  octal, and places the  results in the  output string.
    If  more than  one  number is  converted, tabs  are  inserted between
    numbers.

    5.5.10  %R -- RAD50-to-ASCII Conversion


    The %nR format directive converts the next 'n' words in  the argument
    block  from RAD50  to  ASCII and  places  the results  in  the output
    string.

    5.5.11  %S -- Space Generation


    The %nS format directive inserts 'n' spaces in the output string.

    5.5.12  %T -- Double Precision Binary-to-Decimal Conversion


    The %nT format directive converts the double-precision binary numbers
    stored at the next 'n'  addresses specified in the argument  block to
    unsigned  ASCII decimal,  leading zeroes  suppressed, and  places the
    results in the output string.  If more than one number  is converted,
    tabs are inserted between numbers.  The double-precision numbers must
    be  stored high-order  part first  and must  be less  than 999999999;
    larger numbers cause a string of five asterisks to be inserted in the
    output string.

    5.5.13  %U -- Magnitude Binary-to-Decimal Conversion without Zero
              Suppression


    The %nU format directive converts the next 'n' words in  the argument
    block to unsigned ASCII decimal, with leading zeroes, and  places the
    results in the output string.  If more than one number  is converted,
    tabs are inserted between numbers.

    5.5.14  %X -- File Name Conversion


    The %nX  format directive  converts the  next 'n'  file names  in the
    argument block to ASCII and stores the results in the  output string.
    Each file name in the argument block must be formatted as in  an FNB;
    i.e.,

            Word    Contents

            0       RAD50 File Name, 1st 3 characters
            1       RAD50 File Name, 2nd 3 characters
            2       RAD50 File Name, 3rd 3 characters
            3       RAD50 File Type, 3 characters
            4       File Version Number, binary integer




                                     19
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    If more than  one file name is  converted, tabs are  inserted between
    names.

    5.5.15  %Y -- Date Conversion


    The  %Y format  directive converts  the date  stored in  the argument
    block from the standard system format to an ASCII string of  the form
    'DD-MMM-YY' and stores the  result in the output string.   The format
    for the  argument block is  the same as  that returned by  the ?GTIM$
    executive service; i.e.,

            Word    Contents

            0       Year-1900
            1       Month-of-Year
            2       Day-of-Month

    5.5.16  %Z -- Time Conversion


    The %nZ  format directive  converts the time  stored in  the argument
    block from the standard system format to an ASCII string of  the form
    'HH:MM:SS.S'  and  stores  the  result  in  the  output  string.  The
    parameter 'n' controls the format of the output string as follows:

            0 or 1  Output: HH
            2       Output: HH:MM
            3       Output: HH:MM:SS
            4       Output: HH:MM:SS.S

    The format for the argument block is the same as that returned by the
    ?GTIM$ executive service; i.e,

            Word    Contents

            0       Hour-of-Day
            1       Minute-of-Hour
            2       Second-of-Minute
            3       Tick-of-Second
            4       Ticks-per-Second

    5.5.17  %> -- Fixed Length Field Definition


    The %n>  format directive  inserts 'n' spaces  in the  output string,
    followed by a  null.  Upon completion,  the output string  pointer is
    restored to its value before  the %> directive.  This field  may then
    be  partially  overwritten  with  the  output  from   another  format
    directive  and the  remaining spaces  skipped over  by the  %< format
    directive,  thus  producing  a  fixed  length  output  field  of  'n'
    characters.




                                     20
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    5.5.18  %< -- Locate Field Mark


    The %n< format directive  advances the output string pointer  until a
    field  delimiter (null)  is located  or 'n'  characters  are skipped,
    whichever occurs first.


    5.6  Dynamic Storage Allocation Macros


    The  macros $RQCB  and  $RLCB are  provided  as an  interface  to the
    dynamic storage allocation  routines.  These routines require  a data
    structure similar to the following:

    !
    ! Free Block List Header:
    !
            OWN FREEHD[2]=(FREEBK,0);
    !
    ! Free Storage List:
    !
            OWN FREEBK[size]=(0,size*2);

    5.6.1  $RQCB -- Request Core Block


    The $RQCB macro invokes a  routine to allocate a block from  the free
    storage list.  The calling sequence is as follows:

            blkadr=$RQCB(freehd,blksiz,err);

            blkadr: address of allocated block
            freehd: address of Free Block List Header
            blksiz: size of block requested in bytes
            err:    expression to be executed if block
                    allocation fails.

    If 'blksiz' is positive then best fit allocation is used; if negative
    then first fit allocation is used.

    5.6.2  $RLCB -- Release Core Block


    The  $RLCB macro  invokes a  routine to  return a  block to  the free
    storage list.  The calling sequence is as follows:

            $RLCB(freehd,blksiz,blkadr);

            freehd: address of Free Block List Header
            blksiz: size of block to release in bytes
            blkadr: address of block to be released




                                     21
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                  Section 6

                  B11MAC.REQ -- Miscellaneous Useful Macros




    The macro library file B11MAC.REQ contains a number  of miscellaneous
    useful macros, some of which are described in the following sections.
    Note that  B11MAC.REQ is  REQUIREd by all  the other  macro libraries
    described in this document.


    6.1  ?.PACKBYTE -- Pack Bytes for <plit-arg>


    The  ?.PACKBYTE  macro  takes a  list  of  load-time  expressions and
    expands  into a  <plit-arg> with  those expression  values  stored in
    consecutive bytes. An additional zero byte is generated if the number
    of expressions is odd.


    6.2  ?.REVERSE -- Reverse Parameter List


    The ?.REVERSE macro takes a list of expressions and expands  into the
    same list, but in reverse order.  This macro is sometimes useful when
    pushing things on a stack.


    6.3  ?.SAVEREG -- Save Registers


    The ?.SAVEREG  macro is  called with  a list  of register  names.  It
    expands into  something that makes  the BLISS-11 compiler  think it's
    necessary to save those registers within a ROUTINE.


    6.4  Position-Size Modifier Macros


    As described in Section 1.6,  bit fields are defined by  macros which
    expand  into an  appropriate  PSM.  The  following  sections describe
    macros that are sometimes useful in manipulating PSMs.

    6.4.1  ?.POS -- Extract Position Component of PSM


    The ?.POS macro takes a list of position-size pairs and  expands into
    a list of the positions only; e.g., ?.POS(0,1,2,3) is 0,2.






                                     22
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    6.4.2  ?.SIZE -- Extract Size Component of PSM


    The ?.SIZE macro takes a list of position-size pairs and expands into
    a list of the sizes only; e.g, ?.SIZE(0,1,2,3) is 1,3.

    6.4.3  ?.MASK -- Form Mask from PSMs


    The ?.MASK macro takes a list of position-size pairs and expands into
    a mask word that is the  logical OR of the bit fields defined  by the
    PSM pairs; e.g, ?.MASK(3,3,0,1) is #71.


    6.5  Macro Parameter Handling


    B11MAC.REQ contains a  number of macros  that are useful  in handling
    macro parameters; these are described in the following sections.

    6.5.1  ?.SUBLIST -- Extract Parameter Sublist


    The  ?.SUBLIST macro  removes  the brackets  surrounding  a parameter
    sublist.  Note that  the brackets must be  present if the  sublist is
    not null.

    6.5.2  ?.SELECT -- Selective Expansion


    The ?.SELECT macro is called as follows:

            ?.SELECT(par1,<par2>,<par3>)

    The result is par2 if par1 is not null and par3 if par1 is null.

    6.5.3  ?.COND -- Conditional Expansion


    The ?.COND macro is called as follows:

            ?.COND(par1,par2)

    The result is par2 if par1 is not null and null if par1 is null.

    6.5.4  ?.DEFAULT -- Default Null Parameter


    The ?.DEFAULT macro is called as follows:

            ?.DEFAULT(par1,par2)

    The result is par1 if par1 is not null and par2 if par1 is null.



                                     23
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                 Appendix A

                Summary of Current Known Bugs and Limitations





    A.1  Use of EXITLOOP in Error Expressions


    The  code  generated   for  expressions  skipped  by   OPCODE  branch
    instructions is incorrect if the skipped expressions adjust the depth
    of the stack (e.g., to call  a routine) due to a bug in  the BLISS-11
    compiler.  To  avoid this  problem, macros  with explicit  or default
    error expressions expand as follows:

            BEGIN
                SWITCHES UNAMES;
                OPCODE ?.BCC=BCC;
                OPLABEL ?.NOERR;
                ...
                ?.BCC(?.NOERR);
                DO (error expression) WHILE 0;
                ?.NOERR:END;

    Thus, the use of EXITLOOP in an error expression may not  produce the
    intended result, as in the following example:

            INCR I FROM 1 TO 10 DO
                ?CLEF$S(.I,EXITLOOP);

    The EXITLOOP exits from the innermost loop, which in this case is the
    DO ... WHILE 0 loop in the macro expansion of ?CLEF$S instead  of the
    INCR loop.


    A.2  ?GCMLB$


    A bug in the BLISS-11 compiler causes the offset location  ?F.DFNB in
    the FDB generated as part of the GCML control block to  be improperly
    initialized.   To   remedy  this   problem,  execute   the  following
    expression prior to calling ?GCML$ for the first time:

            ?FDOPR(cmdblk,,,cmdblk+?S.FDB+2*11);

            cmdblk: address of the GCML control block








                                     24
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                 Appendix B

                Compile-time FDB Initialization Macro Summary



            BLISS-11        MACRO-11

            ?AT$FIX         FDAT$A  R.FIX
            ?AT$VAR         FDAT$A  R.VAR
            ?AT$SEQ         FDAT$A  R.SEQ
            ?AT$FTN         FDAT$A  ,FD.FTN
            ?AT$CR          FDAT$A  ,FD.CR
            ?AT$BLK         FDAT$A  ,FD.BLK
            ?AT$RSIZ(RSIZ)  FDAT$A  ,,RSIZ
            ?AT$CNTG(CNTG)  FDAT$A  ,,,CNTG
            ?AT$ALOC(ALOC)  FDAT$A  ,,,,ALOC

            ?RC$RWM         FDRC$A  FD.RWM
            ?RC$RAN         FDRC$A  FD.RAN
            ?RC$PLC         FDRC$A  FD.PLC
            ?RC$INS         FDRC$A  FD.INS
            ?RC$URBA(URBA)  FDRC$A  ,URBA
            ?RC$URBS(URBS)  FDRC$A  ,,URBS

            ?BK$DA(BKDA)    FDBK$A  BKDA
            ?BK$DS(BKDS)    FDBK$A  ,BKDS
            ?BK$EF(BKEF)    FDBK$A  ,,,BKEF
            ?BK$ST(BKST)    FDBK$A  ,,,,BKST
            ?BK$DN(BKDN)    FDBK$A  ,,,,,BKDN

            ?OP$LUN(LUN)    FDOP$A  LUN
            ?OP$DSPT(DSPT)  FDOP$A  ,DSPT
            ?OP$DFNB(DFNB)  FDOP$A  ,,DFNB
            ?OP$RD          FDOP$A  ,,,FA.RD
            ?OP$WRT         FDOP$A  ,,,FA.WRT
            ?OP$EXT         FDOP$A  ,,,FA.EXT
            ?OP$CRE         FDOP$A  ,,,FA.CRE
            ?OP$TMP         FDOP$A  ,,,FA.TMP
            ?OP$SHR         FDOP$A  ,,,FA.SHR
            ?OP$APD         FDOP$A  ,,,FA.APD
            ?OP$NSP         FDOP$A  ,,,FA.NSP

            ?BF$EFN(EFN)    FDBF$A  EFN
            ?BF$OVBS(OVBS)  FDBF$A  ,OVBS
            ?BF$MBCT(MBCT)  FDBF$A  ,,MBCT
            ?BF$RAH         FDBF$A  ,,,FD.RAH
            ?BF$WBH         FDBF$A  ,,,FD.WBH








                                     25
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                 Appendix C

                        Summary of Implemented Macros




    The following  sections summarize  all currently  implemented macros.
    Optional parameters  are indicated by  "[ ]", sublist  parameters are
    indicated by "< >", and optional sublist parameters are  indicated by
    "[< >]".


    C.1  RSXMAC.REQ Macro Summary


    ?ABRT$ (tsk)
    ?ABRT$C(dpb)
    ?ABRT$S(tsk,[err])
    ?ALTP$ ([tsk],[pri])
    ?ALTP$C(dpb)
    ?ALTP$S([tsk],[pri],[err])
    ?ALUN$ (lun,dev,unt)
    ?ALUN$C(dpb)
    ?ALUN$S(lun,dev,unt,[err])
    ?ASTX$S([err])
    ?ATRG$ (rdb)
    ?ATRG$C(dpb)
    ?ATRG$S(rdb,[err])
    ?CLEF$ (efn)
    ?CLEF$C(dpb)
    ?CLEF$S(efn,[err])
    ?CMKT$S(,,[err])
    ?CRAW$ (wdb)
    ?CRAW$C(dpb)
    ?CRAW$S(wdb,[err])
    ?CRRG$ (rdb)
    ?CRRG$C(dpb)
    ?CRRG$S(rdb,[err])
    ?CSRQ$ (tsk)
    ?CSRQ$C(dpb)
    ?CSRQ$S(tsk,,[err])
    ?DECL$S(,[err])
    ?DIR$  (<dpb>,[err])
    ?DRERR$
    ?DSAR$S([err])
    ?DSCP$S([err])
    ?DTRG$ (rdb)
    ?DTRG$C(dpb)
    ?DTRG$S(rdb,,[err])
    ?ELAW$ (wdb)
    ?ELAW$C(dpb)
    ?ELAW$S(wdb,[err])
    ?ENAR$S([err])


                                     26
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    ?ENCP$S([err])
    ?EXIF$ (efn)
    ?EXIF$C(dpb)
    ?EXIF$S(efn,[err])
    ?EXIT$S([err])
    ?EXTK$ ([inc])
    ?EXTK$C(dpb)
    ?EXTK$S([inc],[err])
    ?FILIO$
    ?GLUN$ (lun,buf)
    ?GLUN$B(buf)
    ?GLUN$C(dpb)
    ?GLUN$S(lun,buf,[err])
    ?GMCR$
    ?GMCR$C(dpb)
    ?GMCX$ (wvec)
    ?GMCX$C(dpb)
    ?GMCX$S(wvec,[err])
    ?GPRT$ ([prt],buf)
    ?GPRT$B(buf)
    ?GPRT$C(dpb)
    ?GPRT$S([prt],buf,[err])
    ?GREG$ ([rid],buf)
    ?GREG$B(buf)
    ?GREG$C(dpb)
    ?GREG$S([rid],buf,[err])
    ?GSSW$S([err])
    ?GTIM$ (buf)
    ?GTIM$B(buf)
    ?GTIM$C(dpb)
    ?GTIM$S(buf,[err])
    ?GTSK$ (buf)
    ?GTSK$B(buf)
    ?GTSK$C(dpb)
    ?GTSK$S(buf,[err])
    ?MAP$  (wdb)
    ?MAP$C (dpb)
    ?MAP$S (wdb)
    ?MRKT$ ([efn],tmg,tnt,[ast])
    ?MRKT$C(dpb)
    ?MRKT$S([efn],tmg,tnt,[ast],[err])
    ?QIOSY$
    ?QIO$  (fnc,lun,[efn],[pri],[isb],[ast],[<prl>])
    ?QIO$C (dpb)
    ?QIO$S (fnc,lun,[efn],[pri],[isb],[ast],[<prl>])
    ?QIOW$ (fnc,lun,[efn],[pri],[isb],[ast],[<prl>])
    ?QIOW$C(dpb)
    ?QIOW$S(fnc,lun,[efn],[pri],[isb],[ast],[<prl>])
    ?RCVD$ (,buf)
    ?RCVD$C(dpb)
    ?RCVD$S(,buf,[err])
    ?RCVX$ (,buf)
    ?RCVX$C(dpb)
    ?RCVX$S(,buf,[err])


                                     27
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    ?RDAF$ (buf)
    ?RDAF$C(dpb)
    ?RDAF$S(buf,[err])
    ?RDBBK$([siz],[nam],[par],[<sts>],[pro])
    ?RDBDF$
    ?RQST$ (tsk,[prt],[pri],[ugc,umc])
    ?RQST$C(dpb)
    ?RQST$S(tsk,[prt],[pri],[ugc,umc],[err])
    ?RREF$ (wdb)
    ?RREF$C(dpb)
    ?RREF$S(wdb,[err])
    ?RSUM$ (tsk)
    ?RSUM$C(dpb)
    ?RSUM$S(tsk,[err])
    ?RUN$  (tsk,[prt],[pri],[ugc],[umc],[smg],snt,[rmg],[rnt])
    ?RUN$C (dpb)
    ?RUN$S (tsk,[prt],[pri],[ugc],[umc],[smg],snt,[rmg],[rnt],[err])
    ?SDAT$ (tsk,buf,[efn])
    ?SDAT$C(dpb)
    ?SDAT$S(tsk,buf,[efn],[err])
    ?SETF$ (efn)
    ?SETF$C(dpb)
    ?SETF$S(efn,[err])
    ?SFPA$ ([ast])
    ?SFPA$C(dpb)
    ?SFPA$S([ast],[err])
    ?SNAP$ (ctl,efn,id,l1,h1,l2,h2,l3,h3,l4,h4)
    ?SNPBK$(dev,unit,ctl,efn,id,l1,h1,l2,h2,l3,h3,l4,h4)
    ?SNPDF$
    ?SPCIO$
    ?SPND$S([err])
    ?SPRA$ ([ast])
    ?SPRA$C(dpb)
    ?SPRA$S([ast],[err])
    ?SRDA$ ([ast])
    ?SRDA$C(dpb)
    ?SRDA$S([ast],[err])
    ?SREF$ (tsk,wdb,[efn])
    ?SREF$C(dpb)
    ?SREF$S(tsk,wdb,[efn],[err])
    ?SRRA$ ([ast])
    ?SRRA$C(dpb)
    ?SRRA$S([ast],[err])
    ?SVDB$ ([adr],[len])
    ?SVDB$C(dpb)
    ?SVDB$S([adr],[len],[err])
    ?SVTK$ ([adr],[len])
    ?SVTK$C(dpb)
    ?SVTK$S([adr],[len],[err])
    ?TTSYM$
    ?UMAP$ (wdb)
    ?UMAP$C(dpb)
    ?UMAP$S(wdb,[err])
    ?UMDIO$


                                     28
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    ?WDBBK$([apr],[siz],[rid],[off],[len],[<sts>],[srb])
    ?WDBDF$
    ?WSIG$S([err])
    ?WTLO$ (grp,msk)
    ?WTLO$C(dpb)
    ?WTLO$S(grp,msk,[err])
    ?WTSE$ (efn)
    ?WTSE$C(dpb)
    ?WTSE$S(efn,[err])
    ?$C    (<dpb>,[err])


    C.2  FCSMAC.REQ Macro Summary


    ?ASCPP$(ascpp,binpp,[err])
    ?ASLUN$(fdb,[fnb],[err])
    ?CCML$ (gclblk,[err])
    ?CLOSE$(fdb,[err])
    ?CSI$
    ?CSI$SV(type,adr,len, ... )
    ?CSI$SW(sw,[mk],[mkw],[clr],[neg],[vtab], ... )
    ?CSI$1 (csiblk,[buff],[len],[err])
    ?CSI$2 (csiblk,[io],[swtab],[err])
    ?DELET$(fdb,[err])
    ?DLFNB$(fdb,[err])
    ?ENTER$(fdb,[fnb],[err])
    ?EXTND$(fdb,lnblks,hnblks,<ext>,[err])
    ?FCSBT$
    ?FCSERRDF$
    ?FDAT$R(fdb,[rtyp],[<ratt>],[rsiz],[cntg],[aloc])
    ?FDBDF$(fdbname,m1,m2, ... ,mn)
    ?FDBF$R(fdb,[efn],[ovbs],[mbct],[<mbfg>])
    ?FDBK$R(fdb,[bkad],[bksz],[bkvb],[bkef],[bkst],[bkdn])
    ?FDOFF$
    ?FDOF$L
    ?FDOP$R(fdb,[lun],[dspt],[dfnb],[<facc>],)
    ?FDRC$R(fdb,[<racc>],[urba],[urbs])
    ?FIND$ (fdb,[fnb],[err])
    ?FINIT$
    ?GCMLB$(fdb,[maxd],[prmpt],[ubuf],[lun],[pdl])
    ?GCMLD$
    ?GCML$ (gclblk,[adpr],[lnpr],[err])
    ?GET$  (fdb,[urba],[urbs],[err])
    ?GET$R (fdb,[urba],[urbs],[lrcnm],[hrcnm],[err])
    ?GET$S (fdb,[urba],[urbs],[err])
    ?GTDID$(fdb,[fnb],[err])
    ?GTDIR$(fdb,[fnb],[dspt],[err])
    ?IOERR$
    ?MARK$ (fdb,lbkvb,hbkvb,bytenum)
    ?MRKDL$(fdb,[err])
    ?NBOFF$
    ?NBOF$L
    ?NMBLK$([fnam],[ftyp],[fver],[dvnm],[unit])


                                     29
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    ?OFID$ (fdb,[<facc>],[lun],[dspt],[dfnb],
            [<racc>],[urba],[urbs],[err])
    ?OFID$A(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFID$M(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFID$R(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFID$U(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFID$W(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFNB$ (fdb,[<facc>],[lun],[dspt],[dfnb],
            [<racc>],[urba],[urbs],[err])
    ?OFNB$A(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFNB$M(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFNB$R(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFNB$U(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OFNB$W(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPEN$ (fdb,[<facc>],[lun],[dspt],[dfnb],
            [<racc>],[urba],[urbs],[err])
    ?OPEN$A(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPEN$M(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPEN$R(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPEN$U(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPEN$W(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPNS$A(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPNS$M(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPNS$R(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPNS$U(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPNS$W(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPNT$D(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?OPNT$W(fdb,[lun],[dspt],[<racc>],[urba],[urbs],[err])
    ?PARSE$(fdb,[fnb],[dspt],[dfnb],[err])
    ?POINT$(fdb,lbkvb,hbkvb,bytenum,[err])
    ?POSIT$(fdb,[lrcnm],[hrcnm],[lbkvb],[hbkvb],[bytenum],[err])
    ?POSRC$(fdb,lrcnm,hrcnm,[err])
    ?PPASC$(ascpp,binpp,zero,sep)
    ?PRINT$(fdb,[err])
    ?PRSDV$(fdb,[fnb],[dspt],[dfnb],[err])
    ?PUT$  (fdb,[nrba],[nrbs],[err])
    ?PUT$R (fdb,[nrba],[nrbs],[lrcnm],[hrcnm],[err])
    ?PUT$S (fdb,[nrba],[nrbs],[err])
    ?RCML$ (gclblk,[err])
    ?RDFDR$(size,addr)
    ?RDFFP$
    ?READ$ (fdb,[bkda],[bkds],[bkvb],[bkef],[bkst],[bkdn],[err])
    ?REMOV$(fdb,[fnb],[err])
    ?RENAM$(oldfdb,newfdb,[err])
    ?RFOWN$
    ?TRUNC$(fdb,[err])
    ?WAIT$ (fdb,[bkef],[bkst],[err])
    ?WDFDR$(size,addr)
    ?WDFFP$(prot)
    ?WFOWN$(pp)
    ?WRITE$(fdb,[bkda],[bkds],[bkvb],[bkef],[bkst],[bkdn],[err])
    ?XQIO$ (fdb,fcn,pnum,padr,[err])




                                     30
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


    C.3  FSRMAC.REQ Macro Summary


    ?BDOFF$
    ?FSRSZ$(nfiles,[bfspac])


    C.4  EXEMC.REQ Macro Summary


    ?ADBDF$(adb)
    ?DCBDF$(dcb)
    ?HDRDF$(hdr)
    ?PCBDF$(pcb)
    ?SCBDF$(scb)
    ?TCBDF$(tcb)
    ?UCBDF$(ucb)
    ?WBKDF$(wbk)


    C.5  UTLMAC.REQ Macro Summary


    ?$CDTB (instr,[num],[term])
    ?$COTB (instr,[num],[term])
    ?$EDMSG(outstr,instr,argblk,[outlen],[nxtarg])
    ?$RLCB (freehd,blksz,blkadr)
    ?$RQCB (freehd,blksz,err)
    ?.DCCVT(result,inlen,instr,[err])
    ?.ODCVT(result,inlen,instr,[err])


    C.6  B11MAC.REQ Macro Summary


    ?.ASGNC   (dst,[src])
    ?.COMMA   ([p])
    ?.COND    ([p],nonnull)
    ?.DEFAULT ([p],dflt)
    ?.MASK    (pos1,size1, ... ,posn,sizen)
    ?.PACKBYTE(byte1,byte2, ... ,byten)
    ?.POS     (pos1,size1, ... ,posn,sizen)
    ?.REVERSE (p1,p2, ... ,pn)
    ?.SAVEREG (r1,r2, ... rn)
    ?.SELECT  ([p],nonnull,null)
    ?.SET     (name,value)
    ?.SIZE    (pos1,size1, ... ,posn,sizen)
    ?.SUBLIST (list)








                                     31
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                SUBJECT INDEX

                      (References are to Page numbers)



    $-form  5, 6, 7                       ?ALUN$  26
    $B-form  7                            ?ALUN$C  26
    $C macro  6                           ?ALUN$S  26
    $C-form  6                            ?ASCPP$  29
    $CDTB  16                             ?ASLUN$  29
    $COTB  16                             ?ASTX$S  26
    $EDMSG  17                            ?ATRG$  26
    $RLCB  21                             ?ATRG$C  26
    $RQCB  21                             ?ATRG$S  26
    $S-form  4, 5, 6                      ?BDOFF$  31
                                          ?CCML$  12, 29
    .BL buffer length                     ?CLEF$  26
       symbol  7                          ?CLEF$C  26
    .DL DPB length                        ?CLEF$S  26
       symbol  5, 7                       ?CLOSE$  29
                                          ?CMKT$S  26
    <plit-arg>  5, 6, 13,                 ?CRAW$  26
       22                                 ?CRAW$C  26
                                          ?CRAW$S  26
    ?$C  29                               ?CRRG$  26
    ?$CDTB  31                            ?CRRG$C  26
    ?$COTB  31                            ?CRRG$S  26
    ?$EDMSG  31                           ?CSI$  12, 29
    ?$RLCB  31                            ?CSI$1  12, 29
    ?$RQCB  31                            ?CSI$2  12, 29
    ?.ASGNC  31                           ?CSI$SV  13, 29
    ?.COMMA  31                           ?CSI$SW  13, 29
    ?.COND  23, 31                        ?CSRQ$  26
    ?.DCCVT  17, 31                       ?CSRQ$C  26
    ?.DEFAULT  23, 31                     ?CSRQ$S  26
    ?.MASK  23, 31                        ?DCBDF$  31
    ?.ODCVT  16, 31                       ?DECL$S  26
    ?.PACKBYTE  22, 31                    ?DELET$  29
    ?.POS  22, 31                         ?DIR$  4, 5, 26
    ?.REVERSE  22, 31                     ?DLFNB$  29
    ?.SAVEREG  31                         ?DRERR$  26
    ?.SAVREG  22                          ?DSAR$S  26
    ?.SELECT  23, 31                      ?DSCP$S  26
    ?.SET  31                             ?DTRG$  26
    ?.SIZE  23, 31                        ?DTRG$C  26
    ?.SUBLIST  23, 31                     ?DTRG$S  26
    ?ABRT$  26                            ?E$$EAE  14
    ?ABRT$C  26                           ?ELAW$  26
    ?ABRT$S  26                           ?ELAW$C  26
    ?ADBDF$  15, 31                       ?ELAW$S  26
    ?ALTP$  26                            ?ENAR$S  26
    ?ALTP$C  26                           ?ENCP$S  27
    ?ALTP$S  6, 26                        ?ENTER$  29


                                      i
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                SUBJECT INDEX

                      (References are to Page numbers)



    ?EXIF$  27                            ?GSSW$S  27
    ?EXIF$C  27                           ?GTDID$  29
    ?EXIF$S  27                           ?GTDIR$  29
    ?EXIT$S  27                           ?GTIM$  20, 27
    ?EXTK$  27                            ?GTIM$B  27
    ?EXTK$C  27                           ?GTIM$C  27
    ?EXTK$S  27                           ?GTIM$S  27
    ?EXTND$  29                           ?GTSK$  27
    ?FCSBT$  29                           ?GTSK$B  27
    ?FCSERRDF$  10, 29                    ?GTSK$C  27
    ?FDAT$R  29                           ?GTSK$S  27
    ?FDB$  11                             ?HDRDF$  15, 31
    ?FDBDF$  11, 29                       ?IE. symbols  8
    ?FDBF$R  29                           ?IOERR$  8, 29
    ?FDBK$R  29                           ?L$$DRV  14
    ?FDOF$L  29                           ?M$$MGE  14
    ?FDOFF$  11, 29                       ?MAP$  27
    ?FDOP$R  29                           ?MAP$C  27
    ?FDRC$R  29                           ?MAP$S  27
    ?FILIO$  8, 27                        ?MARK$  29
    ?FIND$  29                            ?MRKDL$  29
    ?FINIT$  29                           ?MRKT$  27
    ?FSRSZ$  12, 31                       ?MRKT$C  27
    ?G.ERR  12                            ?MRKT$S  27
    ?GCML$  12, 29                        ?NBOF$L  29
    ?GCMLB$  12, 24, 29                   ?NBOFF$  29
    ?GCMLD$  12, 29                       ?NMBLK$  29
    ?GE. symbols  12                      ?OFID$  30
    ?GET$  29                             ?OFID$A  30
    ?GET$R  29                            ?OFID$M  30
    ?GET$S  29                            ?OFID$R  30
    ?GLUN$  27                            ?OFID$U  30
    ?GLUN$B  27                           ?OFID$W  30
    ?GLUN$C  27                           ?OFNB$  30
    ?GLUN$S  27                           ?OFNB$A  30
    ?GMCR$  27                            ?OFNB$M  30
    ?GMCR$C  27                           ?OFNB$R  30
    ?GMCX$  27                            ?OFNB$U  30
    ?GMCX$C  27                           ?OFNB$W  30
    ?GMCX$S  27                           ?OPEN$  30
    ?GPRT$  27                            ?OPEN$A  30
    ?GPRT$B  27                           ?OPEN$M  30
    ?GPRT$C  27                           ?OPEN$R  30
    ?GPRT$S  6, 7, 27                     ?OPEN$U  30
    ?GREG$  27                            ?OPEN$W  30
    ?GREG$B  27                           ?OPNS$A  30
    ?GREG$C  27                           ?OPNS$M  30
    ?GREG$S  27                           ?OPNS$R  30


                                     ii
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                SUBJECT INDEX

                      (References are to Page numbers)



    ?OPNS$U  30                           ?RREF$S  28
    ?OPNS$W  30                           ?RSUM$  28
    ?OPNT$D  30                           ?RSUM$C  28
    ?OPNT$W  30                           ?RSUM$S  28
    ?P$$LAS  14                           ?RSXERRDF$  4
    ?PARSE$  30                           ?RUN$  28
    ?PCBDF$  15, 31                       ?RUN$C  28
    ?POINT$  30                           ?RUN$S  28
    ?POSIT$  30                           ?S.FDB  11
    ?POSRC$  30                           ?SCBDF$  31
    ?PPASC$  30                           ?SDAT$  28
    ?PRINT$  30                           ?SDAT$C  28
    ?PRSDV$  30                           ?SDAT$S  28
    ?PUT$  30                             ?SETF$  28
    ?PUT$R  30                            ?SETF$C  28
    ?PUT$S  30                            ?SETF$S  28
    ?QIO$  27                             ?SFPA$  28
    ?QIO$C  27                            ?SFPA$C  28
    ?QIO$S  27                            ?SFPA$S  28
    ?QIOSY$  27                           ?SNAP$  9, 28
    ?QIOW$  27                            ?SNPBK$  9, 28
    ?QIOW$C  27                           ?SNPDF$  9, 28
    ?QIOW$S  27                           ?SPCIO$  8, 28
    ?R$$11D  14                           ?SPND$S  28
    ?R$$11M  14                           ?SPRA$  28
    ?RCML$  12, 30                        ?SPRA$C  28
    ?RCVD$  27                            ?SPRA$S  28
    ?RCVD$C  27                           ?SRDA$  28
    ?RCVD$S  27                           ?SRDA$C  28
    ?RCVX$  27                            ?SRDA$S  28
    ?RCVX$C  27                           ?SREF$  28
    ?RCVX$S  27                           ?SREF$C  28
    ?RDAF$  28                            ?SREF$S  28
    ?RDAF$C  28                           ?SRRA$  28
    ?RDAF$S  28                           ?SRRA$C  28
    ?RDBBK$  7, 28                        ?SRRA$S  28
    ?RDBDF$  7, 28                        ?SVDB$  28
    ?RDFDR$  30                           ?SVDB$C  28
    ?RDFFP$  30                           ?SVDB$S  28
    ?READ$  30                            ?SVTK$  28
    ?REMOV$  30                           ?SVTK$C  28
    ?RENAM$  30                           ?SVTK$S  28
    ?RFOWN$  30                           ?TCBDF$  31
    ?RQST$  28                            ?TRUNC$  30
    ?RQST$C  28                           ?TTSYM  8
    ?RQST$S  28                           ?TTSYM$  28
    ?RREF$  28                            ?UCBDF$  31
    ?RREF$C  28                           ?UMAP$  28


                                     iii
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                SUBJECT INDEX

                      (References are to Page numbers)



    ?UMAP$C  28                              binary to decimal
    ?UMAP$S  28                              with zero
    ?UMDIO$  8, 28                           suppression  18
    ?WAIT$  30                            conversion, magnitude
    ?WBKDF$  15, 31                          binary to decimal
    ?WDBBK$  7, 29                           without zero
    ?WDBDF$  7, 29                           suppression  19
    ?WDFDR$  30                           conversion, magnitude
    ?WDFFP$  30                              binary to
    ?WFOWN$  30                              octal  18
    ?WRITE$  30                           conversion, octal to
    ?WSIG$S  29                              binary  16
    ?WTLO$  29                            conversion, RAD50 to
    ?WTLO$C  29                              ASCII  19
    ?WTLO$S  29                           conversion, signed
    ?WTSE$  29                               binary to
    ?WTSE$C  29                              decimal  18
    ?WTSE$S  29                           conversion, signed
    ?XQIO$  30                               binary to
    ?xxxDF$ macros  14                       octal  18
                                          conversion, time  20
    Attachment Descriptor                 CSI$ND  13
       Blocks  15
    Author  1                             default error
                                             expression  4, 10
    B11MAC.REQ  1, 22,                    DPB, impure  5, 7
       23, 31                             DPB, pure  5, 6
    bugs  24                              dynamic storage
    bytes, packing  22                       allocation  21

    command line                          error expression  4,
       processing  12                        5, 6, 10, 24
    conversion, ASCII                     error processing  4,
       string  17                            10
    conversion, binary                    Executive Services
       byte to octal  17                     macros  1, 4
    conversion, date  20                  EXEMC.MLB  14, 15
    conversion, decimal                   EXEMC.REQ  2, 14, 31
       to binary  16, 17                  EXITLOOP  4, 24
    conversion, double                    expansion,
       precision binary                      conditional  23
       to decimal  19                     expansion,
    conversion, extended                     default  23
       ASCII string  18                   expansion,
    conversion, file                         selective  23
       name  19                           Extended Arithmetic
    conversion, magnitude                    Element  14
                                          external names  2


                                     iv
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                SUBJECT INDEX

                      (References are to Page numbers)



    FCSMAC.REQ  1, 10,                    parameter sublist  3,
       12, 29                                23
    FDAT$A  11                            partition names  5, 6
    FDB, initialization                   PLIT  5
       of  10, 25                         position-size
    FDBF$A  11                               modifier  2, 22
    FDBK$A  11                            problems  1
    FDOP$A  11                            Program Logical
    FDRC$A  11                               Address Space  14
    File Control                          PSM  2, 22
       Routines  12
    File Control Services                 questions  1
       macros  1, 10
    File Storage Region                   RDB  7
       macros  1, 11                      Region Definition
    fixed length field                       Block  7
       definition  20                     registers, saving  22
    form control  18                      REQUIRE SOURCE  2
    format directives  17                 RSX-11D System  14
    FSR, initialization                   RSX-11M System  14
       of  11                             RSXMAC.REQ  1, 4, 8,
    FSRMAC.REQ  2, 12, 31                    9, 26
                                          RSXMC.MAC  14
    GCML control                          RSXMC.REQ  14
       block  12
                                          snapshot dump  9
    I/O Error Codes  8                    space generation  19
    I/O function codes  8                 switch descriptor
    internal names  2                        table  13
    IOSB  8                               switch value
                                             table  13
    limitations  24                       symbolic offsets  14
    Loadable Device                       System Data
       Drivers  14                           Structures  14
    locate field mark  21
                                          task names  5, 6
    macro libraries,                      Terminal Driver
       accessing  2                          Symbols  8
    macro parameters  23
    Memory Management  14                 UPLIT  5, 6
    multi-word fields  3                  Utility Conversion
                                             Routine macros  1,
    names, bit field  2,                     16
       22                                 UTLMAC.REQ  2, 16, 31
    naming conventions  2
    new line  18




                                      v
    May 23, 1977                        BLISS-11/RSX-11M Interface Macros


                                SUBJECT INDEX

                      (References are to Page numbers)



    WDB  7
    Window Blocks  15
    Window Definition
       Block  7














































                                     vi