; UPDATE 6/30/72 ROS2.SYS ; UPDATE 6/27/72 ROS2.SYS ; UPDATE 6/22/72 ROS2.SYS ; UPDATE 6/21/72 ROS2.SYS ; UPDATE 5/5/72 ROS2.SYS ; UPDATE 5/2/72 ; ROS2.SYS ; UPDATE 4/29/72 ROS2.SYS ; UPDATE 4/21/72 ROS2.SYS ; UPDATE 4/17/72 ROS2.SYS ; UPDATE 4/14/72 ROS2.SYS ; UPDATE 4/13/72 ROS2.SYS ; UPDATE 4/12/72 ROS2.SYS ; ; UPDATE 27 27 JUN 1972 RETURN TO TSTACK CLEAR ; UPDATE 26 22 JUN 1972 FIX FIXES ; UPDATE 25 21 JUN 1972 FIX OVERLAY DISK FILE ; UPDATE 24 1 MAY 1972 CHANGE QIPL FOR ROSII ; UPDATE 23 25 APR 1972 FIX ADDRESS OF IFD TABLE ; UPDATE 22 21 APR 1972 FIX DSPT CHECK OFF V22 ; UPDATE 21 14 APR 1972 FIX DISCIO LIST OFF V21 ; UPDATE 20 12 APR 1972 ADD ROS II - QIPL'.CSECT), TASK ; UPDATE 6/27/72 TTYIO.P24 ; UPDATE 6/22/72 TTYIO.P23 ; UPDATE 3/10/72 TTYIO.P22 ; UPDATE 3/3/72 TTYIO.P21 ; UPDATE 2/17/72 TTYIO.P20 ; UPDATE 2/14/72 TTYIO.P19 ; UPDATE 1/11/72 TTYIO.P18 ; UPDATE 12/15/71 TTYIO.P17 ; UPDATE 12/13/71 TTYIO.P16 ; UPDATE 12/10/71 TTYIO.P15 ; UPDATE 12/7/71 TTYIO.P14 ; UPDATE 12/3/71  .TITLE PUSHR ;*********************************************************************** ; * ; P U S H R * ; * ; PROGRAM IDENTIFICATION. PUSHR - PUSH REGISTERS SUBROUTINE; * ; CATALOG NUMBER * ; UPDATE 4/10/72 ROS2.SYS ; UPDATE 4/10/72 ROS2.SYS ; UPDATE 4/5/72 ROS2.SYS ; UPDATE 3/31/72 ROS2.SYS ; UPDATE 3/23/72 ROS2.SYS ; UPDATE 3/17/72 ROS2.SYS ; UPDATE 2/24/72 ROS2.SYS ; UPDATE 2/16/72 ROS2.SYS ; UPDATE 1/12/72 ROS2.SYS ; UPDATE 1/11/72 ROS2.SYS ; STANDARD REGISTER DEFINITIONS R0 = %0 R1 = %1 R2 = TABLES ; DISK FILE & CLEAN UP TASK TABLES. OFF V20 ; UPDATE 19 13 MAR 1972 ABORT, FRTSK OFF V19 ; UPDATE 18 8 MAR 1972 QUEU, QSVE, EXIT, FTSK OFF V18 ; UPDATE 17 15 FEB 1972 QTAB,EXIT,ABRT,FTSK,QSAVE OFF V17 ; UPDATE 16 19 JAN 1972 QTAB,QUEU,ABRT,FTSK,UNSP,QIPL OFF V16 ; UPDATE 15 18 JAN 1972 QUEUE OFF V15 ; UPDATE 1 TTYIO.P13 ; UPDATE 12/1/71 TTYIO.P12 ; UPDATE 11/23/71 TTYIO.P11 ; UPDATE 11/16/71 TTYIO.P10 ; UPDATE 11/10/71 TTYIO.P09 ; UPDATE 11/8/71 TTYIO.P08 ; UPDATE 11/3/71 TTYIO.P07 ; UPDATE 10/31/71 TTYIO.P06 ; UPDATE 10/26/71 TTYIO.P05 ; UPDATE 10/14/71 TTYIO.P04 ; UPDATE 10/7/71 TTYIO.P03 ; UPDATE 9/22/71 TTYIO.P02 .I * ; PURPOSE. SUBROUTINE PUSHR PUSHES R0-R5 ONTO THE CURRENT STACK * ; * ; USAGE. THE ASSEMBLER LINKAGE TO SUBROUTINE PUSHR IS: * ; * ; JSR R5,PUSHR * ; * ;******************************* %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 PS = 177776 ; $DEBUG = 1 ; ROS DEBUG SWITCH $CORAL = 0 ; CORE ALLOCATION ; =0 SOFTWARE ; =1 HARDWARE $SAVE = 104400 ; USE TRAP INSTR. TO CALL SAVE ; ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 10. ; NO. OF SOFTW4 17 DEC 1971 ABORT,DSPTCH,FRETSK,QSVE,EXIT,UNSP,QIPL OFF 14 ; UPDATE 13 14 DEC 1971 ABORT,QIPL OFF .V13 ; UPDATE 12 3 DEC 1971 QTAB,QUEU,QSVE,EXIT,ABRT,FTSK,UNSP,DSPT,QIPL V12 ; UPDATE 11 12 NOV 1971 EXIT,QIPL,QUEUE OFF QUEUE.V11 ; UPDATE 10 10 NOV 1971 EXIT,QIPL OFF QUEUE.V10 ; UPDATE 9 8 NOV 1971 DQUEU,QUEU,QSVE,EXIT,ABRT,UNSP OFF QUEUE.V9A ; UPDATE 8 8 NOV 197FG NTTYS ;ASSEMBLE TTYIO IF NTTYS .GT. 0 .TITLE TTYIO ;*********************************************************************** ; * ; T T Y O U T * ; * ; PROGRAM IDENTIFICATION. TTYOUT - TELETYPE OUTPUT SUBROUTINE: * ; CATALOG NUMBER **************************************** .DEF PUSHR ; R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 ; * PUSHR = . MOV R4,-(SP) ;PUSH R5, R4, R3, R2, R1, AND R0 ONTO MOV R3,-(SP) ;THE CURRENT STACK IN THAT ORDER MOV R2,-(SP) MOV R1,-(SP) MOV R0,-ARE PRIORITY LEVELS PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH = 1 ; BATCH OPTION .IFLE NPRIOR ; XXXXXXXX ;NPRIOR MUST BE GREATER THAN ZERO .ENDC MXTASK = 20 ; MAX # OF CORE TASKS IN SYSTEM NLTASK = 1 ; LARGEST TASK # OF TASKS LOADED WITH SYSTEM ;NOTE: IF OVERLAYS ARE USED, THEN THE ;FIRST OVERLAY1 QUEUE,QSVE,SUSPN OFF QUEUE.V8A ; UPDATE 7 5 NOV 1971 QUEU,QSVE,SUSP,UNSP,DSPT OFF QUEUE.V7A ; UPDATE 6 5 NOV 1971 QUEUE,DSPT,QSVE OFF QUEUE.V6A ; UPDATE 5 4 NOV 1971 DSPT,EXIT,QSVE OFF QUEUE.V5A ; UPDATE 4 3 NOV 1971 QSVE,UNSP,DQUE,DSPT OFF QUEUE.V4A ; UPDATE 3 2 NOV 1971 QUEUE,ABRT,DQUE,UNSPND,DACT,QSVE OFF .V3A ; UPDATE 2 27 OCT 1971 QUEUE,DQUEU, * ; * ; PURPOSE. SUBROUTINE TTYOUT PROCESSES TELETYPE OUTPUT REQUESTS.* ; IT PROVIDES CONCURRENT OUTPUT TO MULTIPLE TELETYPE DEVICES. * ; TWO VERSIONS OF THE SUBROUTINE ARE INCLUDED; A "CORE ONLY" AND * ; A "DISK BUFFERED" VERSION. THE NUMBER OF TELETYPE DEVICES AND * ; SUBROUTINE VERSION MAY BE SPECIFIED AS CONDITIONAL ASSEMBLY * ; PARAMETERS DURING SYSTEM GENERATION. TELETYPE(SP) JMP (R5) ;RETURN .END  .TITLE POPR ;*********************************************************************** ; * ; P O P R * ; * ; PROGRAM IDENTIFICATION. POPR - POP REGISTERS SUBROUTINE; * ; CATALOG NUMBER * ; SUSPND,DSPTCH,DACT - OFF QUEUE.V2A ; UPDATE 1 22 OCT 1971 QUEUE,QSAVE,DQUEU - OFF QUEUE.V1A .TITLE QUEUE ; THIS MODULE CONTAINS ALL THE QUEUEING ; ROUTINES. IT IS MADE UP OF THE ; FOLLOWING ELEMENTS: ; QTABLE ; QUEUE ; QSAVE & QSAVEI ; SUSPND  MOTORS ARE * ; TURNED OFF WHEN THEIR RESPECTIVE QUEUES BECOME EMPTY. SHOULD * ; A DETECTABLE TELETYPE MALFUNCTION OCCUR AND AN ALTERNATE * ; TELETYPE DEVICE IS DEFINED, OUTPUT IS ROUTED TO THE ALTERNATE * ; DEVICE. * ; * ; USAGE. THE ASSEMBLER LINKAGE TO SUBROUTINE * ; TTYOUT IS:  * ; PURPOSE. SUBROUTINE POPR POPS R0-R5 OFF THE CURRENT STACK * ; * ; USAGE. THE ASSEMBER LINKAGE TO SUBROUTINE POPR IS: * ; * ; JSR R5,POPR * ; * ;******************************** ; EXIT ; FRETSK ; ABORT ; DSPTCH ; UNSPND ; QIPL .PAGE ;*********************************************************************** ; * ; Q U E U E I N G T A B L E S * * ; * ; MOV #LIST,-(SP) ;PUSH LIST ADDR ONTO STACK * ; EMT TTYOUT ;CALL TTYOUT * ; * ; THE FORTRAN EQUIVALENT CALL IS: * ; * ; CALL TTYOUT (LIST)  TASK NUMBER IS MXTASK+1 OVTMIN = MXTASK+1 ;FIRST OVERLAY TASK NUMBER OVRLAY = 1 ; SYSTEM OVERLAY OPTION ;0 = NO OVERLAY, 1 = OVERLAY .IFNZ OVRLAY ; MAXOVR = 140 ; MAX # OF OVERLAY TASKS IN SYSTEM .ENDC ;(NOT USED IF OVRLAY = 0) .IFZ OVRLAY ; MAXOVR = 0 ;SET TO ZERO ONLY IF NO OVERLAYS .ENDC TASMAX = MXTASK*************************************** .DEF POPR ; R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 ; * POPR = . TST (SP)+ MOV (SP)+,R0 ;POP R0, R1, R2, R3, R4, AND R5 OFF MOV (SP)+,R1 ;THE CURRENT STACK IN THAT ORDER MOV (SP)+,R2 MOV (SP)+,R3  ; * ; PROGRAM IDENTIFICATION. QTABLE * ; * ; PURPOSE. THIS DATA PROGRAM CONTAINS ALL TABLES, DATA, AND * ; SYSTEM EQUATE CARDS REQUIRED FOR THE SOFTWARE QUEUEING AND * ; TASK CONTROL SUBROUTINES. EACH PARAMETER IS DEFINED IN THE * ; COMMENTS FIELD.  * ; * ; LIST IS THE ADDRESS OF A TABLE OF I/O INFORMATION * ; ASSOCIATED WITH THE REQUEST * ; * ; * ; PROGRAMMER: 51 * ; DATE: +MAXOVR ;MAXIMUM NUMBER OF TASKS (INCL OVERLAYS .IFLE MXTASK ; XXXXXXXX ;MXTASK MUST BE GREATER THAN ZERO .ENDC .IFL NLTASK ; QTAB XXXXXXXX ;NTASK CANNOT BE NEGATIVE .ENDC .IFG NLTASK-MXTASK ; QTAB XXXXXXXX ;NTASK MUST BE <= MXTASK .ENDC .IFNZ OVRLAY ; ; ! MOV (SP)+,R4 RTS R5 ;RETURN .END " * ; * ; USAGE. EACH TABLE, QUEUE AND DATA ITEM IS DEFINED IN A .DEF * ; ASSEMBLER DIRECTIVE. OTHER PROGRAMS MAY REFER TO THESE * ; ITEMS BY INCLUDING THEM IN A .REF ASSEMBLER DIRECTIVE. THE * ; EQUATE PARAMETERS, HOWEVER, ARE NOT ACCESSIBLE TO OTHER * ; PROGRAMS. * ; # * ; REVISION: * ; * ; G U L F E L E C T R O N I C S Y S T E M S * ; * ;*********************************************************************** ; * ; $STATE SIZE OF DYNAMIC CORE STORAGE IN ROS ; $DYNSZ = 54000 ; RESERVE DYNAMIC CORE POOL .ENDC ; ; THE FOLLOWING IS A LIST OF PRIORITY PROPERTIES ; +1 = TIME SLICE PRIORITY (CORE OR OVERLAY) ; 0 = FIXED OVERLAY TASK (MAY BE CORE) ; -1 = FREE TASKS (CORE OR DYNAMIC OVERLAY) ; PRIP01 = -1 ; PRIORITY PROPERTY LEVEL 1 PRIP02 = -1 ; PRIORITY PROPERTY LEVEL 2 PRIP03 = 1 & * ; PROGRAMMER 55 * ; DATE 07.21.71 * ; REVISION * ; * ; G U L F E L E C T R O N I C S Y S T E M S * ; * ;***********************************************' T T Y I N * ; * ; PROGRAM IDENTIFICATION. TTYIN - TELETYPE INPUT SUBROUTINE: * ; CATALOG NUMBER * ; * ; PURPOSE. SUBROUTINE TTYIN PROCESSES TELETYPE INPUT REQUESTS. * ; IT PROVIDES FOR CONCURRENT INPUT FROM MULTIPLE TELETYPE UNITS. * ; THE IN( ; PRIORITY PROPERTY LEVEL 3 PRIP04 = 1 ; PRIORITY PROPERTY LEVEL 4 PRIP05 = -1 ; PRIORITY PROPERTY LEVEL 5 PRIP06 = -1 ; PRIORITY PROPERTY LEVEL 6 PRIP07 = -1 ; PRIORITY PROPERTY LEVEL 7 PRIP08 = -1 ; PRIORITY PROPERTY LEVEL 8 PRIP09 = -1 ; PRIORITY PROPERTY LEVEL 9 PRIP10 = -1 ; PRIORITY PROPERTY LEVEL 10 PRIP11 = 0 ; ); UPDATE 7/31/72 ROS3.SYS ; UPDATE 7/28/72 ROS3.SYS ; UPDATE 07.21.72 ROS3.SYS ;* ;* G E N E R A L S Y S T E M E Q U A T E S ;* $1145 = 1 ;1 = 11/45 0 = NOT 11/45 $1125 = 0 ;1 = 11/25 0 = NOT 11/25 $1120 = 0 ;1 = 11020 OR LESS (11/05, ETC.) $KT11C = 1 ;1 = KT11C SEGMENTATION ;0 = NO SEGMENTATION $FPP = ************************* ; .PAGE .DEF ACTIVE,TASKS,LEVELS,FIRST,LAST ; QUEU .DEF HEADER,TSTAT,IOSTAT,TPRTY,STACK ; QUEU .DEF PPTAB,$CTASK,$PRIOR ; QTAB .IFNZ OVRLAY ; QTAB .DEF BSIZE,IFD ; QTAB .ENDC QT+PUT STREAM FROM A UNIT IS TERMINATED WHEN THE END OF * ; MESSAGE CHARACTER (EOMCH) IS DEPRESSED. THE TELETYPE WILL * ; CARRIAGE RETURN AND LINE FEED WHEN THE END OF LINE CHARACTER * ; (EOLCH) IS DEPRESSED. NEITHER OF THESE CHARACTERS IS INCLUDED * ; IN THE DATA BUFFER CHARACTER COUNT. THE NUMBER OF TELETYPE * ; UNITS AND THE CHARACTERS USED FOR EOMCH AND EOLCH ARE SPECIFIED* ; DURING SYSTEM GENERATION. THE ROUTINE ALLOWS THE OPERATOR TO * ; ,PRIORITY PROPERTY LEVEL 11 PRIP12 = 1 ; PRIORITY PROPERTY LEVEL 12 PRIP13 = -1 ; PRIORITY PROPERTY LEVEL 13 PRIP14 = -1 ; PRIORITY PROPERTY LEVEL 14 PRIP15 = -1 ; PRIORITY PROPERTY LEVEL 15 PRIP16 = 0 ; PRIORITY PROPERTY LEVEL 16 .IFNZ OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX TABLES AND PARAMETERS CURRENTLY CODED XXXXXXXX FOR - 0 ;1 = FLOATING POINT PROCESSOR IS IN SYSTEM .IFZ $1125!$1145 .IFNZ $KT11C!$FPP XXXXXXXX .ENDC .ENDC $RASM = 1 ;1 = ASSEMBLER IS IN SYSTEM .IFG $KT11C-1 XXXXXXXX .ENDC $DELAY = 2 ;INDICATES TYPE OF MEMORY AND IS USED ;IN SOME DELAY LOOPS ;1 = 1.2 US CORE ;2 = 850.AB ; ; $CTASK AND $PRIOR CONTAIN THE TASK NUMBER AND PRIOITY LEVEL OF THE ; CURRENTLY ACTIVE TASK (WHOSE PROGRAM HEADER BEGINS AT THE ADDRESS ; IN ACTIVE).IF NO TASK IS ACTIVE, $CTASK AND $PRIOR WILL CONTAIN THE ; TASK NUMBER AND PRIORITY LEVEL OF THE LAST TASK ACTIVE, IF ANY. ; QUEU $CTASK: .WORD 0 ; CURRENTLY ACTIVE TASK'S NUMBER. QUEU $PRIOR: .WORD 0 ; SAME TASK'S PRIORITY. / DELETE THE LAST CHARACTER INPUT BY DEPRESSING THE RUBOUT KEY; * ; ALSO, HE MAY RESTART INPUT BY DEPRESSING THE MESSAGE RESTART * ; KEY (CONTROL U). * ; * ; USAGE. THE ASSEMBLER LINKAGE TO SUBROUTINE * ; TTYIN IS: * ; *0MAXIMUM OF 16 PRIORITY LEVEL .ENDC ; ; THE FOLLOWING SYSGEN PARAMETERS SPECIFY THE NUMBER OF ; ENTRY'S IN A PRIORITY'S QPART TABLE. IF ZERO, THAT ; PRIORITY WILL NOT BE ALLOWED OVERLAY TASKS. A MAXIMUM ; OF 127 ENTRYS PER QPART WILL BE ALLOWED. ; ****NOTE: BE SURE PRIORITIES GREATER THAN NPRIOR HAVE ; TABLE SIZES OF 0 ; NEQP01 = 10. ; NO. OF ENTRYS QPART LEVEL 1 NEQP02 = 10. ; NO. OF ENTRYS QPART 1 NS CORE ;3 = 11/45 SOLID STATE MEMORY ; STANDARD REGISTER DEFINITIONS R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 .IFNZ $FPP AC0 = %0 ; AC1 = %1 ;FLOATING AC2 = %2 ; POINT AC3 = %3 ; ACCUMULATOR AC4 = %4 ; DEF2 QUEU ACTIVE: .WORD 0 ;CONTAINS PROGRAM HEADER ADDRESS OF THE ; ;CURRENTLY EXECUTING TASK; 0=NONE ACTIV LEVELS: .WORD NPRIOR ;NUMBER OF PRIORITY LEVELS IN SYSTEM ; QUEU STACK: .WORD 0 ; ADDRESS OF SYSTEM STACK POINTER QUEU ; QUEU ; 3 ; MOV #LIST,-(SP) :PUSH I/O LIST ADDRESS ON STACK * ; EMT TTYIN ;CALL TTYIN * ; * ; THE FORTRAN EQUIVALENT CALL IS: * ; * ; CALL TTYIN (LIST) * ; 4LEVEL 2 NEQP03 = 10. ; NO. OF ENTRYS QPART LEVEL 3 NEQP04 = 10. ; NO. OF ENTRYS QPART LEVEL 4 NEQP05 = 10. ; NO. OF ENTRYS QPART LEVEL 5 NEQP06 = 10. ; NO. OF ENTRYS QPART LEVEL 6 NEQP07 = 10. ; NO. OF ENTRYS QPART LEVEL 7 NEQP08 = 10. ; NO. OF ENTRYS QPART LEVEL 8 NEQP09 = 10. ; NO. OF ENTRYS QPART LEVEL 9 NEQP10 = 10. ; NO. OF5INITIONS AC5 = %5 ; .ENDC ; .IFNZ $KT11C $ROSM = 100000 ;ROS MASK FOR SYSTEM TASKS TO USE .ENDC ;TO 'OR' WITH ROS ADDRESSES TO POINT .IFZ $KT11C ; TO USER ASR 4 $ROSM = 0 ; .ENDC PS = 177776 ; $DEBUG = 1 ; ROS DEBUG SWITCH $CORAL = 0 ; CORE ALLOCATION ; =0 SOFTW6 QTAB ; QTAB ; THE TABLES 'PPTAB' (BYTE), 'LAST' (WORD), AND 'FIRST' (WORD) ALL HAVE QTAB ; A MAXIMUM NUMBER OF SYSGENABLE ENTRIES ABOVE WHICH ADDITIONAL CODE QTAB ; MUST BE ADDED BEFORE THEY WILL PROPERLY ASSEMBLY. TO INSURE THIS, QTAB ; THE FOLLOWING CHECK IS PROVIDED. THE NUMBER SUBTRACTED FROM 'NPRIOR' QTAB ; IS THE VALUE ABOVE WHICH NEW CODE MUST BE ADDED. QTAB ; 7 * ; LIST IS THE ADDRESS OF A TABLE OF I/O INFORMATION * ; ASSOCIATED WITH THE REQUEST. * ; * ; * ; PROGRAMMER: 51 * ; DATE: * ; REVISION: G ENTRYS QPART LEVEL 10 NEQP11 = 0. ; NO. OF ENTRYS QPART LEVEL 11 NEQP12 = 0. ; NO. OF ENTRYS QPART LEVEL 12 NEQP13 = 0. ; NO. OF ENTRYS QPART LEVEL 13 NEQP14 = 0. ; NO. OF ENTRYS QPART LEVEL 14 NEQP15 = 0. ; NO. OF ENTRYS QPART LEVEL 15 NEQP16 = 0. ; NO. OF ENTRYS QPART LEVEL 16 ; ; ; THE FOLLOWING ASSIGNS THE START BLOCK IN THE CORE POOL ; FOR A SPECHARE ; =1 HARDWARE ; ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 10. ; NO. OF SOFTWARE PRIORITY LEVELS PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH = 1 ; BATCH OPTION .IFLE NPRIOR ; XXXXXXXX ;NPRIOR MUST BE GREATER THAN ZERO .ENDC MXTASK = 20 ; MAX # OF CORE TASKS IN SYSTEM NLTASK = 1 ; LAE QTAB .IFG NPRIOR-16. ; CURRENT MAXIMUM NUMBER OF PRIORITIES QTAB XXXXXX QTAB .ENDC QTAB ; QTAB ; THE FOLLOWING TABLE, PPTAB, IS USED TO CONTAIN THE QTAB ; DESCRIPTORS OF EACH SOFTWARE PRIORITY LEVEL. PPTF * ; * ; G U L F E L E C T R O N I C S Y S T E M S * ; * ;*********************************************************************** ; ; ; EXTERNAL REFERENCES AND PROGRAM ENTRY POINTS ; .REF QUEUE,QSAVEI,UNSPND,RESTOR,QTIME,DQTIME,DSPTCH .REF ACTIVE,IOSTAT,PUSHR,POPR,ERRTYP .REF LOG""DDDDDDD """"""""""""""""""""""""233333333333333333333333333333333333333@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDL"" ""ADDB CrȻz@m9:"i[g4h5hfph5!r@λz%DK5%+5+$Dwwwa ͋,L w:B8 ` 5 &  E >w   f5eU@  [*   & * G &( 8L'4e Q$ BBB"   U@ U e  "U%Gef. U U Bb 0 * B.&0 M &0 & IAB IS A QTAB ; BYTE TABLE AND CONTAINS 1 ENTRY FOR EACH LEVEL. QTAB ; THE PROPERTY OF EACH LEVEL IS: QTAB ; +1 = TIME SLICE PRIORITY (CORE OR OVERLAY) QTAB ; 0 = FIXED TASKS (CORE OR OVERLAY) QTAB ; -1 = FREE TASKS (CORE OR DYNAMIC OVERLAY) QTAB ; QTAB PPTAB = .-1 JMAX,PHYDEV,ALTDEV .IFG NDISCS .REF DISCIO,PFRITE .ENDC .IFNZ OVRLAY .REF RELTSK .ENDC .DEF TTYOUT,TTYIN,TTINIT .DEF PRTINT,KBDINT .DEF TTICSR,TTIDBR ;USED BY POWER FAIL ROUTINE ; .CSECT ; ; ; TTYIO PARAMETERS AND SYMBOLS ; .IFG NTTYS-8. XXXXXX ;CREATE ASSY ERROR IF NTTYS GT 8. .ENDC .IFZ NDISCS ;IF THERE ARE ZEROKIFIC PRIORITY. ; $SB001 = 0. $SB002 = 4. $SB003 = 4. $SB004 = 4. $SB005 = 4. $SB006 = 4. $SB007 = 12. $SB008 = 12. $SB009 = 12. $SB010 = 12. $SB011 = 0. $SB012 = 0. $SB013 = 0. $SB014 = 0. $SB015 = 0. $SB016 = 0. ; $NBLKS = $DYNSZ/2-1/256.+1 ; NO. OF BLOCKS IN DYNAMIC CORE ; ; THE FOLLOWING ASSIGNS STORAGE BLOCK SIZES FOR EACH PRIORITY. ; LRGEST TASK # OF TASKS LOADED WITH SYSTEM ;NOTE: IF OVERLAYS ARE USED, THEN THE ;FIRST OVERLAY TASK NUMBER IS MXTASK+1 OVTMIN = MXTASK+1 ;FIRST OVERLAY TASK NUMBER OVRLAY = 1 ; SYSTEM OVERLAY OPTION ;0 = NO OVERLAY, 1 = OVERLAY .IFNZ OVRLAY ; MAXOVR = 140 ; MAX # OF OVERLAY TASKS IN SYSTEM .ENDC ;(NOT USM ; TAKE CARE OF LEVEL 0 QTAB .BYTE PRIP01,PRIP02 ; ADD MORE CODE IF NPRIOR > 16 QTAB .BYTE PRIP03,PRIP04 ; QTAB .BYTE PRIP05,PRIP06 ; QTAB .BYTE PRIP07,PRIP08 ; QTAB .BYTE PRIP09,PRIP10 ; QTAB .BYTE PRIP11,PRIP12 ; N DISCS IN SYSTEM, ;DISALLOW MESSAGE BUFFERING MSGBUF = 0 .ENDC .IFL 1-MSGBUF XXXXXX ;CREATE ASSY ERROR IF MSGBUF NOT 0 OR 1 .ENDC TFOPTN = 40 ;TIMER MODULE FLAG OPTION TJOPTN = 20 ;TIMER MODULE JSR TO TIMEOUT COMPLETE ;ROUTINE OPTION SAVE = $SAVE ;INSTRUCTION FOR CALL TO SAVE ROUTINE .IFL 1-ARG O A) IF DYNAMIC-CONTAINS THE LARGEST ALLOWABLE BSIZE ; VALUE ; ; B) IF FIXED OR TIME SLICED-CONTAINS ASSIGNED BSIZE ; VALUE FOR THAT PRIORITY ; .IFL PRIP01 $PS001 = $NBLKS-$SB001 .ENDC .IFGE PRIP01 $PS001 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB001-$PS001 XXXXXXXX ; PRI 1 TOO LARGE .ENDC .ENDC .IFL PRIP02 $PS0PED IF OVRLAY = 0) .IFZ OVRLAY ; MAXOVR = 0 ;SET TO ZERO ONLY IF NO OVERLAYS .ENDC TASMAX = MXTASK+MAXOVR ;MAXIMUM NUMBER OF TASKS (INCL OVERLAYS .IFLE MXTASK ; XXXXXXXX ;MXTASK MUST BE GREATER THAN ZERO .ENDC .IFL NLTASK ; QTAB XXXXXXXX ;NTASK CANNOT BE NEGATIVE .ENDC .IFG NLTASK-MXTASQ QTAB .BYTE PRIP13,PRIP14 ; QTAB .BYTE PRIP15,PRIP16 ; QTAB .=PPTAB+1+NPRIOR ; GET RID OF ENTRIES NOT NEEDED QTAB .EVEN QTAB ; QTAB ; ; THE FOLLOWING TABLES (FIRST AND LAST) CONTAIN THE PRIORITY ; QUEUE THREAD INFORMATIONR XXXXXX ;CREATE ASSY ERROR IF ARG NOT 0 OR 1 .ENDC TASKNO = 13.+ARG+ARG ;LOCN OF TASK NO IN A TASK HEADER .IFG MSGBUF ;ASSEM FOLLOWING FOR MSG BUF SYSTEM ; ; ; DEFINITION OF FILE ID'S FOR DISC BUFFERED MESSAGES ; FIDN0 = 20. ;FILE FOR NORMAL MESSAGES, UNIT 0 FIDP0 = 21. ;FILE FOR PRIORITY MESSAGES, UNIT 0 FIDN1 = 22. ;FILE FOR NORMAL MESSAGES, UNIT 1 FIDP1 = 23. S02 = $NBLKS-$SB002 .ENDC .IFGE PRIP02 $PS002 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB002-$PS002 XXXXXXXX ; PRI 2 TOO LARGE .ENDC .ENDC .IFL PRIP03 $PS003 = $NBLKS-$SB003 .ENDC .IFGE PRIP03 $PS003 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB003-$PS003 XXXXXXXX ; PRI 3 TOO LARGE TK ; QTAB XXXXXXXX ;NTASK MUST BE <= MXTASK .ENDC .IFNZ OVRLAY ; ; STATE SIZE OF DYNAMIC CORE STORAGE IN ROS ; $DYNSZ = 54000 ; RESERVE DYNAMIC CORE POOL .ENDC ; ; THE FOLLOWING IS A LIST OF PRIORITY PROPERTIES ; +1 = TIME SLICE PRIORITY (CORE OR OVERLAY) ; 0 = FIXED OVERLAY TASK (MAY BE CORE) ; -1 = FREE TASKS (CORE OR DYNAMICU. WORD 1 CORRESPONDS TO PRIORITY ; LEVEL 1 (HIGHEST PRIORITY); WORD 2 CORRESPONDS TO PRIORITY ; LEVEL 2 (SECOND HIGHEST PRIORITY); ETC. THE FIRST WORD OF EACH ; TABLE IS A DUMMY TO ALLOW FOR THE NONEXISTENT PRIORITY LEVEL 0. ; ; FIRST POINTS TO THE PROGRAM HEADER OF THE FIRST TASK IN THE ; ASSOCIATED PRIORITY LEVEL THREAD; THE FIRST WORD OF THAT ; PROGRAM HEADER POINTS TO THE NEXT TASK IN THE THREAD; AND ; SO ON. A ZERO INDICATES THE END OF THE QUV ;FILE FOR PRIORITY MESSAGES, UNIT 1 FIDN2 = 24. ;FILE FOR NORMAL MESSAGES, UNIT 2 FIDP2 = 25. ;FILE FOR PRIORITY MESSAGES, UNIT 2 FIDN3 = 26. ;FILE FOR NORMAL MESSAGES, UNIT 3 FIDP3 = 27. ;FILE FOR PRIORITY MESSAGES, UNIT 3 FIDN4 = 28. ;FILE FOR NORMAL MESSAGES, UNIT 4 FIDP4 = 29. ;FILE FOR PRIORITY MESSAGES, UNIT 4 FIDN5 = 30. ;FILE FOR NORMAL MESSAGESW .ENDC .ENDC .IFL PRIP04 $PS004 = $NBLKS-$SB004 .ENDC .IFGE PRIP04 $PS004 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB004-$PS004 XXXXXXXX ; PRI 4 TOO LARGE .ENDC .ENDC .IFL PRIP05 $PS005 = $NBLKS-$SB005 .ENDC .IFGE PRIP05 $PS005 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB005-$PS005 X OVERLAY) ; PRIP01 = -1 ; PRIORITY PROPERTY LEVEL 1 PRIP02 = -1 ; PRIORITY PROPERTY LEVEL 2 PRIP03 = 1 ; PRIORITY PROPERTY LEVEL 3 PRIP04 = 1 ; PRIORITY PROPERTY LEVEL 4 PRIP05 = -1 ; PRIORITY PROPERTY LEVEL 5 PRIP06 = -1 ; PRIORITY PROPERTY LEVEL 6 PRIP07 = -1 ; PRIORITY PROPERTY LEVEL 7 PRIP08 = -1 ; PRIORITY PROPERTY LEVEL 8 YEUE, AND THE 'LAST' ; TABLE CONTAINS THIS ADDRESS. ; LAST=. .WORD 0 ; BUMP LOCATION COUNTER OVER LAST(0) QTAB .WORD FIRST+2. ; INSERT MORE VALUES IF NPRIOR > 16. QUEU .WORD FIRST+4 .WORD FIRST+6 .WORD FIRST+8. .WORD FIRST+10. .WORD FIRST+12. .WORD FIRST+14. .WORD FIRST+16. .WORD FIRST+18. .WORD FIRST+20. .WORD FIRST+22. Z, UNIT 5 FIDP5 = 31. ;FILE FOR PRIORITY MESSAGES, UNIT 5 FIDN6 = 32. ;FILE FOR NORMAL MESSAGES, UNIT 6 FIDP6 = 33. ;FILE FOR PRIORITY MESSAGES, UNIT 6 FIDN7 = 34. ;FILE FOR NORMAL MESSAGES, UNIT 7 FIDP7 = 35. ;FILE FOR PRIORITY MESSAGES, UNIT 7 ; ; ; OUTPUT BUFFER SIZE DEFINITION FOR MESSAGE BUFFERED DISC SYSTEM ; OBUFSZ = 128. ;MINIMUM SIZE OUTPUT BUFFER(1 SECT/MSG) DNWRD[ XXXXXXXX ; PRI 5 TOO LARGE .ENDC .ENDC .IFL PRIP06 $PS006 = $NBLKS-$SB006 .ENDC .IFGE PRIP06 $PS006 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB006-$PS006 XXXXXXXX ; PRI 6 TOO LARGE .ENDC .ENDC .IFL PRIP07 $PS007 = $NBLKS-$SB007 .ENDC .IFGE PRIP07 $PS007 = 4. ; ASSIGN 4 BLOCKS - \ PRIP09 = -1 ; PRIORITY PROPERTY LEVEL 9 PRIP10 = -1 ; PRIORITY PROPERTY LEVEL 10 PRIP11 = 0 ; PRIORITY PROPERTY LEVEL 11 PRIP12 = 1 ; PRIORITY PROPERTY LEVEL 12 PRIP13 = -1 ; PRIORITY PROPERTY LEVEL 13 PRIP14 = -1 ; PRIORITY PROPERTY LEVEL 14 PRIP15 = -1 ; PRIORITY PROPERTY LEVEL 15 PRIP16 = 0 ; PRIORITY PROPERTY LEVEL 16 .IFN].WORD FIRST+24. .WORD FIRST+26. .WORD FIRST+28. .WORD FIRST+30. .WORD FIRST+32. .=LAST+NPRIOR+NPRIOR+2 ;GET RID OF ZEROES XE DON'T ; NEED FIRST=. .WORD 0 ; BUMP LOCATION COUNTER OVER FIRST(0). .WORD 0,0,0,0,0,0,0,0 ;ADD MORE ZEROES IF NPRIOR > 16 .WORD 0,0,0,0,0,0,0,0 .=FIRST+NPRIOR+NPRIOR+2 ;GET RID OF ZEROES WE DON'T ; ^S = 64. ;NO. OF WORDS IN DISK TRANSFERS .IFGE DBUFSZ-2 ;IS SECTOR COUNT 2? OBUFSZ = OBUFSZ+128. ;YES, ADD 64 WORDS DNWRDS = DNWRDS+64. .ENDC .IFGE DBUFSZ-3 ;IS SECTOR COUNT 3? OBUFSZ = OBUFSZ+128. ;YES, ADD 64 WORDS DNWRDS = DNWRDS+64. .ENDC .IFG DBUFSZ-3 ;IS SECTOR COUNT GT 3? XXXXXX ;YES, CREATE ASSY ERROR, DBUFSZ GT 3!! .ENDC OMSGSZ = _1024 WORDS .IFL $NBLKS-$SB007-$PS007 XXXXXXXX ; PRI 7 TOO LARGE .ENDC .ENDC .IFL PRIP08 $PS008 = $NBLKS-$SB008 .ENDC .IFGE PRIP08 $PS008 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB008-$PS008 XXXXXXXX ; PRI 8 TOO LARGE .ENDC .ENDC .IFL PRIP09 $PS009 = $NBLKS-$SB009 .ENDC .IFGE PRIP09`Z OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX TABLES AND PARAMETERS CURRENTLY CODED XXXXXXXX FOR MAXIMUM OF 16 PRIORITY LEVEL .ENDC ; ; THE FOLLOWING SYSGEN PARAMETERS SPECIFY THE NUMBER OF ; ENTRY'S IN A PRIORITY'S QPART TABLE. IF ZERO, THAT ; PRIORITY WILL NOT BE ALLOWED OVERLAY TASKS. A MAXIMUM ; OF 127 ENTRYS PER QPART WILL BE ALLOWED. ; ****NOTE: BE SURE PRIORITIES GREATER THAN NPRIOR HAVE a ;NEED ; ; THE FOLLOWING TABLE IS THE SYSTEM TASK TABLE. THIS TABLE IS ; BROKEN DOWN INTO 6 SUB-TABLES. THAT WAY THE TASK NUMBER CAN ; BE USED AS AN INDEX INTO THE APPROPRIATE SUB-TABLE. THESE ; TABLES ARE: ; ; 1. HEADER - CONTAINS THE ADDRESS OF PROGRAM HEADER FOR ; EACH TASK (WORD TABLE) ; 2. TSTAT - CONTAINS THE TASK STATUS (BYTE TABLE) ; -3= ABORT REQUESTED - PENDING I/O COMPLETION-OVb OBUFSZ-16. ;OUTPUT MSG SIZE -- MAXIMUM NO OF CHAR ; ALLOWED IN OUTPUT ; MESSAGE (MSG BUFFER ; SYSTEM ONLY) .ENDC ; ; ; MISCELLANEOUS SYMBOLS ; CR = 15 ;CARRIAGE RETURN LF = 12 ;LINE FEED RO = 177 ;RUBOUT ; ; ; ERROR CODES ; ERRQL = 21.c $PS009 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB009-$PS009 XXXXXXXX ; PRI 9 TOO LARGE .ENDC .ENDC .IFL PRIP10 $PS010 = $NBLKS-$SB010 .ENDC .IFGE PRIP10 $PS010 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB010-$PS010 XXXXXXXX ; PRI 10 TOO LARGE .ENDC .ENDC .IFL PRIP11 $PS011 = d ; TABLE SIZES OF 0 ; NEQP01 = 10. ; NO. OF ENTRYS QPART LEVEL 1 NEQP02 = 10. ; NO. OF ENTRYS QPART LEVEL 2 NEQP03 = 10. ; NO. OF ENTRYS QPART LEVEL 3 NEQP04 = 10. ; NO. OF ENTRYS QPART LEVEL 4 NEQP05 = 10. ; NO. OF ENTRYS QPART LEVEL 5 NEQP06 = 10. ; NO. OF ENTRYS QPART LEVEL 6 NEQP07 = 10. ; NO. OF ENTRYS QPART LEVEL 7 NEQP08 eERLAY QTAB ; -2= FREE REQUESTED - PENDING I/O COMPLETION-OVERLAY QTAB ; -1= EXIT REQUESTED - PENDING I/O COMPLETION-OVERLAY QTAB ; 0 = QUIESCENT (INACTIVE) ; 1 = QUEUING IN PROGRESS. ; 2 = QUEUED ; 3 = ACTIVE ; 4 = SUSPENDED - VOLUNTARY ; 5 = SUSPENDED - INVOLUNTARY ; 6 = DISABLED ; 7 = ABORTED ; f ;LIST NOT QUEUEABLE, THREAD WORD .NE. 1 ERRLDN = 22. ;INVALID LOGICAL DEVICE NUMBER IN LIST ERRPDT = 23. ;INVALID PHYSICAL DEVICE TYPE IN LIST ERRET = 24. ;INVALID EXIT TYPE IN LIST ERRLEV = 25. ;INVALID PRIORITY LEVEL IN LIST ERRMSZ = 26. ;MESSAGE SIZE TOO LARGE ERROTO = 27. ;OUTPUT/ECHO TIMEOUT; ALTERNATE DEVICE ;SELECTED IF AVAILABLE g$NBLKS-$SB011 .ENDC .IFGE PRIP11 $PS011 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB011-$PS011 XXXXXXXX ; PRI 11 TOO LARGE .ENDC .ENDC .IFL PRIP12 $PS012 = $NBLKS-$SB012 .ENDC .IFGE PRIP12 $PS012 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB012-$PS012 XXXXXXXX ; PRI 12 TOO LARGE .ENDC h= 10. ; NO. OF ENTRYS QPART LEVEL 8 NEQP09 = 10. ; NO. OF ENTRYS QPART LEVEL 9 NEQP10 = 10. ; NO. OF ENTRYS QPART LEVEL 10 NEQP11 = 0. ; NO. OF ENTRYS QPART LEVEL 11 NEQP12 = 0. ; NO. OF ENTRYS QPART LEVEL 12 NEQP13 = 0. ; NO. OF ENTRYS QPART LEVEL 13 NEQP14 = 0. ; NO. OF ENTRYS QPART LEVEL 14 NEQP15 = 0. ; NO. OF ENTRYS QPART LEVEL 1i8 = REQUEST PENDING WITH DQOVLY (RPOM) QTAB ; 9 = QUEUED IN RPOM BUT NOT IN ROS. QTAB ; 3. IOSTAT - CONTAINS THE TASK'S I/O STATUS (BYTE TABLE): ; 0 = NO I/O PENDING ; N = I/O IN PROGRESS (N = 1,2,...) ; 4. TPRTY - TASK SOFTWARE PRIORITY LEVEL (BYTE TABLE). ; 5. BSIZE - NUMBER OF CORE SEGMENTS REQUESTED (BYTE) QTAB ; 6. IFD - CONTAINS INDEX INTO FILE DIRECTORY IF BIT 15=0; j ERRITO = 28. ;INPUT/OPERATOR RESPONSE TIMEOUT; ;ALTERNATE OPERATOR SHOULD BE SELECTED, ;REQUEST IS DEQUEUED ; ; ; SYSGEN TTY INTERRUPT VECTOR ADDRESSES, CONTROL STATUS REGISTER ; ADDRESSES AND DATA BUFFER ADDRESSES ; TT0IIV = 60 ;PHYSICAL UNIT 0 INTPUT INTERRUPT VECTOR TT0ICS = 177560 ;PHYSICAL UNIT 0 INPUT CNTRL STATUS REG TT0IDB = 177562 ;PHYSICALk .ENDC .IFL PRIP13 $PS013 = $NBLKS-$SB013 .ENDC .IFGE PRIP13 $PS013 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB013-$PS013 XXXXXXXX ; PRI 13 TOO LARGE .ENDC .ENDC .IFL PRIP14 $PS014 = $NBLKS-$SB014 .ENDC .IFGE PRIP14 $PS014 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB014-$PS014 XXXXXXXXl5 NEQP16 = 0. ; NO. OF ENTRYS QPART LEVEL 16 ; ; ; THE FOLLOWING ASSIGNS THE START BLOCK IN THE CORE POOL ; FOR A SPECIFIC PRIORITY. ; $SB001 = 0. $SB002 = 4. $SB003 = 4. $SB004 = 4. $SB005 = 4. $SB006 = 4. $SB007 = 12. $SB008 = 12. $SB009 = 12. $SB010 = 12. $SB011 = 0. $SB012 = 0. $SB013 = 0. $SB014 = 0. $SB015 = 0. $SB016 = 0. ; m; OTHERWISE THE FILE ID. USED BY THE OVERLAY MONITOR. ; (WORD TABLE). ; ; SINCE TASK 0 DOES NOT EXIST, ALL TASK TABLES ARE OFFSET QTAB ; BACKWARDS TO AVOID ANY WASTED MEMORY. SIMILARLY, SINCE THE TWO QTAB ; OVERLAY TASK TABLES CONTAIN INFORMATION ONLY FOR OVERLAY TASKS QTAB ; (TASKS WITH A TASK NUMBER > MXTASK) THEY ARE ALSO OFFSET QTAB ; BACKWARDS BY MXTASK. QTAB ; n UNIT 0 INPUT DATA BUFFER REG TT0OIV = 64 ;PHYSICAL UNIT 0 OUTPUT INTERRUPT VECTOR TT0OCS = 177564 ;PHYSICAL UNIT 0 OUTPUT CNTRL STATUS REG TT0ODB = 177566 ;PHYSICAL UNIT 0 OUTPUT DATA BUFFER ; TT1IIV = 340 ;UNIT 1 ADDRESSES TT1ICS = 160200 TT1IDB = 160202 TT1OIV = 344 TT1OCS = 160204 TT1ODB = 160206 ; TT2IIV = 350 ;UNIT 2 ADDRESSES TT2ICS = 160210 TT2IDB = o ; PRI 14 TOO LARGE .ENDC .ENDC .IFL PRIP15 $PS015 = $NBLKS-$SB015 .ENDC .IFGE PRIP15 $PS015 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB015-$PS015 XXXXXXXX ; PRI 15 TOO LARGE .ENDC .ENDC .IFL PRIP16 $PS016 = $NBLKS-$SB016 .ENDC .IFGE PRIP16 $PS016 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS p $NBLKS = $DYNSZ/2-1/256.+1 ; NO. OF BLOCKS IN DYNAMIC CORE ; ; THE FOLLOWING ASSIGNS STORAGE BLOCK SIZES FOR EACH PRIORITY. ; A) IF DYNAMIC-CONTAINS THE LARGEST ALLOWABLE BSIZE ; VALUE ; ; B) IF FIXED OR TIME SLICED-CONTAINS ASSIGNED BSIZE ; VALUE FOR THAT PRIORITY ; .IFL PRIP01 $PS001 = $NBLKS-$SB001 .ENDC .IFGE PRIP01 $PS001 = 4. ; ASSIGN 4 BLOCKS - 10q QTAB ; THE FOLLOWING I/O LIST IS USED IFF WHEN OVERLAY TASKS EXISTS. QTAB ; IT PROVIDES FOR THE MAINTENANCE OF A DISK COPY OF THE TASK QTAB ; TABLES, THEREBY PERMITTING RECOVERY AFTER A SHUTDOWN. THE QTAB ; FUNCTION CAN BE ASSUMED TO BE A WRITE(1) ' ANY USER USING A QTAB ; READ(0) WILL RESET THE FUNCTION TO A WRITE. QTAB ; r 160212 TT2OIV = 354 TT2OCS = 160214 TT2ODB = 160216 ; TT3IIV = 360 ;UNIT 3 ADDRESSES TT3ICS = 160220 TT3IDB = 160222 TT3OIV = 364 TT3OCS = 160224 TT3ODB = 160226 ; TT4IIV = 370 ;UNIT 4 ADDRESSES TT4ICS = 160230 TT4IDB = 160232 TT4OIV = 374 TT4OCS = 160234 TT4ODB = 160236 ; TT5IIV = 400 ;UNIT 5 ADDRESSES TT5ICS = 160240s .IFL $NBLKS-$SB016-$PS016 XXXXXXXX ; PRI 16 TOO LARGE .ENDC .ENDC ; ; .ENDC ; MATCH FOR .IFNZ OVRLAY ; ; ROS SYSTEM TASK NUMBERS ; ; $INPNO = MXTASK+1. ; INPUT $CPTNO = MXTASK+2. ; COMPRS $INITD = 3. ; DISC INITIALIZER $FLTNO = MXTASK+4. ; FILE LIST $RLDNO = MXTASK+5. ; ROS LOADER $RASNO = MXTASK+6. ; ROS ASSEMBLER t24 WORDS .IFL $NBLKS-$SB001-$PS001 XXXXXXXX ; PRI 1 TOO LARGE .ENDC .ENDC .IFL PRIP02 $PS002 = $NBLKS-$SB002 .ENDC .IFGE PRIP02 $PS002 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB002-$PS002 XXXXXXXX ; PRI 2 TOO LARGE .ENDC .ENDC .IFL PRIP03 $PS003 = $NBLKS-$SB003 .ENDC .IFGE PRIP03 u QTAB .IFNZ OVRLAY ; ONLY IF HAVE OVERLAYS QTAB .DEF $TKFLS,$TKFLF ; EXTERNAL LABELS FOR OTHERS QTAB .REF $TKFLN ; EXTERNAL REFERENCE FOR ME. QTAB $TKFLS: .WORD 1 ; THREAD WORD QTAB .BYTE 1,1 ; DEVICE CODE, EXIT TYPE QTAB .WORD 0 ; NO EXIT ROUTINE QTAB .BYTv TT5IDB = 160242 TT5OIV = 404 TT5OCS = 160244 TT5ODB = 160246 ; TT6IIV = 410 ;UNIT 6 ADDRESSES TT6ICS = 160250 TT6IDB = 160252 TT6OIV = 414 TT6OCS = 160254 TT6ODB = 160256 ; TT7IIV = 420 ;UNIT 7 ADDRESSES TT7ICS = 160260 TT7IDB = 160262 TT7OIV = 424 TT7OCS = 160264 TT7ODB = 160266 ; ; ; SYMBOLIC TABLE AND BUFFER OFFSETS ; ; ; OFFwTASK NUMBER $UTLNO = MXTASK+7. ; ROS UTILITY TASK $TKCNO = MXTASK+8. ; TASK C??? ; .PAGE ; ; QUEUE SYSGEN EQUATE CARDS ; DPRTY = 1 ;DYNAMIC PRIORITY ASSIGNMENT; IF ; DPRTY = 0, THE ALL TASK PRIORITIES ; WILL BE RETRIEVED FROM TASK TABLE. ; IF DPRTY = 1, THEN CALLING PROGRAM ; CAN SELECT PRIORITY. ARG = 1 x$PS003 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB003-$PS003 XXXXXXXX ; PRI 3 TOO LARGE .ENDC .ENDC .IFL PRIP04 $PS004 = $NBLKS-$SB004 .ENDC .IFGE PRIP04 $PS004 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB004-$PS004 XXXXXXXX ; PRI 4 TOO LARGE .ENDC .ENDC .IFL PRIP05 $PS005 = $NyE 0 ; NO ERROR TASK QTAB .BYTE 1 ; DISK PRIORITY QTAB .WORD 0,0 ; ERROR WORD, RESERVED FOR DISCIO QTAB .WORD TKFLBF ; ADDRESS OF BUFFER FOR TRANSFER QTAB TKFLBF: .WORD NDISCS+4 ; FILE ID NUMBER QTAB .BYTE 0 ; USE SPECIFIED SECTOR AND WORD COUNT QTAB $TKFLF: .BYTE 3 ; I/O FUNCTION-WRITE WzSETS IN I/O REQUEST LIST ; DEVICE = 2 ;LOGICAL DEVICE NO. TYPE = 3 ;EXIT TYPE EXIT = 4 ;I/O COMPLETE ROUTINE (EXIT 3 ONLY) ERRTSK = 6 ;TASK NO. OF ERROR PROGRAM LEVEL = 7 ;PRIORITY LEVEL OF I/O REQUEST ERROR = 10 ;ERROR CODE WORD SYSTEM = 12 ;BYTE 0 CONTAINS TASK NO. ACTIVE WHEN ;CALLED. BYTE 1 CONTAINS TTY PHYSICA{ ;ARGUMENT OPTION; IF ARG = 1, THEN ; THE CALLING PROGRAM CAN PASS AN ; ARGUMENT TO THE QUEUED TASK. RGSAVE = 1 ;REGISTER SAVE OPTION. 1 = SAVE ;REGISTERS, 0 = DON'T SAVE 'EM. ; ; ***** NOTE: IF DPRTY = 0 OR ARG = 0, THEN THE CORRESPONDING ; ---- ARGUMENT SHOULD BE OMITTED FROM THE CALLING LIST. .IFL DPRTY ; XXXXXXXX |BLKS-$SB005 .ENDC .IFGE PRIP05 $PS005 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB005-$PS005 XXXXXXXX ; PRI 5 TOO LARGE .ENDC .ENDC .IFL PRIP06 $PS006 = $NBLKS-$SB006 .ENDC .IFGE PRIP06 $PS006 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB006-$PS006 XXXXXXXX ; PRI 6 TOO LARGE .ENDC }ITH WRITE CHECK QTAB .WORD 0,0,0 ; RESERVED QTAB .WORD 0 ; RELATIVE START SECTOR QTAB .WORD $TKFLN ; NUMBER OF WORDS TO TRANSFER QTAB .ENDC QTAB ; QTAB ; QTAB TASKS: .WORD NL~L ;UNIT NO. DATA = 14 ;ADDRESS OF USER BUFFER ; .IFG MSGBUF ;ASSEM FOLLOWING FOR MSG BUF SYSTEM ; ; ; OFFSETS IN DISC WRITE BUFFER AND OUTPUT BUFFERS ; SCFLAG = 2 ;SECTOR FLAG INOUT = 3 ;READ/WRITE FLAG RLSECT = 12 ;RELATIVE SECTOR ADDRESS NWORD = 14 ;NO. OF WORDS TO TRANSFER TTRLST = 16 ;1ST WORD OF TTY REQUES ;CREATE ASSEMBLY ERROR IF DPRTY ISNT .ENDC ;ZERO OR ONE. .IFG DPRTY-1 ; XXXXXXXX ; .ENDC ; .IFL ARG ; XXXXXXXX ;CREATE ASSEMBLY ERROR IF ARG IS NO .ENDC ;ZERO OR ONE .IFG ARG-1 ; XXXXXXXX ; .ENDC ; .IFL RGSAVE ; .ENDC .IFL PRIP07 $PS007 = $NBLKS-$SB007 .ENDC .IFGE PRIP07 $PS007 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB007-$PS007 XXXXXXXX ; PRI 7 TOO LARGE .ENDC .ENDC .IFL PRIP08 $PS008 = $NBLKS-$SB008 .ENDC .IFGE PRIP08 $PS008 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB008-$PS008 XXXXXXXX TASK ; LARGEST TASK NUMBER CURRENTLY IN SYSTEQTAB ; QTAB ; QTAB HEADER =.-2 ; TASK HEADER ADDRESS (THREAD WORDS). QTAB .=.+TASMAX+TASMAX ; TABLE QTAB ; QTAB .IFNZ OVRLAY ; ONLY IF HAVE OVERLAY TASKST LIST .ENDC ; ; ; OFFSETS IN USER BUFFERS ; CHCNT = 2 ;CHAR COUNT MSGDAT = 4 ;BEGINNING OF DATA ; ; ; OFFSETS IN TIMER MODULES ; TCNTR = 4 ;TIMER COUNTER ; ; .IFDF CHKOUT ;****** DELETE ASECT FOR CHECKOUT ****** .ASECT ; ; ; INTERRUPT VECTORS ; .IFGE NTTYS-1 ;IS NO. TTYS GE 1? . = TT0IIV ;YES, SETUP UNIT 0 INPUT VECTOR XXXXXXXX ;CAUSE AN ASSEMBLY ERROR IF .ENDC ;RGSAVE ISN'T 0 OR 1 .IFG RGSAVE-1 ; XXXXXXX ; .ENDC ; $ABMES = 3 ; THREE ABORT MESSAGE BUFFERS ABRT .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX ; ABRT .ENDC ; ; PRI 8 TOO LARGE .ENDC .ENDC .IFL PRIP09 $PS009 = $NBLKS-$SB009 .ENDC .IFGE PRIP09 $PS009 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB009-$PS009 XXXXXXXX ; PRI 9 TOO LARGE .ENDC .ENDC .IFL PRIP10 $PS010 = $NBLKS-$SB010 .ENDC .IFGE PRIP10 $PS010 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS QTAB IFD =.-2-MXTASK-MXTASK ; TASK FILE DIRECTORY NUMBER QTAB .=.+MAXOVR+MAXOVR ; HERE SINCE IT IS A FULL WORD TABLE QTAB ; QTAB .ENDC ; QTAB TSTAT =.-1 ; TASK STATUS TABLE QTAB .=.+TASMAX ; QTAB ; .WORD KBDINT,200 . = TT0OIV ;SETUP UNIT 0 OUTPUT VECTOR .WORD PRTINT,200 .ENDC .IFGE NTTYS-2 ;IS NO. TTYS GE 2? . = TT1IIV ;YES, SETUP UNIT 1 INPUT VECTOR .WORD KBDINT,201 . = TT1OIV ;SETUP UNIT 1 OUTPUT VECTOR .WORD PRTINT,201 .ENDC .IFGE NTTYS-3 ;IS NO. TTYS GE 3? . = TT2IIV ;YES, SETUP UNIT 2 INPUT VECTOR .WORD KBD PSTP ; THE SYSGEN PARAMETER '$PST CONTROLS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; = 0 ROS PSTP ; = +1 USER PSTP ; PSTP $PST = 0 .IFL $NBLKS-$SB010-$PS010 XXXXXXXX ; PRI 10 TOO LARGE .ENDC .ENDC .IFL PRIP11 $PS011 = $NBLKS-$SB011 .ENDC .IFGE PRIP11 $PS011 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB011-$PS011 XXXXXXXX ; PRI 11 TOO LARGE .ENDC .ENDC .IFL PRIP12 $PS012 = $NBLKS-$SB012 .ENDC .IFGE PRIP12 $PS012 = QTAB IOSTAT =.-1 ; TASK I/O STATUS TABLE QTAB .=.+TASMAX ; QTAB ; QTAB TPRTY =.-1 ; TASK PRIORITY TABLE QTAB .=.+TASMAX ; QTAB ; INT,202 . = TT2OIV ;SETUP UNIT 2 OUTPUT VECTOR .WORD PRTINT,202 .ENDC .IFGE NTTYS-4 ;IS NO. TTYS GE 4? . = TT3IIV ;YES, SETUP UNIT 3 INPUT VECTOR .WORD KBDINT,203 . = TT3OIV ;SETUP UNIT 3 OUTPUT VECTOR .WORD PRTINT,203 .ENDC .IFGE NTTYS-5 ;IS NO. TTYS GE 5? . = TT4IIV ;YES, SETUP UNIT 4 INPUT VECTOR .WORD KBDINT,204 ; PSTP ; PSTP .PAGE ;FOLLOWING ARE SYSGEN PARAMETERS FOR THE TIMER AND CALENDAR ROUTINES ; NORMALLY THE BASE PERIOD FOR THE TIMERS IS THE INTERRUPT PERIOD, AND ; IF THAT PERIOD IS DESIRED FOR USE BY ANY TIMER MODULE, "RESO" MUST BE ; SET TO 1, AND THAT RESOLUTION (ZERO) SPECIFIED BY THOSE MODULES. ; IF IT IS DESIRED TO MAKE THE BASE PERIOD COARSER THAN THE INTERRUPT ; PER 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB012-$PS012 XXXXXXXX ; PRI 12 TOO LARGE .ENDC .ENDC .IFL PRIP13 $PS013 = $NBLKS-$SB013 .ENDC .IFGE PRIP13 $PS013 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB013-$PS013 XXXXXXXX ; PRI 13 TOO LARGE .ENDC .ENDC .IFL PRIP14 $PS014 = $NBLKS-$SB014 QTAB .IFNZ OVRLAY ; ONLY IF HAVE OVERLAY TASKS QTAB BSIZE =.-1-MXTASK ; NUMBER OF CORE SEGMENTS QTAB .=.+MAXOVR ; QTAB ; QTAB ; QTAB .=.+2 ; MAKE SURE WORD AVAIL. FOR ROUND UP. QTAB ; . = TT4OIV ;SETUP UNIT 4 OUTPUT VECTOR .WORD PRTINT,204 .ENDC .IFGE NTTYS-6 ;IS NO. TTYS GE 6? . = TT5IIV ;YES, SETUP UNIT 5 INPUT VECTOR .WORD KBDINT,205 . = TT5OIV ;SETUP UNIT 5 OUTPUT VECTOR .WORD PRTINT,205 .ENDC .IFGE NTTYS-7 ;IS NO. TTYS GE 7? . = TT6IIV ;YES, SET UP UNIT 6 INPUT VECTOR .WORD KBDINT,206 . = IOD, "$TMBAS" MUST BE SET TO THE DESIRED RATIO OF BASE PERIOD TO ; INTERRUPT PERIOD. $TMBAS = 0 ;DE-SELECT ALTERNATE BASE PERIOD OPTION ; THE FOLLOWING PARAMETERS SPECIFY THE MULTIPLIERS THAT WILL BE LOADED ; INTO THE RESOLUTION COUNTER TABLES FOR DETERMINING THE PERIOD OF EACH ; RESOULTION. THE PERIOD OF A GIVEN RESOLUTION LEVEL DEPENDS ON ALL ; THE PRECEDING LEVELS (WITH LOWER NUMBERS), WHICH ACT AS SUCCESSIVE ; MULTIPLIERS IN COUNTING TO THE GIVEN RESOLUTION LEVEL .ENDC .IFGE PRIP14 $PS014 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB014-$PS014 XXXXXXXX ; PRI 14 TOO LARGE .ENDC .ENDC .IFL PRIP15 $PS015 = $NBLKS-$SB015 .ENDC .IFGE PRIP15 $PS015 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB015-$PS015 XXXXXXXX ; PRI 15 TOO LARGE .ENDC .ENDC QTAB .ENDC .EVEN ;TAKE CARE OF ODD BYTES .PAGE ;*********************************************************************** ; * ; Q U E U E * ; * ; PROGRAM IDENTIFICATION. QUEUE - QUEUE A SOFTWARE TASK; * ; TT6OIV ;SETUP UNIT 6 OUTPUT VECTOR .WORD PRTINT,206 .ENDC .IFGE NTTYS-8. ;IS NO. TTYS GE 8? . = TT7IIV ;YES, SETUP UNIT 7 INPUT VECTOR .WORD KBDINT,207 . = TT7OIV ;SETUP UNIT 7 OUTPUT VECTOR .WORD PRTINT,207 .ENDC .IFG NTTYS-8. ;IS NO. TTYS GT 8? XXXXXX ;CREATE ASSY ERROR, NTTYS GT 8!! .ENDC .ENDC ;*****. ; THUS, FOR "RES4", ITS PERIOD WOULD BE: ; RES4*RES3*RES2*RES1*RES0 --- IN UNITS OF THE BASE PERIOD RES0 = 1 ; 0.01 SEC RES1 = 1 ; 0.01 SEC RES2 = 2 ; 0.02 SEC RES3 = 5 ; 0.1 SEC RES4 = 2 ; 0.2 SEC RES5 = 5 ; 1.0 SEC RES6 = 5 ; 5.0 SEC RES7 = 2 ; 10.0 SEC RES8 = 3 .IFL PRIP16 $PS016 = $NBLKS-$SB016 .ENDC .IFGE PRIP16 $PS016 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB016-$PS016 XXXXXXXX ; PRI 16 TOO LARGE .ENDC .ENDC ; ; .ENDC ; MATCH FOR .IFNZ OVRLAY ; ; ROS SYSTEM TASK NUMBERS ; ; $INPNO = MXTASK+1. ; INPUT $CPTNO = MXTASK+2. ; COMPRS $INITD = 3. CATALOG NUMBER * ; * ; PURPOSE. SUBROUTINE QUEUE IS RESPONSIBLE FOR PLACING A * ; TASK IN THE SPECIFIED PRIORITY THREAD. A TASK CANNOT BE * ; THREADED VIA QUEUE UNLESS IT IS INACTIVE AND THE THREAD WORD * ; IN THE PROGRAM HEADER IS EMPTY (NOMINAL VALUE OF 1). THE * ; PROGRAM REQUESTING THE QUEUEING CAN SELECT WHETHER QUEUE * EELETE ASECT FOR CHECKOUT ****** .CSECT ; ; ; TABLE OF CONTROL STATUS REGISTER ADDRESSES ORDERED BY UNIT NO. ; TTICSR: .WORD TT0ICS,TT1ICS ;INPUT CSR'S .WORD TT2ICS,TT3ICS .WORD TT4ICS,TT5ICS .WORD TT6ICS,TT7ICS ; .=TTICSR+NTTYS+NTTYS ;DELETE UNUSED WORDS ; TTOCSR: .WORD TT0OCS,TT1OCS ;OUTPUT CSR'S .WORD TT2OCS,TT3OCS .WORD TT4OCS,TT5OCS .WORD TT6OCS,TT7OCS .=TTOCSR+NTTYS+NTTYS ;DELET ; 30.0 SEC RES9 = 2 ; 60.0 SEC RES10 = 5 ; 5 MIN RES11 = 2 ; 10 MIN RES12 = 3 ; 30 MIN RES13 = 2 ; 60 MIN RES14 = 2 ; 2 HRS RES15 = 6 ; 12 HRS ; IN SYSTEMS WHERE THE BASE PERIOD IS GREATER THAN ONE MILLISECOND, ; "MSECR" WILL NECESSARILY HAVE A PERIOD GREATER THAN ONE MILLISECOND. MSECR = 0 ; DISC INITIALIZER $FLTNO = MXTASK+4. ; FILE LIST $RLDNO = MXTASK+5. ; ROS LOADER $RASNO = MXTASK+6. ; ROS ASSEMBLER TASK NUMBER $UTLNO = MXTASK+7. ; ROS UTILITY TASK $TKCNO = MXTASK+8. ; TASK C??? ; .PAGE $ABMES = 3 ; THREE ABORT MESSAGE BUFFERS ABRT .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX ; ABRT * ; RETURNS TO IT OR TO THE TASK DISPATCHER (DSPTCH). THE * ; CALLING PROGRAM MAY ALSO TRANSMIT A ONE WORD ARGUMENT TO * ; THE QUEUED PROGRAM. * ; * ; PROGRAM USAGE. THE ASSEMBLER LINKAGE TO SUBROUTINE * ; QUEUE IS: * ; E UNUSED WORDS ; ; ; TABLE OF DATA BUFFER REGISTER ADDRESSES ORDERED BY UNIT NO. ; TTIDBR: .WORD TT0IDB,TT1IDB ;INPUT DBR'S .WORD TT2IDB,TT3IDB .WORD TT4IDB,TT5IDB .WORD TT6IDB,TT7IDB .=TTIDBR+NTTYS+NTTYS ; TTODBR: .WORD TT0ODB,TT1ODB ;OUTPUT DBR'S .WORD TT2ODB,TT3ODB .WORD TT4ODB,TT5ODB .WORD TT6ODB,TT7ODB .=TTODBR+NTTYS+NTTYS .IFG MSGBUF ;ASSEM FOLLOWING FOR MSG BUF SYSTEM ; ; ;MAX RESOLUTION: #0 AT 10 MILLISECONDS SECR = 5 ;"RES5" IS THE ONE-SECOND RESOLUTION TRES = SECR ; FOR TIME-SLICE WATCH-DOG IN RPOM $NRES = 16. ;USE MAX # OF RESOLUTIONS .IFLE $NRES XXXXXXXX ;$NRES MUST BE FROM 1 TO 16 .ENDC .IFG $NRES-16. XXXXXXXX ;COME ON! MUST BE LESS THAN 17 .ENDC ; THE BASE PERIOD FOR THE TIME-OF-DAY CLOCK, ABORT, AND .ENDC ; PSTP ; THE SYSGEN PARAMETER '$PST CONTROLS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; = 0 ROS PSTP ; = +1 USER PSTP ; * ; MOV ITASK,-(SP) PUSH * ; MOV IPRTY,-(SP) ARGUMENTS ; MOV IARG,-(SP) ONTO ; MOV IRTRN,-(SP) STACK ; EMT QUEUE THEN CALL QUEUE * ; TST (SP)+ TEST ERROR CODE * ; BNE XXX BRANCH IF ERROR WAS ENCOUTNERED * ; ; TABLE OF FILE ID'S FOR MESSAGE BUFFERING ; FILEID: .WORD FIDN0,FIDP0 .WORD FIDN1,FIDP1 .WORD FIDN2,FIDP2 .WORD FIDN3,FIDP3 .WORD FIDN4,FIDP4 .WORD FIDN5,FIDP5 .WORD FIDN6,FIDP6 .WORD FIDN7,FIDP7 . = FILEID+NTTYS+NTTYS+NTTYS+NTTYS ;DELETE UNUSED WORDS ; ; ; TABLE OF OUTPUT BUFFER ADDRESSES ORDERED BY UNIT NO. ; TTOBUF: .WORD TTOBF0,TTOBF1 .WORD TTOBF2,TTOBF3 .WORD TTOBF TIME-SLICE IS ; NORMALLY THE INTERRUPT PERIOD, AS SPECIFIED BY "TICRES". ; IF A MULTIPLIER FOR THIS INTERRUPT IS DESIRED TO PRODUCE A COARSER ; BASE PERIOD, USE THE PARAMETER "$ABMPL" TO SPECIFY THE RATIO DESIRED. TICRES = 10. ;T-O-D CLOCK TICKS-PER-SECOND $ABMPL = 0 ;NO T-O-D CLOCK BASE MULTIPLIER TODINT = 320 ;INTERRUPT VECTOR FOR T-O-D INTERRUPT TIMINT = TODINT+4 ;INTERRUPT VECTOR FOR INTERVAL TIMER STLINT = PSTP $PST = 0 ; PSTP ; PSTP .PAGE ;FOLLOWING ARE SYSGEN PARAMETERS FOR THE TIMER AND CALENDAR ROUTINES ; NORMALLY THE BASE PERIOD FOR THE TIMERS IS THE INTERRUPT PERIOD, AND ; IF THAT PERIOD IS DESIRED FOR USE BY ANY TIMER MODULE, "RESO" MUST BE ; SET TO 1, AND THAT RESOLUTION (ZERO) SPECIFIED BY THOSE MODULES. ; * ; THE FORTRAN EQUIVALENT CALL IS: * ; * ; CALL QUEUE( ITASK, IPRTY, IARG, IRTRN, IERR) *QUEU ; * ; ITASK IS THE NUMBER OF THE TASK TO BE QUEUED * ; IPRTYIS THE PRIORITY LEVEL AT WHICH THE TASK EXECUTES * ; = 0, QUEUE WILL GET THE ASSI4,TTOBF5 .WORD TTOBF6,TTOBF7 . = TTOBUF+NTTYS+NTTYS ; ; ; TABLE OF DISC READ I/O LIST ADDRESSES ORDERED BY UNIT NO. ; DRLIST: .WORD DRLST0,DRLST1 .WORD DRLST2,DRLST3 .WORD DRLST4,DRLST5 .WORD DRLST6,DRLST7 . = DRLIST+NTTYS+NTTYS ; ; ; DISC WRITE I/O LISTS ; DWLIST: .WORD 1 ;THREAD WORD .BYTE DISCUN ;LOGICAL DEVICE NO FOR DISC .BYTE 3 ;EXIT TYPE -- 3 TIMINT+4 ;VECTOR FOR STALL ALARM INTERRUPT STLREG = 167000 ;ADDRESS FOR STALL ALARM RESET CLKENB = 167002 ;ADDRESS FOR ENABLE OF CLOCKS TODBIT = 4 ;BIT TO ENABLE TIME-OF-DAY INTERRUPT TIMBIT = 10 ;BIT TO ENABLE INTERVAL TIMER INTERRUPT STLBIT = 0 ;BIT TO ENABLE STALL ALARM INTERRUPT $TMSLC = 1 ;SYSTEM OPTION FOR INCLUDING TIME-SLICING $SWATZ = 20. ;NUMBER OF ENTRIES IN SC