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