; ; 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