1.0 INTRODUCTION Precompiled BLISS declaration libraries are provided to facilitate the use of the TOPS-10 and TOPS-20 monitor calls in BLISS-36 programs. These libraries are derived from the MACRO-10 UNIVERSAL files MACTEN.UNV MACSYM.UNV UUOSYM.UNV MONSYM.UNV which are used in writing MACRO programs. The libraries which are provided are: TENDEF.L36 Monitor independent symbols from MACTEN and MACSYM UUOSYM.L36 TOPS-10 monitor calls from UUOSYM MONSYM.L36 TOPS-20 monitor calls from MONSYM Generally speaking, the BLISS declaration libraries contain definitions of the same symbols which the MACRO universal files contain, and are used in much the same way as the universal files. More detail about how the translation occurs is found in later sections. However, the following general comment applies: The symbol names are the same except that the period is translated to dollar sign, and the percent sign is translated to underline. For example, PC%USR becomes PC_USR .CHLFD becomes $CHLFD This rule permits the programmer to use the published UUOSYM and MONSYM files as a guide to the use of the BLISS libraries, while the special character translation avoids the use of the %NAME lexical-function. 2.0 TENDEF.L36 The TENDEF library contains a number of MACRO and LITERAL declarations which are not monitor dependent. These provide definitions of PDP-10 hardware data structures, and definitions needed to utilize the mask definitions contained in the UUOSYM and the MONSYM libraries. Ordinarily both TENDEF and either UUOSYM or MONSYM will be needed: LIBRARY 'TENDEF'; LIBRARY 'MONSYM'; 2.1 POINTR Macro Subfields of a machine word are defined in the libraries in terms of bit masks just as they are defined in the corresponding MACRO universal files. These masks are a contiguous string of one-bits arbitrarily located in a 36-bit word. The POINTR macro is used to construct a field-reference from these masks. Call: POINTR ( address , mask ) Expansion: address < position , size > Example: POINTR(X, %O'60') expands to X<4,2> 2.2 FLD Macro The FLD macro is used to position a value in a subfield specified by a bit mask. Call: FLD ( value , mask ) Expansion: ( ( value ) ^ position ) Example: FLD(2, %O'60') expands to ((2) ^ 4) 2.3 Other Symbols The TENDEF library contains several other groups of symbols extracted from the MACSYM file: Program counter bits PC_xxx Version number subfields VI_xxx Control character definitions $CHxxx Two STRUCTUREs are declared in this library, MONWORD and MONBLOCK. These provide a convenient BLISS-like access to the fields of TOPS-10 and TOPS-20 data-structures using the bit-masks defined by UUOSYM or MONSYM. 3.0 UUOSYM.L36 The following specifies the translation of each type of symbol defined by the UUOSYM file into BLISS: o Symbols defined by equates, which include offsets, field values, and subfield bit masks, are converted to LITERAL declarations with the same value. o Symbols defined by EXTERN, which include the job data area symbols, are made accessible by the following EXTERNAL and MACRO declaration pairs: EXTERNAL %Name('.xxx'); MACRO $Name = %Name('.xxx'); o Symbols defined by OPDEF, which include the UUO instructions, are converted to MACRO declarations. One of four styles of macro is chosen depending upon the form of the OPDEF. In each case, the macro ultimately expands after parameter substitution to a list of three values separated by commas, which represent the operation code, the accumulator field, and the effective address of the instruction. This macro would ordinarily be called to supply the parameters of a MACHOP or MACHSKIP function. MACRO name= %O'xxx', %O'xx', %O'xxxxxx' %; This form is used when the accumulator field and the effective address of the OPDEF are both nonzero. MACRO name(a)= %O'xxx', a, %O'xxxxxx' %; This form is used when the accumulator field of the OPDEF is zero and the effective address is nonzero, or when the opcode is CALLI. MACRO name(e)= %O'xxx', %O'xx', e %; This form is used when the accumulator field of the OPDEF is nonzero and the effective address is zero, or when the opcode is TTCALL or MTAPE. MACRO name(a,e)= %O'xxx', a, e %; This form is used when the accumulator field and the effective address of the OPDEF are both zero (and the opcode is not one of the special cases). 4.0 MONSYM.L36 The following specifies the translation of each type of symbol defined by the MONSYM file into BLISS: o Symbols defined by equates, which include offsets, field values, JSYS error codes, and subfield bit masks, are converted to LITERAL declarations with the same value. o Symbols defined by OPDEF, which include the JSYS instructions, are converted to LITERAL declarations with the JSYS number as value. The symbol "JSYS" itself is omitted. 5.0 GENERATION PROCEDURE The following is the procedure for library generation. The inputs to the generation are: UUOSYM.MAC MONSYM.MAC TENDEF.R36 Monitor independent symbols FLDDB.R36 FLDDB$ macro .R MACRO ! MACRO 52 or later *,UUOSYM=UUOSYM ! Make UUOSYM.LST *,MONSYM=MONSYM ! Make MONSYM.LST .RUN MONINT ! Convert .LST to .R36 *UUOSYM ! Make UUOSYM.R36 *MONSYM ! Make MONSYM.R36 .DELETE UUOSYM.LST,MONSYM.LST,UUOSYM.UNV,MONSYM.UNV ! On Tops-10 do: ! .RUN BLISS ! Create libraries *TENDEF=TENDEF/LIBRARY ! Make TENDEF.L36 from TENDEF.R36 *UUOSYM=UUOSYM/LIBRARY ! Make UUOSYM.L36 from UUOSYM.R36 *MONSYM=MONSYM,FLDDB/LIBRARY ! Make MONSYM.L36 from MONSYM.R36 and ! FLDDB.R36 ! On Tops-20 do: ! @BLISS BLISS>TENDEF/LIBRARY BLISS>UUOSYM/LIBRARY BLISS>MONSYM,FLDDB/LIBRARY The following files should now be installed in a public directory: TENDEF.R36 TENDEF.L36 UUOSYM.R36 UUOSYM.L36 MONSYM.R36 MONSYM.L36 FLDDB.R36