Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap1_198111 - decus/20-0002/jobdat.mac
There are 44 other files named jobdat.mac in the archive. Click here to see a list.
	SUBTTL	T. HASTINGS/TH/PFC  TS 1-MAR-75   V430(443)


;***COPYRIGHT 1969,1970,1971,1972,1973,1974,1975 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***

;TO ELIMINATE MOST OF UNWANTED GLOBALS USERS
;ASSEMBLING INSTRUCTIONS TO MAKE USER VERSION FOR CUSP:
;.COMPILE  JOBDAT
;	INSTEAD, THIS MAKES A JOBDAT.UNV FOR USERS
;	IF SYMBOL %..UNV IS DEFINED

;MONITOR ASSEMBLY INSTRUCTIONS:
;.COMPILE  EJBDAT.REL=F.MAC+S.MAC+JOBDAT.MAC	;IF PRE 5.07
;.COMPILE F??.MAC,S.MAC,EJBDAT.REL=FTEJBD.MAC+JOBDAT.MAC	;IF 5.07 OR LATER
;.COMPILE FVM.MAC,S.MAC,VJBDAT.REL=FTEJBD.MAC+JOBDAT.MAC	;IF 6.01 OR LATER
;	WHERE FTEJBD.MAC IS JUST P=1
;	NOTE--IF LEVEL C S.MAC IS USED, EJBDAT WILL BE FOR LEVEL C
;		OTHERWISE, IT WILL BE FOR LEVEL D.
;		USER VERSION IS THE SAME IN EITHER CASE.





;CONDITIONAL ASSEMBLY OPTIONS:

IFNDEF FTCN6,<FTCN6==0>		;REMOVE .JBCN6
IFNDEF FTJOB,<FTJOB==1>		;REMOVE "JOB" SYMBOLS
	SUBTTL	REVISION HISTORY

;%426(431) MAY 1971, WITH 5.03

;432	COSMETIC IMPROVMENTS TO CLEAN UP COMMENTS;
;	SYMBOLS NOT DEFINING WORDS ARE NOW TABBED IN; FIX
;	USER SYMBOLS AT CONSTANT LOCATIONS.
;433	ADD CHECKOUT INSTRUCTIONS.
;434	DEFINE .JBHSA,.JBH41,.JBHRN AS USER SYMBOLS.
;435	DEFINE .JBPFH,.JBHGA AND MAKE 6.01(VM) CHANGES.
;436	DEFINE .JBOVL FOR LINK-10 V.2.
;437	REMOVE .JBCN6 (UNDER FTCN6)
;440	REMOVE JOBXXX IN USER VERSION (UNDER FTJOB)
;%427(440)	JAN, 1974

;441	(10-13,901) PRODUCE JOBDAT.UNV
;442	PURGE LOCAL MJDA
;443	PURGE LOCAL MACROS
	SUBTTL	CHECKOUT INSTRUCTIONS

;1. PRODUCE NEW USER VERSION:		.COMPILE JOBDAT
;   RUN GLOB TO GET LIST OF SYMBOLS:	.R GLOB
;					*NUJBDT=JOBDAT$
;   COMPARE WITH PREVIOUS USER VERSION:	.R GLOB
;					*OUJBDT=JOBDAT[10,7]$
;					.R FILCOM
;					*TTY:=OUJBDT.GLB,NUJBDT/1L
;   VERIFY OUTPUT.
;
;2. PRODUCE NEW EXEC VERSION:		.COMPILE F??,S,EJBDAT.REL=FTEJBD+JOBDAT
;   RUN GLOB TO GET LIST OF SYMBOLS:	.R GLOB
;					*NEJBDT=EJBDAT$
;   COMPARE WITH PREVIOUS EXEC VERSION:	.R GLOB
;					*OEJBDT=EJBDAT[10,7]$
;					.R FILCOM
;					*TTY:=OEJBDT.GLB,NEJBDT/1L
;   VERIFY OUTPUT.
	SUBTTL	MACRO DEFINITIONS FOR THIS ROUTINE

;THIS AREA PROVIDES STORAGE OF ITEMS OF INTEREST TO BOTH
;THE MONITOR AND THE USER

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;   ALL NEW USER SYMBOLS MUST BE OF THE FORM:                ;;;
;;;   .JBXXX   IF THE SYMBOL IS IN THE LOW SEGMENT             ;;;
;;;   .JBHXX   IF THE SYMBOL IS IN THE HIGH SEGMENT            ;;;
;;;							       ;;;
;;;   THE OLD FORMS OF JOBXXX AND JOBHXX ARE LEGAL ONLY FOR    ;;;
;;;   COMPATABILITY WITH OLD PROGRAMS AND WILL EVENTUALLY DIE  ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;   SYMBOLS NOT DEFINING WORDS ARE TABBED IN ONCE            ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;MACRO TO DEFINE SYMBOLS FOR USER USE
;THESE CANNOT BE CHANGED WITHOUT INVALIDATING OLD SAVED FILES

	DEFINE U(SYMBOL,VALUE,LENGTH)
	<SYMBOL=VALUE
	IFNDEF %..UNV,ENTRY SYMBOL
	LOC=VALUE+LENGTH>

;MACRO TO DEFINE SUPPRESSED SYMBOLS FOR USER USE

	DEFINE US(SYMBOL,VALUE,LENGTH)
	<SYMBOL==VALUE
	IFNDEF %..UNV,ENTRY SYMBOL
	LOC=VALUE+LENGTH>

;MACRO TO DEFINE SYMBOLS FOR USER USE OF BOTH JOB AND .JB FORMAT
;SAME AS U

	DEFINE UJOB(SYMBOL,VALUE,LENGTH)
	<.JB'SYMBOL=VALUE
	IFNDEF %..UNV,ENTRY .JB'SYMBOL
	JOB'SYMBOL=VALUE
	IFNDEF %..UNV,ENTRY JOB'SYMBOL
	IFE FTJOB,<IF2 < PURGE JOB'SYMBOL >>
	LOC=VALUE+LENGTH>

;MACRO TO DEFINE SYMBOLS FOR USER USE OF BOTH JOB AND .JB FORMAT
;SAME AS US

	DEFINE USJOB(SYMBOL,VALUE,LENGTH)
	<.JB'SYMBOL==VALUE
	JOB'SYMBOL==VALUE
	IFNDEF %..UNV,ENTRY .JB'SYMBOL,JOB'SYMBOL
	IFE FTJOB,<IF2 < PURGE JOB'SYMBOL >>
	LOC=VALUE+LENGTH>
;THESE MACROS PROVIDE STORAGE OF ITEMS OF INTEREST TO ONLY MONITOR


;MACRO TO DEFINE SYMBOLS FOR MONITOR USE ONLY
;THESE MAY BE CHANGED TO SUIT MONITOR

	DEFINE M(SYMBOL,VALUE,LENGTH)
	<IFE  U2,<	SYMBOL==VALUE
	IFNDEF UJOBDAT,<INTERNAL SYMBOL> ;MAKE GLOBAL ONLY IF ASSEM FOR MONITOR
	LOC=VALUE+LENGTH>
	IFN  U2,<PURGE  SYMBOL>>

;MACRO TO DEFINE PARAMETERS OF INTEREST TO MONITOR ONLY
;THESE MAY BE CHANGED TO SUIT MONITOR & WILL NOT PRINT OUT WITH DDT

	DEFINE XP(SYMBOL,VALUE)
	<IFE  U2,<	SYMBOL==VALUE
	IFNDEF UJOBDAT,<INTERN SYMBOL>>	;MAKE GLOBAL ONLY IF ASSEM FOR MONITOR
	IFN  U2,<PURGE  SYMBOL>>
;DEFINE ASSEMBLY PARAMETERS:
;	UJOBDAT=DEFINED IF USER JOBDAT
;	U2=USER JOBDAT PASS 2
;	LC=4S72 (LEVEL-C) MONITOR JOBDAT
;	UNIV=MONITOR WITH UNIVERSAL F, S
;	VM=6.01 (VM) MONITOR JOBDAT

IFNDEF P,<IFNDEF PDP,<UJOBDAT==1>>  ;IF NOT ASSEMBLED WITH S.MAC, MAKE USER VERSION

IFDEF UJOBDAT,<
	R=0		;DEFINE MONITOR ACS SO USER VERSION WILL ASSEMBLE
	P=0		;OK TO DEFINE TO BE WRONG SINCE DO NOT APPEAR IN U MACRO
IF2,<  U2==1>		;FLAG SPECIAL HANDLE IN PASS 2 FOR USER VERSION
>
IFNDEF  U2,<U2==0>

IFNDEF	UJOBDAT,<IFDEF FTDISK,<IFNDEF P1,<LC=0>>>  ;SET LC=0 IF LEV.C MONITOR VERSION
IFNDEF	LC,<LC=1>			;ELSE, SET IT TO 1

IFNDEF UJOBDAT,<IFNDEF FTDISK,<UNIV==1  ;IF MONITOR BUT FTDISK UNDEFINED,
			SEARCH F,S	;5.07 USES UNIVERSAL F??.MAC,S.MAC
		  PURGE P>>		;REMOVE DUMMY P
					;  THEN MUST BE UNIVERSAL F,S
IFNDEF UNIV,<UNIV==0>			;  ELSE, PRE 5.07, SO NO UNIVERSALS

IF1,<
IFN	UNIV,<VM=FTVM>
IFE	UNIV,<IFDEF FTVM,<VM=FTVM>>	;IF 6-SERIES MONITORS, VM=FTVM
>
IFNDEF	VM,<VM=0>



IFDEF UJOBDAT,<
IFNDEF %..UNV,TITLE	JOBDAT - JOB DATA AREA (FIRST 140 LOC OF USER AREA) 
IFDEF %..UNV,<.DIRECTIVE	.NOBIN	;SUPPRESS BINARY
		%%JOBD==%JOBDT	;STANDARD UNIVERSAL VERSION
		PURGE %JOBDT
	UNIVERSAL	JOBDAT - JOB DATA AREA (FIRST 140 LOC OF USER AREA) 
>	;END IFDEF %..UNV
>

IFNDEF UJOBDAT,<
FTJOB==1	;FORCE JOBXXX SYMBOLS
IFE VM,<
DATJOB:	IFNDEF %..UNV,ENTRY	DATJOB
	TITLE	EJBDAT - EXEC VERSION OF JOB DATA AREA
	IFNDEF	P,<P==PDP>	;IN CASE OF OLD MONITORS
	IFNDEF	R,<R==PROG>	; ..
>
IFN VM,<
VMDTJB:	IFNDEF %..UNV,ENTRY	VMDTJB
	TITLE	VJBDAT - VM EXEC VERSION OF JOB DATA AREA
>
>
	SUBTTL	LOW SEGMENT DATA AREA

M JOBAC,0,20		;PLACE WHERE USER ACS ARE STORED ON UUO CALLS
			;IE RELATIVE 0-17 IN USER AREA
M JOBDAC,LOC,20		;PLACE WHERE HARDWARE ACS(0-17) ARE STORED
			;WHEN JOB IS INACTIVE. THESE ARE EITHER THE
			;USERS AC IF JOB WAS STOPPED IN USER MODE
			;OR ARE THE EXEC IF STOPED IN EXEC MODE
			;0-16 ALSO STORED HERE ON CLK INTERRUPTS
	XP JOBDPD,JOBDAC+P	;AC P DUMPED HERE
	XP JOBDPG,JOBDAC+R	;AC R DUMPED HERE
	IFE	LC,<
	XP JOBD14,JOBDAC+14	;AC 14 DUMPED HERE
	>
	XP JOBD15,JOBDAC+15	;AC 15 DUMPED HERE
	XP JOBD16,JOBDAC+16	;AC 16 DUMPED HERE
	XP JOBD17,JOBDAC+17	;AC 17 DUMPED HERE
UJOB UUO,40,1		;USER UUO TRAP LOC.(UUO STORED HERE)
UJOB 41,41,1		;USER UUO JSR LOCATION
			;(SET FROM HIGH SEG DATA AREA ON GET IN NO LOW FILE)
UJOB ERR,42,1		;LH UNUSED-SAVE FOR LATER THINGS - SO USER PROGRAMS
			;SHOULD IGNORE LH IN ALL PROGRAMS
			;RH=COUNT OF NO. OF ERRORS IN RPG(RAPID PROGRAM
			;GENERATION) SEQUENCE OF CUSPS.
			;NOT CHANGED FROM GET TO GET.
M JOBENB,43,1		;LH UNUSED
			;RH=APR CONSO FLAGS FOR USER APR TRAPPING
			;SET BY CALL [SIXBIT /APRENB/]
UJOB REL,44,1		;LH=0 - RH=HIGHEST REL. ADR. IN USER AREA(IE LOW SEGMENT)
			;SET BY MONITOR EACH TIME JOB RUNS OR CHANGES CORE SIZE
	IFN	VM,<LOC=JOBPDO-.JDAT>
M JOBPD1,LOC,0		;FIRST LOC. OF SYSTEM UUO PUSHDOWN LIST
	XP JOBPDL,JOBPD1-1	;FIRST LOC.-1
	XP JOBPD3,JOBPDL+3	;PLACE FOR STORING FIRST PUSH IN A UUO ROUTINE
				; (THIRD ENTRY)USED BY RUN AND GETSEG UUOS
UJOB BLT,45,3			;3 WORDS USED BY LINKING LOADER TO MOVE
				; PROGRAM DOWN BEFORE CALLING EXIT.
				;OK TO USE EXEC PD LIST BEFORE EXECUTING UUO
	IFN	LC,<LOC=71>	;(LEVEL D)
	IFE	LC,<LOC=72>	;(LEVEL C)
				;LAST LOC+1 OF PD LIST. IE THIS LOC CLOBBERED
				; ON PUSH DOWN LIST OVERFLOW DURING EXEC UUO
				; WHICH IS OK SINCE CONTENTS ARE COPIED
				; INTO THE MONITOR WHEN JOB RUNS
	IFN	VM,<LOC=JOBPDL+PDLLEN>
	XP JOBLPD,LOC-1		;LAST LOC OF PDL AREA
				; FROM JOBPD1+1 THRUJOB LPD ARE RESTORED FROM
				; EXTENDED PDL WHEN IT IS BEING RETURNED
	XP MJOBPD,JOBPDL-LOC	;MINUS LENGTH OF PUSHDOWN LIST
	XP MJOBP1,MJOBPD+1	;-LENGTH+1
	XP MAXPDL,-MJOBPD	;MAX. LENGTH OF ALL PD LISTS IN MONITOR
				; NULPDL AND ERRPDL ARE SHORTER
	XP MMXPDL,MJOBPD	;MINUS MAX. LENGTH OF ALL PD LISTS IN MONITOR
	IFN	VM,<LOC=LOC+1>
	XP JOBPRT,LOC		;FIRST LOC PROTECTED BY BEING COPIED INTO MONITOR
	XP JOBPR1,JOBPRT+1	;FIRST LOC+1
				;
				;HERE DOWN PROTECTED
				;
IFN	LC,<IFE VM,<	;(5-SERIES ONLY)
M JOBEPL,LOC,1		;LH=UNUSED AND IS ASSUMED ZERO.
			; COULD BE USED FOR SOMETHING WITH SMALL CODE CHANGE
			;RH=0 OR EXEC CORE ADDRESS OF EXTENDED EXEC PD LIST
			; IF PD LIST IN JOB DATA AREA OVERFLOWED ON EXEC UUO
			; 0 MEANS JOB DOES NOT HAVE EXEC CORE.  EXEC CORE
			; IS RETURNED ON UUO RETURN TO USER, CALL RESET,AND
			; CORE 0 COMMAND AND KJOB UUO.
>>			;(END LEVEL D ONLY)
M JOBHCU,LOC,1		;HIGHEST USER IO CHANNEL IN USE
			;ONLY JOBJDA...JOBJDA+C(JOBHCU) ARE COPIED INTO
			;MONITOR WHEN JOB IS RUN. 0 MEANS NONE OR
			;CHAN. 0 IN USE, NEG LH MEANS SAVEGET HAS ACTIVE IO(RH STILL
			; HIGHEST CHAN IN USE)
M JOBPC,LOC,1		;JOB PC WHEN JOB INACTIVE
IFN	VM,<
M JBMDDT,LOC,1		;PMP COPY OF .JBDDT
>
	MJDA==LOC
UJOB DDT,74,1		;LH UNUSED,RH=STARTING ADDRESS OF USER DDT
	IFE VM,<MJDA==LOC>
	JDA==LOC
				;
				;HERE DOWN "SAVED"
				;
	XP JOBSAV,JOBDDT-1	;FIRST LOC.-1 WRITTEN BY SAVE COMMAND
M JOBJDA,MJDA,20	;JOB DEVICE ASSIGNMENT TABLE
			;LH=UUOS DONE SO FAR, RH=ADR. OF DEVICE DATA BLOCK IN MONITOR
	XP JOBSV,JDA+1		;FIRST LOC READ INTO OR WRITTEN FROM BY NEW SAVGET
				; WHICH ZERO COMPRESSES ON ALL DEVICES
				; THIS LOC CONTAINS THE FIRST IOWD WITH NO. OF DATA
				; WORDS IN LH, FIRST ADR-1 IN RH
				; MONITOR SUPPRESSES STORING IN RH OF JOBHRL DURING
				; SAVEGET(USRCHU NEG.)
				; SO THAT OLD ZERO COMPRESSED DECTAPE FILES WILL
				; ALWAYS FIT IN CORE (JOBHRL USED TO BE 0).  THIS
				; CHECK COULD HAVE BEEN ELIMINATED, IF JOBSV HAD BEEN
				; DEFINED AS JOBHRL+1(JOBSYM), HOWEVER JOBSYM ALMOST
				; ALWAYS HAS NON-ZERO DATA, SO SAVEGET WOULD HAVE TO
				; BE WRITTEN TO EXPAND DOWN OR UP RATHER THAN JUST UP
	XP JOBSVM,JOBSV-1	;FIRST LOC-1, USED FOR SETTING UP DUMP MODE
				; COMMAND LIST FOR SAVGET
	XP JOBSV3,JOBSV+3	;LOC WHICH SHOULD NOT CONTAIN 0 UNLESS FILE WAS
				; CREATED BY CONVERTING OLD FORMAT TO NEW FORMAT
				; DECTAPE USING CONVRT PROGRAM
	XP JOBNSV,JOBSV+14	;JOBSV+4...JOBSV+7--USED TO WRITE NULL HIGH AND
				; LOW FILE ON MTA ONLY WHEN SEGMENT HAS NOTHING
				; TO BE WRITTEN.  THUS MTA ALWAYS WRITES 2 FILES.
	XP JOBSVD,JOBSVM-JOBSAV	;NO. OF LOC. TO MOVE DOWN OLD (NON-COMPRESSED DSK)
				; SAVE FILES WHICH WERE ALWAYS WRITTEN FROM JOBSAV+1
	XP JOBSDP,JOBSV-JOBSAV	;NO. OF LOCATIONS TO MOVE DOWN CONVRTED SAVE FILES
				; WHICH ARE ALWAYS WRITTEN FROM JOBSAV+1 AND HAVE
				; AN IOWD ADDED ON FRONT TO LOOK LIKE A COMPRESSED FILE
IFN FTCN6,<
UJOB CN6,106,1			;6 TEMP LOCATIONS USED BY CHAIN
>
	IFN	VM,<
	XP JOBEXM,JDA+16	;SEE DESCRIPTION FURTHER DOWN
	>
	XP JOBSDD,JDA+17	;PLACE TO SAVE JOBDDT ON SAVE SO ZERO EXPANSION ON GET
				;ALWAYS MOVES UP
	XP JOBSD1,JOBSDD-1	;FOR COMPUTING IOWD'S
	XP JOBJMH,JOBHCU-JOBJDA	;JOBHCU-JOBJDA
				;USED BY ANYACT ROUT. IN CORE1
UJOB PFI,114,1		;HIGHEST LOC. IN JOB DATA AREA PROTECTED FROM IO
	IFN <.JBPFI-JDA-17>,<
	PRINTX ? JOBJDA WRONG>
	IFE LC,<
	XP MJOBCK,JOBDAC-JOBPFI	;AREA CHECKSUMMED DURING SWAPPING
	>
				;
				;BEFORE HERE PROTECTED
				;
UJOB HRL,115,1		;LH IS FIRST FREE LOC IN HIGH SEG RELATIVE TO ITS ORIGIN
			;ANALOGOUS TO LH OF JOBSA FOR LOW SEG
			; (IN OTHER WORDS LH=LENGTH TO SAVE ON SAVE COMMAND)
			; SET BY LOADER
			;RH ANALOGOUS TO JOBREL, IE HIGHEST LEGAL
			;USER ADDRESS IN HIGH SEG. SET BY MONITOR EVERY TIME
			;USER RUNS.  IF JOBHRL=0, JOB DOES NOT HAVE A HIGH SEG
			;USER PROGRAMS SHOULD BE WRITTEN SO THAT
			;THEY CAN BE ONE OR TWO SEGMENT PROGRAMS. JOBHRL
			;CAN BE TESTED FOR NON-ZERO TO SEE IF HIGH SEG EXISTS
UJOB SYM,116,1		;POINTER TO LOADER AND DDT SYMBOL TABLE POINTER
UJOB USY,117,1		;POINTER TO UNDEFINED SYMBOL TABLE
			;SET BY LOADER, NOT YET USED BY DDT
UJOB SA,120,1		;LH=INITIAL FIRST FREE LOCATION IN LOW SEG (SET BY LOADER)
			;RH=STARTING ADDRESS OF USER PROGRAM
UJOB FF,121,1		;(SET FROM HIGH DATA AREA ON GET IF NO LOW FILE)
			;CURRENT FIRST FREE LOCATION IN LOW SEG
			; USED AND UPDATED BY MONITOR TO ASSIGN I/O BUFFERS IN TOP
			; OF USER AREA. USER MAY CHANGE CONTENTS IN ORDER TO AFFECT
			; PLACEMENT OF BUFFERS BY MONITOR
M JOBS41,122,1		;C(JOB41) SAVED HERE ON SAVE COMMAND
			;RESTORE FROM HERE ON GET
U .JBPFH,123,1		;LH=LENGTH OF PAGE FAULT HANDLER
			;RH=START OF PAGE FAULT HANDLER
	IFE	VM,<
	XP JOBEXM,.JBPFH	;LAST LOC EXAMINED OR DEPOSITED USING 
				;D OR E COMMANDS
				;LH=-1 IF LAST COM WAS AN E. 0 IF IT WAS A D
	>
UJOB REN,124,1		;REENTER ADDRESS FOR REENTER COMMAND
			; (SET FROM HIGH DATA AREA ON GET IF NO LOW FILE)
UJOB APR,125,1		;PLACE TO TRAP TO IN USER AREA ON APR TRAP
			;ENABLED BY APRENB UUO
UJOB CNI,126,1		;APR IS CONIED INTO C(JOBCNI) ON APR TRAP
UJOB TPC,127,1		;PC IS STORED HERE ON USER APR TRAP
UJOB OPC,130,1		;OLD PC IS STORED HERE ON START,DDT,REENTER,
			;STARTC COMMANDS
UJOB CHN,131,1		;LH=FIRST LOC AFTER FIRST FORTRAN 4 LOADED PROGRAM
			;RH=FIRST LOC AFTER FIRST FORTRAN 4 BLOCK DATA
			;TO BE USED FOR JOB CHAINING
U .JBOVL,131,1		;(SAME AS .JBCHN)
			;LH=NEGATIVE COUNT OF ROOT SEGMENT OVERLAYS
			;RH=ADDRESS OF ROOT SEGMENT POINTER
M JOBFDV,LOC,1		;DEV. DATA BLOCK ADR. FOR FINISH COMMAND
			; ALSO USER START ADR FOR DDT, REENTER, START
			; IF TYPED WHILE JOB WAS IN MONITOR.  UUO EXIT
			; USES TO JUMP TO USER.
UJOB COR,133,1		;(SET FROM HIGH DATA AREA ON GET IF NO LOW FILE)
			;LH=HIGHEST LOCATION LOADED(LOW SEG) WITH PROG OR DATA
			; SET BY LOADER(BLOCK STATEMENTS DO NOT COUNT HERE)
			; SAVE WILL NOT WRITE THE LOW SEG OF A TWO SEG PROG,
			; IF LH IS 137 OR LESS AND GET WILL NOT READ
			;RH=SIZE OF CORE FOR LOW SEG ON RUN,SAVE,GET COM.
			;(SET FROM HIGH DATA AREA ON GET IF NO LOW FILE)
			;SET BY SAVE TO CORE ASSIGNMENT TO BE USED ON GET
			; (UNLESS USER TYPES A LARGER ARG TO GET)
			; TO FIRST FREE LOC-1(OR TOP IF USER DDT) OR
			; TO USER'S CORE ARG TO SAVE IF BIGGER
			;GET ALWAYS SETS RH TO INITIAL CORE ASSIGNMENT SO THAT PROG
			; CAN RESTORE CORE TO ORIGINAL ASSIGNMENT ON RESTARTING
UJOB INT,134,1		;RH=LOC OF DATA BLOCK FOR ERROR INTERCEPTING
U .JBOPS,135,1		;RESERVED TO OBJECT TIME SYSTEMS
U .JBCST,136,1		;RESERVED TO CUSTOMERS
UJOB VER,137,1		;CONTAINS VERSION NO.(OCTAL) OF PROGRAM BEING RUN
			;GENERAL FORMAT IS:
			;  BITS 0-2	WHO LAST EDITTED THIS:
			;		0=DIGITAL DEVELOPMENT GROUP
			;		1=OTHER DIGITAL
			;		2-4=RESERVED TO CUSTOMER
			;		5-7=RESERVED TO HIS USERS
			;	3-11	DIGITAL MAJOR VERSION NUMBER
			;	12-17	DIGITAL MINOR VERSION NUMBER
			;	18-35	EDIT NUMBER
			;GET LOADS IT FROM THE SAVE FILE.  NEVER CONVERTED
			;TO DECIMAL BY MAN OR MACHINE. E 137 WILL PRINT VERSION NO.
			;SET BY LOC 137 IN CUSP SOURCE
			;(SET FROM HIGH DATA AREA ON GET IF NO LOW FILE)
UJOB DA,140		;FIRST LOC NOT USED BY JOB DATA AREA
	XP MJOBDA,-JOBDA	;-LENGTH OF JOB DATA AREA
	SUBTTL	HIGH SEGMENT DATA AREA

; LOCATIONS ARE RELATIVE TO BEGINNING OF HIGH SEGMENT, SINCE
; THE HIGH SEGMENT CAN BEGIN AT 400000 OR HIGHER
; THIS AREA IS USED TO INITIALIZE CERTAIN LOCATIONS IN THE LOW SEG JOB DATA AREA
; IN CASE THER WAS NO LOW SEG SAVED.(LH JOBCOR 137 OR LESS AS SET BY LOADER)
; LOW SEG JOB DATA AREA LOCATIONS SET FROM HIGH SEG DATA AREA ARE INDICATED ABOVE BY:
;(SET FROM HIGH SEG IF NEC)
; THESE LOCATIONS ARE SET FROM LOW JOB DATA AREA ONLY IF HIGH SEG IS NON-SHARABLE
; AT THE TIME THE SAVE IS PERFORMED (SHRSEG=0 IN JBTSTS)

USJOB HGH,400000	;NORMAL BEGINNING ADDRESS OF HIGH SEGMENT
US .JBHSA,0		;USED TO RESTORE JOBSA
	XP JOBHSA,.JBHSA;
US .JBH41,1		;USED TO RESTORE JOB41
	XP JOBH41,.JBH41;
US .JBHCR,2		;USED TO RESTORE JOBCOR(BOTH HALVES)
	XP JOBHCR,.JBHCR;
US .JBHRN,3		;LH RESTORES LH OF JOBHRL(FIRST REL. FREE LOC. IN HIGH)
	XP JOBHRN,.JBHRN;RH RESTORES JOBREN,LH SET TO 0 FOR FUTURE
USJOB HVR,4		;RESTORE BOTH HALVES OF JOBVER
	XP JOBPOP,4	;HIGHEST LOC TO BE RESTORED(POPPED) BY GET
USJOB HNM,5		;HIGH SEGMENT NAME SO DDT KNOWS ABOUT GETSEGS
USJOB HSM,6		;HIGH SEGMENT SYMBOL TABLE POINTER
US .JBHGA,7		;  BYTE(9) RESERVED
			;  BYTE(9) GET ADDRESS PAGE NUMBER TO START SEGMENT
			;  BYTE (18) [FUTURE] RELATIVE ADDRESS OF EXTENSION BLOCK IF NON-ZERO
USJOB HDA,10		;FIRST LOC NOT USED BY HIGH SEG DATA AREA
			;LOADER WILL LOAD FIRST WORD HERE


	IFDEF  UJOBDAT,<PURGE  P,R>	;CLEAN UP USER VERSION SYMBOL TABLE
	IFN  U2,<PURGE  UJOBDAT>	;DITTO
	PURGE  LOC,U2,JDA,MJDA		;CLEAN UP SYMBOL TABLE
	IF2 <PURGE  LC,VM,FTCN6,FTJOB,FTDISK,UNIV,%..UNV>  ;DITTO
	IF2 <PURGE  R,P,P1,FTVM,PDP,PROG>	;DITTO
	IF2 <PURGE  U,US,UJOB,USJOB,M,XP>	;DITTO


	END