                          ;
;	EXECUTIVE TABLES AND DATA AREAS - PART 1
;
;	THE EXEC TABLES EXIST IN TWO PARTS TO
;	FACILITATE PAPER TAPE HANDLING
;
;	VERSION	V007A
;		001
;
;	DISTRIBUTION MEDIA FILE NAME: EXTB1.PAL
;
;	COPYRIGHT 1973,1974 DIGITAL EQUIPMENT CORP. MAYNARD MASS. 
;
;
;	GLOBAL DEFINITIONS
;
	.GLOBL	BACKGD	;BACKGROUND ACTIVE FLAG
	.GLOBL	CTICK	;TIME OUT AND CLOCK SCAN FLAGS
	.GLOBL	COUNT	;TICKS COUNT
	.GLOBL	CTOD	;SAME AS COUNT; CURRENT TICKS COUNT.
	.GLOBL	ERMSGB	;ERROR MESSAGE TASK BUFFER
	.GLOBL	ERMSGE	;END OF ERMSGB
	.GLOBL	HASU	;HIGHEST ADDRESS SYSTEM USES
	.GLOBL	HATU	;HIGHEST SLOT TIMER USE
	.GLOBL	HOUR	;CURRENT TIME (HOUR)
	.GLOBL	ISAD	;BOTTOM WORD OF SYSTEM STACK
	.GLOBL	LAPU	;LOWEST SLOT TASKS USE
	.GLOBL	LEV	;HEAD OF THE LINK LISTS
	.GLOBL	LTDT	;LAST TIME IN TIMER
	.GLOBL	MIN	;CURRENT TIME (MINUTES)
	.GLOBL	NEWSA	;NEW PROGRAM ACTIVE FLAG
	.GLOBL	PAN$	;PANIC DUMP ADDRESS.
	.GLOBL	PRIOR	;PRIORITY CONVERSION TABLE
	.GLOBL	PRWT	;COUNT OF TASKS WAITING FOR PROCESSOR
	.GLOBL	PSTB	;PRIORITY STATUS
	.GLOBL	PTBK	;BACKWARD POINTER LIST
	.GLOBL	PTFW	;FORWARD POINTER LIST
	.GLOBL	PWFLF	;POWER FAILURE FLAG( (COUNT OF FAILURES)
	.GLOBL	QUTM	;QUANTUMS FOR LEVELS 1,2,3,4
	.GLOBL	SEC	;CURRENT TIME (SECONDS)
	.GLOBL	SUTB	;SUSPEND STATUS
	.GLOBL	SYAUA	;SYSTEM,USER ACTIVE FLAG
	.GLOBL	TIC	;TIME IN COUNTER TO NEXT EVENT
	.GLOBL	TSPW	;DELAYED CONSOLE WAIT FLAG
	.GLOBL	UPSTK	;USER STACK AT ENTRY TO EXEC
	.GLOBL	WDTB	;HEADER ADDRESS TABLE
	.GLOBL	WTCHD	;WATCH DOG TIMER POINTER
	.GLOBL	WTTS	;HEAD OF TIMER SLOT WAITING LIST (FREE SLOTS)
;
;	GLOBAL REFERENCES
;
	.GLOBL	CLOCK	;CLOCK SCAN ROUTINE
	.GLOBL	ENDM	;END OF MN@ITOR
	.GLOBL	ROBIN	;ROUND ROBIN SCHEDULER
	.GLOBL	SPARTH	;SPARTA HEADER
                        ;
;	THIS FILE MUST BE ASSEMBLED FOLLOWING THE USER
;	PARAMETER DEFINITIONS AND FOLLOWING THE EXECUTIVE
;	DEFINITIONS.  IT IS FURTHER ASSUMED THAT NO CODE
;	OF ANY KIND IS GENERATED IN THE PREVIOUS FILES
;	AND THAT RELOCATABLE 0 OF THIS MODULE WILL
;	BE FORCED TO ABSOLUTE 0 WITH A "/B:0" LINKER
;	SWITCH.
;
;	SET ORIGIN FOR BASE OF SYSTEM STACK AND FOR
;	EXECUTIVE SCHEDULING TABLES.
;
	.WORD	100		;EXECUTES AN ILLEGAL INSTRUCTION
				;ON JUMPS TO 0
.=.+774
ISAD:	.WORD	0		;SYSTEM STACK
                                            ;
;	SYSTEM SCHEDULING TABLE
;
TABORG=.
	.IFNDF	NO.TIM
	.BYTE	-N+2,-N+2	;POINTERS FORWARD AND BACKWARD
	.BYTE	-N,-N		;
	.BYTE	0,-N		;ONLY POINTER BACK
	.BYTE	0,-N+2		;
	.ENDC
.=TABORG+N
PTFW:	.BYTE	0		;ZERO LOCATION IN FORWARD POINTER TABLE
PTBK:	.BYTE	0		;ZERO LOCATION IN BACK POINTER BYTE TAB
.=TABORG+N+N			;START OF TIMER SLOT SUTB AND PSTB TABL
	.IFNDF	NO.TIM
	.BYTE	0,-N+4		;POINTER TO "CLOCK" EXTENSION
	.BYTE	0,-N+6		;POINTER TO "ROBIN" EXTENSION
	.WORD	CLOCK		;CLOCK ACTIVATES TASKS ON TIME
	.WORD	ROBIN		;L1 TIME SLICE ROUND ROBIN FOR BACKGROU
	.ENDC
.=TABORG+N+N+N
SUTB:	.BYTE 0
PSTB:	.BYTE	0		;PROGRAM STATUS TABLE ZERO WORD
.=SUTB+N			;START OF TIMER SLOT WDTB TABLE
	CYCSEC			;CURRENT DELAY FOR CLOCK TASK
	TIMLV1			;CURRENT DELAY FOR ROUND ROBIN
	CYCSEC			;REPEAT DELAY FOR CLOCK TASK
	TIMLV1			;REPEAT DELAY FOR ROUND ROBIN
.=SUTB+N+N			;SUSPEND STATUS 0=WAITING FOR COMPUTER
WDTB:	.WORD	SPARTH		;NULL TASK HEADER
	.=.+N
                                    ;
;	LEVEL LIST START TABLE
;
LEV:				;LEVEL LIST START TABLE
	.IFNDF	NO.TIM
	.BYTE	-N		;START OF TIMER LIST
	.ENDC
	.IFDF	NO.TIM
	.BYTE	0		;START OF TIMER LIST
	.ENDC
	.BYTE	0		;START OF LEVEL 1 LIST
	.BYTE	0		;START OF LEVEL 2 LIST
	.BYTE	0		;START OF LEVEL 3 LIST
	.BYTE	0		;START OF LEVEL 4 LIST
	.BYTE	0		;START OF TIME OF DAY LIST
                        ;
;	STORED SYSTEM PARAMETERS
;
HASU:	.WORD	ENDM		;HIGHEST ADDRESS SYSTEM USES		
UPSTK:	.WORD	0		;USER STACK SETTING FOR USER PROGRAM RU
SYAUA:	.WORD	0		;HIGH BYTE-=SYSTEM ACTIVE, LOW BYTE=USE
NEWSA:	.WORD	0		;NEW PROGRAM ACTIVE FLAG
	.IFNDF	NO.TIM
HATU:	-N+6			;HIGHEST TIMER SLOT USED
	.ENDC
	.IFDF	NO.TIM
HATU:	.WORD	-N
	.ENDC
LAPU:	.WORD	0		;LOWEST TASK SLOT -SET BY INITIALIZATIO
LTDT:	.WORD	1		;LAST TIME IN TIMER
TIC:	.WORD	1		;TIME IN COUNTER
PRWT:	.WORD	0,0
;ERROR MESSAGE TASK ERROR BUFFER
ERMSGB:	.=.+ERRBSZ+ERRBSZ+ERRBSZ+ERRBSZ+ERRBSZ+ERRBSZ
ERMSGE:
WTCHD:	.WORD	QUTM		;WATCH DOG TIMER POINTER
QUTM:	.BYTE	0		;TIME QUANTUM LEVEL 1
	.BYTE	TIMLV2		;TIME QUANTUM LEVEL 2
	.BYTE	TIMLV3		;TIME QUANTUM LEVEL 3
	.BYTE	0		;TIME QUANTUM LEVEL 4
SEC:	.BYTE 0			;PRESENT TIME OF DAY SECONDS
MIN:	.BYTE 0			;MINUTES
HOUR:	.BYTE 0			;HOURS
WTTS:	.BYTE	0		;WAITING LIST OF TIMER SLOTS
COUNT:	.WORD	0,0		;INCREMENTED 60/SECOND FOR TICKS TRAP
CTOD=COUNT
TSPW:	.BYTE	0	;FLAG SET TO BACKGROUND TASK #
				;  ON A CONSOLE WAIT.
BACKGD:	.BYTE	0		;NUMBER OF BACKGROUND TASK 0=NONE	
PWFLF:	.BYTE	0		;POWER FAIL MESSAGE REQUEST FLAG
	.BYTE	0		;ZERO PRIORITY
PRIOR:	.BYTE	40,100,140,200	;PRIORITY CONVERSION
CTICK:	.WORD	0		;TIME OUT,CLOCK FLAGS
                        ;
;	 SYSTEM VECTOR TABLE (SVT)
;
	; THIS TABLE CONTAINS SYSTEM CONSTANTS
	; AND POINTERS TO VARIOUS MAJOR SYSTEM AREAS,
	; ALL NAMES OF SVT ELEMENTS WILL BE
	;  EXTERNALLY DEFINED.
;
;
;	GLOBAL DEFINITIONS
;
	.GLOBL	SVT.	;SYSTEM VECTOR TABLE
	.GLOBL	CSA	;TOP OF CORE
	.GLOBL	BAT	;POINTER TO ASSIGNMENT TABLE
	.GLOBL	DCO	;HEAD OF DDB CHAIN
	.GLOBL	RSA	;BACKGROUND TASK RESTART ADDRESS.
	.GLOBL	DATE	;JULIAN DATE WORD
;
SVT.:
CSA:	.WORD	77470		; LAST ADDRESS IN AVAILABLE CORE
BAT:	.WORD	LAT		; POINTS TO DYNAMIC ASSIGNMENT TABLE
DCO:	.WORD	0		; CHAIN OF INITED DDBS
RSA:	.WORD	0		; RESTART ADDRESS
DATE:	.WORD	0		; DATE IN JULIAN - 70,000
                        ;
;	SCALE MULTIPLIER TABLE FOR 50/60 CYCLE POWER.
;	CONVERTS TIME VALUE TO TICKS IN "CONV" ROUTINE
;
	.GLOBL	CLINF		;CLOCK INFO FOR EMT 41 - #113
;
	.IFDF	NO.TIM
;
CLINF:	.WORD	0		;NO CLOCK
;
	.ENDC
;
	.IFNDF	NO.TIM
;
	.GLOBL	SCALE		;SCALE MULTIPLIER TABLE DEFINITION
;
SCALE:
	.IFEQ	CYCSEC-60.
;
	1			;TICKS
	7534			;MILLISECONDS
	60.			;SECONDS
	3600.			;MINUTES
CLINF:	.WORD	200		;CLOCK INFO FOR EMT 41 - CODE #113
;
	.ENDC
;
	.IFEQ	CYCSEC-50.
;
	1			;TICKS
	6314			;MILLISECONDS
	50.			;SECONDS
	3000.			;MINUTES
CLINF:	.WORD	201		;CLOCK INFO FOR EMT 41 - CODE #113
;
	.ENDC
	.ENDC
                        ;
;
;	LOGICAL ASSIGNMENT TABLE
;
;
;	THIS TABLE IS POINTED TO BY BAT IN THE SVT.
;
;	ITS SIZE (IN WORDS) IS DEFINED BY LATSZ.
;
;
;
	.IFNDF	LATSZ
LATSZ=12.			;DEFAULT SIZE = 4 SLOTS
	.ENDC
;
LAT:	.WORD	LATEN		;PTR TO END OF TABLE
	.WORD	0		;FIRST ENTRY IS 0 (END OF LIST)
	.=.+LATSZ+LATSZ-2	;AREA FOR TABLE
LATEN:	.WORD	0		;END OF TABLE
                        ;
;	ADDRESSES OF CLOCK AND KEYBOARD STATUS REGISTERS
;
;	THIS TABLE IS USED BY THE CONSOLE AND NON-CONSOLE DRIVERS TO
;	ACCESS THE DEVICE REGISTERS AND IS REFERENCED BY LABEL TKI.CS.
;
;	POWER FAIL AND SYSTEM INITIALIZE USE IT TO ENABLE INTERRUPTS ON
;	THE CLOCK AND KEYBOARDS
;
	.IFNDF	TK.NOU
TK.NOU=0		;DEFAULT # OF TT UNITS =0
	.ENDC
	.GLOBL	TKI.CS	;ADDRESS OF LIST OF KB&TT INPUT STATUS REGISTER
	.GLOBL	TKO.CS	;ADDRESS OF LIST OF KB&TT OUTPUT STATUS REGISTE
;
	.WORD	177546		;CLOCK STATUS REGISTER
	.WORD	177560		;CONSOLE GOES HERE
TKI.CS:				;NON CONSOLE UNITS 0-N GO HERE
	.IFNDF	TTCS
TTCS=176500
	.ENDC
	.IFGE	TK.NOU-1
	.WORD	TTCS
	.IFGE	TK.NOU-2
	.WORD	TTCS+10
	.IFGE	TK.NOU-3
	.WORD	TTCS+20
	.IFGE	TK.NOU-4
	.WORD	TTCS+30
	.IFGE	TK.NOU-5
	.WORD	TTCS+40
	.IFGE	TK.NOU-6
	.WORD	TTCS+50
	.IFGE	TK.NOU-7
	.WORD	TTCS+60
	.IFGE	TK.NOU-8.
	.WORD	TTCS+70
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.WORD	0		;END OF TABLE.
                        ;
;	ADDRESSES OF TELEPRINTER STATUS REGISTERS
;
	.WORD	177564		;CONSOLE
TKO.CS:				;NON-CONSOLE UNITS 0-N GO HERE.
	.IFGE	TK.NOU-1
	.WORD	TTCS+4
	.IFGE	TK.NOU-2
	.WORD	TTCS+14
	.IFGE	TK.NOU-3
	.WORD	TTCS+24
	.IFGE	TK.NOU-4
	.WORD	TTCS+34
	.IFGE	TK.NOU-5
	.WORD	TTCS+44
	.IFGE	TK.NOU-6
	.WORD	TTCS+54
	.IFGE	TK.NOU-7
	.WORD	TTCS+64
	.IFGE	TK.NOU-8.
	.WORD	TTCS+74
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
	.ENDC
                                               ;
;	STORAGE AREA FOR POWER DOWN SEQUENCE.
;
	.GLOBL	PF.S	;POWERFAIL SAVE AREA.
	.GLOBL	PF.SA	;POWERFAIL SAVE AREA.
	.WORD	0		;EXTRA WORD FOR REG RESTORE CALL.
PF.SA:	.=.+14			;STORE FOR R0-R5
PF.S:	.=.+2			;STORE FOR R6
;*-;	.END
;
;	DATA AREAS FOR UDC DRIVER.
;
	.GLOBL	UD.CHN	;UDC-NUMBER OF CHANNELS
	.IFNDF	UD.CHN
UD.CHN=0
	.ENDC
	.IFNE	UD.CHN
	.GLOBL	UD.NIM	;UDC-NUMBER OF INTERRUPTING MODULES.
	.IFNDF	UD.NIM
UD.NIM=0
	.ENDC
	.GLOBL	UDNIM2	;UDC-UD.NIM*2
UDNIM2=UD.NIM+UD.NIM
	.GLOBL	UD.GEN	;UDC-GENERIC CODES TABLE
	.GLOBL	UD.PRV	;UDC-PREVIOUS STATUS TABLE
UD.PRV:	.=.+UD.CHN+UD.CHN
UD.GEN:	.=.+UD.CHN
	.EVEN
	.GLOBL	UD.COS	;UDC-CHANGE OF STATE TABLE
	.GLOBL	UD.IMD	;UDC-INT MODULE DATA
UD.COS:	.=.+UD.NIM+UD.NIM
UD.IMD:	.=.+UD.NIM
	.EVEN
	.ENDC
                        ;
;	SET DUMMIES FOR AD, AF
;
	.GLOBL	AD.CHN	;NUMBER OF AD01 CHANNELS
	.IFNDF	AD.CHN
AD.CHN=0
	.ENDC
	.GLOBL	AD.PRI	;ALTERNATE PRIORITY FOR AD01
	.IFNDF	AD.PRI
AD.PRI=240
	.ENDC
	.GLOBL	AF.CHN
	.IFNDF	AF.CHN
AF.CHN=0			;NUMBER OF CHANNELS IN AFC-11
	.ENDC
	.IFNDF	DC.DSC
DC.DSC=0			;RC11 DISK
	.ENDC
	.IFNDF	DF.DSC
DF.DSC=0			;RF11 DISK
	.ENDC
	.IFNDF	DK.DSC
DK.DSC=0			;RK11 DISK - MAX VALUE OF 8 UNITS
	.ENDC
	.IFNDF	DT.DSC
DT.DSC=0			;DECTAPE - MAX VALUE OF 8 UNITS
	.ENDC
	.IFNDF	MT.DSC
MT.DSC=0			;MAGTAPE - MAX VALUE OF 8 UNITS
	.ENDC
	.IFNDF	CT.DSC
CT.DSC=0			;TA11 - CASSETTE
	.ENDC
;
;	DEFAULT LINE PRINTER WIDTH
;
	.GLOBL	PRSIZE	;COLUMN WIDTH OF LINE PRINTER.
	.IFNDF	PRSIZE
PRSIZE=80.
	.ENDC
                        ;
;	DEVICE BUFFERS
;
	.GLOBL	KBBUF	;ADDRESS OF KB KEYBOARD EXEC BUFFEP.
	.GLOBL	LPBUF	;ADDRESS OF LP BUFFER.
	.GLOBL	PPBUF	;ADDRESS OF PP BUFFER.
	.GLOBL	PRBUF	;ADDRESS OF PR BUFFER.
	.GLOBL	TPBUF	;ADDRESS OF KB OUTPUT EXEC BUFFER.
;
;	SET DUMMY BUFF SIZES FOR KB,PR,PP,LP
;
	.GLOBL	KBFSZ	;KB&TT KEYBOARD EXEC BUFFER SIZE.
	.IFNDF	KBFSZ
KBFSZ=0
	.ENDC
	.GLOBL	TPSZ	;SIZE (BYTES) OF KB&TT OUTPUT EXEC BUFFER.
	.IFNDF	TPSZ
TPSZ=0
	.ENDC
	.GLOBL	PRSZ	;SIZE(BYTES) OF PR EXEC. BUFFER.
	.IFNDF	PRSZ
PRSZ=0
	.ENDC
	.GLOBL	PPSZ	;SIZE (BYTES) OF PP EXEC BUFFER.
	.IFNDF	PPSZ
PPSZ=0
	.ENDC
	.GLOBL	LPSZ	;SIZE (BYTES) OF LP EXEC BUFFER.
	.IFNDF	LPSZ
LPSZ=0
	.ENDC
	.EOT
                                                                                                                                           