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 . . . 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)=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,,,); ?OPEN$R(FDB,,,); ?OPEN$A(FDB,,,,BUF,.BUFLEN); ?QIO$S(?IO.RLB,1,,,IOSB,,); 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$([,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$(,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 which defines the appropriate DPB; for example: BIND MRKTDPB=UPLIT(?MRKT$(1,5,2,MTRAP)); OWN MRKTDPB[?MRKT.DL]=(?MRKT$(1,,2,MTRAP)); ?DIR$(); 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 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([,err]); The first argument must be a 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(,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 ', ,#167000)); ?CRRG$S(RDB); ! CREATE REGION IF NOT .?R.GSTS(RDB) ! 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 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 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 ___ __________ __ ____ _____ ___ __________ The ?.PACKBYTE macro takes a list of load-time expressions and expands into a 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,,) 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$ (,[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],[]) ?QIO$C (dpb) ?QIO$S (fnc,lun,[efn],[pri],[isb],[ast],[]) ?QIOW$ (fnc,lun,[efn],[pri],[isb],[ast],[]) ?QIOW$C(dpb) ?QIOW$S(fnc,lun,[efn],[pri],[isb],[ast],[]) ?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],[],[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],[],[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 (,[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,,[err]) ?FCSBT$ ?FCSERRDF$ ?FDAT$R(fdb,[rtyp],[],[rsiz],[cntg],[aloc]) ?FDBDF$(fdbname,m1,m2, ... ,mn) ?FDBF$R(fdb,[efn],[ovbs],[mbct],[]) ?FDBK$R(fdb,[bkad],[bksz],[bkvb],[bkef],[bkst],[bkdn]) ?FDOFF$ ?FDOF$L ?FDOP$R(fdb,[lun],[dspt],[dfnb],[],) ?FDRC$R(fdb,[],[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,[],[lun],[dspt],[dfnb], [],[urba],[urbs],[err]) ?OFID$A(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFID$M(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFID$R(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFID$U(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFID$W(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFNB$ (fdb,[],[lun],[dspt],[dfnb], [],[urba],[urbs],[err]) ?OFNB$A(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFNB$M(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFNB$R(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFNB$U(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OFNB$W(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPEN$ (fdb,[],[lun],[dspt],[dfnb], [],[urba],[urbs],[err]) ?OPEN$A(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPEN$M(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPEN$R(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPEN$U(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPEN$W(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPNS$A(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPNS$M(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPNS$R(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPNS$U(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPNS$W(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPNT$D(fdb,[lun],[dspt],[],[urba],[urbs],[err]) ?OPNT$W(fdb,[lun],[dspt],[],[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 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