Google
 

Trailing-Edge - PDP-10 Archives - BB-J941C-BB_A19 - monint.doc
There are 9 other files named monint.doc in the archive. Click here to see a list.
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
	omitted.


    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
	.RUN BLS36C			! 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
	.DELETE UUOSYM.LST,MONSYM.LST,UUOSYM.UNV,MONSYM.UNV


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