Google
 

Trailing-Edge - PDP-10 Archives - bb-lw55a-bm - galaxy-sources/glxots.mac
There are 31 other files named glxots.mac in the archive. Click here to see a list.
	TITLE GLXOTS - Primary Module for GALAXY Runtime System
	SUBTTL	Preliminaries

;	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1975, 1988.
;	ALL RIGHTS RESERVED.
;
;	THIS SOFTWARE IS FURNISHED UNDER A  LICENSE AND MAY BE USED AND  COPIED
;	ONLY IN  ACCORDANCE  WITH  THE  TERMS OF  SUCH  LICENSE  AND  WITH  THE
;	INCLUSION OF THE ABOVE  COPYRIGHT NOTICE.  THIS  SOFTWARE OR ANY  OTHER
;	COPIES THEREOF MAY NOT BE PROVIDED  OR OTHERWISE MADE AVAILABLE TO  ANY
;	OTHER PERSON.  NO  TITLE TO  AND OWNERSHIP  OF THE  SOFTWARE IS  HEREBY
;	TRANSFERRED.
;
;	THE INFORMATION IN THIS  SOFTWARE IS SUBJECT  TO CHANGE WITHOUT  NOTICE
;	AND SHOULD  NOT  BE CONSTRUED  AS  A COMMITMENT  BY  DIGITAL  EQUIPMENT
;	CORPORATION.
;
;	DIGITAL ASSUMES NO  RESPONSIBILITY FOR  THE USE OR  RELIABILITY OF  ITS
;	SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.

	SEARCH	GLXMAC			;LOAD COMMON DEFINITIONS
	PROLOG(GLXOTS,OTS)		;

	OTSMAN==:0			;Maintenance edit number
	OTSDEV==:21			;Development edit number
	VERSIN (OTS)			;Generate edit number

;The purpose of this module is to provide a common access mechanism
;	for the GALAXY object time system. When the library is loaded correctly
;	this module starts at location VORG, defined in GLXMAC.
;	The only code in this module is the library dispatch vector
;	which is used to find routines and variables in the library.
;

; In the case of the library being loaded as a .REL file,
;	this module generates no code, since there is no need for an
;	dispatch vector
	Subttl	Table of Contents

;		     Table of Contents for GLXOTS
;
;				  Section		      Page
;
;
;    1. Revision history . . . . . . . . . . . . . . . . . . .   3
;    2. Check for neccessity of this module  . . . . . . . . .   4
;    3. Library Dispatch Vector  . . . . . . . . . . . . . . .   5
;    4. Object Time System
;        4.1    Initial startup  . . . . . . . . . . . . . . .   6
;        4.2    Data page creation . . . . . . . . . . . . . .   7
;    5. End  . . . . . . . . . . . . . . . . . . . . . . . . .   8
SUBTTL	Revision history


COMMENT	\

7			4/6/81
	Add "start address" for beginning of dispatch table.

*****  Release 4.2 -- begin maintenance edits  *****

*****  Release 5.0 -- begin development edits  *****

12	5.1002		28-Dec-82
	Move to new development area.  Clean up edit organization.  Update TOC.
*****	Release 5.0 -- begin maintenance edits	*****

15	Increment maintenance edit level for version 5 of GALAXY.

*****	Release 6.0 -- begin development edits	*****

20	6.1037		26-Oct-87
	Move sources from G5: to G6:

21	6.1225		8-Mar-88
	Update copyright notice.

\   ;End of Revision History
SUBTTL	Check for neccessity of this module

;Since GLXOTS is the first module loaded, define the start of the data space

	$GDATA	D%BEG,0			;First location in the data pages
	$DATA	OTSDAT,0		;Dummy data slot for OTS
SUBTTL Library Dispatch Vector


; This vector is used by all non-OTS modules to dispatch to the
; proper routines in the OTS.
;
IFN GLXPURE,<				;;IF OTS
DEFINE	CDO	(X),<			;;MACRO TO DEFINE ENTRY POINTS
	IFB	<X>,<PORTAL  .UNRTN>	;;UNIMPLEMENTED ROUTINES
	IFNB	<X>,<			;;FOR DEFINED ENTRY POINTS...
		GLOB	X		;;DECLARE GLOBAL SYMBOM
		PORTAL	X		;;POINT TO ENTRY
	>				;;END OF IFNB <X> CONDITIONAL
>					;;END OF CDO MACRO
>					;;END OF IFN GLXPURE CONDITIONAL

IFE	GLXPURE,<			;;IF LINKABLE LIBRARY
DEFINE	CDO	(X),<			;;MACRO TO DEFINE ENTRY POINTS
	IFNB	<X>,<GLOB X>		;;DECLARE SYMBOL GLOBAL
>					;;END OF CDO MACRO
>					;;END OF IFE GLXPURE CONDITIONAL


	LSTOF.				;TURN OFF LISTING
GLXOTS::LIBVEC				;DEFINE ENTRY VECTOR
	LSTON.				;TURN ON LISTING

.UNRTN::$STOP	(UNR,Unimplemented routine executed) ;++ NON-EXISTENT ROUTINES
.OBRTN::$STOP	(OBR,Obsolete routine executed)	;++ ANCIENT ROUTINES
.OORTN::$STOP	(OOR,OTS only routine executed) ;++ SHOULD NEVER HAPPEN
SUBTTL	Object Time System -- Initial startup


; Here from GLXINI (the bootstrap module). This code is only needed if
; the user acceses the library as an OTS high segment.
;
; Create the library's data pages. On TOPS-10, this requires 2 PAGE. UUOs.
; The first to create the page fault handler's data page just below the high
; segment origin. The second create the actual data pages referenced by all
; GLXLIB modules. On TOPS-20, there is no page fault handler. Creating the
; data pages requires touching each page. A BLT (through a call to .ZCHNK)
; does this nicely.
;
; Once the data pages have been created, OTS initialization is completed
; by calling I%INIT in GLXINT.
;
OTSINI:
IFE GLXPURE,<				;IF LINKABLE LIBRARY
	PUSHJ	P,.OORTN		;HOW DID WE GET HERE ??
>					;END OF IFE GLXPURE CONDITIONAL

IFN GLXPURE,<				;IF OTS
	HLRZ	TF,S1			;GET VERSION # LOADED GY GLXINI
	CAIE	TF,%%.GLX		;SKEW ?
	  JRST	[MOVEI	S1,OTSERR	;POINT TO ERROR TEXT
		 $CALL	K%SOUT		;TYPE IT
		 $CALL	I%EXIT]		;STOP
	HRRZS	S1			;STRIP OFF VERSION
	PUSH	P,S1			;SAVE S1
	PUSH	P,S2			;SAVE S2
	PUSHJ	P,CREDAT		;CREATE THE PAGES
	POP	P,S2			;RESTORE S2
	POP	P,S1			;RESTORE S1
	SETOM	OTSDAT			;INDICATE GETSEG OCCURED
	PJRST	I%INIT			;COMPLETE INITIALIZATION

OTSERR:	ASCIZ	|? GLXLIB version skew; recompile this program|
SUBTTL	Object Time System -- Data page creation


CREDAT:
TOPS10	<				;TOPS-10 ONLY
	MOVEI	TF,D%END##		;GET LAST PAGE LOCATION
	ADR2PG	TF			;CONVERT TO A PAGE NUMBER
	HRLI	TF,.PAGCA		;SET UP PAGE. UUO FUNCTION
	PAGE.	TF,			;READ PAGE ACCESS CODES
	  TXO	TF,PA.GNE		;CAN'T - ASSUME NOT THERE AND TRY CREATE
 	TXNN	TF,PA.GNE		;PAGE EXIST ?
	POPJ	P,			;YES - ASSUME ALL PAGES THERE AND RETURN
	MOVE	TF,[.PAGCD,,S1]		;SET UP PAGE. UUO
	MOVEI	S1,D%END##-D%BEG	;GET NUMBER OF WORDS IN THE DATA PAGES
	TXZE	S1,PAGSIZ-1		;FRACTION OF A PAGE ?
	ADDI	S1,PAGSIZ		;YES - ROUND UP
	ADR2PG	S1			;CONVERT TO PAGE NUMBER
	MOVNS	S1			;MAKE NEGATIVE REPEAT COUNT
	MOVEI	S2,D%BEG		;GET STARTING DATA PAGE ADDRESS
	ADR2PG	S2			;CONVERT TO A PAGE NUMBER
	PAGE.	TF,			;CREATE THE LIBRARY DATA PAGES
	  SKIPA				;CAN'T
	POPJ	P,			;RETURN

CREERR:	OUTSTR	[ASCIZ	|? GLXOTS - Library data page create failed|]
	$HALT				;STOP
	JRST	.-1			;DON'T CONTINUE
>					;END OF TOPS-10 CONDITIONAL

TOPS20	<				;TOPS-20 ONLY
	XMOVEI	S1,D%BEG-D%END##	;GET LENGTH OF PAGE PAGES
	XMOVEI	S2,D%END##		;POINT TO LAST DATA WORD
	$CALL	.ZCHNK			;ZAP ALL WORDS
	POPJ	P,			;RETURN
>					;END OF TOPS-20 CONDITIONAL
>					;END OF IFN GLXPURE CONDITIONAL
SUBTTL	End



OTS%L:
IFN GLXPUR<
	END GLXOTS>
IFE GLXPUR<
	END>