>7$J_>: `Q$ȋ @ B C  ` YSjLKe8}Kj~xeKIj}K9jLpK%8}KkK #Y`K 9wWK&ąe K {L}K  \rK%K-v; UPDATE 2/7/73 ROS2.CTG (V7) ; UPDATE 1/23/73 ROS2.CTG (V6) ; UPDATE 1/6/73 ROS2.CT0 (V5) ; UPDATE 12/12/72 ROS2.CT0 (V4) ; UPDATE 12/8/72 ROS2.CT0 (V3) ; UPDATE 11/6/72 ROS2.CT0 (V2) ; UPDATE 10/9/72 ROS2.CT0 ******** ; THIS SYSTEM IS FOR CITGO ONLY. IT WILL ******** ; BE LABELED AS FOLLOWS: ; UPDATE 2/7/73 ROS2.CIT (V4) ; UPDATE 1/23/73 ROS2.CIT (3) ; UPDATE 1/6/73 ROS2.CIT (V2) ; UPDATE 1/3/73 ROS2.CIT (SYSGEN FOR CITGO DELIVERY SYS) ; UPDATE 12/12/72 ROS2.CT0 (V4) ; UPDATE 12/8/72 ROS2.CT0 (V3) ; UPDATE 11/6/72 ROS2.CT0 (V2) ; UPDATE 10/9/72 ROS2.CT0 ******** ; THIS SYSTEM IS FOR CITGO ONLY. IT; UPDATE 1/3/73 CORLOD.CT1 ; UPDATE 12/5/72 CORLOD.C03 ; UPDATE 11/10/72 CORLOD.C02 ; UPDATE 10/12/72 CORLOD.C01 ; UPDATE 6/22/72 CORLOD.S04 ; UPDATE 05-MAY-72 CORLOD.S03 ; UPDATE 5/5/72 CORLOD.S02 ; UPDATE 5/3/72 CORLOD.S01 .TITLE CORLOD ;*********************************************************************** ;* ; UPDATE 1/20/73 IPL2.CT2 ; UPDATE 1/3/73 IPL2.CT1 ; UPDATE 11/20/72 IPL2.C04 ; UPDATE 1106/72 IPL2.C03 ; UPDATE 10/20/72 IPL2.C02 ; UPDATE 10/18/72 IPL2.C01 ; UPDATE 6/22/72 IPL2.S27 ; UPDATE 5/17/72 IPL2.S26 ; UPDATE 5/16/72 IPL2.S25 ; UPDATE 5/16/72 IPL2.S24 ; UPDATE 5/5/72 IPL2.S23 ; UPDATE 5/2/72 IPL2.S22 ; ******** ; CITGEN - THE ROSGEN VERSION FOR THE ******** ; PROJECT. IT WILL HAVE A LP ******** ; AND ROSLOD II. INPUT WILL ******** ; CORE RESIDENT. THE COMMON ******** ; WILL BE LINKED WITH THE SYST******** ; CITGO - ROS2 FOR THE PROJECT. NO LP**** WILL ******** ; BE LABELED AS FOLLOWS: ******** ; CITGEN - THE ROSGEN VERSION FOR THE ******** ; PROJECT. IT WILL HAVE A LP ******** ; AND ROSLOD II. INPUT WILL ******** ; CORE RESIDENT. THE COMMON ******** ; WILL BE LINKED WITH THE SYST******** ; * ;* USED BY LOADER TO LINK OVERLAY TASKS WITH RESIDENT * ;* CORE LOCATIONS. * ;* * ;*********************************************************************** ; .DEF CORLOD,CORTBL .REF TSTAT ; JUST FOR PATCHR ******** ; .PAGE CORLOD = . MOV (SP),-(SP) MOV UPDATE 4/17/42 IPL2.S21 ; UPDATE 4/14/72 IPL2.S20 ; UPDATE 4/12/72 IPL2.S19 ; UPDATE 4/10/72 IPL2.S18 ; UPDATE 4/5/72 IPL2.S17 ; UPDATE 3/23/72 IPL2.S16 ; UPDATE 3/21/72 IPL2.S15 ; UPDATE 3/20/72 IPL2.S14 ; UPDATE 3/17/72 IPL2.S13 ; UPDATE 3/13/72 IPL.S12 ; UPDATE 2/16/72 IPL2.S11 ; UPDATE 1/19/72 IPL2.S10 ; UPDA **** ; WILL BE IN THE SYSTEM NOR ******** ; ROSLOD II. ******** ; 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 ;  CITGO - ROS2 FOR THE PROJECT. NO LP******** ; WILL BE IN THE SYSTEM NOR ******** ; ROSLOD II. ******** ; 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 ; UPDA #CORTBL,2.(SP) ; PUT ADDRESS ON STACK FOR ROSLOD RTS PC ; CORTBL = . .RAD50 /TST/ .RAD50 /AT / .WORD TSTAT ; ; .WORD -1. ; END OF TABLE ; .END TE 1/12/72 IPL2.S09 ; UPDATE 12/11/71 IPL.S08 ; UPDATE 12/10/71 IPL.S07 ; UPDATE 12/2/71 IPL.S06 ; UPDATE 11/18/71 IPL.S05 ; UPDATE 11/15/71 IPL.S04 ; UPDATE 11/12/71 IPL.S03 ; UPDATE 11/11/71 IPL.S02 ; UPDATE 11/10/71 IPL.S01 .TITLE IPL ;*********************************************************************** ;*  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 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 ; TE 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 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/ .TITLE DSKROM ; R0 = %0 ; REGISTER DEFINITION START: RESET ; FOR SOFTWARE ONLY 5$: MOV #165302,R0 ; GET ADD. OF WC REGISTER MOV #400,-(R0) ; CLEAR THE DISK REGISTERS MOV #-256.,@#165302 ; SET WORD COUNT (4 SECTORS) MOV #5,(R0) ; READ IN BOOT PROGRAM (READ!GO) 10$: TSTB (R0) ; WAIT FOR THE I/O TO FINISH BPL 10$ ; TST (R * ;* INITIAL PROGRAM LOAD WILL INITIALIZE THE ROS SYSTEM AND * ;* THEN EXIT TO DISPATCH. THIS MODULE SHOULD BE EXECUTED * ;* BEFORE ENTERING ROS FOR THE FIRST TIME. * ;* * ;* PROGRAMMER 51,52,53 AND 54 * ;* DATE 11/9/71 * ;* REVISION ;* REVISION UPDATE 1/12/72 ROS2.SYS ; UPDATE 1/11/72 ROS2.SYS ; STANDARD REGISTER DEFINITIONS R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 PS = 177776 ; $DEBUG = 1 ; ROS DEBUG SWITCH ******** $CORAL = 1 ; CORE ALLOCATION ******** ; =024/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 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 PS = 177776 ; $DEBUG = 0 ; ROS DEBUG SWITCH ******** $CORAL = 1 ; CORE ALLOCATION 0) ; DONE. ANY ERRORS? BPL 20$ ; NO. HALT ; YES. BR 5$ ; OPERATOR WANTS TO TRY AGAIN. 20$: JMP @#0 ; GO TO LOCATION 0 TO START BOOT. .END START ;  * ;* * ;*********************************************************************** .DEF IPL,SSTACK .DEF DYNSIZ ; # BYTES IN DYNAMIC POOL .DEF ENDDYN,DYSINI ; ******** .REF CLINIT .REF RQUEST,SAVE,DSPTCH,TPRTY,HEADER .REF PFSIPL,PSTIPL .REF TSTAT,SYSINI,DINT  SOFTWARE ; =1 HARDWARE $SAVE = 104400 ; USE TRAP INSTR. TO CALL SAVE ; ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 4. ; NO. OF SOFTWARE PRIORITIES. ******** PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH = 1 ; NO BATCH IN THE SYSTEM ******** .IFLE NPRIOR ; XXXXXXXX ;NPRIOR MUST BE GREATER THAN ZERO  ******** ; =0 SOFTWARE ; =1 HARDWARE $SAVE = 104400 ; USE TRAP INSTR. TO CALL SAVE ; ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 4. ; NO. OF SOFTWARE PRIORITIES. ******** PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH = 0 ; NO BATCJ ******** .IFLE NPRIOR ; UPDATE 1/26/73 RPOM.C06 ; UPDATE 12/22/72 RPOM.C05 (ADD PATCHR) ; UPDATE 11/21/72 RPOM.C04 (BIS TO MOV ON B3) ******** ; UPDATE 11/18/72 RPOM.C03 (DYNAMIC, HARDWARE ALLOCATION AT LAST ; UPDATE 10/18/72 RPOM.C02 ; UPDATE 10/12/72 RPOM.C01 ; UPDATE 6/27/72 RPOM.S24 ; UPDATE 6/26/72 RPOM.S23 ; UPDATE 6/22/72 RPOM.S22 ; UPDATE 5/5/72 RPOM.S .REF EMTINIT .REF PRTINT,KBDINT ;TTYIO PRINTER AND KEYBOARD ;INTERRUPT ROUTINES .REF TTINIT ;TTYIO INITIALIZATION SUBROUTINE .REF TTYOUT,QUEUE,MTINT ; ******** .REF ASYNCI ; ******** .IFG NLP ; ONLY IF HAVE LINE PRINTERS .REF LPINIT .ENDC .IFG NCR ;  .ENDC MXTASK = 4 ; ONLY ONE CORE RESIDENT TASK ******** NLTASK = 1 ; LARGEST 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 .I ; XXXXXXXX ;NPRIOR MUST BE GREATER THAN ZERO .ENDC MXTASK = 4 ; ONLY ONE CORE RESIDENT TASK ******** NLTASK = 1 ; LARGEST 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 21 ; UPDATE 5/2/72 RPOM.S20 ; UPDATE 4/14/72 RPOM.S19 ; UPDATE 4/12/72 RPOM.S18 ; UPDATE 3/31/72 RPOM.S17 ; UPDATE 3/13/72 RPOM.S16 ; UPDATE 2/24/72 RPOM.S15 ; UPDATE 2/17/72 RPOM.S14 ; UPDATE 2/16/72 RPOM.S13 ; UPDATE 2/3/72 RPOM.S12 ; UPDATE 1/28/72 RPOM.S11 ; UPDATE 1/27/72 RPOM.S10 ; UPDATE 1/24/72 RPOM.S09 ; ONLY IF HAVE CARD READERS .REF CRINIT .ENDC .IFNZ $DTAPE .REF DTINT .ENDC ; .CSECT .IFZ OVRLAY SSTACK = . ; BEGIN SYSTEM STACK HERE FOR ROS I .ENDC PSR = 177776 ; PROCESSOR STATUS REGISTER EQUATE PSBENB = 165400 ; DEVICE ADDRESS AT WHICH TO ENABLE ; ; MANUAL PUSHBUTTON ; ; INTERRUPT VECTOR EQUATES ; MPSHBT !FNZ OVRLAY ; MAXOVR = 40. ; ONLY 40. DISK RES. TASKS ******** .ENDC ;(NOT USED 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 " ;0 = NO OVERLAY, 1 = OVERLAY .IFNZ OVRLAY ; MAXOVR = 40. ; ONLY 40. DISK RES. TASKS ******** .ENDC ;(NOT USED 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 M# UPDATE 1/20/72 RPOM.S08 ; UPDATE 1/19/72 RPOM.S07 ; UPDATE 1/18/72 RPOM.S06 ; UPDATE 1/12/72 RPOM.S05 ; UPDATE 1/11/72 RPOM.S04 ; UPDATE 1/11/72 RPOM.S03 ; UPDATE 12/7/71 RPOM.S02 ; UPDATE 11/10/71 RPOM.S01 .TITLE RPOM TABLES .IFNZ NDISCS&OVRLAY ; DO NOT ASSEMBLE RPOM IF ZERO. ; ;*********************************************************************** ;*$= 244 ; MANUAL PUSHBUTTON MPSHLV = 200 ; BR4 FOR MANUAL PUSHBUTTON .IFZ $SAVE-3 ; ONLY IF REAL SAVE (BPT TRAP) SAVTRP = 14 ; SAVE TRAP .ENDC .IFZ $SAVE-104400 ; ONLY IF ODT SAVE (TRAP TRAP) SAVTRP = 34 .ENDC SAVLEV = 340 ; SAVE UNDER LOCKOUT .CSECT SYSBLD ; FOR MOD. TO WRITE TO DDC DISK ******** .CSECT .ALINT ; PICK U%; QTAB XXXXXXXX ;NTASK CANNOT BE NEGATIVE .ENDC .IFG NLTASK-MXTASK ; QTAB XXXXXXXX ;NTASK MUST BE <= MXTASK .ENDC .IFNZ OVRLAY ; ; STATE SIZE OF DYNAMIC CORE STORAGE IN ROS ; $DYNSZ = 2000 ; MIN. DYNAMIC AREA - GEN. SYSTEM ONLY 1/6/73 ; BUT WILL ALWAYS GET MAX - THIS VALUE **&UST 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 ; ; STATE SIZE OF DYNAMIC CORE STORAGE IN ROS ; $DYNSZ = 50000 ; MIN DYNAMIC AREA - FIELD SYSTEM ONLY ********' RPOM TABLES * ;* * ;* PROGRAM IDENTIFICATION. OVYTBL * ;* * ;* PURPOSE. OVYTBL CONTAINS ALL TABLES, DATA AND SYSTEM * ;* EQUATE STATEMENTS REQUIRED FOR THE RPOM SYSTEM. * ;* EACH PARAMETER IS DEFINED IN THE COMMENTS FIELD. (P ASYNC'S INIT ROUTINE. ******** .CSECT .CRINT .CSECT .LPINT .CSECT .SYSIN .CSECT .DYSIN .CSECT .QUEUE .CSECT .EMTIN .CSECT .CLINT .CSECT .TTYIN .CSECT .MAIN. ; START OF CODE. MUST BE AFTER OTHER NAMED ; IPL = . RESET ; SEND INIT PULSE TO ALL DEVICES MOV #340,PSR ; SET CPU LEVEL TO 7 DURING IPL MOV #SSTACK,SP ; SET UP S)****** ; SAVES PATCHING OUT THE HALT IN IPL. ******** .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 ; PRIORI* ; BUT WILL ALWAYS GET MAX - THIS VALUE ******** ; SAVES PATCHING OUT THE HALT IN IPL. ******** .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 + * ;* * ;* PROGRAM USAGE. EACH TABLE AND DATA ITEM IS REFERENCED * ;* BY A RPOM SUBROUTINE. THOSE TABLES AND ITEMS WHICH * ;* MAY BE REFERENCED BY OTHER PROGRAMS WILL BE DECLARED * ;* IN A .DEF STATEMENT. * ;* * ;* PROGRAMMER 54 ,YSTEM STACK .IFZ $SAVE-104400 MOV 14,-(SP) MOV 16,-(SP) .ENDC JSR PC,PSTIPL ; TRAP INIT. ; ******** MOV #0600,@#177774 ; SEY KERNAL STACK LIMIT REGISTER ******** ; ******** .IFZ $SAVE-104400 MOV (SP)+,16 MOV (SP)+,14 .ENDC -TY PROPERITY LEVEL 3 ******** PRIP04 = -1 ; PRIORITY PROPERITY 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 = . ; PRIORITY PROPERTY LEVEL 2 PRIP03 = -1 ; PRIORITY PROPERITY LEVEL 3 ******** PRIP04 = -1 ; PRIORITY PROPERITY 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 / * ;* DATE * ;* REVISION * ;* * ;*********************************************************************** ; .DEF BCPOOL,ECPOOL,ALPOOL,DYSINI .REF ENDDYN ; ******** .CSECT ; .PAGE ; ; PRIORITY PROPERTY VA0JSR PC,PFSIPL ; FOWER FAIL INIT. ; ; SET UP INTERRUPT AND TRAP VECTORS ; MOV #RQUEST,MPSHBT ; SET UP HANDLER FOR MANUAL PUSHBUTTON MOV #MPSHLV,MPSHBT+2 MOV #SAVE,SAVTRP ; SET UP SAVE TRAP HANDLER MOV #SAVLEV,SAVTRP+2 .IFGE NTTYS-1 MOV #200,R1 ;INIT INTERRUPT VECTORS FOR MOV #KBDINT,60 ;TTY UNIT 0 MOV R1,62 MOV #PRTINT,64 MOV R1,66 1 -1 ; 1/6/73 PRIP12 = -1 ; 1/6/73 PRIP13 = -1 ; PRIORITY PROPERTY LEVEL 13 PRIP14 = -1 ; PRIORITY PROPERTY LEVEL 14 PRIP15 = -1 ; PRIORITY PROPERTY LEVEL 15 PRIP16 = -1 ; 1/6/73 .IFNZ OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX TABLES AND2PRIP10 = -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 .IFNZ OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX 3LUES ARE AS FOLLOWS: ; +1 = TIME-SLICE ; 0 = FIXED ; -1 = DYNAMIC ; ; ; ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 1 ; .IFNZ NEQP01 .IFGE PRIP01 ; GENERATE TIME-SLICED OR FIXED HEADER .IFG PRIP01 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES 4 .ENDC .IFGE NTTYS-2 INC R1 ;INIT INTERRUPT VECTORS FOR MOV #KBDINT,340 ;TTY UNIT 1 MOV R1,342 MOV #PRTINT,344 MOV R1,346 .ENDC .IFG NTTYS-2 XXXXXX ;CREATE ASSY ERROR IF NTTYS .GT. 2 .ENDC .IFNZ NDISCS .IFZ $DDSDC ; ONLY FOR RF-11 DISK MOV #DINT,204 ; SET UP FOR DISC 0 MOV #240,206 5 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 ; TABLE SIZES OF 0 ; NEQP01 = 10. ; NO. OF ENTRY6 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 ; TABLE SIZES OF 0 ; NEQP01 = 10. 7.WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0=NOT ALLOCATED .WORD QPRT01 ; PUSH ADDRESS .WORD QPRT01 ; PULL ADDRESS .WORD EQPT01 ; BOTTOM OF QUEUE .WORD QPRT01 ; TOP OF QUEUE .BYTE NEQP01-1 ; MAX. ENTRIES -1 .BYTE 0 G ; AT INTERRUPT LEVEL 5 .ENDC .IFNZ $DDSDC ; ONLY FOR DDS DISK MOV #DINT,@#130 ; DISK 0 AT LEVEL 5. VECTOR IS 130. ******** MOV #240,@#132 ; ******** .ENDC .ENDC .IFNZ $DTAPE MOV #DTINT,214 ; SET UP VECTOR FOR MOV #300,216 ; THE DECTAPE .ENDC ; ES 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 = 0 ; ******** NEQP06 = 0 ; ******** NEQP07 = 0 ; ******** NEQP08 = 0 ; F ; 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 = 0 ; ******** NEQP06 = 0 ; ******** NEQP07 = 0 ; ******** NEQP08 = 0 H ; ALLOCATION SWITCH .ENDC QPRT01 = . ; QPART LEVEL 01 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP01+QPRT01 ; GET RID OF ENTRYS NOT NEEDED EQPT01 = .-2 ; END OF THIS LEVEL'S QPART TABLE .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 2 """"""" """"""""""""""""""""""""""""""DDDDDDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@ "ffffffffffffffffffffffffffffff&ADDB Cr L:r< K6*\M  : Br4d s@Q 9{7 o >;&$D?a ͋,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 & I ******** NEQP09 = 0 ; ******** NEQP10 = 0 ; ******** 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 ENTRYJ ; ******** NEQP09 = 0 ; ******** NEQP10 = 0 ; ******** 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. K ******** ; ONLY FOR MAGTAPES IN CITGO. ******** ; ******** MOV #MTINT,@#104 ; SET UP MAGTAPE INTERRUPT VECTOR. ******** MOV #240,@#106 ; ******** ; ; ******** JSR PC,ASYNCI ; INITALIZE THE ASYNC HANDLER FOR CITGO.********L ; .IFNZ NEQP02 .IFGE PRIP02 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP02 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORMS QPART LEVEL 15 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 = 0 ; ******** $SB003 = 0 ; 1/6/73 $SB004 = 0. ; 1/6/73 $SB005 = 0 ; N ; 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 SPECIFIC PRIORITY. ; $SB001 = 0. $SB002 = 0 ; ******** $SB003 = 18. ; ******** $SB004 = 24. ; ******** $SB005 = 0 O ; ******** ; XFER TO OTHER INITIALIZATION SUBROUTINES ; JSR PC,EMTINIT ; FILL UNDEFINED EMT REFS WITH ERROR RETURN JSR PC,TTINIT ;INITIALIZE TTYIO TABLES JSR PC,CLINIT ;INIT FOR CLOCK ROUTINES .IFNZ OVRLAY JSR PC,DYSINI ; INIT. DYNAMIC STORAGE ALLOCATOR .ENDC .IFG NLP ; ONLY IF HAVE LP JSR PCPD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT02 ; PUSH ADDRESS .WORD QPRT02 ; PULL ADDRESS .WORD EQPT02 ; BOTTOM OF QUEUE .WORD QPRT02 ; TOP OF QUEUE .BYTE NEQP02-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT02 = . ; QPART LEVEL 02 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 Q ******** $SB006 = 0 ; ******** $SB007 = 0 ; ******** $SB008 = 0 ; ******** $SB009 = 0 ; ******** $SB010 = 0 ; ******** $SB011 = 0. $SB012 = 0. $SB013 = 0. $SB014 = R ; ******** $SB006 = 0 ; ******** $SB007 = 0 ; ******** $SB008 = 0 ; ******** $SB009 = 0 ; ******** $SB010 = 0 ; ******** $SB011 = 0. $SB012 = 0. $SB0S,LPINIT .ENDC .IFG NCR ; ONLY IF HAVE CARD READER JSR PC,CRINIT .ENDC .IFNZ NDISCS .REF AUFCN,AULIST,DISCIO,INIDSC .REF CDIFCN,CDILST .REF TASKS,$TKFLS,$TKFLF CLR PSR ; RESET LOCKOUT SO DISC INTERRUPT ; ; MAY BE RECEIVED CLRB AUFCN ; SET TO READ ALLOCATION FILE TYPE DIR. MOV #AULIST,-(SP) JST .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP02+QPRT02 ; GET RID OF ENTRYS NOT NEEDED EQPT02 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 3 ; .IFNZ NEQP03 .IFGE PRIP03 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP03 ; TIME-SLICE SUSPEND TIMER .WORD 1 U 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. ; 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 $PV13 = 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. ; 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 WR PC,DISCIO ; READ FILE TYPE DIRECTORY IPLX20: CMP #1.,AULIST ; I/O COMPLETE? BNE IPLX20 ; NO-KEEP CHECKING MOVB #1.,AUFCN ; PUT BACK FCN AS WRITE IN LIST CLRB CDIFCN ; SET TO READ CORE DIRECTORY IMAGE MOV #CDILST,-(SP) JSR PC,DISCIO ; READ CORE DIRECTORY IMAGE INTO CORE DIR. IPLX30: CMP #1.,CDILST ; I/O COMPLETE? BNE IPLX30 ; NO-KEEP CHECKING MOVB X; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT03 ; PUSH ADDRESS .WORD QPRT03 ; PULL ADDRESS .WORD EQPT03 ; BOTTOM OYS001 = 4. ; ASSIGN 4 BLOCKS - 1024 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 = $NBLZ .IFGE PRIP01 $PS001 = 4. ; ASSIGN 4 BLOCKS - 1024 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 PR[ #1.,CDIFCN ; RESET FCN IN LIST BACK TO WRITE CLRB $TKFLF ; SET UP TO READ TASK TABLE MOV #$TKFLS,-(SP) JSR PC,DISCIO ; READ TASK TABLE IPLX40: CMP #1.,$TKFLS ; I/O COMPLETE? BNE IPLX40 MOVB #1,$TKFLF ; SET FUNCTION TO A WRITE FOR OTHERS ******** JSR PC,SYSINI ; INIT. CORE TASKS ; ; SET UP INIDSC IN TASK TABLE MOV #$INITD,R0 ; TASK NUMBER MOVB\F QUEUE .WORD QPRT03 ; TOP OF QUEUE .BYTE NEQP03-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT03 = . ; QPART LEVEL 03 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP03+QPRT03 ; GET RID OF ENTRYS NOT NEEDED EQPT03 = .-2 ; END OF THIS LEVEL'S QPAR]KS-$SB003 .ENDC .IFGE PRIP03 $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 ^IP03 $PS003 = $NBLKS-$SB003 .ENDC .IFGE PRIP03 $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 LAR_ #1,TPRTY(R0) ; RUN AT PRIORITY 1 ASL R0 MOV #INIDSC,HEADER(R0) ; TASK'S HEADER ADDRESS CMP #$INITD,TASKS BLE IPLX60 MOV #$INITD,TASKS IPLX60 = . .ENDC MOV #CALIST,-(SP) ; PRINT ROS CALL LINE ON SYSTEM TTY. ******** JSR PC,TTYOUT ; ******** IPLY10: CMP CALIST,#1 ; WAIT ON EXIT TYPE 1 ******** BNE `T T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 4 ; .IFNZ NEQP04 .IFGE PRIP04 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP04 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSa .ENDC .IFL PRIP05 $PS005 = $NBLKS-$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 bGE .ENDC .ENDC .IFL PRIP05 $PS005 = $NBLKS-$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-$Pc IPLY10 ; ******** MOV #$INPNO,-(SP) ; QUEUE INPUT AUTOMATICALLY. ******** CLR -(SP) ; DEFAULT PRIORTY ******** CLR -(SP) ; NO PASSED ARGUMENT. ******** CLR -(SP) ; RETURN AT ONCE ******** JSR PC,QUEUE ; ******** TST (SP)+ dABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT04 ; PUSH ADDRESS .WORD QPRT04 ; PULL ADDRESS .WORD EQPT04 ; BOTTOM OF QUEUE .WORD QPRT04 ; TOP OF QUEUE .BYTE NEQP04-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT04 = e ; PRI 6 TOO LARGE .ENDC .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 fS006 XXXXXXXX ; PRI 6 TOO LARGE .ENDC .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 4g ; POP OF ERROR WORD ******** CLR R0 CLR R1 CLR R2 CLR R3 CLR R4 CLR R5 MOVB #200,PSBENB ; ENABLE MANUAL PUSHBUTTON INTERRUPT JMP DSPTCH ; FINISHED WITH IPL-EXECUTE ROS ; ******** ; TTY LIST FOR ROS CALL LINE. ******** CALIST: .WORD 1 ; THREh . ; QPART LEVEL 04 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP04+QPRT04 ; GET RID OF ENTRYS NOT NEEDED EQPT04 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 5 ; .IFNZ NEQP05 .IFGE PRIP05 ; GEi .IFL $NBLKS-$SB008-$PS008 XXXXXXXX ; 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 = j BLOCKS - 1024 WORDS .IFL $NBLKS-$SB008-$PS008 XXXXXXXX ; 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 .IFGkAD WORD ******** .BYTE SYSTTY ; USE SYSTEM TTY. ******** .BYTE 1 ; EXIT TYPE ******** .WORD 0 ; NO I/O COMPLETE ******** .BYTE 0 ; NO ERROR TASK. ******** .BYTE 1 ; PRIORTY OUTPUT ******** .WORD 0,0 ; lNERATE TIME-SLICED OR FIXED HEA .IFG PRIP05 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORm 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .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 nE PRIP10 $PS010 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .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> ******** .WORD CALINE ; ADDRESS OF BUFFER ******** CALINE: .WORD 2$-1$ ; NUMBER OF CHARACTERS IN BUFFER ******** .WORD 0 ; RESERVED ******** 1$: .ASCII <15><12> ; ******** .ASCII /ROS II-CITGO / ; ******** .ASCII /V02A/ ; **pD QPRT05 ; PUSH ADDRESS .WORD QPRT05 ; PULL ADDRESS .WORD EQPT05 ; BOTTOM OF QUEUE .WORD QPRT05 ; TOP OF QUEUE .BYTE NEQP05-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT05 = . ; QPART LEVEL 05 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,q .ENDC .IFGE PRIP12 $PS012 = 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 r = $NBLKS-$SB012 .ENDC .IFGE PRIP12 $PS012 = 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 s; UPDATE 2/15/73 DISCIO.C04 ; UPDATE 12/18/72 DISCIO.C03 ; UPDATE 12/8/72 DISCIO.C02 ( ADD IFD 0 VALUES) ; UPDATE 11/6/72 DISCIO.C01 ; UPDATE 6/22/72 DISCIO.S35 ; UPDATE 5/5/72 DISCIO.S34 ; UPDATE 5/4/72 DISCIO.S33 ; UPDATE 5/2/72 DISCIO.S32 ; UPDATE 4/10/72 DISCIO.S31 ; UPDATE 4/5/72 DISCIO.S30 ; UPDATE 3/31/72 DISCIO.S29 ; t0 .=4*NEQP05+QPRT05 EQPT05 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 6 ; .IFNZ NEQP06 .IFGE PRIP06 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP06 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION Bu .IFL PRIP14 $PS014 = $NBLKS-$SB014 .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 v.ENDC .ENDC .IFL PRIP14 $PS014 = $NBLKS-$SB014 .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 w UPDATE 3/24/72 DISCIO.S28 ; UPDATE 3/23/72 DISCIO.S27 ; UPDATE 3/17/72 DISCIO.S26 ; UPDATE 3/13/72 DISCIO.S25 ; UPDATE 2/24/72 DISCIO.S24 ; ; UPDATE 2/16/72 DISCIO.S23 ; UPDATE 2/16/72 DISCIO.S22 ; UPDATE 1/27/72 DISCIO.S21 ; UPDATE 1/24/72 DISCIO.S20 ; UPDATE 1/20/72 DISCIO.S19 ; UPDATE 1/19/72 DISCIO.S18 ; UPDATE 1/18/72 xYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT06 ; PUSH ADDRESS .WORD QPRT06 ; PULL ADDRESS .WORD EQPT06 ; BOTTOM OF QUEUE .WORD QPRT06 ; TOP OF QUEUE .BYTE NEQP06-1 ; MAX. ENTRIES -1 y; PRI 15 TOO LARGE .ENDC .ENDC .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 = 1 ; INPUT z XXXXXXXX ; PRI 15 TOO LARGE .ENDC .ENDC .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 = 1 ; INPU{ DISCIO.S17 ; UPDATE 1/12/72 DISCIO.S16 ; UPDATE 12/15/71 DISCIO.S15 ; UPDATE 12/17/71 DISCIO.S14 ; UPDATE 11/30/71 DISCIO.S13 ; UPDATE 11/20/71 DISCIO.S12 ; UPDATE 11/18/71 DISCIO.S11 ; UPDATE 11/15/71 DISCIO.S10 ; UPDATE 11/2/71 DISCIO.S09 ; UPDATE 11/1/71 DISCIO.S08 ; UPDATE 10/8/71 DISCIO.S07 ; UPDATE 9/21/71 DISCIO.S06 ; UP| .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT06 = . ; QPART LEVEL 06 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP06+QPRT06 ; GET RID OF ENTRYS NOT NEEDED EQPT06 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES F} ******** $INITD = 2 ; DISC INITIALIZER ******** $RLDNO = 3 ; ROSLOD ******** $TKCNO = 4 ; TASK @ ******** ; OVERLAYS START HERE ******** ; FOR INPUT AS AN OVERLAY TASK (#5). ******** $FLTNO = 6 ; FILE LIST ******** ~T ******** $INITD = 2 ; DISC INITIALIZER ******** $RLDNO = 3 ; ROSLOD ******** $TKCNO = 4 ; TASK @ ******** ; OVERLAYS START HERE ******** ; FOR INPUT AS AN OVERLAY TASK (#5). ******** $FLTNO = 6 ; FILE LIST DATE 9/16/71 DISCIO.S05 ; UPDATE 9/14/71 DISCIO.S04 ; UPDATE 9/8/71 DISCIO.S03 ; UPDATE 9/3/71-DISCIO ; UPDATE 9/2/71-DISCIO .TITLE DISCIO TABLES ; .IFNZ NDISCS ; DO NOT ASSEMBLE DISCIO IF NDISCS = 0 ; ;*********************************************************************** ;* * ;* DISCIO TABLES OR RPOM LEVEL 7 ; .IFNZ NEQP07 .IFGE PRIP07 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP07 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .END$CPTNO = 7 ; COMPRESS ******** $PCHNO = 8. ; TASK NUMBER OF THE PATCHER TASK. ******** ; #9. RESERVED FOR SYS. DEVELOPMENT. ******** ; #10. - MAXTSK FOR CITGO USE. ******** ; .PAGE ; ; QUEUE SYSGEN EQUATE CARDS ; DPRTY = 1 ;DYNAMIC PRIORITY ASSIGNMENT; IF ; DPRTY = 0, THE ALL TAS ******** $CPTNO = 7 ; COMPRESS ******** $PCHNO = 8. ; TASK NUMBER OF THE PATCHER TASK. ******** ; #9. RESERVED FOR SYS. DEVELOPMENT. ******** ; #10. - MAXTSK FOR CITGO USE. ******** ; .PAGE ; ; QUEUE SYSGEN EQUATE CARDS ; DPRTY = 1 ;DYNAMIC PRIORITY ASSIGNMENT; IF ; * ;* * ;* PROGRAM IDENTIFICATION. DIOTBL * ;* * ;* PURPOSE. DIOTBL CONTAINS ALL TABLES, DATA AND SYSTEM * ;* EQUATE STATEMENTS REQUIRED FOR THE DISCIO SUBROUTINE. * ;* EACH PARAMETER IS DEFINED IN THE COMMENTS FIELD. * ;* C .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT07 ; PUSH ADDRESS .WORD QPRT07 ; PULL ADDRESS .WORD EQPT07 ; BOTTOM OF QUEUE .WORD QPRT07 ; TOP OF QUEUE .BYTE NEQP07-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT07 = . ; QPART LEVEL 07 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,K PRIORITIES ; WILL BE RETRIEVED FROM TASK TABLE. ; IF DPRTY = 1, THEN CALLING PROGRAM ; CAN SELECT PRIORITY. ARG = 1 ;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, DPRTY = 0, THE ALL TASK PRIORITIES ; WILL BE RETRIEVED FROM TASK TABLE. ; IF DPRTY = 1, THEN CALLING PROGRAM ; CAN SELECT PRIORITY. ARG = 1 ;ARGUMENT OPTION; IF ARG = 1, THEN ; THE CALLING PROGRAM CAN PASS AN ; ARGUMENT TO THE QUEUED TASK. RGSAVE = 1 ;REGISTER SAVE OPTION. 1 = SAVE * ;* PROGRAM USAGE. EACH TABLE AND DATA ITEM IS REFERENCED * ;* BY THE DISC I/O SUBROUTINE. THOSE TABLES AND ITEMS * ;* WHICH MAY ALSO BE REFERENCED BY OTHER PROGRAMS WILL * ;* BE DECLARED IN A .DEF STATEMENT * ;* * ;* PROGRAMMER 54 * ;* DATE 0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP07+QPRT07 ; GET RID OF ENTRYS NOT NEEDED EQPT07 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 8 ; .IFNZ NEQP08 .IFGE PRIP08 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP08 ; TIME-SLICE SUSPEND TIMER .WORD 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 ;CREATE ASSEMBLY ERROR IF DPRTY ISNT .ENDC ;ZERO OR ONE. .IFG DPRTY-1 ; XXXXXXXX ; .ENDC ; .IFL ARG ; XXXXXXXX ;CREATE ASSEMBLY ERR ;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 ;CREATE ASSEMBLY ERROR IF DPRTY ISNT .ENDC ;ZERO OR ONE. .IFG DPRTY-1 ; XXXXXXXX ; .ENDC ; .IFL ARG ; XXXXXXXX * ;* REVISION * ;* * ;*********************************************************************** ; .DEF FILE,DOD,NODREQ,CPRSIP .DEF DQFRST,DQLAST,NDPRTY,HPRIRQ,CALLED .DEF COMPID,CDIHDR,CDIFCN,CDEND .CSECT ; .PAGE ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; ; ; THE FOLLOWING TABLE IS1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT08 ; PUSH ADDRESS .WORD QPRT08 ; PULL ADDRESS .WORD EQPT08 OR IF ARG IS NO .ENDC ;ZERO OR ONE .IFG ARG-1 ; XXXXXXXX ; .ENDC ; .IFL RGSAVE ; XXXXXXXX ;CAUSE AN ASSEMBLY ERROR IF .ENDC ;RGSAVE ISN'T 0 OR 1 .IFG RGSAVE-1 ; XXXXXXX ; .ENDC ; $ABMES = 1 ; ONLY 1 ABORT MESSAGE BUFFER ****** ;CREATE ASSEMBLY ERROR IF ARG IS NO .ENDC ;ZERO OR ONE .IFG ARG-1 ; XXXXXXXX ; .ENDC ; .IFL RGSAVE ; XXXXXXXX ;CAUSE AN ASSEMBLY ERROR IF .ENDC ;RGSAVE ISN'T 0 OR 1 .IFG RGSAVE-1 ; XXXXXXX ; .ENDC ; $ABMES = 1 ; ONLY 1 ABORT MESSA= USED TO FIND THE NUMBER ; OF PRIORITY LEVELS IN EACH DISC QUEUE ; NDPRTY = . .BYTE NDPRT1 ; PRIORITIES DISC 1 ; .IFG NDISCS-1 .BYTE NDPRT2 ; PRIORITIES DISC 2 .ENDC ; .IFG NDISCS-2 .BYTE NDPRT3 ; PRIORITIES DISC 3 .ENDC ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; .EVEN .PAGE ; ; THE FOLLOWING TABLES, DQ(N)1ST AND DQ(N)LST WHERE N = DISC ; ; BOTTOM OF QUEUE .WORD QPRT08 ; TOP OF QUEUE .BYTE NEQP08-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT08 = . ; QPART LEVEL 08 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP08+QPRT08 ; GET RID OF ENTRYS NOT NEEDED EQPT08 = .-2 ; END OF T** .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX ; ABRT .ENDC ; PSTP ; THE SYSGEN PARAMETER '$PST CONTROLS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; = 0 ROS GE BUFFER ******** .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX ; ABRT .ENDC ; PSTP ; THE SYSGEN PARAMETER '$PST CONTROLS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; PC S RT ******** . R0E ORSTRE; R0+,P)(S V MO ******** . UT OEDNTOU CLLTIE ER HITWA; $ ,1R0 B SO : 1$ ******** . SE UTOR TEUNCOT ENRRCUE THT GE; 0 ,RNTLCDE V MO ******** R0F OUEAL VHE TVESA; P)(S,-R0 V MO Y:LADE ******** ; ******** . OPLOC/SE M141. D.EARHVE OECMS1 .0 9: NGMI9HIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 9 ; .IFNZ NEQP09 .IFGE PRIP09 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP09 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER PSTP ; = +1 USER PSTP ; 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 ; = 0 ROS PSTP ; = +1 USER PSTP ; 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 TI; ******** D.EESPD NEIGES D'SIT; ******** ESCHEA RREWARDHAE THN HE WEDOVEM RBEL IL WND ARYRAPOEM TLYONS IIT; ******** . METIH UGNO EENIV GISR TOCALOALE THE URNS ITOD SE UISY LADE; ******** ; ; ET SC.C.H IT WRNTURE; PC S RT: 30S0QT NDOU FOR F 0 =OT NC.C.T SE; R2 T TS: 20S0QT E ATOGRRTEIND AN ; 10S0QT BR q .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT09 ; PUSH ADDRESS .WORD QPRT09 ; PULL ADDRESS .WORD EQPT09 ; BOTTOM OF QUEUE .WORD QPRT09 ; TOP OF QUEUE .BYTE NEQP09-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .END 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 ; PERIOD, "$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 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 ; PERIOD, "$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 COUNTRYNT EXTNEO TMPBU; + 2)(R+,2)(R P CM: 15S0QT OKS-YE; 20S0QT E BN E IVCT ARYNT EIS; RQRTAB,#2)(R PBCM NO; 15S0QT E BN T? INDFI; 2)(RSKVT,OR1 PBCM ) ET SDYEALR AC.C. (ORRR-EITT GO; 30S0QT Q BE ERRKMAL AI TOR FSTTE; R5 C IN RYNT EANT GE; 5 ,R2)(R V MO: 10S0QT ) ET SDYEALR AC.C. (RNTURE- T ISEXT N'ESDO; 30S0QT Q BE S ESDRADT ARQPT GE; 2 ,R3)(RmC QPRT09 = . ; QPART LEVEL 09 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP09+QPRT09 ; GET RID OF ENTRYS NOT NEEDED EQPT09 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 10 ; .IFNZ NEQP10 .IFGE PRIPTHE 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. ; THUS, FOR "RES4", ITS PERIOD WOULD BE: ; RES4*RES3*RES2*RES1*RES0 --- IN UNITS OF THE BASE PERIOD RES0 = 1 ; 1/60 SEC ******** RES1 = 1 ; 1/60 SEC ******** RES2 = ER 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. ; THUS, FOR "RES4", ITS PERIOD WOULD BE: ; RES4*RES3*RES2*RES1*RES0 --- IN UNITS OF THE BASE PERIOD RES0 = 1 ; 1/60 SEC ******** RES1 = 1 ; 1/60 SEC TNARQP V MO EXND IRDWOE ATULLCCA; R3 L AS TYRIIOPRT GE; 3 ,RR0 V MO . = CHSRQT ; R.TEISEG RRKWOA S IR5 ; Y.TREND IN F'TDNULCO, 0 =R2 ; F IT.XI EON2 RONT SEE BLLWIS DECON IOITNDCO ; EXND IRDWOY ITORRI P =R3 ; RYNT ERTPA Q'SSKTAF OSSREDD A =R2 ; ERMBNUK AS T =R1 ; Y ITORRI P =R0 N:URET RONUP ; ERMBNUK AS T =R1 ; i10 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP10 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT AL 2 ; 1/30 SEC. ******** RES3 = 5 ; 1/6 SEC. ******** RES4 = 2 ; 1/3 SEC. ******** RES5 = 3 ; 1.0 SEC. ******** RES6 = 5 ; 5.0 SEC RES7 = 2 ; 10.0 SEC RES8 = 3 ; 30.0 SEC RES9 = 2 ; 60.0 SEC RES10 = ******** RES2 = 2 ; 1/30 SEC. ******** RES3 = 5 ; 1/6 SEC. ******** RES4 = 2 ; 1/3 SEC. ******** RES5 = 3 ; 1.0 SEC. ******** RES6 = 5 ; 5.0 SEC RES7 = 2 ; 10.0 SEC RES8 = 3 ; 30.0 SEC RES9 = 2 Y ITORRI P =R0 : RYNT EONUP ; EDLLCAN HE WNTDESIREE OR CBET NOD EE NSKTA ; Y.TRENS K'AS TICIFECSPA R FO ; E BLTAT ARQPS Y'ITORRI PEDFICIPE S ACHARSEL IL WCHSRQT ; ; ; RNTURE; PC S RT TYRIIOPR; R0 R AS R BEUM NSKTA; R1 R AS ERSTGIRES ESDRADY TRENN ILTSURE; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R4)(RRTQPHI SBBI R2 R CL X DEIND OR WTYRIeLO .WORD QPRT10 ; PUSH ADDRESS .WORD QPRT10 ; PULL ADDRESS .WORD EQPT10 ; BOTTOM OF QUEUE .WORD QPRT10 ; TOP OF QUEUE .BYTE NEQP10-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT10 = . ; QPART LEVEL 10 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0, 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 ;MAX RESOLUTION: #0 AT 10 MILLISECONDS SECR = 5 ; 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 ;MAX RESOLUTION: #0 AT 10 MILLISECONDS SEIOPR; R0 L AS Y ITORRI P'SSKTA; 0 ,R4)(RORRIHP VBMO: 10PRFQ R DEEA HAMGRRO POFS ESDRADT GE; 4 ,R1)(RERADHE V MO X DEIND OR WO. NSKTAE UTMPCO; R1 L AS . = TNPRFQ ; D OAGL SOMFRD LEAL CSOAL ; R DEEA HAMGRRO POFS ESDRAD= R4 ; Y TRENT ARQPS K'AS TOFS ESDRAD= R2 ; ERMBNUK AS=TR1 ; TYRIIOPRS K'AS=TR0 ; N:URET RONUP ; ERMBNUK AS=TR1 ; D LEAL Ca0,0,0,0,0,0,0,0,0 .=4*NEQP10+QPRT10 ; GET RID OF ENTRYS NOT NEEDED EQPT10 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 11 ; .IFNZ NEQP11 .IFGE PRIP11 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP11 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; ;"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 TIME-SLICE IS ; NORMALLY THE INTERRUPT PERIOD, AS SPECIFIED BY "TICRES".CR = 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 TIME-SLICE IS ; NORMALLY THE INTERRUPT PERIOD,ENWHT ENIDES RRECOK AS T ; ONTIMAORNF IRYNT ERTPA QTEIAPRROPP AHE TNDFIL IL WTNPRFQ ; ; ; RNTURE; PC S RT R BEUM NSKTAO TCKBA; R5 R AS T ENIDES RRECOT NOT SE; 5)(RERADHE R CL R DEEA H'SSKTAT OUL-OL ROFS ESDRAD; 3 ,R5)(RERADHE V MO EXND IRDWOR BEUM NSKTA; R5 L AS K AS TUT-OLLRON ONGKIOR WOMRPT SE; ) R5T(TATST,ACVY#O VBMO SKTAT OUL-OL ROFR BEUM NSKTA; R5),]DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT11 ; PUSH ADDRESS .WORD QPRT11 ; PULL ADDRESS .WORD EQPT11 ; BOTTOM OF QUEUE .WORD QPRT11 ; TOP OF ; IF A MULTIPLIER FOR THIS INTERRUPT IS DESIRED TO PRODUCE A COARSER ; BASE PERIOD, USE THE PARAMETER "$ABMPL" TO SPECIFY THE RATIO DESIRED. TICRES = 60. ; TOD CLOCK TICKS PRE SECOND ******** $ABMPL = 6 ; TOD CLOCK BASE MULTIPLER ******** TODINT = 100 ; T-O-D CLOCK INTERRUPT VECTOR ******** TIMINT = 0 ; NO SEPERATE TIMER CLOCK ******** STLINT = 0 ; 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 = 60. ; TOD CLOCK TICKS PRE SECOND ******** $ABMPL = 6 ; TOD CLOCK BASE MULTIPLER ******** TODINT = 100 ; T-O-D CLOCK INTERRUPT VECTOR ******** TIMINT = 0 ; NO SEPERATE TIMER CLOCK ******** STLINT R1K(TSOV SBBI R5 R CL SKTAN -ILLROR FOS ESGRRO PINO I/T SE; 2)(RP,OI#I SBBI T ESQUREF OATST CVESA; ) R2,(77#1 CBBI K AS TUT-OLLRO ; ; OR FIPIO= T TAPS& 1 = T TACST SE; 1)(RP,OI!I00#2 VBMO . = UPLSRO ; K AS TUT-OLLROF OERMBNUK AS T =R5 ; K AS TUT-OLLROF OSSREDD AERADHEK AS T =R3 ; R2D AN1 RTHWIG ONALN URET RONUP: TENO ; ) STUEEQ(RSKTAN -ILLROF OY QUEUE .BYTE NEQP11-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT11 = . ; QPART LEVEL 11 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP11+QPRT11 ; GET RID OF ENTRYS NOT NEEDED EQPT11 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKENO STALL ALARM ******** STLREG = 167000 ;ADDRESS FOR STALL ALARM RESET CLKENB = 177546 ; ADDRESS FOR CLOCK ENEBL ******** TODBIT = 100 ; BIT TO TURN ON THE T-O-D CLOCK ******** TIMBIT = 0 ; NO TIMER CLOCK ******** STLBIT = 0 ;BIT TO ENABLE STALL ALARM INTERRUPT $TMSLC = 0 ; NO TIME SLICING IN THIS SYSTEM ******** = 0 ; NO STALL ALARM ******** STLREG = 167000 ;ADDRESS FOR STALL ALARM RESET CLKENB = 177546 ; ADDRESS FOR CLOCK ENEBL ******** TODBIT = 100 ; BIT TO TURN ON THE T-O-D CLOCK ******** TIMBIT = 0 ; NO TIMER CLOCK ******** STLBIT = 0 ;BIT TO ENABLE STALL ALARM INTERRUPT $TMSLC = 0 ; NO TIME SLICING IN THISSREDD ARYNT ERTPA Q =R2 ; K AS TUT-OLLROF OSSREDD ARYNT ERTPA Q =R1 ; H:IT WUTKOOC LERND UEDLLCAE BSTMUE INUTROUB SISTH ; IPIO= T TAPS : SKTAN -ILLRO ; 0 = S ESDRADR DEEA HLEAB TSKTA ; CTYAOV= T TATS ; IPIO= T TAPS& 1 = T TACS K:AS TUT-OLLRO ; S.SKTAN -ILLROD AN ; UT-OLLROE THF OS'TUTA SSKTA SHE TESAREPPRP UET SUT-OLLRO ; ; C ND.E ; ET SESOD CONUR .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 12 ; .IFNZ NEQP12 .IFGE PRIP12 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP12 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE $SWATZ = 20. ;NUMBER OF ENTRIES IN SCHEDULER "WAIT" TABLE $TWATZ = 20. ;WORDS IN TIMER'S "WAIT" TABLE .PAGE ; $DTAPE = 1 ; DECTAPE OPTION ; NDISCS = 1 ; DISC OPTION AND NUMBER OF CONTROLLERS ; $DDSDC = 1 ; USE DDS DICS ; ACTSIZ = 1 ; ONLY ONE AUTH. CODE. ******** .IFL 20.-ACTSIZ XXXXXXXX ; ERROR-ALLOCATE MORE LOCATIONS S SYSTEM ******** $SWATZ = 20. ;NUMBER OF ENTRIES IN SCHEDULER "WAIT" TABLE $TWATZ = 20. ;WORDS IN TIMER'S "WAIT" TABLE .PAGE ; $DTAPE = 0 ; NO DECTAP ******** ; NDISCS = 1 ; DISC OPTION AND NUMBER OF CONTROLLERS ; $DDSDC = 1 ; USE DDS DICS ; ACTSIZ = 1 ; ONLY ONE AUTH. CODE. ******** .IFL 20.-ACTSIZ XXXXTIDION CTHWIN URET RND A; PC S RT S STUEEQ ROF# T ENEMCRDE; 0)(RQPEQNR CBDE S ESDRADH US PXTNET SE; ) R2D(LAUL,PR3 V MO: 10LQPL E EUQUF OOP TTOT SERED-DI; 3 ,R2)(RUEFQTO V MO 'TDNDI; 10LQPL T BL NDOUARP RA WOR FSTTE; ) R2E(QUOF,BR3 P CM D OR WNDCOSET GE; R5+,3)(R V MO L EL CIDVOD AN ; + 3)(R R CL RDWOT RSFIT GE; 4 ,R3)(R V MO SSREDD ALLPUT Q .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT12 ; PUSH ADDRESS .WORD QPRT12 ; PULL ADDRESS .WORD EQPT12 ; BOTTOM OF QUEUE .WORD QPRT12 ; TOP OF QUEUE .BYTE NEQP12-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT12 = . ; QPART LEVEL 12 BEGIN XXXXXXXX ; FOR AUTHORIZATION CODES .ENDC ; .IFNZ NDISCS DRESDI = 0 ; NO DISR RESIDENT DIRECTORIES ******** .IFL 3-NDISCS XXXXXXXX ; PRESENTLY CODED FOR MAX. OF 3 DISCS .ENDC ; NDPRT1 = 5 ; NO. OF PRIORITY LEVELS IN DISC 1 QUEUES .IFL NDPRT1-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID1 = 256. XXXX ; ERROR-ALLOCATE MORE LOCATIONS XXXXXXXX ; FOR AUTHORIZATION CODES .ENDC ; .IFNZ NDISCS DRESDI = 0 ; NO DISR RESIDENT DIRECTORIES ******** .IFL 3-NDISCS XXXXXXXX ; PRESENTLY CODED FOR MAX. OF 3 DISCS .ENDC ; NDPRT1 = 5 ; NO. OF PRIORITY LEVELS IN DISC 1 QUEUES .IFL NDPRT1-3 XXXXXXXX ; MUST BE ATGE; 3 ,R2)(RADLLPU V MO . = QPLLPU ; C SE U.141= E IM TSECAT RSWO ; . UEUE QTYMP EANG INLLPUT NOS MESUAS ; T.XI EONUPP QQRE NONT SES DECON IOITNDCO ; D VESAT NO- R TEISEG RRKWOA S AR3S SE UNETIOUBRSU ; T ENUMRG AEDTTMINSRA T =R5 ; T TAPSC/O/KNAS T =R4 N:URET RONUP ; SSREDD ARTPA Q =R2 ; C MINADYE BOT NSTMUY-ITORRI PRTPA Q =R0 ; T SEE BSTMUT OUK-OC LTYRIIOPR : RYNT EONUP M .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP12+QPRT12 ; GET RID OF ENTRYS NOT NEEDED EQPT12 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 13 ; .IFNZ NEQP13 .IFGE PRIP13 ; GENERATE TIME-SLICED OR FIXED HEA .IFG ; MAX. # OF FILE ID ON DISK #1. ******** ; .IFG NDISCS-1 NDPRT2 = 7 ; NO. OF PRIORITY LEVELS IN DISC 2 QUEUES .IFL NDPRT2-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID2 = 500. ; MAXIMUM ID ON DISC 2 .ENDC ; .IFG NDISCS-2 NDPRT3 = 3 ; NO. OF PRIORITY LEVELS IN DISC 3 QUEUES .IFL NDPRT3-3 XXXXXXXX ; MUST BE AT L LEAST THREE .ENDC MAXID1 = 256. ; MAX. # OF FILE ID ON DISK #1. ******** ; .IFG NDISCS-1 NDPRT2 = 7 ; NO. OF PRIORITY LEVELS IN DISC 2 QUEUES .IFL NDPRT2-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID2 = 500. ; MAXIMUM ID ON DISC 2 .ENDC ; .IFG NDISCS-2 NDPRT3 = 3 ; NO. OF PRIORITY LEVELS IN DISC 3 QUEUES .IFL ; L.EL CDSOI VND AUEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T AOFT OUY TRENN AL'UL'PL IL WQPLLPU ; ; ; RNTURE; PC S RT S DECO. NDCOP UM BND ATSESQUREF OO. NMPBU; 0)(RQPEQNR CBIN DEMAT US JRYNT EOFS ESDRAD; R3+,P)(S V MO S ESDRADH US PXTNET SE; ) R2D(HAUS,PR3 V MO: 10HQPS E EUQUF OOP TTOT SERED-DI; 3 ,R2)(RUEFQTO V MO 'TDNDI; 10HQPS T BL D UNRO AAPWRR FOT ES T; ) IPRIP13 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT13 ; PUSH ADDRESS .WORD EAST THREE .ENDC MAXID3 = 500. ; MAXIMUM ID ON DISC 3 .ENDC $SYSFL = NDISCS+5 ; NO. OF SYSTEM FILE ID'S IN ROS ; ; COMPID,FTDIR,CDIMGE,CDIHDR,TTFILE .IFZ DRESDI NCFILE = $SYSFL+MAXOVR+20. ; NO. OF CORE RES. FILE IDS ******** .ENDC .IFNZ DRESDI NCFILE = NDISCS+$SYSFL+40. ; NO. OF CORE RESIDENT ID'S .ENDC ; NDPRT3-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID3 = 500. ; MAXIMUM ID ON DISC 3 .ENDC $SYSFL = NDISCS+5 ; NO. OF SYSTEM FILE ID'S IN ROS ; ; COMPID,FTDIR,CDIMGE,CDIHDR,TTFILE .IFZ DRESDI NCFILE = $SYSFL+MAXOVR+20. ; NO. OF CORE RES. FILE IDS ******** .ENDC .IFNZ DRESDI NCFILE = NDISCS+$SYSFL+40. ; NO. OF CORE RESIDENT IR2E(QUOF,BR3 P CM L EL COFD OR WNDCOSED AN ; )+R3,(R5 V MO LLCEF ORDWOT RSFIT SE; )+R3,(R4 V MO K ACSTN OVESA; P)(S,-R3 V MO SSREDD ASHPUT GE; 3 ,R2)(RADSHPU V MO . = QPSHPU ; ECUS .242= E IM TSECAT RSWO ; . LLFUT NOE EUQUS MESUAS ; T XI EONUPP QQRE NONT SES DECON IOITNDCO ; DEMAT US JSSREDD ARYNT ERTPA Q =R3 ; D VEERESPRS ERSTGIREE OVAB N:URET RONUP ; E QPRT13 ; PULL ADDRESS .WORD EQPT13 ; BOTTOM OF QUEUE .WORD QPRT13 ; TOP OF QUEUE .BYTE NEQP13-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT13 = . ; QPART LEVEL 13 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP13+QPRT13 ; GET RID OF E ******** ; ; INCLUDING DOD'S AND SYSTEM FILES NCRWDS = NCFILE*5 ; NO. OF CORE RESIDENT WORDS NEEDED ; ; FOR CORE DIRECTORY NCRLOC = NCRWDS+NCRWDS ; NO. OF LOCATIONS IN CORE RESIDENT ; ; DIRECTORY ERRPRT = 1 ; PRINT-OUT DISC ERROR MESSAGES OPTION CHKPTC = 0 ; CHECKPOINT CAPABILITY OPTION- ; D'S .ENDC ; ******** ; ; INCLUDING DOD'S AND SYSTEM FILES NCRWDS = NCFILE*5 ; NO. OF CORE RESIDENT WORDS NEEDED ; ; FOR CORE DIRECTORY NCRLOC = NCRWDS+NCRWDS ; NO. OF LOCATIONS IN CORE RESIDENT ; ; DIRECTORY ERRPRT = 1 ; PRINT-OUT DISC ERROR MESSAGES OPTION CHKPTC = 0 T ENUMRG AEDTTMINSRA T =R5 ; T TAPS/ /CO KNAS=TR4 ; SSREDD ARTPA=QR2 ; C MINADYE BOT NSTMUY-ITORRI PRTPA=QR0 ; ET SBET US MUT-OCKLOY ITORRI P : RYNT EONUP ; . UEUE QLEAB TRTPA Q'STYRIIOPRD XEFI ; R OEDICSLE-IM T ATOINY TRENN AH'US'PL IL WQPSHPU ; ; T ARXP!FLCMS$T Z FN.I ; PC S RT E INMBCO; 3 ,RR5 D AD 1 E YT BINE ATOLIS; R3 ANTRYS NOT NEEDED EQPT13 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 14 ; .IFNZ NEQP14 .IFGE PRIP14 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP14 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J ;******MODEL 45 ONLY FXPART = 0 ; NO FIXED PARTIONS ******** $SGMNT = 0 ; NO OVERLAY SEGMENTS IN THIS SYSTEM. ******** $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM $IDMAX = 256. ; LARGEST FILE ID IN SYSTEM. ******** ; ; MUST BE >= MAXID1,2,3,..,N $FTDRL = $FTMAX*3/64.+1 ; NO. OF SECTORS IN FILE TYPE DIRECTORY $ROSFW = NDIS ; CHECKPOINT CAPABILITY OPTION- ; ;******MODEL 45 ONLY FXPART = 0 ; NO FIXED PARTIONS ******** $SGMNT = 0 ; NO OVERLAY SEGMENTS IN THIS SYSTEM. ******** $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM $IDMAX = 256. ; LARGEST FILE ID IN SYSTEM. ******** ; ; MUST BE >= MAXID1,2,3,..,N $FTDRL = $FTMAX*3/64.+1 ; NORBCL R3 ABSW K OCBLT ARSTT GE; 3 ,R0)(ROLPOAL VBMO S CKLO BOF. NOT GE; R5),R3E(IZBS SBBI R5 R CL . = DD3AFB ERSTGIREK OR W =R5 ; SB1=E YT,BOB N =E0YT BS.ESDRAD3 B =R3 ; N:URET RONUP ; . NOK AS T =R3 ; TYRIIOPR =R0 ; 3. BTO ; T ESQURER FOK AS T AOFS ESDRAD3 BNDFIL IL WDD3AFB ; ; **********************************************************************;*= & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT14 ; PUSH ADDRESS .WORD QPRT14 ; PULL ADDRESS .WORD EQPT14 ; BOTTOM OF QUEUE .WORD QPRT14 ; TOP OF QUEUE .BYTE NEQP14-1 ; MAX. ENTRIES -1 CS+$SYSFL*5 ; NO. OF WORDS IN ROS FILES $CDISZ = NCRWDS-$ROSFW/64.+1 ; NO. OF SECTORS IN CORES ; ; DIRECTORY IMAGE $TKFL1 = TASMAX*5 ; # BYTES IN REG TASK TABLES $TKFL2 = TASMAX-MXTASK*3 ; # BYTES IN EXT OF TASK TABLES $TKFLN = $TKFL1+$TKFL2+2+3/4*2 ; # WORDS IN ALL TASK TABLES ; + 'TASKS' + EVEN NUMBER OF ; WORDS FOR . OF SECTORS IN FILE TYPE DIRECTORY $ROSFW = NDISCS+$SYSFL*5 ; NO. OF WORDS IN ROS FILES $CDISZ = NCRWDS-$ROSFW/64.+1 ; NO. OF SECTORS IN CORES ; ; DIRECTORY IMAGE $TKFL1 = TASMAX*5 ; # BYTES IN REG TASK TABLES $TKFL2 = TASMAX-MXTASK*3 ; # BYTES IN EXT OF TASK TABLES $TKFLN = $TKFL1+$TKFL2+2+3/4*2 ; # WORDS IN ALL TASK TABLES ; + 'TASKS' + EVEN NUMBE * ;* * ESINUTROUB STYLITI UOMRP ;* * ;* **********************************************************************;* 10OM CTSE.C E AG.P ; C ND.E K TSEL RIN ; ; TELEMPCOO I/R FOT AI WND AITEX; 20VBQO P JM USATSTD TEESQURET ORABT SE; ) 9 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT14 = . ; QPART LEVEL 14 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP14+QPRT14 ; GET RID OF ENTRYS NOT NEEDED EQPT14 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPODISCIO $TKFNS = $TKFLN/64.+1 ; NO. OF SECTORS IN TASK TABLE FILE ; ******** $ROSIZE = 320. ; SIZE OF ROS BOOT AREA ******** ; ******** ; ; THE FOLLOWING IS FOR DISC RESIDENT DIRECTORIES ; DIRAD1 = $ROSIZE ; DISC1 DISK DIR. AFTER BOOT AREA ******** ; ; R OF ; WORDS FOR DISCIO $TKFNS = $TKFLN/64.+1 ; NO. OF SECTORS IN TASK TABLE FILE ; ******** $ROSIZE = 320. ; SIZE OF ROS BOOT AREA ******** ; ******** ; ; THE FOLLOWING IS FOR DISC RESIDENT DIRECTORIES ; DIRAD1 = $ROSIZE ; DISC1 DISK DIR. AFTER BOOT ARER1T(TATSQ,REBT#A VBMO: 10A0TS E ACSPE OR CSHUINQLIRE; XXXXQN P JM D TEORABS=TUTA SSKTAT SE; ) R1T(TATSD,RTAB#T VBMO S YE; 10A0TS E BN S?ESGRRO PINO I/E AV HSKTA; 1)(RATSTIO TBTS UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO T OUNTRI PORRR E ; P TYRR,EPC R JS R FO ; P)(S,-R5 V MO R BEUM NSKTAT SE; ) R5K(TSRR,ER1 V MO E ULOD MORRR EOFS ESDRAD; 5M LEVEL 15 ; .IFNZ NEQP15 .IFGE PRIP15 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP15 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC LEAVES ROOM FOR 20K ROS BOOT .IFZ DRESDI DIRLN1 = 0 ; ZERO LENGTH .ENDC .IFNZ DRESDI DIRLN1 = MAXID1-1/12.+1 ; DISC DIRECTORY 1 LENGTH .IFG NDISCS-1 DIRAD2 = 0 ; DISC RESIDENT DIRECTORY ADDRESS DISC 2 DIRLN2 = MAXID2-1/12.+1 ; DISC DIRECTORY 2 LENGTH .ENDC .IFG NDISCS-2 DIRAD3 = 0 ; DISC RESIDNET DIRECTORY ADDRESS DISC 3 DIRLN3 = MAXID3-1/12.+1 A ******** ; ; LEAVES ROOM FOR 20K ROS BOOT .IFZ DRESDI DIRLN1 = 0 ; ZERO LENGTH .ENDC .IFNZ DRESDI DIRLN1 = MAXID1-1/12.+1 ; DISC DIRECTORY 1 LENGTH .IFG NDISCS-1 DIRAD2 = 0 ; DISC RESIDENT DIRECTORY ADDRESS DISC 2 DIRLN2 = MAXID2-1/12.+1 ; DISC DIRECTORY 2 LENGTH .ENDC .IFG NDISCS-2 DIRAD3 = 0 ; DISC RESIDNET R5D,MOSE#T V MO XXXXQNR FO. GSRER PERO PIN ; ; ONTIMAORNF IRTPA QNDFI ; N RTQP,FPC R JS N CAE WSOR BEUM NSKTAT GE; R1),R2K(TSOV SBBI R1 R CL RYNT EUEUE QOFD EA HOFS ESDRAD; R2),R1E(QUHD V MO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS V MO H TCWI SCERAR METIT SE; 1)(RCERATM C IN . = RTABTS ; ; 9 OM CTSE.C LCMS$T Z FN.I E AG.P1 .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT15 ; PUSH ADDRESS .WORD QPRT15 ; PULL ADDRESS .WORD EQPT15 ; BOTTOM OF QUEUE .WORD QPRT15 ; TOP OF QUEUE .BYTE NEQP15-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT15 = . ; QPART LEVEL 15 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,; DISC DIRECTORY 3 LENGTH .ENDC .ENDC ; ; THE FOLLOWING CONTAINS THE FILE TYPE STATUS DESCRIPTORS ; FOR EACH FILE TYPE. ; $FD000 = 41 ; FILE TYPE 0, LOG UNIT 1, NO COMPRESSION $FD001 = 1 ; FILE TYPE 1, LOG UNIT 1 $FD002 = 1 ; FILE TYPE 2, LOG UNIT 1 $FD003 = 1 ; FILE TYPE 3, LOG UNIT 1 $FD004 = 1 ; FILE TYPE 4, LOG UNIT 1 $FD005 = 1 DIRECTORY ADDRESS DISC 3 DIRLN3 = MAXID3-1/12.+1 ; DISC DIRECTORY 3 LENGTH .ENDC .ENDC ; ; THE FOLLOWING CONTAINS THE FILE TYPE STATUS DESCRIPTORS ; FOR EACH FILE TYPE. ; $FD000 = 41 ; FILE TYPE 0, LOG UNIT 1, NO COMPRESSION $FD001 = 1 ; FILE TYPE 1, LOG UNIT 1 $FD002 = 1 ; FILE TYPE 2, LOG UNIT 1 $FD003 = 1 ; FILE TYPE 3, LOG UNIT 1 $FD004 = 1 HRPC . ERLLCAE THO TRNTURED AN; 2)(R P JM HRPC K.ACSTN OD.ADT IS L/O IUT PENTH; P)(S,-R1 V MO HRPC K.ACSTF OOP TONR PST PUD AN; P)(SR,PS V MO HRPC . R2O NT IDD ARNTURET PU S.ORRR ENO; 2 ,RP)(S V MO $:10 HRPC R.LENDHAR ROERE THO TGOD ANR PSE TH; 40HAPC BR HRPC THWI. DD ARNTUREE ACPLRE. RR EAND HA; P)(SR,PS V MO HRPC -0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP15+QPRT15 ; GET RID OF ENTRYS NOT NEEDED EQPT15 = .-2 ; END OF THIS LEVEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; GENERATE QPARTN TABLES FOR RPOM LEVEL 16 ; .IFNZ NEQP16 .IFGE PRIP16 ; GENERATE TIME-SLICED OR FIXED HEA .IFG PRIP16 ; TIME-SLICE SUSPEND TIMER .WORD 1 ; FILE TYPE 5, LOG UNIT 1, NO CHECK PONT******** $FD006 = 1 ; FILE TYPE 6, LOG UNIT 1 $FD007 = 1 ; FILE TYPE 7, LOG UNIT 1 $FD008 = 1 ; FILE TYPE 8, LOG UNIT 1 $FD009 = 1 ; FILE TYPE 9, LOG UNIT 1 .IFL 10.-$FTMAX XXXXXXXX ; ONLY SET UP FOR 10. FILE TYPES .ENDC $OVTYP = 5. ; FILE TYPE FOR OVERLAY TASKS ; ; FILE TYPE SIZE TABLE - IN SECTOR; FILE TYPE 4, LOG UNIT 1 $FD005 = 1 ; FILE TYPE 5, LOG UNIT 1, NO CHECK PONT******** $FD006 = 1 ; FILE TYPE 6, LOG UNIT 1 $FD007 = 1 ; FILE TYPE 7, LOG UNIT 1 $FD008 = 1 ; FILE TYPE 8, LOG UNIT 1 $FD009 = 1 ; FILE TYPE 9, LOG UNIT 1 .IFL 10.-$FTMAX XXXXXXXX ; ONLY SET UP FOR 10. FILE TYPES .ENDC $OVTYP = 5. ; FILE TYPE FOR OV . OKS IT; $ 10 Q BE HRPC RDWOR ROERE THT GE; 2 ,R1)(RRWERIO V MO HRPC ; 4 ,R4.#1 D AD HRPC . RDWOA AT DSTIR FTOT INPOO TR4T SE; 4 ,RR0 V MO HRPC ; R3F,BUCH#P B SU HRPC . ONTISIPOL MAOR NTO3 RUPT SE; 3 ,RR0 V MO HRPC . ERFFBUA AT DOFS ESDRADT GE; R0),R1D(HROT-IDRADDB V MO: UBHS) ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE 20!TRES ; OPTION BYTE, J & TRES .WORD 0 ; RESET/TIMER .WORD TSABRT ; TIMER COMPLETE SUBROUTINE .WORD 0 ; TIME-OUT RACE FLAG .ENDC .WORD 0 ; PARTITION ADDRESS. 0= NOT ALLO .WORD QPRT16 ; PUSH ADDRESS .WORD QPRT16 ; PULL ADDRESS .WORD EQPT16 S ; .IFNZ DRESDI $FS000 = DIRAD1+DIRLN1+$FTDRL+$CDISZ+$TKFNS .ENDC .IFZ DRESDI $FS000 = $FTDRL+$CDISZ+$TKFNS .ENDC $FS001 = $ROSIZE ; BOOT AREA ******** $FS002 = 0 ; ******** $FS003 = 0 ; ******** $FS004 = 0 ; ******** $FS0ERLAY TASKS ; ; FILE TYPE SIZE TABLE - IN SECTORS ; .IFNZ DRESDI $FS000 = DIRAD1+DIRLN1+$FTDRL+$CDISZ+$TKFNS .ENDC .IFZ DRESDI $FS000 = $FTDRL+$CDISZ+$TKFNS .ENDC $FS001 = $ROSIZE ; BOOT AREA ******** $FS002 = 0 ; ******** $FS003 = 0 ; ******** $FS004 = 0 PC HRPC ; HRPC '.40HAPC 'TOD SEAS PISL RONTCOO ERNZNOS IITF I. SSREDD ARNTURE; HRPC E THE OREF BCKTA SHE TONT PUS ISTLIO I/K IS DHE TOFS ESDRADE TH; HRPC O ER ZIST IIF D.KEECCHS IRDWOR ROERO I/K IS DISTH, LYALONTIDIAD; HRPC . ERFFBUA AT DIND OR WTADAT RSFIF OSSREDD A =R4 ; HRPC R.LEAITRN IONTISIPO' ALRMNO ' =R3 ; HRPC . %; BOTTOM OF QUEUE .WORD QPRT16 ; TOP OF QUEUE .BYTE NEQP16-1 ; MAX. ENTRIES -1 .BYTE 0 ; ALLOCATION SWITCH .ENDC QPRT16 = . ; QPART LEVEL 16 BEGIN .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0,0,0 .=4*NEQP16+QPRT16 ; GET RID OF ENTRYS NOT NEEDED EQPT16 = .-2 ; END OF THIS LE05 = 1719. ; TASK FILE AREA - FORCE TYPE 9 TO 16X 2/7/73 $FS006 = 0 ; ******** $FS007 = 0 ; FOR CITGO BATCH IS WITH DATA - TYPE 9.******** $FS008 = 0 ; ******** $FS009 = 0 ; ******** ; $DSIZE = 8192. ; NUMBER OF SECTORS ON DISK. ******** ; ; ******** $FS005 = 1719. ; TASK FILE AREA - FORCE TYPE 9 TO 16X 2/7/73 $FS006 = 0 ; ******** $FS007 = 0 ; FOR CITGO BATCH IS WITH DATA - TYPE 9.******** $FS008 = 0 ; ******** $FS009 = 0 ; ******** ; $DSIZE = 8192. ; NUMBER OF RDWOR ROERO CIIS D =R2 ; HRPC ERFFBUA AT DIOSCDIF OSSREDD A =R0 UTTPOU ; HRPC T IS LIOSCDIF OSSREDD A =R1 T PUIN ; HRPC . RSTEISEG RNGWILOOL FHE TUPT SEO TEDUSS IB,SUCH PE,INUTROUB SISTH; HRPC ; HRPC UEUE QOS RTOINK AS TUT PGOD AN; 10OVGO P JM HRPC ; R0),R3-( V MO HR!VEL'S QPART T .WORD -1 ; TAIL MARKER .ENDC ; ; ; ; ; THE FOLLOWING TABLE CONTAINS THE ADDRESS OF THE QPART'S ; FOR EACH PRIORITY LEVEL. 0 = DOESN'T EXIST ; QPARTN = .-2 ; TAKE CARE OF ILLEGAL LEVEL 0 .WORD QPRT01,QPRT02 .WORD QPRT03,QPRT04 .WORD QPRT05,QPRT06 .WORD QPRT07,QPRT08 .WORD QPRT09,QPRT10 .WORD QPRT11,QPRT12 .WORD QPRT13,QPRT14 ******** $ALOD1 = $FS000+$FS001+$FS002+$FS003+$FS004 $ALOD2 = $FS005+$FS006+$FS007+$FS008+$FS009 ; ******** ; ******** ; NOTE: TYPE 9. MUST START ON A 16K SECTOR BOUNDARY FOR RETENION. ******** ; ******** $FS009 = SECTORS ON DISK. ******** ; ******** $ALOD1 = $FS000+$FS001+$FS002+$FS003+$FS004 $ALOD2 = $FS005+$FS006+$FS007+$FS008+$FS009 ; ******** ; ******** ; NOTE: TYPE 9. MUST START ON A 16K SECTOR BOUNDARY FOR RETENION. ******** ; PC ; R1),R3-( V MO HRPC ; R2),R3-( V MO HRPC S ERSTGIREE ORSTRE; R4),R3-( V MO: 10HFPC HRPC. DD ASTLIF OID RET G -CKTA SUPN EACL; + P)(S T TS: 00HFPC HRPC ; HRPC NEDOL ALN HE WREHE; HRPC  .WORD QPRT15,QPRT16 .=QPARTN+2+NPRIOR+NPRIOR ; GET RID OF ENTRIES NOT NEEDED ; ; ; GENERATE DUMMY SYMBOLS FOR NON-EXISTENT QPART TABLES .IFZ NEQP01 QPRT01 = 0 .ENDC .IFZ NEQP02 QPRT02 = 0 .ENDC .IFZ NEQP03 QPRT03 = 0 .ENDC .IFZ NEQP04 QPRT04 = 0 .ENDC .IFZ NEQP05 QPRT05 = 0 .ENDC .IFZ NEQP06 QPRT06 = 0 $DSIZE-$ALOD1-$ALOD2 ; NUMBER OF DATA REA SECTORS. ******** ; ******** .IFL $DSIZE-$ALOD1-$ALOD2 ; ******** XXXXXXXX ; ONLY 8192 SECTORS AVAIL.- 1/2 MEGAWORDS .ENDC ; ; FORCE THIS IDS TO BE IN SYSTEM. ******** $BCHID = NDISCS+$SYSFL+1 ; FILE ID FOR BATCH FILE $BCHTP = 9. ; BATCH FILE ******** $FS009 = $DSIZE-$ALOD1-$ALOD2 ; NUMBER OF DATA REA SECTORS. ******** ; ******** .IFL $DSIZE-$ALOD1-$ALOD2 ; ******** XXXXXXXX ; ONLY 8192 SECTORS AVAIL.- 1/2 MEGAWORDS .ENDC ; ; FORCE THIS IDS TO BE IN SYSTEM. ******** $BCHID = NDISCS+$SYSFL+1 ; FILE ID FO ; HRPC . SSCERO PGOD AN; 20HBPC BR HRPC RDWON AICHT GE; 5 ,R4)(RINHAPC V MO $:30 HRPC . RDWOL UL FTOH TCPAY PLAP; ) R2,(R5 V MO $:20 HRPC ; $ 30 BR HRPC . LYONE YT B ATOH TCPAY PLAP- S YE; ) R2,(R5 VBMO HRPC . NO; $ 20 Q BE HRPC  .ENDC .IFZ NEQP07 QPRT07 = 0 .ENDC .IFZ NEQP08 QPRT08 = 0 .ENDC .IFZ NEQP09 QPRT09 = 0 .ENDC .IFZ NEQP10 QPRT10 = 0 .ENDC .IFZ NEQP11 QPRT11 = 0 .ENDC .IFZ NEQP12 QPRT12 = 0 .ENDC .IFZ NEQP13 QPRT13 = 0 .ENDC .IFZ NEQP14 QPRT14 = 0 .ENDC .IFZ TYPE. '******* $RASIZ = 200. ; NO. OF ENTRIES IN USERS SYMBOL TABLE ; ; IN RASM ; ; NOTE: 4 WORDS/ENTRY $LSDSZ = 1000. ; NO. OF WORDS RESERVED FOR LOADERS ; ; SYMBOL DIRECTORY (LSD) ; ; NOTE: $LSDSZ MUST BE >/= TO ; $MXOBJ*7/2 (5 WO-DS PE- SY4B6L#D $MXOBJ = 50. R BATCH FILE $BCHTP = 9. ; BATCH FILE TYPE. '******* $RASIZ = 200. ; NO. OF ENTRIES IN USERS SYMBOL TABLE ; ; IN RASM ; ; NOTE: 4 WORDS/ENTRY $LSDSZ = 1000. ; NO. OF WORDS RESERVED FOR LOADERS ; ; SYMBOL DIRECTORY (LSD) ; ; NOTE: $LSDSZ MUST BE >/= TO ; ? CHAT PTEBYA T IIS; ) R4G(LAPFH,PCYT#B T BI $:10 HRPC . SKTAF OSSREDD ASEBAD ADS-YE; 5 ,R3)(RTRDPSH D AD HRPC NO; $ 10 Q BE HRPC H?TCPAE BLTACALOREA T IIS; ) R4G(LAPFH,PCEL#R T BI HRPC H.TCPAE THF ORYMOME; 2 ,R3)(RTRDPSH D AD HRPC L CASIHY PINS ESDRADE THE UTMPCO; 2 ,R4)(ROCPL V MO HRPC E.LUVAH TCPAT GE; 5 ,RNEQP15 QPRT15 = 0 .ENDC .IFZ NEQP16 QPRT16 = 0 .ENDC ; .PAGE ; ; THE FOLLOWING TABLE CONTAINS THE NUMBER OF (REQUESTS -1) ; PENDING IN EACH PRIORITY LEVEL'S QPART. ; NREQQP = .-1 ; TAKE CARE OF ILLEGAL LEVEL 0 .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .BYTE -1.,-1.,-1.,-1. .=NREQQP+1+NPRIOR ; GET RID OF ENTRYS NOT NEEDED ; MAX NO. OF OBJECT MODULES TO BE ******** ; ; LINKED INTO ANY GIVEN LOAD ; ; MODULE. .ENDC ; MATCHES .IFNZ NDISCS .PAGE ; ; TTYIO SYSGEN PARAMETERS ; NTTYS = 1 ; JUST 1 TTY IN SYSTEM ******** ;IN SYSTEM SYSTTY = 0 ;LOGICAL UNIT NO. OF SYSTEM $MXOBJ*7/2 (5 WO-DS PE- SY4B6L#D $MXOBJ = 50. ; MAX NO. OF OBJECT MODULES TO BE ******** ; ; LINKED INTO ANY GIVEN LOAD ; ; MODULE. .ENDC ; MATCHES .IFNZ NDISCS .PAGE ; ; TTYIO SYSGEN PARAMETERS ; NTTYS = 1 ; JUST 1 TTY IN SYSTEM ******** ;IN SYSTEM SYSTTY = 0 4)(RUEALPV V MO HRPC D OREC RCHAT POF0 D OR WTOT INPO; 4 ,R3)(RRDSW D AD HRPC . R4& , R3, R2, R0S ERSTGIRE; HRPC P TUSED ANO I/N ORSROERK ECCH; B SUCH,PPC R JS: 00HCPC HRPC ; HRPC N. IADRES IORCTSEA AT D AERFT AREHE; HRPC ; HRPC  .EVEN ; .PAGE ; ; THE FOLLOWING ARE THE ADDRESSES OF THE DEVICE REGISTERS ; FOR THE PERIPHERAL HARDWARE ALLOCATOR B3. ; .IFNZ $CORAL B3FR = 162024 ; FUNCTION REGISTER B3AR = 162022 ; ADDRESS REGISTER(ANSWER REGISTER) B3RR = 162020 ; REQUEST REGISTER .ENDC ; BSYB3 = 100000 ; BUSY MASK FOR B3 (TST USED TO CHECK) 1/23/73 SRCHB3 = 000060 ; SEARCH MAS ;TTY DEVICE MSGBUF = 0 ;MESSAGE BUFFERING OPTION: IF 1, ;DISC MESSAGE BUFFERING VERSION IS ;ASSEMBLED. IF 0, CORE VERSION IS ;ASSEMBLED. DISCUN = 1 ;LOGICAL UNIT NO. OF DISC TO BE USED ;FOR MESSAGE BUFFERING DBUFSZ = 1 ;NO. OF 64 WORD DISC SECTORS ALLOCATED ;FOR BUFFERI;LOGICAL UNIT NO. OF SYSTEM ;TTY DEVICE MSGBUF = 0 ;MESSAGE BUFFERING OPTION: IF 1, ;DISC MESSAGE BUFFERING VERSION IS ;ASSEMBLED. IF 0, CORE VERSION IS ;ASSEMBLED. DISCUN = 1 ;LOGICAL UNIT NO. OF DISC TO BE USED ;FOR MESSAGE BUFFERING DBUFSZ = 1 ;NO. OF 64 WORD DISC SECTOO.CIIS DTON URET RS.ORRR ENO; PC S RT HRPC K.ACSTE THN OSR PHE TOFD RIT GE; + P)(S T TS: 40HBPC HRPC . ITE DLAN HGO- R ROER; 50HAPC E BN HRPC USATSTR ROERE THK ECCH; 1)(RRWERIO T TS HRPC Y.ADREALK ACSTN OSSREDD ASTLI; HRPC ORCTSE' TADA ' AADRE; O CIIS,DPC R JS HRPC D EA RERFT AOR FVESAD AN; ) R3D(WR K FOR B3 BOX ; ; NOTE: MINIMUM SEARCH ALLOB3 = 000010 ; ALLOCATE MASK FOR B3 BOX DEALB3 = 000004 ; DE-ALLOCATE MASK FOR B3 BOX SERRB3 = 200 ; SEARCH ERROR MASK FOR B3 (TSTB USED) 1/23/73 ; ; COULDN'T FIND AN AREA ERROR .IFZ $CORAL .REF B3FR,B3AR,B3RR .REF ALLOC,SEARCH,DALLOC ; ******** .ENDC ; NG OF ONE MESSAGE ON DISC FILESZ = 20*DBUFSZ ;NO. OF SECTORS PER FILE NTRYS = 3 ;NO. OF TRYS TO OUTPUT A CHARACTER ;TO TTY TTOTIM = 15. ; 250MS (1/4 SEC.) COUNT FOR TTY ******** ;OUTPUT TIMERS TTITIM = 15. ;SECOND COUNT FOR TTY INPUT/OPERATOR ;RESPONSE TIMERS TTWTIM = 240. ;SECOND COUNT FOR WAIT TIMER NWRS ALLOCATED ;FOR BUFFERING OF ONE MESSAGE ON DISC FILESZ = 20*DBUFSZ ;NO. OF SECTORS PER FILE NTRYS = 3 ;NO. OF TRYS TO OUTPUT A CHARACTER ;TO TTY TTOTIM = 15. ; 250MS (1/4 SEC.) COUNT FOR TTY ******** ;OUTPUT TIMERS TTITIM = 15. ;SECOND COUNT FOR TTY INPUT/OPERATOR ;RESPONSE TIMERS TTWTIM,SR4 V MO HRPC S ESDRADD OR WVETILARET GE; R4.,#7 HCAS HRPC ; R4 R CL HRPC R.DEEA HERFFBUO I/O NT I #ORCTSET PU; 0)(R0.,1R4 V MO HRPC R4O NT I #ORCTSET GE; R4.,#9 HCAS HRPC ; R4 R CL HRPC ESCHAT PE)OR(MO N -NENO; 00HFPC Q BE: 20HBPC HRPC )  .PAGE ; ; THE FOLLOWING INFORMATION IS THE DYNAMIC CORE ; SPACE DESCRIPTORS. CORE BLOCKS (ONE GRANULE OF CORE ; SPACE) ARE OF SIZE 2**N AND ARE MULTIPLES OF DISC ; SECTORS. ; BCPOOL: .WORD ENDDYN ; BEGINNING ADDRESS OF CORR POOL ******** ; ; SET UP BY INITIALIZATION ECPOOL: .WORD ENDDYN ; ENDING ADDRESS OF CORE POOL ; ; SET UP BY INITIALIZATION BSZ256 = UCH = 5 ;NO. OF CHARS TO BE OUTPUT FOR ;WARMUP OF A TTY UNIT EOMCH = 33 ;ALTERNATE EOM CHAR (ALT KEY) EOMOPT = 0 ;EOM CHAR OPTION WHERE ; 1 = EOM IS FOLLOWED BY CR AND LF ; 0 = NOT FOLLOWED BY CR AND LF EOMPRT = 0 ;EOM PRINT OPTION WHERE ; 1 = EOM IS PRINTED  = 240. ;SECOND COUNT FOR WAIT TIMER NWUCH = 5 ;NO. OF CHARS TO BE OUTPUT FOR ;WARMUP OF A TTY UNIT EOMCH = 33 ;ALTERNATE EOM CHAR (ALT KEY) EOMOPT = 0 ;EOM CHAR OPTION WHERE ; 1 = EOM IS FOLLOWED BY CR AND LF ; 0 = NOT FOLLOWED BY CR AND LF EOMPRT = 0 ;EOM PRINT OPTION WHERE NY AIF (RDWON AICHT GE; 5 ,R4)(R V MO HRPC . ADHET IS LINHA CCHAT POF; 4 ,RR2 D AD HRPC . EXND IRDWOO NT IKEMAD AN; R2 L AS HRPC O. NSKTAT GE; 2 ,R3)(RKNASST V MO HRPC S.ORCTSE' TADA 'OR FATTH; HRPCO TD.ADE ETPLOM C/O IGEANCH; ) R1D(HROT-IMPCOIO0,C0CH#P V MO HRPC . R4& , R3, R2, R0S ERSTGIRE;  1 ; BLOCK SIZE 256 WORD OPTION ; ; IF SET THEN BLOCK # IN HIGH ; ; ORDER BYTE = # OF WORDS. ; ; DOUBLE FOR NO. LOCATIONS. .IFZ BSZ256 ; ; IF NOT SET USE SHFTCT TO ; ; CALCULATE # WORDS BY SHIFTING SHFTCT = 0 ; SHIFT COUNT USED TO CALCULATE # .ENDC ;  ; 0 = EOM IS NOT PRINTED EOLCH = 12 ;CHAR BEING USED FOR END OF LINE ON ;TTY INPUT ECHOCH = 40 ;ECHO CHAR -- CHAR OUTPUT FOR NO ECHO MRCH = 25 ;MESSAGE RESTART CHAR (CONTROL U) LINELN = 72. ;LINE LENGTH: NO. OF CHARS TO BE ;TYPED IN A LINE .PAGE ;* ;* G E N E R A L S Y S T E M E Q U A T E S ;* $1145 = 0  ; 1 = EOM IS PRINTED ; 0 = EOM IS NOT PRINTED EOLCH = 12 ;CHAR BEING USED FOR END OF LINE ON ;TTY INPUT ECHOCH = 40 ;ECHO CHAR -- CHAR OUTPUT FOR NO ECHO MRCH = 25 ;MESSAGE RESTART CHAR (CONTROL U) LINELN = 72. ;LINE LENGTH: NO. OF CHARS TO BE ;TYPED IN A LINE .PAGE ;* ;* G E N E R A HRPC P TUSED ANO I/N ORSROERK ECCH; B SUCH,PPC R JS: 00HBPC HRPC ; HRPC . IND EA R 0ORCTSEN HE WREHE; HRPC ; HRPC . ERDLAN HORRR E'SOMRPO TGOD AN; 50OVGO BR HRPC ; R0),R3-( V MO HRPC  ; WORDS FROM # BLOCKS ; ; ; ALLOCATION POOL TABLE. CONTAINS START BLOCK IN ; CORE POOL OF SPECIFIED PRIORITY CORE SPACE ; ; CURRENTLY SET UP FOR 3K OF DYNAMIC CORE ; UP TO 12 SEGMENTS ALPOOL = .-1 ; TAKE CARE OF ILLEGAL LEVEL 0 .BYTE $SB001 .BYTE $SB002 .BYTE $SB003 .BYTE $SB004 .BYTE $SB005 .BYTE $SB006 .BYTE $SB007 .BYTE $SB008 .BYTE $SB009  ;1 = 11/45 0 = 11/20 HICORE = 24576.+24576. ; TOP OF CORE IN SYSTEM ******** $RASM = 1 ;1 = ASSEMBLER IS INCLUDED, AND THEREFORE ;CREAD MUST INSERT , AFTER ;ASSEMBLER READ REQUESTS .PAGE ;********************************************************************** ;* ** ;* IN THE FOLLO L S Y S T E M E Q U A T E S ;* $1145 = 0 ;1 = 11/45 0 = 11/20 HICORE = 24576.+24576. ; TOP OF CORE IN SYSTEM ******** $RASM = 1 ;1 = ASSEMBLER IS INCLUDED, AND THEREFORE ;CREAD MUST INSERT , AFTER ;ASSEMBLER READ REQUESTS .PAGE ;********************************************************************** ;* ; R1),R3-( V MO HRPC S ERSTGIREE ORSTRE; R2),R3-( V MO HRPC ORRR EAD B -NO; R4),R3-( V MO: 50HAPC HRPC . ESCHAT PNO- K OISL AL- S YE; 10HFPC Q BE HRPC E?IL FNTTAISEXON NITS WA- R ROER; 7 ,#R2 P CM: 40HAPC HRPC . IOO CIIS DTON URET RGO- S ORRR ENO; 40HBPC Q BE HRPC . USATSTR ROERE THT GE; 2 ,R1)(RWDRRHE V MO  .BYTE $SB010 .BYTE $SB011 .BYTE $SB012 .BYTE $SB013 .BYTE $SB014 .BYTE $SB015 .BYTE $SB016 .=ALPOOL+1+NPRIOR ; GET RID OF ENTRIES NOT NEEDED .EVEN ; .CSECT .DYSIN ; ; DYNAMIC STORAGE INITIALIZATION. ; CALLED BY IPL TO INITIALIZE STORAGE ALLOCATOR TO SIZE ; OF DYNAMIC CORE AND RESERVE FIXED OR TIME-SLICED PARTITIONS ; IF NECESSARY. ; NOTE: WHEN B3 DEFI WING EQUATES, A ZERO MEANS DO NOT INCLUDE ** ;* THE OPTION. ** ;* ** ;* C A R D R E A D E R E Q U A T E S ** ;* ** ;********************************************************************** NCR = 0 ; NO CARD READERS IN CITGO ********  ** ;* IN THE FOLLOWING EQUATES, A ZERO MEANS DO NOT INCLUDE ** ;* THE OPTION. ** ;* ** ;* C A R D R E A D E R E Q U A T E S ** ;* ** ;********************************************************************** NCR = 0 HRPC Y.ADREALK ACSTN OSSREDD ASTLI; HRPC 3.E YP TITEXH IT WITD EA RGO; O CIIS,DPC R JS HRPC R.TOEC SLLFU; ) R4,(4.#6 V MO HRPC ROZER TOEC SADRE; + 4)(R R CL HRPC S.RDWOM TEYS S 3HE TIPSK; 4 ,R#6 D AD HRPC . ONTINCFUD EA R &ORCTSED IEIFECSP; + 4)(R R CL HRPC #.D ILEFI R.FEUF BNED, CLEAN-UP MEANING OF BLOCK 0 ; .REF DYNSIZ DYSINI = . MOV #255.,B3RR ; ALLOCAT ALL USUABLE BLOCK AT FIRST. ******** MOV #ALLOB3,B3FR ; START B3 ALLOCATION. ******** .IFZ $CORAL ; ONLY IF SOFTWARE ******** JSR PC,ALLOC ; ******** .IFF ; ******** JSR PC .IFNZ NCR ; ******** BIN = 0 ; DON'T INCLUDE BINARY MODE BCD = 1 ;1 = INCLUDE ALPHANUMERIC MODE, 0 = DONT TTYSW = 1 ;1 = SWITCH INPUT TO TTY ON COMMAND INEBC = 0 ; 1=PROVIDE OFR INTERNAL EBCDIC CODE EXEBC = 0 ; 1=PROVIDE FOR EXTERNAL EBCDIC CODE ; (029 CARD CODE) $RES = 1  ; NO CARD READERS IN CITGO ******** .IFNZ NCR ; ******** BIN = 0 ; DON'T INCLUDE BINARY MODE BCD = 1 ;1 = INCLUDE ALPHANUMERIC MODE, 0 = DONT TTYSW = 1 ;1 = SWITCH INPUT TO TTY ON COMMAND INEBC = 0 ; 1=PROVIDE OFR INTERNAL EBCDIC CODE EXEBC = 0 ; 1=PROVIDE FOR EXTERNAL EBCDIC CODE /O IUPT SE; + 4)(RD,HIAC#P V MO HRPC . STLIS M'PO RIN. DD AVESA; ) R1D(ADDB,HR4 V MO HRPC . STLIO I/N IUT PTO; R4F,BUCH#P D AD HRPC R.FEUF B/O IOFS ESDRADE UTMPCO; 4 ,RR3 V MO HRPC ADRE0 R TOEC S ; HRPCF OTELEMPCOO I/R FOS ESDRADP UET S ;1)(RMPOCHI0,B0CH#P V MO HRPC O. NSKTAE THS IISTH: TENO; )+R3,(R4 V MO ,DELAY ; TEMP. WAIT TIL B3 UP TO SPP .ENDC ; ******** MOV DYNSIZ,R0 ; GET # OF BYTES IN DYNAMIC AREA. ******** ASR R0 ; SHIFT INTO # OF WORDS. ******** CLRB R0 ; CHANGE TO # OF BLOCKS. (256 WORDS/ ******** MOV R0,R1 ; BLOCK.) SAVE FOR LATER. ******** ASL R0 ; # OF BYTES OF USUABL; TIMER RES. FOR CREAD (=10.0 MSEC.) $100MS = 10. ;MULTIPLE USING $RES FOR 100 MS $500MS = 50. ;MULTIPLE USING $RES FOR 1/2 SECOND $1SEC = 100. ;MULTIPLE USING $RES FOR 1 SECOND MXTIME = 180. ;MAX SECONDS TO WAIT FOR OPR RESPONSE ; ; NOTE: THE ABOVE TIMES DO NOT NEED TO BE EXACT. SELECT THE ; PROPER VALUES TO GET AS CLOSE AS POSSIBLE TO THE ; TIMES STATES. ; ; ; C / R  ; (029 CARD CODE) $RES = 1 ; TIMER RES. FOR CREAD (=10.0 MSEC.) $100MS = 10. ;MULTIPLE USING $RES FOR 100 MS $500MS = 50. ;MULTIPLE USING $RES FOR 1/2 SECOND $1SEC = 100. ;MULTIPLE USING $RES FOR 1 SECOND MXTIME = 180. ;MAX SECONDS TO WAIT FOR OPR RESPONSE ; ; NOTE: THE ABOVE TIMES DO NOT NEED TO BE EXACT. SELECT THE ; PROPER VALUES TO GET AS CLOSE AS POSSIBLE TO THE HRPC ; )+R3,(R2 V MO HRPC ; )+R3,(R1 V MO HRPC M PO RBYD DEEE NRSTEISEG RVESA; )+R3,(R0 V MO: 00HAPC HRPC CHAT PTEBY; 000010 = CHTPBY HRPC CHAT PVETILARE; 010000 = CHLPRE HRPC E LUVAH TCPA; 6 = UEALPV HRPC S AGFLH E AREA. ******** CMP R0,#$DYNSZ ; HAS THE MIN. REQUEST BEEN MET? ******** BHIS 10$ ; YES. ******** HALT ; NO. ******** 10$: MOV R0,DYNSIZ ; RESET TO TRUE BYTE SIZE OF DYNAMIC AR.12/24/72 SUB R0,BCPOOL ; SET BEG. BYTE ADD. OF DYNAMIC AREA. 12/24/72 SWAB R1 ; R1 NOW HAS SB=0, NOB=#OF USUABLE BLOCK V E C T O R I N F O R M A T I O N ; ; CR1 = 2 ;LOGICAL UNIT NO. FOR CR # 1 CR2 = 2 ;LOGICAL UNIT NO. FOR CR # 2 CR3 = 0 ;LOGICAL UNIT NO. FOR C/R # 3 CR4 = 0 ;LOGICAL UNIT NO. FOR C/R # 4 ; ; C / R D E V I C E I / O A D D R E S S E S ; CRS.1 = 777160 ;CARD READER STATUS - C/R # 1 CRB1.1 = 777162 ;CARD READER BINARY DATA BUFFER CRB2.1 =  ; TIMES STATES. ; ; ; C / R V E C T O R I N F O R M A T I O N ; ; CR1 = 2 ;LOGICAL UNIT NO. FOR CR # 1 CR2 = 2 ;LOGICAL UNIT NO. FOR CR # 2 CR3 = 0 ;LOGICAL UNIT NO. FOR C/R # 3 CR4 = 0 ;LOGICAL UNIT NO. FOR C/R # 4 ; ; C / R D E V I C E I / O A D D R E S S E S ; CRS.1 = 777160 ;CARD READER STATUS - C/R # 1 CRB1.1 = 777162TCPA; 4 = G LAPF HRPC H TCPAF OONTICALO; 2 = OCPL HRPC RDWON AICH; 0 = INHAPC HRPC GSLA F &TSSEFF ORDCOREH TCPA; HRPC ; HRPC ERFFBUO I/F ORTTA STOT INPO; . +2 = UFHBPC HRPCEC RCHAT POFS ESDRADE IVATEL RTOT INPO; 0 = RDSW HR******** TST B3FR ; B3 STILL BUSY FROM TOTAL ALLOCATION? 1/23/73 BPL 20$ ; NO - ALL IS OK. 1/23/73 HALT ; NO - IT MUST BE HUNG. ******** 20$: MOV R1,B3RR ; SET TO DEALLOCATE ONLY THE USUABLE ******** MOV #DEALB3,B3FR ; BLOCKS. START THE DEALLOCATION. ******** .IFZ $CORAL JSR PC,DALLOC ;  777164 ;CARD READER COMPRESSED DATA ADDRESS ; CRS.2 = 777160 ;CARD READER STATUS - C/O # 2 CRB1.2 = 777162 ;CARD READER BINARY DATA CRB2.2 = 777164 ;CARD READER COMPRESSED DATA ; CRS.3 = 0 ;CAR READER STATUS - C/R # 3 CRB1.3 = 0 ;CARD READER BINARY DATA BUFFER CRB2.3 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRS.4 = 0 ;CARD READER STATUS - C/R #  ;CARD READER BINARY DATA BUFFER CRB2.1 = 777164 ;CARD READER COMPRESSED DATA ADDRESS ; CRS.2 = 777160 ;CARD READER STATUS - C/O # 2 CRB1.2 = 777162 ;CARD READER BINARY DATA CRB2.2 = 777164 ;CARD READER COMPRESSED DATA ; CRS.3 = 0 ;CAR READER STATUS - C/R # 3 CRB1.3 = 0 ;CARD READER BINARY DATA BUFFER CRB2.3 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRPC ERMBNUK AS TTOT INPO; . -2 = KNASST HRPC ERADHEK AS TOF. DD ATOT INPO; . -6 = TRDPSH HRPC R3F OF; HRPC ; HRPC S.HETCPAG ININTAON CLEFIR FOD ILEFI; 9. = IDCHPA HRPC ; HRPC M PO R  ******** .IFF ; ******** JSR PC,DELAY ; TEMP. TILL ALLOCATOR UP TP DPEED ******** .ENDC CLR R0 BITB (R0)+,-(R0) ; DELAY BITB (R0)+,-(R0) BITB (R0)+,-(R0) BITB (R0)+,-(R0) TST B3FR ; B3 STILL BUSY? 1/23/73 BPL DYSI10 ; NO 1/23/73 !4 CRB1.4 = 0 ;CARD READER BINARY DATA BUFFER CRB2.4 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRVC.1 = 230 ; C/R # 1 INTERRUPT VECTOR CRVC.2 = 230 ;C/R # 2 INTERRUPT VECTOR CRVC.3 = 0 ;C/R # 3 INTERRUPT VECTOR CRVC.4 = 0 ;C/R # 4 INTERRUPT VECTOR .ENDC ; ******** .PAGE ;***************************"S.4 = 0 ;CARD READER STATUS - C/R # 4 CRB1.4 = 0 ;CARD READER BINARY DATA BUFFER CRB2.4 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRVC.1 = 230 ; C/R # 1 INTERRUPT VECTOR CRVC.2 = 230 ;C/R # 2 INTERRUPT VECTOR CRVC.3 = 0 ;C/R # 3 INTERRUPT VECTOR CRVC.4 = 0 ;C/R # 4 INTERRUPT VECTOR .ENDC ; INE OD CHRTCPAY BEDUSS TEUAEQ; HRPC ; HRPC ) 4. 6OFL TATO -#1D WRA AT(D ; HRPC ) DSOR WO.(N ; HRPC ) O. NORCTSE. EL(R ; HRPC E)USM TEYS(S ; HRPC E)USM TEYS(S ; HRPC $ HALT ; YES-HALT INIT.************ DYSI10: RTS PC ; RETURN TO IPL ; .CSECT .PAGE ; ; THE FOLLOWING LIST IS THE PARTITION HEADER THAT IS ; DYNAMICALLY SET IN A PARTITION BY RPOM. ; PRTHDR = . .WORD 0 ; PARTITIONS B3 ADDRESS-SET DYNAMICALLY .WORD 1 ; PRIOR & IQPART .WORD 0 ; WORK WORD ; ; DISC I/O PARAMETER LIST ; .W%******************************************* ;* ** ;* L I N E P R I N T E R E Q U A T E C A R D S ** ;* ** ;********************************************************************** NLP = 1 ;NUMBER OF LINE PRINTERS IN SYSTEM .IFNZ NLP ; ******** NLPRTY = 3 & ******** .PAGE ;********************************************************************** ;* ** ;* L I N E P R I N T E R E Q U A T E C A R D S ** ;* ** ;********************************************************************** NLP = 0 ; NO LINE PRINTERS IN CITGO ******** .IFNZ NLP E)USM TEYS(S ; HRPC G)LACF SN,IOCTUN(F ; HRPC UFHBPC= R LEAITR ; HRPC ERILRA THE TIND VESAE ARS RDWOG INOWLLFOE TH; HRPC ; HRPC . ERILRA THE TOFD OR WNDCOSEE THO TTSINPO3 RATTHD AN; HRPC CKTA SHE TONS ISTLIO CIIS D'SOMRPF OSSREDD AHE TATTHD MESUASS IIT; HRPC. GOIT COF, .WORD 0 ; FILE ID SET DYNAMICALLY .BYTE 1 ; USE FICE DIRECTORY INFORMATION .BYTE 0 ; I/O FCN SET DYNAMICALLY-INITIALLY READ .WORD 0,0,-1. ; THREE SYSTEM WORDS-LAST ONE ALSO TAIL SWITCH ; .PAGE ; ; ROLL-IN ERROR TYPE-OUT MODULE. ERROR #2 ; RIEMOD = . .WORD 1 ; THREAD WORD .WORD 2 ; ERROR NUMBER 2 .WORD 0 ; ARGUME- I/O ADDRESS LPDT.3 = 0 ;L/P # 3 DATA BUFFER I/O ADDRESS LPDT.4 = 0 ;L/P # 4 DATA BUFFER I/O ADDRESS LFRG.1 = 765012 ;L/P # 1 LINE FEED REGISTER LFRG.2 = 765012 ;L/P # 2 LINE FEED REGISTER LFRG.3 = 0 ;L/P # 3 LINE FEED REGISTER LFRG.4 = 0 ;L/P # 4 LINE FEED REGISTER CNT.1 = 765014 ;L/P # 1 WORD COUNT REGISTER CNT.2 = 765014 ;L/P # 2 WORD COUNT RE.BUFFER I/O ADDRESS LPDT.2 = 765010 ;L/P # 2 DATA BUFFER I/O ADDRESS LPDT.3 = 0 ;L/P # 3 DATA BUFFER I/O ADDRESS LPDT.4 = 0 ;L/P # 4 DATA BUFFER I/O ADDRESS LFRG.1 = 765012 ;L/P # 1 LINE FEED REGISTER LFRG.2 = 765012 ;L/P # 2 LINE FEED REGISTER LFRG.3 = 0 ;L/P # 3 LINE FEED REGISTER LFRG.4 = 0 ;L/P # 4 LINE FEED REGISTER CNT.1 = 765014 ;L/P # 1 WORS NTMEIRQUREH TCPAC MINADYE THS NTMELEMP IDECOF OCKLO BISTH; HRPC ; E AG.P ; E ACSPE OR COMFRK AS TVEMORE; XXXXQN P JM ET SUTKOOC LTYRIIOPRE UR SKEMA; SR,PCKLO#P V MO R BEUM NSKTA; R1),R2K(TSOV SBBI R1 R CL SSREDD AERADHEM RAOGPR; 4 ,RR1 V MO TYRIIOPRE UTMPCO; R0 R AS: 60OVGO D LEABIS DSKTAT SE; ) R4T(TATSL,ABDS#T VBMO 0NT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS ; ; TIME-SLICE SUSPEND TIME-OUT ERROR MODULE ; .IFNZ $TMSLC TSEMOD = . .WORD 1 ; THREAD WORD .WORD 4 ; ERROR NUMBER 4 .WORD 0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS .ENDC ; .IFNZ $TMSLC!CHKPTC ; ; ROLL-OUT ERROR TYPE-OUT MODULE. ERROR #1. ; ROEMOD = . .W1GISTER CNT.3 = 0 ;L/P # 3 WORD COUNT REGISTER CNT.4 = 0 ;L/P # 4 WORD COUNT REGISTER CMD.1 = 765016 ;L/P # 1 COMMAND REGISTER CMD.2 = 765016 ;L/P # 2 COMMAND REGISTER CMD.3 = 0 ;L/P # 3 COMMAND REGISTER CMD.4 = 0 ;L/P # 4 COMMAND REGISTER STAT.1 = 765016 ;L/P # 1 STATUS REGISTER STAT.2 = 765016 ;L/P # 2 STATUS REGISTER STAT.3 = 0 2D COUNT REGISTER CNT.2 = 765014 ;L/P # 2 WORD COUNT REGISTER CNT.3 = 0 ;L/P # 3 WORD COUNT REGISTER CNT.4 = 0 ;L/P # 4 WORD COUNT REGISTER CMD.1 = 765016 ;L/P # 1 COMMAND REGISTER CMD.2 = 765016 ;L/P # 2 COMMAND REGISTER CMD.3 = 0 ;L/P # 3 COMMAND REGISTER CMD.4 = 0 ;L/P # 4 COMMAND REGISTER STAT.1 = 765016 ;L/P # 1 STATUS REGISTER STAT.2 GESAES MORRR EUT OPETY; P TYRR,EPC R JS P)(S,-R5 V MO T ENUMRG AINR BEUM NSKTAT SE; ) R5K(TSRR,ER4 V MO E ULOD MORRR EOFS ESDRAD; R5D,MOIE#R V MO . = 50OVGO ; ERMBNUK AS T =R4 ; SSREDD ARYNT ERTPA Q =R2 ; SSREDD AERADHEK AS T =R1 ; EXND IRDWOY ITORRI P =R0 ; N -ILLROY LAEROVG INUR DEDRRCUOCR ROERD EA RSCDI ; ; OMRPM RO FITEXD AN; 15OVGO BR 4ORD 1 ; THREAD WORD .WORD 1 ; ERROR NUMBER 1 .WORD 0 ; ARGUMENT 1- TASK .WORD 0,0,0 ; UNUSED ARGUMENTS ; .ENDC ; .PAGE ; PLOCK = 340 ; PRIORITY LOCKOUT MASK PSR = 177776 ; PROCESSOR STATUS REGISTER ADDRESS ; ; ; PARTITION STATUS VALUES - PSTAT ; EWS = 0. ; ENTRY WAITING SERVICE PARTCK = 1. ; 5 ;L/P # 3 STATUS REGISTER STAT.4 = 0 ;L/P # 4 STATUS REGISTER ; ; LPSIZE = 132. ;NUMBER OF CHARACTERS IN L/P BUFFER LPMXTM = 180. ;MAX NO SECONDS LPRNTR WAITS FOR OPER ACTION LPINH = 4 ;INTERRUPT LEVEL OF L/P $NLINE = 56. ; MAX LINES/PAGE (=CONTROL TAPE. $LPERR = 10. INEBC = 0 ; NO INTERNAL EBCD6= 765016 ;L/P # 2 STATUS REGISTER STAT.3 = 0 ;L/P # 3 STATUS REGISTER STAT.4 = 0 ;L/P # 4 STATUS REGISTER ; ; LPSIZE = 132. ;NUMBER OF CHARACTERS IN L/P BUFFER LPMXTM = 180. ;MAX NO SECONDS LPRNTR WAITS FOR OPER ACTION LPINH = 4 ;INTERRUPT LEVEL OF L/P $NLINE = 56. ; MAX LINES/PAGE (=CONTROL TAPE. ESEUQUS ROF OADHET ASKTAE EUQU; 0)(RSTIR,FR1 V MO: 30OVGO LYEROPPRP USTLAT SE- Y PTEM; ) R0T(AS,LR1 V MO E EUQUY PTEMT NO; 30OVGO E BN D OR WADRETHS K'AS TUPT SE; 1)(R),R0T(RSFI V MO . = 20OVGO ; EDICSLE-IM TORD TEINPOCKHE CAS WIND-LEOL RSKTA ; ; OMRPM RO FITEXD AN; 20VBQO P JM 0 =ATST CND ALEABPTCKN IOITRTPAT SE; 2)(RK,TCAR#P VBMO USATSTS RON IEDEUQUT SE; ) R4T(TATSS,ROIN#Q8PARTITION CHECKPOINTABLE VOLSCK = 2. ; VOL. SUSPENDED AND CHECKPOINTABLE PRTNCK = 3. ; PARTITION NOT CHECKPOINTABLE VLSNCK = 4. ; VOL. S'PNDED AND NOT CHECKPOINTABLE IOIP = 5. ; OVERLAY I/O IN PROGRESS ABRTRQ = 6. ; ABORT REQUESTED ; ; ; ; EQUATES FOR PARTITION HEADER-FROM PARTITION BEGINNING ; NOB = 0. ; NUMBER OF BLOCKS SB = 1. ; :IC ******** .ENDC ; ******** $RES = 1 ; TIMER RES. FOR CREAD (1/60 SEC.) ******** $100MS = 6. ; MULTIPLER TO GET 100MS OFF $RES ******** $500MS = 30. ; MULTIPLER TO GET 1/2 SEC. OFF $RES. ******** $1SEC = 60. ; MULTIPLER TO GET 1 SEC. OFF $RES. ******** $LPERR = 10. .ENDC ; ******** $RES = 1 ; TIMER RES. FOR CREAD (1/60 SEC.) ******** $100MS = 6. ; MULTIPLER TO GET 100MS OFF $RES ******** $500MS = 30. ; MULTIPLER TO GET 1/2 SEC. OFF $RES. ******** $1SEC = 60. ; MULTIPLER TO GET 1 SEC. OFF $RES. ******** VBMO: 15OVGO T ARQPN INDPEUS SL.VOT NOT SE; ) R2G(ARTR R CL R DEEA HSKTAN ITYRIIOPRT SE; ) R1R(IOPR,HR0 VBMO TYRIIOPR; R0 R AS C ND.E ERADHEN INTMEGUART SE; 1)(RRGTA),R2G(ARTR V MO G AR Z FN.I UEUE QOS ROF ; ) R0T(AS,LR1 V MO L AI TATK AS TADRETH; 0)(RSTLA,@R1 V MO 0 =RDWOD EAHR TSKTAT SE; 1)(R R CL C ND.E S YE; 20OVGO I <START BLOCK IQPART = 2. ; INDEX INTO QPART OPRIOR = 3. ; OVERLAY PRIORITY WORKWD = 4. ; WORK WORD IOTHRD = 6. ; I/O THREAD WORD IOEXIT = 9. ; I/O EXIT TYPE IOCOMP = 10. ; I/O COMPLETE ADDRESS IN I/O LIST DBADDR = 18. ; DATA BUFFER ADDRESS OFLEID = 20. ; OVERLAY FILE ID IOFCN = 23. ; I/O FUNCTION ; ; EQUATES ; GO BACK. ******** ; ******** DELCNT = 90. ; THIS GIVES US APRX. 110. MSEC 11/18/72******* ; ******** .ENDC ; MATCH FOR FIRST CONDITIONAL STATEMENT .END BM ? EDICSLE-IM TORD TEINPOCKHE CSKTAS WA; 2)(R TBTS C PTHK!CLCMS$T Z FN.I R BEUM NSKTAE UTMPCO; R4 R AS SSREDD AERADHEM RAOGPRT SE; ) R4R(DEEA,HR1 V MO EXND IRDWOR BEUM NSKTA; R4 L AS UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO: 10OVGO ; HRPC S ONTIDIADR HETCPAE THY BEDORSTREE ARS ERSTGIRE4 E ESTH; HRPC ERMBNUK AS T =R4 ; @FOR PARTITION HEADER-FROM PROGRAM (TASK) HEADER ; SGADDR = -2. ; RELATIVE SEGMENT ADDRESS SGLNGT = -4. ; SEGMENT LENGTH TRLIDX = -6. ; RELATIVE INDEX TO TRAILER HIOFCN = -13. ; I/O FCN FROM PROGRAM HEADER HFLEID = -16. ; OVERLAY FILE ID FROM HEADER HDBADD = -18. ; DATA BUFFER ADDRESS FROM HEADER HERRWD = -22. ; ERROR WD IN I/O LIST FOR ERROR CHECK HIOCMP = A DEVICE NUMBERS, CONTAIN THE DISC PRIORITY QUEUE THREAD ; INFORMATION. IN EACH SET OF TABLES, WORD 0 CORRESPONDS TO ; PRIORITY LEVEL 1(HIGHEST); WORD 1 CORRESPONDS TO PRIORITY ; LEVEL 2; ETC. ; ; DQ(N)1ST POINTS TO THE THREAD WORD OF THE FIRST I/O ; LIST REQUEST IN THE ASSOCIATED PRIORITY LEVEL THREAD. THE ; THREAD WORD OF THAT LIST POINTS TO THE NEXT I/O LIST ; IN THE THREAD; ETC. A ZERO IN THE THREAD WORD SIGNI- ; FIES THE END OF A QUEUE AND ITS B****** .ASCII <15><12> ; ******** .EVEN ; ******** 2$: ; ******** ; ; ; ; .IFNZ OVRLAY ENDDYN = . - 2 ; TOP ADDRESS OF DYNAMIC CORE POOL ; SSTACK = 2000 ; SET UPPER STACK LIMIT. (WORD BEFORE) ******** ; .ENDC ; ; DYNSIZ: .WORD ENDDYN-SSTACK ; HRPC SSREDD ARYNT ERTPA Q =R2 ; HRPC SSREDD AERADHEK AS T =R1 ; HRPC X)DEIND OR W AAS (TYRIIOPRK AS T =R0 ; HRPC S.ERSTGIREE ESTHS REUIEQ RNTOI PISTHD ONEY BDECOE TH; HRPC ; HRPC ; HRPC D-26. ; I/O COMPLETE FROM HEADER HIOEXT = -27. ; I/O EXIT FROM HEADER HIOLST = -30. ; START OF DISC I/O PARAM. LIST HWRKWD = -32. ; WORK WORD FROM HEADER PHPRI = -33. ; PRIOR FROM PROGRAM HEADER HIQPRT = -34. ; IQPART FROM PROGRAM HEADER PHSB = -35. ; SB FROM PROGRAM HEADER PHNOB = -36. ; NOB FROM PROGRAM HEADER ; ; EQUATES FOR PROGRAM HEADER ; EADDRESS IS CONTAINED ; IN DQ(N)LST. ; ; DQ11ST = . .WORD 0,0,0,0,0,0,0,0 ; ADD MORE WORDS IF NDPRT1>8 .=DQ11ST+NDPRT1+NDPRT1 ; GET RID OF ZEROS NOT NEEDED ; DQ1LST = . .WORD DQ11ST,DQ11ST+2. ; ADD MORE .WORD DQ11ST+4.,DQ11ST+6. ; VALUES .WORD DQ11ST+8.,DQ11ST+10. ; IF .WORD DQ11ST+12.,DQ11ST+14. ; NDPRT1>8 .=DQ1LST+NDPRT1+NDPRT1 ; GET RID OF VALUES NOT NEEDED MAX # BYTES AVAIL. FOR DYN. AREA. ******** .END ; 00HAPC BR HRPC . CKTA SON. DD ASTLIT PU; P)(S,-R5 V MO HRPC ; HRPC . CKBA; HRPC MECOL IL WNEDOE 'RWEN HE W. ESCHAT PNY ARE AREHE TIFE SES T'LEW NO; HRPC ; ESSSREDD ALETBCALOREE LVSORE; ) R3,(PC R JS Y TRENR LEAITRO TMPHTHREAD = 0. ; THREAD WORD ENTRY = 2. ; TASK ENTRY POINT INITPT = 4. ; TASK INITIALIZATION ENTRY MAXT = 6. ; TIME-SLICE VALUE SIZE = 8. ; HEADER STACK SIZE (BYTE) HPRIOR = 9. ; CURRENT TASK PRIORITY (BYTE) CTIMER = 10. ; CURRENT TIME-SLICE TIMER VALUE TARG = CTIMER+ARG+ARG ; TRANSMITTED ARGUMENT (OPTIONAL) CPUST = TARG+2 ; I; ; .IFG NDISCS-1 ; THREAD TABLE DEVICE 2 DQ21ST = . .WORD 0,0,0,0,0,0,0,0 ; ADD MORE WORDS IF NDPRT2>8 .=DQ21ST+NDPRT2+NDPRT2 ; GET RID OF ZEROS NOT NEEDED ; DQ2LST = . .WORD DQ21ST,DQ21ST+2. ; ADD MORE .WORD DQ21ST+4.,DQ21ST+6. ; VALUES .WORD DQ21ST+8.,DQ21ST+10. ; IF .WORD DQ21ST+12.,DQ21ST+14. ; NDPRT2>8 .=DQ2LST+NDPRT2+NDPRT2 ; GET RID OF VALUES NOJUPDATE 11/1/71 INPUT.S02 ; UPDATE 10/8/71 INPUT.S01 .TITLE INPUT ;*********************************************************************** ;* * ;* PROGRAM IDENTIFICATION. INPUT, CATALOG NO. ; * ;* OPERATOR INPUT PROCESSING. * ;* * ;* PURPOSE. THIS TASK WILL REQUESBU; + 3)(R T TS R LEAITRF OSSREDD AALTUAC; 3 ,RR1 D AD R LEAITRE THN INDOU FESSSREADE THE LVSOREO TIT ; LLCAD ANY VLSO ROR FTSENUMRG ANGLIAL CUPT SE ; ; . = 05OVGO C ND.E LYOVRST N'DOS-YE; 10OVGO I BM ? EDICSLE-IM TORD TEINPOCKHE CSKTA; 2)(R TBTS TCKPCH FZ.I Y'VLSO'RS ASYP B -NO; 10OVGO Q BE R?LEAITRN IOATOCEL R AREHE TIS; 3 ,R1)(RDXLITR V MOLCPU STATUS REGISTER (BYTE) TASKNO = CPUST+1 ; TASK NUMBER (BYTE) TSTACK = TASKNO+1 ; SAVED STACK POINTER REGSV = TSTACK+2 ; REGISTER SAVE AREA ; ; ; EQUATES FOR TIME-SLICE OR FIXED QPART FROM QPRT'XX' ; ALLOSW = -1. ; ALLOCATION SWITCH MAXENT = -2. ; MAXIMUM ENTRIES -1 TOFQUE = -4. ; TOP OF QUEUE ADDRESS BOFQUE = -6. ; BOTTOM OF QUEUE ADDRESS PULLAD MT NEEDED .ENDC ; ; .IFG NDISCS-2 ; THREAD TABLE DEVICE 3 DQ31ST = . .WORD 0,0,0,0,0,0,0,0 ; ADD MORE WORDS IF NDPRT3>8 .=DQ31ST+NDPRT3+NDPRT3 ; GET RID OF ZEROS NOT NEEDED ; DQ3LST = . .WORD DQ31ST,DQ31ST+2. ; ADD MORE .WORD DQ31ST+4.,DQ31ST+6. ; VALUES .WORD DQ31ST+8.,DQ31ST+10. ; IF .WORD DQ31ST+12.,DQ31ST+14. ; NDPRT3>8 .=DQ3LST+NDPRT3+NDPRT3 ; ND.E CSISNDZ FN.IR FOH TCMA; C ND.E ;; PC S RT RENOIGD ANR TEMERAPAR ROERP PO; S YE; 50OVGO E BN R?CUOCR ROERD EA RSCDID DI; 1)(RWDRRHE T TS S YE; 60OVGO Q BE D?TEESQUREE BRTBO ALLWI; ) R4T(TATSQ,REDQ#O PBCM S YE; 60OVGO Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM R BEUM NSKTAT GE; R4),R2K(TSOV SBBI R4 R CL Y TRENT ARQPS K'AS TOFS ESDRAD; 2 ,R0)(RTNARQP D AD ERADHEN IOITRTPAM RO FRTPAIQT GE; 2 ,R1)(RRTQPHIP= -8. ; PULL ADDRESS PUSHAD = -10. ; PUSH ADDRESS PRTADD = -12. ; PARTITION ADDRESS TIMMOD = -22. ; TIMER MODULE THREAD WORD ; HEADQP = PULLAD ; HEAD OF QUEUE POINTER IS ALSO ; ; PULL ADDRESS ; ; EQUATES FOR TIMER MODULE FROM IT'S THREAD WORD ; RESTIM = 4. ; WORD TO RESET TIMER AT TMRACE = 8. ; TIMER RACE CONDITION SWITCH QGET RID OF VALUES NOT NEEDED .ENDC ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; ; THE FOLLOWING TABLE IS USED TO FIND THE ; APPROPRIATE DEVICE'S FIRST AND LAST. ; DQFRST = . .WORD DQ11ST ; FIRST TABLE DISC 1 ; .IFG NDISCS-1 .WORD DQ21ST ; FIRST TABLE DISC 2 .ENDC ; .IFG NDISCS-2 .WORD DQ31ST ; FIRST TABLE DISC 3 .ENDC ; ; EXPAND IF MORE THAN 3 DISC + P)(S T TS: 50RAER SKTAR ROERE EUQU; UEUE,QPC R JS EDSTUEEQ RRNTUREE ATDIMEIM; ) SP-( R CL DCEN . T ENUMRG AANS ASSREDD ASTLIO I/D EN S ; ) SP-(1, R OV M G AR Z FN.I DCEN . E BLTAK AS TINY ITORRI PSE U ; P)(S - LR C Y RTDP Z FN.I N URET RND AOP-PNO; 50RAER Q BE K?AS TORRR EANE EUQU; P)(S,-1)(RSKRTER VBMO L FUSSCESUT NOO I/T SE; 1)(RORRR,ER0 SBBI R2 R CL EXND IRDWOY ITORRI PKEMA; R0 L AS ERADHEN IOITRTPAM RO FTYRIIOPRT GE; R0),R1I(PRPH VBMO R DEEA HAMGRRO POFS ESDRADE ATULLCCA; 1 ,RSTOLHI#- D AD ; EDCKHE C/O IONR ROERL TIUND EA RSTJUR DEEA HSKTA ; N OLYRET YET NOAN-CONTIMAORNF IERADHEN IOITRTPAE US ; ; HRPC. HRTCPAR FOS ESDRADT IS L/O IHE TVESA; 5 ,RR1 V MO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS V MO T HDQUE = 14. ; HEADQP FROM TIMER MODULE ; ; EQUATES FOR QPART ENTRY ; PSTAT = 0. ; PARTITION STATUS CSTAT = 0. ; CHECKPOINT STATUS OVTSK = 1. ; TASK NUMBER TRARG = 2. ; TRANSMITTED ARGUMENT ; ; ; TASK STATUS VALUES = TSTAT ; ABTREQ = -3. ; ABORT REQUESTED-SERVICE IN PROGRESS DQREQ = -2. ; DE-QUEUE REQUESTED-SERVICE IN PROGRESS EXU DEVICE CONTROLLERS ; DQLAST = . .WORD DQ1LST ; LAST TABLE DISC 1 ; .IFG NDISCS-1 .WORD DQ2LST ; LAST TABLE DISC 2 .ENDC ; .IFG NDISCS-2 .WORD DQ3LST ; LAST TABLE DISC 3 .ENDC ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; .PAGE ; THE FOLLOWING TABLES ARE THE DEVICE CONTROL ; TABLES (DCT) FOR THE DISCS. THESE TABLES KEEP THE ; FLAGS, POINTERS, DATA AN V MO . = R ER ;S ESDRADT IS L/O I =R1 ; PETYR ROER= 0 RREHE W ;R ROERC, P SR J ;: ISL AL CHE T ;. RG AASS ESDRADT IS L/O ITHWI SKTAR ROER ANE EUQUL IL W ;, EDSTUEEQ RIFD ANM TEYS SINN IOATICIFSSLA CORRR EANT SE ; L IL WATTHO CIIS DTOE INUTROUB SALRNTEINN AISR ER ; ;; ;E AG.P 25HCDI BR 12E YP TORRR ERTPORE; R02,01RR#E V MO . =0 . = V TOGO ; ; 8 OM CTSE.C E AG.P ; C ND.E ; C ND.E 10OVGE BR S STUEEQ ROF. NOT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL 10OVGE L BP ) R0B(TAPP TBTS TCKPCH Z FN.I C ND.E 10OVGE BR TCKPCH FZ.I . = 40OVGE ; UT-OLLROK AS TNGRIDUD TEESQURET ORAB ; ; 25OVGE BR E BLTAKPECCHT NO, NDPEUS SXITRQ = -1. ; EXIT REQUESTED-SERVICE IN PROGRESS QUISNT = 0. ; TASK QUIESCENT OVYACT = 1. ; OVERLAY MONITOR(RPOM)WORKING ON TASK QINROS = 2. ; QUEUED IN ROS THREAD TACTVE = 3. ; TASK ACTIVE VOLSUS = 4. ; VOLUNTARILY SUSPENDED INVSUS = 5. ; INVOLUNTARILY SUSPENDED-NOT ; ; IN ROS QUEUE TDSABL = 6. ; TASK DYD BUFFERS NECESSARY TO ; CONTROL EACH DEVICE. ; NODREQ = . ; NUMBER OF DEVICE REQUESTS IN QUEUE .WORD -1.,-1.,-1. ; EXPAND FOR MORE THAN 3 DEVICES .=NODREQ+NDISCS+NDISCS ; GET RID OF DCT ENTRIES NOT NEEDED ; CRQPTR = . ; CURRENT REQUEST LIST POINTER .WORD 0,0,0 ; EXPAND FOR MORE THAN 3 DEVICES .=CRQPTR+NDISCS+NDISCS ; GET RID OF DCT ENTRIES NOT NEEDED ; CDCS = . ; CURRENT DA1OT T; EDSHLIABST EET YOT NRYVECORE ; /O ISCDIP TO-SORRR EUT-OMETIT OREP R ;; 15HCDI BR ORRR ERENOIG; + P)(S T TS METI,QPC R JS ERIM TADRETHE- R ; ) SP-(Y,LADE T OV M ) SP-(2, R OV M R EACLC IS DDS DND A11F- R ; 5)(RCS@D0,40 # OV M M 'EL EL TOW-NGHOUEND IETR; 10TATO Q BE ERNTOU CRYET RUT-OMETIT ENEMCRDE; 0)(RTRMCTI CBDE ERFFBUA AT D/O INTREUR CET G ; R4),R1A(AT D L.VO= T TAPST SE; 2)(RK,NCLS#V VBMO: 30OVGE ITEX; 20VBQO P JM R PETYR ROERR FO ; P TYRR,EPC R JS CKTA SONT SE; P)(S,-R4 V MO ERMBNUK AS TUT-OLLROT SE; ) R4K(TSRR,ER1 V MO LEDUMOR ROERT OUL-OL ROFS ESDRADT GE; R4D,MOOE#R V MO: 25OVGE INGA AO. NSKTA; R1 R AS T OUK-OC LTYRIIOPRT SERE; SR,PP)(S V MO INGA ANTDESIREE OR CSSREDD AERADHET SE; ) R1R(DEEA,HR4 V MO \ISABLED TABRTD = 7. ; TASK ABORTED ODQREQ = 8. ; OVERLAY DE-QUEUE REQUESTED QINQPT = 9. ; QUEUED IN QPARTN-NOT YET IN ROS ; ; MISC. EQUATES ; SYSDSC = 1 ; SYSTEM DISC UNIT NO. PHDSZE = 30. ; NO. OF LOCATIONS IN PARTITION HEADER ; ;**NOTE: LOADER HAS SIMILAR VALUE ERRTSK = 4. ; DISP. FOR TASK # IN ERROR MODULE OTSKNO = -HIOLST+TA]ISC CONTROL STATUS REGISTER .WORD 0,0,0 ; EXPAND FOR MORE THAN 3 DEVICES .=CDCS+NDISCS+NDISCS ; GET RID OF DCT ENTRIES NOT NEEDED ; HPRIRQ = . ; MAINTAINS HIGHEST PRIORITY IN QUEUE .BYTE -1.,-1.,-1. ; EXPAND FOR MORE THAN 3 DEVICES .=HPRIRQ+NDISCS ; GET RID OF DCT ENTRIES NOT NEEDED ; CALLED = . ; CALLED BY EXIT FLAG .BYTE 0,0,0 ; EXPAND FOR MORE THAN 3 DEVICES .=CALLED+NDISOV M S ESDRADT ESQURET ENRRCUT GE; 1 ,R5)(RTRQPCR V MO UT-OMETIR METIY BEDLLCAT SE; ) R0D(LEAL,C1.#- VBMO CHITSWE ETPLOM CERIM TET S ; ) R0W(RSMC T B NC I X UWDCE ATULLCCA; R5 L AS R50, R OV M R BEUM NITUNE ICEV DSCDIT GE; R0),R1-( V MO SSREDD AVESA; 2 ,RR1 V MO . =T OUIM T; UT-OEDIM TATTHE ULOD MERIM TOFS ESDRAD1= R ;. RSCUOC ; ERXFC IS DHE TONT OUE-IM T EXND IRDWOR BEUM NSKTA; R1 L AS S RON IEDEUQU= S TUTA SSKTAT SE; ) R1T(TATSS,ROIN#Q VBMO LEABNTOIKPECCHT NON IOITRTPAT SE; 2)(RK,NCRT#P VBMO S UEUE QOS RTOIN ; ) R0T(AS,LR4 V MO CKBAK AS TADRETH; 0)(RSTLA,@R4 V MO 0 =RDWOD EAHR TSKTAT SE; 4)(R R CL T OUK-OC LTYRIIOPRT SE; SR,PCKLO#P V MO X DEIND OR WTYRIIOPR; R0 L AS S YE; 30OVGE`SKNO ; TASK NO. IN HEADER FROM I/O LIST IOERRW = 8. ; ERROR WORD IN I/O LIST FROM I/O LIST ; .PAGE .TITLE RPOM ;*********************************************************************** ;* * ;* QOVLAY QOVNXT QSOVLY UNSOVY CKPT NOCKPT TSOVLY * ;* DQOVLY * ;* aCS ; GET RID OF DCT ENTRIES NOT NEEDED ; NOTRYS = . ; DISC ERROR RETRY COUNTER .BYTE 0,0,0 ; EXPAND FOR MORE THAN 3 DEVICES .=NOTRYS+NDISCS ; GET RID OF DCT ENTRIES NOT NEEDED ; TIMCTR = . ; TIME-OUT XFER RETRY COUNTER .BYTE 0,0,0 ; EXPAND FOR MORE THAN 3 DEVICES .=TIMCTR+NDISCS ; GET RID OF DCT ENTRIES NOT NEEDED ; .EVEN .IFNZ DRESDI ; DISECMS0 10E THN HE WERIM TOMFR ; EDLLCAS IATTHO CIIS DTOE INUTROUB SALRNTEINN AIST OUIM T ;; GEPA . D IEIFECSPS AITEXD ANT ESQUREL UL P ; 0 A2IH D MP J X UWDC= 5 R ; 5 R SL A N FCE ETPLOM C/O IRMFOER-PES Y ; 0 C3IH D NE B ? PTRUERNT IBYD LEAL C ; ) R5D(LEAL C B ST T R ROERT OREP R ; R ERC, P SR J R BEUM NITUN= 5 R ; . =0 D1IH DR BEUM NITUNE AK M ; 5 R SR A E BN D?DEENSPSUY ILARNTLUVOK AS TIS; ) R2G(ARTR T TS: 23OVGE C ND.E R TEISEG RTEIAPRROPP ATOS ESDRADY TREN; 2 ,RR3 V MO ERADHEN IOITRTPAN IITT SE; ) R4T(PRIQ,HR5 VBMO T ARQP IEW N'SITE ATULLCCA; 5 ,RR2 B SU SSREDD ARYNT EVESA; 3 ,RR5 V MO SSREDD AERADHEM RAOGPRT SERES-YE; R4+,P)(S V MO UEUE QOFD EA HATK AC BUT-OLLROT GET US-MNO; 22OVGE E BN ? NTWAE WNEd * ;* PROGRAM IDENTIFICATION. RPOM; ROS PROGRAM OVERLAY * ;* MONITOR. * ;* * ;* PURPOSE. THE ROS PROGRAM OVERLAY MONITOR CONSISTS * ;* OF NINE SUBROUTINE ENTRY POINTS WHOSE PURPOSE * ;* IS PROVIDING A PRIORITY OVERLAY STRUCTURE IN A * ;* ROS II (OR ABOVE) SYSTEM. RPOM IS DESIGNEDeC RESIDENT DIRECTORY ; ; DCT ENTRIES DFDBAD = . ; DISC FILE DIRECTORY BUFFER ADDRESS .WORD DFDBF1 ; DFD BUFFER DISC 1 ; .IFG NDISCS-1 .WORD DFDBF2 ; DFD BUFFER DISC 2 .ENDC ; .IFG NDISCS-2 .WORD DFDBF3 ; DFD BUFFER DISC 3 .ENDC ; ; EXPAND FOR MORE THAN 3 DISC DEVICE CONTROLLERS ; DFDBF1 = . . = DFDBF1+60.+60. ; RESERVE 6. = 00HDDI ;X UWDCR OO. NITUNR LEOLTRON CSCDI= 5 R ;S ESDRADT IS L/O I =R1 ; PETYR ROER= 0 R ;E EUQUF OUT OSTUEEQ RNGLIUL PERFT A ;Y ELATRIOPPRAPT XI END AORRR ERTPORE ; ;; ;N IOCTUN FITEXM ORRFPE; 05HADI P JM: 30HCDI ******** ; ******** ; R DEIT,CPC R JS ******** ERDLAN HORRR ESKDI OTOT GE; 5)(RSKVT,OR1 PBCM Y TREND EA HOFS ESDRADT GE; 5 ,R2)(RQPADHE V MO UTKOOC LTYRIIOPRT SERE; SR,PP)(S2. V MO L AI TTOINT ISHPU; P HQUS,PPC R JS T ARQPF OUT ORYNT ELLPU; P LQUL,PPC R JS UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO: 22OVGE S ESDRADR DEEA HONTITIAR PVESA; P)(S,-R4 V MO R0 R AS LEAB TRTPA Q'STYRIIOPRS HI TOFS ESDRAD; 2 ,R0)(RTNARQP V MO X DEIND OR WTYRIh TO * ;* PROVIDE A FLEXIBLE METHOD OF PROGRAM PARTITIONS * ;* BY HANDLING DYNAMICALLY ALLOCATED PARTITIONS, FIXED- * ;* DEDICATED PARTITIONS AND PARTITION TIME-SLICING. * ;* RPOM IS NOTIFIED BY 'QUEUE' WHEN AN ATTEMPT IS * ;* MADE TO QUEUE AN OVERLAY TASK. RPOM STORES THE * ;* REQUEST INFORMATION IN IT'S INTERNAL QUEUES * ;* AND IF THE PARTITION OR CORE SPACEi0 WORD BUFFER, DISC 1 ; .IFG NDISCS-1 DFDBF2 = . .=DFDBF2+60.+60. ; RESERVE 60 WORD BUFFER, DISC 2 .ENDC ; .IFG NDISCS-2 DFDBF3 = . .=DFDBF3+60.+60. ; RESERVE 60 WORD BUFFER, DISC 3 .ENDC ; ; EXPAND FOR MORE THAN 3 DISC DEVICE CONTROLLERS ; .ENDC .PAGE ; ; ; CORE RESIDENT FILE DIRECTORY PARAMETER GENERATION ; STATEMENTS ; ; ; ; THE FOLLOWING IS FOR CORE & DISC REO TGCI; ERTDCI EF.R ******** ; ERUSR FOT SEREE-ASNC ISTJU; 4)(RUTNO,I00#3 CBBI ARLE CSCDIS DDD AN1 -1RF; ) R5S(DC,@00#4 V MO ER/DAE DND A; 4)(RE2US,D5)(RAE@D V MO D SEMIRO PASS DCK AC BRTPORE; 4)(RE1US,D5)(RCS@D V MO DCEN . E AGSSMER ROERM TEYS SPETY; P TYRR,EPC R JS CKTA SONS ESDRADE ULOD MET S ; ) SP-(2, R OV M IOPR; R0 L AS S YE; 23OVGE I BM ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I R HDT PRN II.PRK AS TUT-OLLROT SERE; 4)(RRIHP,PR0 VBMO G INITWAO T ; ; STUEEQ ROFT TAPST SERE; 4)(RWDRKHW,@77#1 C BI . = 20OVGE ; S ESDRADR DEEA HAMGRRO P =R4 ; S ESDRADY TRENT ARQPS K'AS T =R2 ; ERMBNUK AS T =R1 l IS AVAILABLE, THE * ;* DISC I/O WILL BE INITIATED FOR THE TASK. ALL * ;* OVERLAY TASKS WILL HAVE ENTRIES IN THE FILE DIREC- * ;* TORY AND IT MAY BE DISC RESIDENT. RPOM WILL HANDLE * ;* PRIORITY REQUESTING, DYNAMIC CORE ALLOCATION, CHECK- * ;* POINTING (ROLL-IN/ROLL-OUT), PARTITION TIME SLICING, * ;* OVERLAY TASK SUSPENSION, TASK COMPLETION AND * ;* INITIATION OF THE NEXT REQmSIDENT DIRECTORIES ; DOD = . .IFNZ DRESDI ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; NOTE: DOD1 REFERS TO DISC PHYSICAL DEVICE 0 ; DOD2 REFERS TO DISC PHYSICAL DEVICE 1 ; . . . ; . . . ; . . . ; DOD(NDISCS) REFERS TO DISC PHYSICAL DEVICE NDISC ; ; HOWEVER, THE DEVICE PARAMETER IN THE DOD IS LOGICAL ; DOD1: .WOR E ULOD MINE DAT SE; 2)(RM4RG,A5)(RAE@D V MO E ULOD MINS DCT SE; 2)(RM3RG,A5)(RCS@D V MO LEDUMON IR.DD AORCTSET SE; ) R22(GMAR),R42(SEDU V MO LEDUMON ICEVIDEL CAGILOT SE; 2)(RM1RG,A1)(RCEVIDE VBMO LEDUMON IERMBNUR ROERT SE; 2)(RUMRNER, R0 V MO LEDUMOR ROERS E'ICEV DOFS ESDRAD; 2 ,R5)(RODRMER V MO RTRPER Z FN.I E INUTROUB SORRR EALRNTEINA VI; RR,EPC R JS: 25HCDI 11E YP TORRR ERTPORE; ; TYRIIOPRK AS T =R0 ; T MPTEATT OUL-OL RAYRLVE ONGRIDUD REURCC OORRR ETERI WSCDI ; ; STUEEQ ROFN -ILLROT ARST; 00VBQO P JM SSREDD AERADHEN IOITRTPAE ATULLCCA; 4 ,ROBHN#P D AD EXND IRDWO; R1 L AS TYRIIOPRE ATULLCCA; 1 ,RR0 V MO ERADHE. RTPAM RO FTYRIIOPRS T'ESQURET GE; R0),R4I(PRPH VBMO S ESDRADY TRENT ARQPS T'ESQURET GE; 2 ,R4)(RWDRKHW V MO UTKOOC LTYRIpUEST ON A PRIORITY * ;* BASIS. ROLL-IN/ROLL-OUT ERROR HANDLING WILL ALSO * ;* BE THE RESPONSIBILITY OF RPOM * ;* * ;* THE NINE SUBROUTINE ENTRY POINTS PROVIDED ARE: * ;* * ;* QOVLAY- SUBROUTINE CALLED BY 'QUEUE' TO QUEUE OVERLAY * ;* TASK REQUEqD 1 ; FILE ID 1 .WORD DIRAD1 ; ADDRESS OF DIRECTORY FILE .WORD 100400 ; PROTECTED FILE-DEVICE 1 .WORD DIRLN1 ; LENGTH OF FILE .WORD 0 ; .IFG NDISCS-1 DOD2: .WORD 2 ; FILE ID 2 .WORD DIRAD2 ; ADDRESS OF DIRECTORY FILE .WORD 101000 ; PROTECTED FILE-DEVICE 2 .WORD DIRLN2 ; LENGTH OF FILE .WORD 0 .ENDC ; R01,01RR#E V MO . =0 C2IH D; ORRR ERTPORE ; ;O I/T ARSTRE; 10OCDI P JM / C/IO DOR FITT SE; R2),R2E(IMPR VBMO /O IRTTA SOR FMERI P ; 2 R EC D N IOCTUN F/O I ; 2 ,R747717 # IC B E ATOLIS; R2 R AS ORRR EEDUSCAT HA TCS DET G ; R2),R5S(DC C OV M5:C1IH DR EACLC IS DDS DND A11F- R ; 5)(RCS@D0,40 # OV M T EF LESRI TREMOO -NRYOR S ; 0 C2IH D EQ B IOPRT SERE; SR,PP)(S V MO: 10OVGE D DEENSPSUUN ; ; L TIUNN -IEDLLROE B'TON WSO ; ; E BLTAKPCH& D ENSPSU. OL=VATST P1,T=TACS; 2)(RK,SCOL#V D AD S YE; 10OVGE Q BE N?IONSPEUS SRYTAUNOLNV IANT IIS; ) R2G(ARTR T TS CEVIER SOR FNGTIAI W =ATST PET-SNO; 2)(RP,OI#I B SU S YE; 20OVGE E BN ? URCC OORRR ESCDID DI; 4)(RWDRRHE T tSTS AND INITIATE THE DISC I/O * ;* IF THE PARTITION OR CORE SPACE IS AVAILABLE. * ;* QOVNXT- SUBROUTINE CALLED BY 'EXIT' TO TERMINATE AN * ;* OVERLAY TASK AND INITIATE THE DISC I/O FOR * ;* THE NEXT REQUEST, IF ANY. * ;* QSOVLY- SUBROUTINE CALLED BY 'QSAVE' DURING THE * ;* VOLUNTARY SUSPENSION OF A TASK TO INITIATE * ;* THu .IFG NDISCS-2 DOD3: .WORD 3 ; FILE ID 3 .WORD DIRAD3 ; ADDRESS OF DIRECTORY FILE .WORD 101400 ; PROTECTED FILE-DEVICE 3 .WORD DIRLN3 ; LENGTH OF FILE .WORD 0 .ENDC ; .ENDC ; COMPID = . ; COMPRESSION WORK DIRECTORY .WORD NDISCS+1 ; ID .WORD 0 ; START SECTOR NUMBER ******** .WORD 400 ; DEVIC R TEUNCOY TRRER ROERT ENEMCRDE; 0)(RYSTRNO CBDE: 10HCDI NGRIET RMETIE STWAT N'DOT-HIT N'ID DKSAS M ; 0 C2IH D EQ B R ROERE BLIATRRER FOE DAK ECCH; 5)(RAE@DE,DAET#R T BI RYET R -TSHIK AS M ; 0 C1IH D NE B R ROERE BLIATRRER FOS DCK ECCH; 5)(RCS@DS,DCET#R T BI #ITUNR LEOLTRON CSCDIE ATULLCCA; R0 R AS R05, R OV M . = 00HCDI ;X UWDCX-DEIND OR WITUNR LEOLTRON CSCDI= 5 R TS ; . UPD NEEACLT GEY LLCATIMATOAU ; L IL WIT- ET SISQ REDQ QIFT INPOS HI TAT: TENO ; ; S YE; 40OVGE Q BE ? EDSTUEEQ RENBET ORABS HA; RQRTAB,#2)(R PBCM UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO O.NF IRTPA QUT-OLLROF OSTRET GE; 0 R1QP,FPC R JS EXND IRDWO ; R1 L AS R BEUM NSKTA; 1 ,R4)(RNOSKTA SBBI R1 R CL =0R DEEA HLEAB TSKTAE USCABE ; 4 xE I/O FOR ANY PRIORITY REQUEST, IF * ;* ANY, FOR THAT CORE SPACE. * ;* UNSOVY- SUBROUTINE CALLED BY 'UNSPND' TO RE-THREAD * ;* A VOLUNTARILY SUSPENDED TASK BACK INTO THE * ;* ROS QUEUES OR PERFORM ROLL-IN I/O IF * ;* REQUIRED. * ;* CKPT -SUBROUTINE WHICH MAY BE CALLED BY ANY * ;* yE NUMBER 1 ******** .WORD $DSIZE ; LENGTH OF FILE ******** .WORD 0 ; NO CHECKPOINT ******** ; FTDIR = . ; FILE TYPE DIRECTORY .WORD NDISCS+2 ; ID .WORD DIRAD1+DIRLN1 ; STARTS AFTER DOD-UNIT 1 .WORD 100400 ; PROTECTED FILE-DEVICE 1 .WORD $FTDRL ; FILE TYPE DIR. LENGTH .WORD 0 ; CDI ;R FEUF BTADAO I/F OSSREDD A =R4 ; STLIO I/F OSSREDD A =R1 ; ERXFC IS DNGRIDUD REURCC OORRR E ;; GEPA . T OREP R ; 0 D0IH D R B 7 E YP TORRR E ; R07, # OV M . =0 B4IH DW NOE ITWRO N ; 0 B1IH D R B RSTEISEG RRETOES R ; PRPO5, R SR J METIT RSFIR FOB SUO I/R SE UTECUXE E ; ) R1T(XI@EC, P SR J S ERSTGIREE AV S ; R SHPU5, R SR J O N ; 0 B1,RR1 V MO R DEEA HAMGRRO POFS ESDRAD; 1 ,RSTOLHI#- D AD CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS V MO . = V TOGE ; ; 7 OM CTSE.C C PTHK!CLCMS$T Z FN.I E AG.P ; T IDO; 25LARE BR -Q DERFT ANTCEESUI QUSATSTT SE; P)(S2. R CL . = 40LARE ; RNTURE; 10LARE BR T XI EAYRLVE ORMFOER-PITEX; T NXOV,QPC R JS . = 30LARE ; | OVERLAY TASK TO PUT IT IN A CHECKPOINTABLE * ;* STATE. * ;* NOCKPT- SUBROUTINE WHICH MAY BE CALLED BY ANY OVERLAY * ;* TASK TO SET IT'S PARTITION OR CORE-SPACE * ;* NOT CHECKPOINTABLE. * ;* TSOVLY -SUBROUTINE CALLED BY 'TIMER' TO REQUEST A * ;* TIME-SLICE ROLL-OUT AND ROLL-IN OF A PARTITION. * ;*}MGE = . ; CORE DIRECTORY IMAGE FILE ENTRY .WORD NDISCS+3 ; ID .WORD DIRAD1+DIRLN1+$FTDRL ; STARTS AFTER FTDIR-UNIT 1 .WORD 100400 ; PROTECTED FILE-DEVICE 1 .WORD $CDISZ ; LENGTH .WORD 0 TTFILE = . ; TASK TABLE FILE .WORD NDISCS+4 ; ID .WORD DIRAD1+DIRLN1+$FTDRL+$CDISZ ; STARTS AFTER CDIMGE-UNIT 1 .WORD 100400 ; PROTECTED FILE-IH D EQ B 4?E YP TCN F/O I ; 4)(RUTNO,I4. # B IT B0:B3IH D0 B0IO D MP J0:B2IH D; 00OBDIO TET GTOP JM ; ;O I/S T'ESQURET ARSTO/ N ; 0 E0IO D MP J T RSFIE OSTH ; ; SSCERO-PES YD.UEUE QENBE ; 0 B2IH D GT B TSESQUREY ITORRI PERGHHIE AV H ; ) R5Q(IRPR,H1)(RELEV L B MP C R BEUM NITUNR LEOLTRON CSCDI5= R ; 5 R SR A X UWDC0= R ; R05, R OV M0: 15LARE BR WDK WRP POY-ELATRIOPPRAPS TUTA SSKTAT SE; ) R0T(TATS+,P)(S VBMO VESAT NOS OE DLYOVDQN-AIAGR BEUM NSKTAT GE; R0),SP.(16 V MO T IUEUE-QDE; Y VLQO,DPC R JS LYOVDQR FOS TUTA SSKTAT SE; ) R0T(TATSQ,REDQ#O VBMO: 25LARE LY6VDQR TEAFT TATSS HI TTOT SE; P)(S2.D,RTAB#T V MO S ESGRRO PINE ICRVSED-TEESQUREQ D-; 40LARE Q BE SSREOGPRN ICEVIER-SEDSTUEEQ RITEX; 30LARE T BG D?TEES DQOVLY- SUBROUTINE THAT WILL DE-QUEUE AN OVERLAY * ;* REQUEST ACTIVE IN RPOM. * ;* RELTSK- SUBROUTINE THAT WHEN CALLED BY SYSTEM SERVICE * ;* SUBROUTINES (I.E. I/O HANDLERS) WILL RELEASE * ;* THE CORE SPACE IF AN EXIT, ABORT OR DE-QUEUE * ;* WAS REQUESTED WITH I/O IN PROGRESS. * ;* DEVICE 1 .WORD $TKFNS ; LENGTH .WORD 0 ; ; NOTE: THE FOLLOWING BUFFER HEADER CONTAINS 5 WORDS AND ; WILL BE COUNTED AS A FILE ID ENTRY. HOWEVER, ALL SEARCHES ; WILL GO TO 'CDIMGE' BEFORE THEY GET TO THIS ENTRY. ; ID'S OF 'NDISCS+$SYSFL' OR LESS ARE ILLEGAL FOR FILE ; MANAGEMENT OPERATIONS. HENCE, THIS WILL BE TREATED AS A ; DUMMY ENTRY EXCEPT WHEN UPDATING THE CORE DIRECTORY IMAGE. ; CDIHDR = . ; HEADER B1IH DC ND.E 13R O109,8,E YP-TES Y ; 0 D0IH D NE B R CUOCR ROER; R0 T TS ERXFR FOP UET SND AIDE IL FCKHE C ; IDILCFC, P SR J 7PETYR ROERO- N ; 0 B4IH D EQ B ? VETIACD ILEFI; 2)(R T TS RYTOECIR DTSESQUREF OSSREDD A ; R2),R5D(BAFD D DD A G INSSREDD ARDWOR FOE BLOU DOW N ; R22, R DD A 5 Y B ; R20, R DD A N IOATICPLTIUL M ; 0 QUREQ D-; Q REDQ,#R1 PBCM CKTA SONR BEUM NSKTAT PU; P)(S,-R0 V MO . = 20LARE ; ERLLCAO TRNTURE; PC S RT RNTURER FOC PUPT SE; P)(S+,P)(S V MO S ERSTGIREE ORSTRE; R OP,PR5 R JS: 15LARE + P)(S T TS: 10LARE SSREOGPRN I/O ITHWI ; ; EDSTUEEQ RRTBO/A-Q/DITEX; 20LARE I BM S TUTA S'SSKTAT GE; R1),R0T(TATS VBMO K ACSTO NT ORDWOK OR * ;* PROGRAM USAGE. THE FOLLOWING RULES ARE TO BE FOLLOWED * ;* IN ALL CALLS TO RPOM UNLESS OTHERWISE NOTED. * ;* * ;* 1) TSTAT = 1(OVYACT) FOR THE TASK BEING CALLED FOR. * ;* 2) RPOM IS NEVER CALLED UNDER LOCKOUT. * ;* 3) REGISTERS NOT SAVED EXCEPT FOR CKPT, NOCKPT AND RELTSK. * ;* FOR CORE DIR. IMAGE I/O .WORD NDISCS+3 ; FILE ID .BYTE 1 ; USE DIRECTORY INFO CDIFCN: .BYTE 1 ; WRITE I/O FCN .WORD 0,0,0 ; FILE = . .=DOD+NCRLOC CDEND = . ; END OF CORE RESIDENT DIRECTORY . = $CDISZ*64.*2+FILE ; RESERVE A MULTIPLE OF 64 WORDS ; .IFNZ DRESDI ; DODADD = . .WORD DOD1 ; ADDRESS OF DOD DEVICE 1 ; .IFG NDISCS-1 R SL A M ORRFPE; R0 L AS R02, R OV M TELASO I ; 2 ,R007717 # IC B R FEUF BLEFIO NT IEXND IET G ;R2),R11(M+TEYS S B OV M H TCWI SETES R ;) R4T(OUIN0,10 # B IC B . = 00HBDI ;X UWDC= 5 R ;R FEUF BTADAO I/F OSSREDD A =R4 ; STLIO I/F OSSREDD A =R1 ; M2STSYN IEDAV SAS WCHHI WEXND IEDATULLCCAG INUS ; ERFFBUY ORCTREDIM RO FRYTOECIR DEDSTUEEQ RESIL FNDFI ; ;I SDRE D WSHPU; ) SP-( T TS R BEUM NSKTAT GE; R0),SP.(14 V MO RSTEISEG RVESA; HRUS,PR5 R JS . = SKLTRE ; 0 =ATSTION HE WESINUTROUB SCEVIER SEMSTSYY BEDLLCA ; ; ; ITEX; 25OVDQ BR TSESQUREF OERMBNUT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL C ND.E T XI-ENO; 25OVDQ L BP -TYRIIOPRC MINADY; ) R0B(TAPP TBTS T  * ;* THE LINKAGE TO RPOM SUBROUTINES IS AS FOLLOWS: * ;* * ;* QOVLAY- MOV TASK,-(SP) * ;* MOV PRIOR,-(SP) * ;* MOV ARG,-(SP) * ;* JSR PC,QOVLAY * ;* TST (SP)+  .WORD DOD2 ; ADDRESS OF DOD DEVICE 2 .ENDC ; .IFG NDISCS-2 .WORD DOD3 ; ADDRESS OF DOD DEVICE 3 .ENDC ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; .ENDC .PAGE ; ; DISC HARDWARE-SOFTWARE INTERFACE INFORMATION ; ; ; FUNCTION TABLE FOR RF-11 AND DDS DISC CONTROLLER. ; BITS 02:01 OF DISC CONTROL STATUS REGISTER ; FCNTBL = . .BYTE 4 ; READ FUNCTION NZIF . ; UEUE QINT ESQURET ESGHHIS ESOCPR; 20HBDI BR UTKOOC LTYRIIOPRT SERE; R PS+,P)(S V MO: 62HADI ; Y LLMAOR NITEX; 20ODDI P JM T OUCKLOT SERE; R PS+,P)(S V MO: 61HADI EDFICIPE SAST XI-ENO; 25ODDI P JM 61HADI E BN ? RSMPCOY BEDLLCA; R4 T TS . = 60HADI ; Q'D'CPN IUEUEEQ RERFT ARSMPCOY BEDLLCA0 T NO= 4 R ; IOSCDIY BEDLLCA0 = 4 R ~ARXP!FLCMS$T Z FN.I . = 50OVDQ SKTAM RO FITEXS-YE; X1XXQN P JM T ENIDES RRECOT NO; 50OVDQ Q BE S ESDRADR DEEA HSKTAT GE; 4 ,R1)(RERADHE V MO X DEIND OR WSKTAE UTMPCO; R1 L AS: 40OVDQ C ND.E T TAPSN ISTUEEQ RRTBO AET-SNO; 2)(RQ,TRBR#A VBMO S YE; 40OVDQ I BM ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I . = 30OVDQ} * ;* BNE ERROR * ;* WHERE ERROR STATUS ON THE STACK * ;* =0, NO ERROR * ;* =1, QPART(N) FULL * ;* =-1, QPART DOES NOT EXIST FOR REQUESTED * ;* PRIORITY. * ;*  .BYTE 2 ; WRITE FCN .BYTE 6 ; WRITE CHECK FCN PRIME = . .BYTE 1 .BYTE 0 .BYTE 2 .EVEN ; NRETRY = 10. ; NO. OF RETRIES IF DISC ERROR ; ; DCS = . ; DISC CONTROL AND STATUS REGISTER .IFZ $DDSDC .WORD 177460,0,0 .ENDC .IFNZ $DDSDC .WORD 165300,0,0 .ENDC .=DCS+NDISCS+NDISCS ; DELET ; EDRTTA SOT N/O IUT BEDEUQUR TEAFT XI EORRR E ;; ERIM TTON URET R ; C P TS R H TCWI SERIM TETES R ; ) R5W(RSMC T B LR C T OUCKLOY ITORRI PETES R ; SR,P)+SP ( OV M . = 57HADI ;T UPRRTEINM RO FITEXO- N ; R TOES R MP J T OUCKLOY ITORRI PETES R ; SR,P)+SP ( OV M ES Y ; 2 A6IH D PL B ? TSESQUREG INNDPEE OR MNY A ; ) R0Q(REOD N ST T T OUE-IM TOMFRS-YE; 57HADI I z ITEXD AN; 20VBQO P JM: 25OVDQ D TEESQURET ORABT SES-YE; 2)(RQ,TRBR#A VBMO NO; 30OVDQ T BL ? SSREOGPRN IRTBO AORO I/; IPIO,#R4 P CM R40,6077#1 C BI: 23OVDQ LYOVTSY BEDLLPUH US PSECAIN; 05OVDQ BR T OUCKLOT SERE; SR,PP)(S V MO OK; 23OVDQ E BN T TAPST GE; 4 ,R2)(R V MO T OUK-OC LTYRIIOPRT SE; SR,PCKLO#P V MO: 20OVDQ C ND.E EMTHy * ;* QOVNXT- MOV TASK,-(SP) * ;* JSR PC,QOVNXT * ;* * ;* QSOVLY- TASK ALREADY SUSPENDED * ;* MOV TASK,-(SP) * ;* JSR PC,QSOVLY * ;* E WHAT WE DON'T NEED ; WCR = . ; WORD COUNT REGISTER .IFZ $DDSDC .WORD 177462,0,0 .ENDC .IFNZ $DDSDC .WORD 165302,0,0 .ENDC .=WCR+NDISCS+NDISCS ; DELETE WHAT WE DON'T NEED ; CMA = . ; CURRENT MEMORY ADDRESS .IFZ $DDSDC .WORD 177464,0,0 .ENDC .IFNZ $DDSDC .WORD 165304,0,0 .ENDC .=CMA+NDISCS+NDISCS ; DEBM EDFICIPE SAST XI-EERLLCAM RO-FES Y ; 0 A6IH D EQ B ? D-'E-Q DND AORRR E ; ) R5D(LEAL C B ST T5:A5IH DE ETPLOM CERIM TXTNEE ORGN I ; ) R1R(JSIM,TIMPTNO # OV M 1 ,R0)(RBLMT T OV M T EF LTSESQUREE OR M ; 5 A5IH D PL B E ICEV DISTHD UEUE QTSESQURE. NOT ENEMCRDE; 0)(REQDRNO C DE UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO WXCU DTELACUAL C ; 0 R SL A 0 ,RR5 V MO: 50HADI IOSCDIY BEDLLvF ONE OINE BSTMU; 10OVDQ Q BE Y TRENS K'AS TOR FOKLO; H RCTS,QPC R JS L VELEH RCEA SMPBU; R0 C IN: 10OVDQ ESBLTAY ITORRI PERTH OCHARSE; R0 R CL ITT GO; 20OVDQ E BN Y RTDP Z FN.I Y TRENT ARQPS K'AS TNDFI; H RCTS,QPC R JS Y ITORRI PLEAB TSKTAT GE; R0),R1Y(RTTP VBMO: 05OVDQ ) SP-(R,PS V MO RNTURER PERO POR FPCT SE; P)(S+,P)(S V MO R BEUMu * ;* UNSOVY- MOV TASK,-(SP) * ;* JSR PC,UNSOVY * ;* TST (SP)+ * ;* BNE ERROR * ;* WHERE ERROR STATUS ON THE STACK * ;* =0, NO ERROR * ;* =1, LETE WHAT WE DON'T NEED ; DAR = . ; DISC ADDRESS REGISTER .IFZ $DDSDC .WORD 177466,0,0 .ENDC .IFNZ $DDSDC .WORD 165306,0,0 .ENDC .=DAR+NDISCS+NDISCS ; DELETE WHAT WE DON'T NEED ; DAE = . ; DISC ADDRESS EXTENSION .IFZ $DDSDC .WORD 177470,0,0 .ENDC .IFNZ $DDSDC .WORD 165310,0,0 .ENDC .=DAE+NDISCS+NDISCS CAT SE; R4 R CL: 47HADI ERMBNUT NI USCDIE ORSTRE; R5+,P)(S V MO E INUTROUB STELEMPCOO I/E UTECEX; 1)(RITEX,@PC R JS . NOT NI UERLLRONTCOC IS DVESAS-YE; P)(S,-R5 V MO NO; 47HADI E BN ? 3PETYA T XI EIS; 3.,#1)(RPETY PBCM CKTA SONR PSE AVLET-OUCKLOT SERE; SR,PP)(S V MO: 45HADI C ND.E SKTAE ASLERE; K TSEL,RPC R JS K ACSTN OO. NSKTA; P)(S,-R2 V MO r NSKTAT GE; 1 ,RP)(S2. V MO . = LYOVDQ ; -3R O-21,,-,9,5,4,3 2 =ATST TTHWIS SKTAT ORABY MA ; 1 = T ACVY O =ATST TTHWIK AS TRTBO AOTNNCA: TENO ; ; 6 OM CTSE.C E AG.P C ND.E ; ITEXD AN; 25OVQS BR D DEENSPSUY ILARNTLUVOT NOT SE; ) R2G(ARTR R CL: 50OVUS N -IEDLLROE BTOT ESQURE ; 40VAQO P JM CTFEAFT N'WO' UEUE-QRE 'SO; 0)(RQPEQNR CBDE ERMBNUK AS TND A ; qTASK HAS BEEN CANCELLED DUE TO * ;* VOLUNTARY SUSPEND LENGTH OF TIME * ;* EXEEDED (TIME-SLICER'S) * ;* * ;* CKPT - EMT CKPT OR THE FORTRAN * ;* EQUIVALENT: CALL CKPT * ;* * ;* NOCK ; DELETE WHAT WE DON'T NEED ; ; THE FOLLOWING EQUATES ARE USED TO DETERMINE IF ; ERRORS OCCURRED AND IF SO, IF THEY ARE RETRIABLE. IT IS ; ASSUMMED THAT ALL DEVICES ARE ALIKE AND HAVE SOME- ; WHAT SIMILAR DCS, DAR AND DAE REGISTERS AS THE ; DEC RF-11. ; .IFZ $DDSDC ; THE FOLLOWING MASKS ARE FOR THE RF-11 ; DERMSK = 100000 ; DISC ERROR MASK FOR DCS ; RETDCS = 031000 ; RETRIABLE DCS ERRORS ; T OUCKLOT SERE; SR,PP)(S V MO NE OSTLAT NO; 45HADI E BN AYRLOV Z FN.I SKTAR FOS ESGRRO PINO I/T SERE; 2)(RATSTIO CBDE S ASYP-BROZE; 45HADI Q BE R BEUM NSKTAT GE; 2 ,R1)(REMSTSY SBBI R2 R CL LYTEIAPRROPP ARQRIHPE ATPD U ; 5)(RRQRIHP2, R B OV M0:A4IH DQ IRPR HETES RS-YE; 2 ,R1.#- V MO REMOE OM SANSC- NO; 30HADI E BL Y?PTEME EUQU; ) R5Y(RTn P)(S,-R1 V MO K ACSTN ONTMEGUAR0 T SE; ) SP-( R CL =0ATST/P=1ATST/CO. NSKTA; ; S ALTUI BBEL IL WRYNT ESOT SE; R10,0000#1 S BI SSREDD AB3E ATRIOPPRAP ; D ADB3,FPC R JS D IN FTOR BEUM NSKTAE US; 3 ,RR1 V MO R BEUM NSKTAO TCKBAT GE; R1 R AS S YE; 50OVUS Q BE S?ESGRRO PINL ILSTO I/; IPIO0!20,#2)(R PBCM . = mPT- EMT NOCKPT OR THE FORTRAN * ;* EQUIVALENT: CALL NOCKPT * ;* * ;* TSOVLY- TASK ALREADY SUSPENDED * ;* TASK = IN $CTASK * ;* JSR PC,TSOVLY * ;* * ;*  ; BIT 13 = WRITE CHECK ERROR ; ; BIT 12 = DATA PARITY ERROR ; ; BIT 09 = MISSED XFER RETDAE = 170000 ; RETRIABLE DAE ERRORS ; ; BIT 15 = ADDRESS PARITY ERROR ; ; BIT 14 = A TIMING TRACK ERROR ; ; BIT 13 = B TIMING TRACK ERROR ; ; BIT 12 = C TIMING TRACK ERROR ; .ENDC .IFNZ $DDSDP,NR2 PBCM ELEV LSTUEEQ RXTNEK ECCH; R2 C IN T! IOT-GFTLEY ITORRI PSTHEIG H ; 0 A4IH D NE B R FOE EUQUE ICEV DCHARSE; + 0)(R T TS: 30HADI E BLDAEAHR TSTLIT ESQURET SE; ) R1,(R2 V MO: 25HADI STIR FTOS NTOI PSTLAY-PTEM; 4)(R,-R3 V MO STLIY ITORRI PTYMP E'TDNDI; 25HADI E BN ADRETHE EUQUF OUT OSTUEEQ RLLPU; 3)(R,-1)(R V MO UTKOOC LTYRIIOPRT SE; SR,PCKLO#P j 40OVUS ; SSREDD ARYNT ERTPA Q =R2 ; STUEEQ RY'VLQO ' AKELI ; G INOKLOY BINL-OL RSTUEEQ RT,OUD-LEOL RAS WSKTA ; ; TCKPCH Z FN.I N URET R; 25OVQS BR UEUE QTYRIIOPRS RO ; ) R3T(AS,LR4 V MO O NT ICKBAK AS TADRETH; 3)(RSTLA,@R4 V MO 0 =RDWOD EAHR TSKTAT SE; 4)(R R CL USATSTS RON IEDEUQUT SE; ) R1T(TATSS,ROIN#Q VBMO R BEUM NSKTAT GE; R1 R AS i DQOVLY- TSTAT = 8(ODQREQ) * ;* MOV TASK,-(SP) * ;* JSR PC,DQOVLY * ;* * ;* RELTSK- IOSTAT = 0 * ;* MOV TASK,-(SP) * ;* JSR PC,RELTSK * ;* DC ; ; THE FOLLOWING MASKS ARE FOR THE DDS DISC ; DERMSK = 100000 ; DISC ERROR MASK FOR DCS ; RETDCS = 031000 ; RETRIABLE DCS ERRORS ; ; BIT 13 = WRITE CHECK ERROR ; ; BIT 12 = BLOCK CHECK ERROR ; ; BIT 9 = MISSED XFER RETDAE = 0 ; NO RETRIABLE DAE ERRORS .ENDC ; .IFNZ ERRPRT ; ; DISC ERROR MESSAGE PRINTOUT MODULE V MO K ACSTN OSR PVESA; ) SP-(R,PS V MO #ITUNR LEOLTRON CSCDI= 5 R ; 5 R SR A T IS LSTIR F'SELEV LNTREUR COFS ESDRAD; 3 ,RR0 D AD STLIT AS L'SELEV LNTREUR COFS ESDRAD; 4 ,RR3 D AD NGSIESDRADD OR WOR FLEUBDO; R3 L AS STUEEQ ROFY ITORRI PNTREUR C ; 3 ,R1)(RELEV L B OV M T IS LSTLAS E'ICEV DISTHF OSSREDD A ; R4),R5T(ASQL D OV M T IS LSTIR F'SCEVIDES HI TOFS ESDRAD; f G LA FNDPEUS SL.VOT SERE; ) R2G(ARTR R CL TETA SATST PUSIOEVPRM RO F ; ; LEABPTCKT NOR OLEABPTCKT SE; 2)(R.,#1 B SU C ND.E N -ILLROC MINADYR FOP UET S -NO; 40OVUS Q BE TCKPCH Z FN.I T?ENIDES RRECOL ILSTK AS TIS; 4 ,R1)(RERADHE V MO T OUK-OC LTYRIIOPRT SE; SR,PCKLO#P V MO X DEIND OR W #SKTAE UTMPCO; R1 L AS: 30OVUS C ND.E S TUTA Se PROGRAMMER 54 * ;* DATE * ;* REVISION * ;* * ;*********************************************************************** ; .DEF QOVLAY,QOVNXT,TSOVLY,CKPT,NOCKPT,QSOVLY .DEF UNSOVY,DQOVLY,GETOV,GOTOV,TSABRT .DEF FQPRTN,RELTSK S ; ERMOD1 = . .WORD 1,0,0,0,0,0 ; ERROR MODULE DEVICE 0 ; .IFG NDISCS-1 ERMOD2 = . .WORD 1,0,1,0,0,0 ; ERROR MODULE DEVICE 1 .ENDC ; .IFG NDISCS-2 ERMOD3 = . .WORD 1,0,2,0,0,0 ; ERROR MODULE DEVICE 2 .ENDC ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; ; ADDRESS OF ERROR MODULES ; ERRMOD = . .WORD ERMOD1 ; .IFG NDISCS-1 .WORD ER 0 ,R5)(RSTFRDQ V MO 1ELEV LTYRIIOPRR FO2 RET S ; 2 ,R1. # OV M0:A2IH DK ACSTN OERETAMAR PORRR EOP P ; )+SP ( ST T 2 E YP TITEXK-AS TNGLIAL CNDPEUSNS U ; NDSPUNC, P SR J D TEESQUREN URET RTEIAEDMM I ; P)(S - LR C LLCAP UET SND AERMBNUK AS TET G ;P)(S),R1M(TEYS S B IS B P)(S - LR C O N ; 0 A2IH D NE B 2?E YP T AITEXS I ; . #2),R1E(YP T B MP C5:A0IH D ES Y ; 0 B3IH D MP J bORRR ERENOIG; + P)(S T TS E ULOD MADRETHUN; E IMQT,DPC R JS R METIG INUEUE-QDE ; P)(S,-R4 V MO LEHI WUT-OCKLOT SEREN CA ; SR,PP)(S V MO WEO SUEAL VERIM TLLFUA T SE; ) R4M(TIES,R1.#- VBMO: 25OVUS RNTURED AN ; 25OVQS BR K ACSTN OCHITSWR ROERT SES-YE; P)(S4. C IN NO; 25OVUS Q BE URCC OONTIDION CCERAR METI; 4)(RCERATM T TS a .REF PPTAB,BSIZE,IFD,CHKPIO,DISCIO .REF HEADER,DQRPOM,TSTAT,$CTASK,$PRIOR .REF ACTIVE,QSAVE,QTIME,TPRTY,DQTIME,FIRST .REF LAST,ERRTYP,STACK,DSPTCH .REF PUSHR,POPR,IOSTAT,DQTIME ; .CSECT OM1 ; ; TASK IS A VALID QUEUEABLE TASK. TSTAT = OVYACT = 1. ; QOVLAY = . MOV 4.(SP),R0 ; SAVE PRIORITY MOV (SP),4.(SP) ; PC TO PROPER PLACE FOR RETURN MOV 2.(SP),(SP) ; SET MOD2 .ENDC ; .IFG NDISCS-2 .WORD ERMOD3 .ENDC ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; ; EQUATES FOR ERROR MODULES ; THREAD = 0. ; THREAD WORD ERRNUM = 2. ; ERROR NUMBER ARGM1 = 4. ; ARGUMENT 1 ARGM2 = 6. ; ARGUMENT 2 ARGM3 = 8. ; ARGUMENT 3 ARGM4 = 10. ; ARGUMENT 4 ; .ENDC ; .PAGE ; ; O N ; 5 A0IH D PL B E?ITWRD/EA ROMFRD EA ROR ; ;? CKHE CTERI/WTERI W AOMFRE ITWR; ) R4T(OUIN TBTS DCEN . N IOATRMFOINT GE- S YE; 00HBDI E BN D?EA RRYTOECIR DLEFI; 4)(RUTNO,I00#1 TBBI DIESDR Z FN.I . = 03HADI ONTINCFUE ATRIOPPRAPM ORRFPES-YE; 00HCDI P JM O ;N 03HADI Q BE R?CUOCR ROERN AID D ; ) R5S(DC,@SKRMDE # IT B ^ UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO LEDUMOR METIS Y'ITORRI POFS ESDRAD; R4D,MOIM#T D AD S ESDRADE BLTAT ARQPT GE; 4 ,R3)(RTNARQP V MO NO; 30OVUS E BL Y ITORRI PCELI-SMETI; ) R0B(TAPP TBTS LCMS$T Z FN.I . = 20OVUS C ND.E EMTHF ONE OINE BSTMU; 10OVUS Q BE Y TRENS K'AS TOR FOKLO; H RCTS,QPC R JS L VELEH RCEA SMPBU; R0 C IN: 10OV]ARGUMENT MOV 6.(SP),-(SP) ; AND TASK IN PROPER PLACE CLR 8.(SP) ; CLEAR ERROR PARAMETER IN STACK MOV PSR,4.(SP) ; PROCESSOR STATUS TO STACK MOV R0,R1 ; CALCULATE PRIORITY ASL R1 ; WORD INDEX MOV (SP),R3 ; GET TASK NUMBER JSR PC,FB3ADD ; FIND B3 ADDR FOR ALLO REQUEST ; ********  THE FOLLOWING IS FOR THE DISC TIMER MODULES AND ; TIMEOUT COMPLETE SUBROUTINE 'TIMOUT' ; MSEC = MSECR ; MILLISECOND TIMER RESOLUTION ; JOMSEC = 21!MSEC ; OPTION BYTE-J OPTION, MSEC RESOLUTION ; RESTIM = 4. ; WORD TO RESET TIMER AT TIMJSR = 6. ; WORD TO CHANGE TIMER JSR AT ; .WORD 0 ; DEVICE 0 TIMER MODULE DTIMR1 = . .WORD 1 ; THREAD WORD .BYTE R FEUF BTADAO I/F OSSREDD A ; R4),R1A(AT D OV M T IS L/O ITSESQURET ENRRCUF OSSREDD A ; R1),R5R(PTRQ C OV M CEVIDES HI TOR FELEV LPU CTEIAPRROPP AET S ; SR,P)+SP ( OV M R CUOCT NOL IL W ; 3)(RIMSTREY,LADE T OV M T OUE-IM TSOR METIT SERE; R3),R5L(TBTM V MO EXND IRDWO ; ; ITUNR LEOLTRON CSCDIX-UWDCS MECOBE5 R ; 5 R SL A H TCWI SPTRUERNT IBYD LEAL CET S ; 5)(REDLLCA1, #ZUS ESBLTAY ITORRI PERTH OCHARSE; R0 R CL ITT GO; 20OVUS E BN Y RTDP Z FN.I Y TRENT ARQPS K'AS TNDFI; H RCTS,QPC R JS Y ITORRI PLEAB TSKTAT GE; R0),R1Y(RTTP VBMO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS V MO H TCWI SRNTURER ROERR EACL; P)(S2. R CL R BEUM NSKTAT GE; 1 ,RP)(S2. V MO . = VYSOUN ; D.DEENSPSU ; LYRITAUNOL VENBES HAT HA TSKTAY Y; THIS IS THE LOCATION OF THE NEW RPOM SIZE CHECKER. ******** CLR -(SP) ; CLEAR THE SCTRATCH REGISTER. ******** BISB R3,(SP) ; SET THE NUMBER OF BLOCKS NEEDED. ******** SWAB (SP) ; CHANGE INTO A WORD VALUE. ******** ADD R3,(SP) ; AND ADD THE START BLOCK ONTO IT. ******** CLRB (SP) ; GET RID OF LOW BYTE. (NOT MEANINGFUL) ******** ASL (S0 ; DON'T QUEUE TASK .BYTE JOMSEC ; OPTION BYTE .WORD 0 ; RESET/TIMER .WORD TIMOUT ; TIMER COMPLETE SUBROUTINE ADDRESS ; .IFG NDISCS-1 .WORD 1 ; DEVICE 1 TIMER MODULE DTIMR2 = . .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE JOMSEC ; OPTION BYTE .WORD 0 ; RESET/TIMER .WORD B OV M1:A0IH DT UPRRTEINE ORGN I ; R TOES R MP J Y ITORRI PPU CETES R ; SR,P)+SP ( OV M K -ONO; 01HADI Q BE C?IS DND AERIM TENWEET BONTIDION CCERA; 5)(RSWCRTM TBTS TELASO I ; 5 ,R607717 # IC B K AS MCEVIDET GED ANY ITORRI PVESA; 5 ,RP)(S V MO UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO C.C.N IO. NCEVIDES INTAON CSR PNTREUR C ; P)(S,-SR P OV M T ENNMROVIENE AV STOP RA T ; VLAEROVD LIVAA D ENSPSUUN ; ; T XI END ANDPEUS SS,TUTA SET-SNO; 20OVQS BR C ND.E R METIT UCTRNSCOS-YE; 10OVQS T BG Y?ITORRI PCELI-SMETI; ) R0B(TAPP TBTS LCMS$T Z FN.I E BLTAKP COT N &NDPEUS SL.VO= T TAPST SE; 2)(RK,NCLS#V VBMO: 30OVQS ; OMRPM RO FITEX; 20VBQO P JM: 25OVQS CKTA SFF OCHITSWY BEDLLCAP PO; + P)(S T TS D DEENSPSUY ARNTLUVOK AS TET S);R5T(TATSS,SUOL#V VBMOUP) ; SHIFT INTO BYTE ADDRESS. ******** CMP (SP)+,DYNSIZ ; SEE IF WE HAVE GONE BY THE END OF ******** BHI QOVB40 ; DYNAMIC AREA. JUMP IF WE DID. ******** ; ******** .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BMI QOVA10 ; YES JMP QOVC00 ; NO-QUEUE IN QPART-'PUSH'  TIMOUT ; TIMER COMPLETE SUBROUTINE .ENDC ; .IFG NDISCS-2 .WORD 2 ; DEVICE 2 TIMER MODULE DTIMR3 = . .WORD 1 ; THREAD WORD .BYTE 0 ; DON'T QUEUE TASK .BYTE JOMSEC ; OPTION BYTE .WORD 0 ; RESET/TIMER .WORD TIMOUT ; TIMER COMPLETE SUBROUTINE ADDRESS .ENDC ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; ; VESA $ . = NTDI ;. PTRUERNT I ;C IS DHE TOFL VELEE ARDWAR HHE TTOT SEREE BLLWIL VELE ; ORSSCERO PHE TO. NITUNR LEOLTRON CCEVIDEE THS INTAON C ;R PSR TOEC VPTRUERNT IHE TE.IM TPTRUERNT IATT OUD-KEOC L ;E BOT NLLWIS PTRUERNT IR.LENDHAT UPRRTEINC IS DHE TIST IN D ;; ;E AG.P ;N URET R ; C P TS R 1 RRETOES R ; 1 ,R)+SP ( OV M R WENS AET S ; R01, R OV M0:A1TS WY GLINRDCOACT USDJ-AESR ) CHSR QOMFRE AS CIN ( #SKTAT GE; 5 ,RSKTA$C V MO: 20OVQS C ND.E ORRR ERENOIG; + P)(S T TS E ULOD MERIM TADRETH; METI,QPC R JS S NDCOSE6 37 'ATG DOH-TCWA; P)(S,-76#3 V MO K ACSTO TSSREDD ALEDUMO; P)(S,-R3 V MO T SEREG LA FCERAE UR SKEMA; 3)(RCERATM R CL E ULOD MERIM TOFS ESDRAD; R3D,MOIM#T D AD S ESDRADG INNNGIBEE BLTAT ARQP; 3 ,R0)(RTNARQP V MO X Q.ENDC QOVA10: MOV QPARTN(R1),R2 ; GET THIS PRIORITY'S QPART TABLE ADDRESS BEQ QOVB30 ; ERROR(-1),DOESN'T EXIST QOVA20: MOV (R2),R5 ; IS QPART CELL AVAILABLE? BEQ QOVA30 ; YES - MAKE ENTRY INC R5 ; DID WE GET TO END OF TABLE BEQ QOVB40 ; YES - ERROR TYPE 1, QPART FULL CMP (R2)+,(R2)+ ; BUMP TO NEXT QPART CELL BR QOVA20 ; TRY AGAIN QOVA30: MOV #PLO ONE HUNDRED MILLISECOND TIME DELAY SET WORD ; TDELAY = . .BYTE 100. ; MULTIPLE .BYTE 0 ; ONE-SHOT ; ; USED TO IGNORE DISC TIME-OUT ; NOPTIM: RTS PC ; RETURN TO TIMER ; ; TIMER MODULE ADDRESSES ; TMTBL = . .WORD DTIMR1 ; TIMER MODULE DISC UNIT 0 ; .IFG NDISCS-1 .WORD DTIMR2 ; TIMER MODULE DISC UNIT 1 .ENDC ; .IFG NDISCS-2 Y ; 1 R NC I O N ; 0 A1TS W EQ B ? ORCTSEL IARTPAA E ERTHS I ; 0 ,R77 # IT B 4 6 ; R1 R AS BYE IDIV D ; 1 R SR A - RSTOEC S ; 1 R SR A O NT I ; 1 R SR A H GTEN L ; R1 R AS RTVEON C ; 1 R SR A E ATICPLDU; 1 ,RR0 V MO ERSTGIREK OR WOR FR1E AV S ; NDEIND OR WTYRIIOPRE UTMPCO; R0 L AS . = 10OVQS ; SKTAE ICSLE-IM TOFN IONSPEUS SRYTAUNOL VOR FERIM TUPT SE ; ; LCMS$T Z FN.I ; C ND.E Y TRENG INITWAR FOS UEUE QCHARSE; H RCQS P JM TCKPCH Z FN.I C ND.E ITEXT,KP CNOC-MINADY; 20OVQS BR TCKPCH FZ.I C ND.E C ND.E D CELI-SMETI; 10OVQS L BP LCMS$T Z FN.I C ND.E D MCK,PSR ; SET CPU LOCK-OUT TST (R2) ; STILL AVAILABLE? BEQ QOVA40 ; YES - CONTINUE MOV 4.(SP),PSR ; RESET PRIORITY LOCKOUT BR QOVA10 ; AND SEARCH AGAIN QOVA40: MOV R3,B3RR ; SET ALLOCATION SEARCH ADDRESS MOV #SRCHB3,B3FR ; START B3 SEARCH ******** .IFZ $CORAL JSR PC,SEARCH .IFF ;  .WORD DTIMR3 ; TIMER MODULE DISC UNIT 2 .ENDC ; ; EXPAND IF MORE THAN 3 DISC DEVICE CONTROLLERS ; ; ; TIMER COMPLETE RECEIVED SWITCHES ; TMCRSW = . .BYTE 0,0,0 ; SWITCHES TO KEEP CONFLICT ; ; BETWEEN DISC INTERRUPT AND ; ; TIMER CALL FROM HAPPENING ; .=TMCRSW+NDISCS ; USE ONLY WHATS NEEDED .EVEN ; ; EXPAND FOR MORE THAN 3 DISC DEVICE CONTR ) SP-(1, R OV M . = CTDSWR ;D YEROSTDEE BOT NLLWIS ERSTGIRER HEOT; RSTOEC S =R0T XI EONUP ; DSOR W =R0Y TRENN PO U ;T SCRD,WPC R JS ; S.ORCTSED LEIL FLYALTIAR P ;S DELUNC I).DSOR W64 (RSTOEC STOS RDWOT ERNVCO ; ;; 50HADIO TNSURET-RRSMPCOY BNEDO; ; UEUE QSTUEEQ RINT ESQUREE EUQU; ) R0T(TPNI@I P JM SSREDD AERADHET GE; 0 ,R0)(RERADHE V MO EXND IRDWO; R0 L ASJXEFI; 20OVQS Q BE RTPAFX Z FN.I E?YP TTYRIIOPR; ) R0B(TAPP TBTS T ARXP!FLCMS$T Z FN.I LEABNTOIKPECCH& D ENSPSU. OL VT:TAPST SE; 2)(RK,SCOL#V VBMO NO; 30OVQS E BG E?BLTAINPOCKHE CONTITIAR PIS; CKTNPR,#2)(R PBCM RDWO. RG ARTPA QING LA FNDPEUS SL.VOT SE; ) R2G(ARTR C IN ONTIMAORNF IRYNT ERTPA QNDFI; N RTQP,FPC R JS H RCQSR FO; ; I ******** JSR PC,DELAY ; TEMP. WAIT TIL B3 UP TO SPEED ******** .ENDC SWAB (SP) ; SET UP FIRST WORD OF QPART ENTRY MOV (SP)+,(R2) ; TASK # (POPPED FROM STACK),C=0&PSTAT=WAITING MOV (SP)+,TRARG(R2) ; ARGUMENT TO QPART INCB NREQQP(R0) ; BUMP NO. REQUESTS THIS PRIORITY ; ; 20.1 USEC DELAY QOVA45: TST B3FR ; B3 STILL BUSY? OLLERS ; .PAGE ; ; THE FOLLOWING IS USED TO CONTROL THE COMPRESSION INTERLOCK ; PROTECTION FEATURE. ; CPRSIP: .WORD -1. ; COMPRESSION IN PROGRESS FLAG ; .PAGE ; ; EQUATES FOR TASK PROGRAM HEADERS ; THREAD = 0. ; THREAD WORD ENTRY = 2. ; TASK ENTRY POINT INITPT = 4. ; TASK INITIALIZATION ENTRY MAXT = 6. ; MAXIMUM EXECUTION TIME FLAGS = 8. S ESPROM COFR BEUM NSKTAT GE; R0O,TNCP#$ V MO . = 00DCCI ; PETYE IL FISTHS ESGRRO PINN IOSSREMPCO ; ; 3 /7152/ ; PC S RT 3 /7152/ 15E YP TORRR ERTPORE; R05,01RR#E V MO 3 /7152/ ; . = 15DBCI 3 /7152/ ; C ND.E PC S RT FK ACSTN OLYOVQSY BEDLLCAT SE; ) SP-(.,#1 V MO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS V MO RNTURER PERO POR FPCT SE; P)(S+,P)(S V MO R BEUM NSKTAT GE; 1 ,RP)(S2. V MO . = LYOVQS ; K ACSTM TEYS SON ; VESA QBYD DEENSPSUY ILARNTLUVON EE BDYEALR AAS HSKTA ; ; 5 OM CTSE.C E AG.P ; ; RNTURE; PC S RT: 20CKNO C ND.E S ERSTGIREE ORSTRE; R OP,PR5 E 1/23/73 BMI QOVB50 ; YES-DO ERROR STUFF 1/23/73 TSTB B3FR ; BSIZE BLOCKS AVAILABLE? 1/23/73 BPL QOVA47 ; YES 1/23/73 JMP QOVD00 ; NO-CHECKPOINT OR WAIT QOVA47: MOV B3AR,R3 ; GET ANSWER AND SAVE FOR LATER. ******** MOV R3,B3RR ; SETUP ALLOCATION REQUEST. ******** MOV #ALLOB3,B3FR  ; TASK STATUS FLAG BITS ,BYTE. HPRIOR = 9. ; TASK PRIORITY CTIMER = 10. ; CURRENT TIMER VALUE TARG = CTIMER+ARG+ARG ; ARGUMENT (OPTIONAL) CPUST = TARG+2 ; CPU STATUS REGISTER (BYTE) TASKNO = CPUST+1 ;TASK NUMBER (BYTE) TSTACK = TASKNO+1 ; SAVED STACK POINTER REGSV = TSTACK+2 ; REGISTER SAVE AREA ; ; EQUATES FOR I/O PARAMETER LIST ; THREAD = 0. 14E YP TORRR ERTPORE; R04,01RR#E V MO . = 14DBCI DCDS$D Z FN.I ;C P TS R 0 1PETYR ROERT OREP R ; 0 ,R10R0ER # OV M . = 10DBCI ;C P TS R 9 E YP TORRR ERTPORE; R09,00RR#E V MO . =9 B0ID C; PC S RT 8PETYR ROERT OREP R ; 0 ,R08R0ER # OV M . = 08DBCI ;E NUTION C ; 0 A2ID C R B O I/E THT ARST; 0 ,R+2RDWO#N D AD TOH ICWHT ASSREDDB R JS: 10CKNO T OUCKLOT SERE; R PS+,P)(S V MO E BLTAINPOCKHE COT N =ATST P'SSKTAT SE; 2)(RK,NCRT#P VBMO N IOATRMFOINT ARQPS K'AS TNDFI; N RTQP,FPC R JS T OUCKLOT SE; SR,PCKLO#P V MO Y ITORRI PVESA; ) SP-(R,PS V MO N URET RND ARENOIG- NO; 10CKNO T BL Y?LAEROVN AERLLCA; INTMOV,#R1 PBCM ERMBNUK AS T'SERLLCAT GE; 1 ,RSKTA$C V MO RSTEISEG RVESA; HRUS,PR5 A ; START B3 ALLOCATION ******** .IFZ $CORAL JSR PC,ALLOC .IFF ; ******** JSR PC,DELAY ; TEMP. WAIT TIL B3 UP TO SPEED ******** .ENDC BISB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT MOV R3,R4 ; CALCULATE ADDRESS CLRB R4 ; OF PARTITION ADD R4,R4 ; FROM START BLOCK  ; LIST THREAD WORD DEVICE = 2. ; LOGICAL DEVICE NUMBER TYPE = 3. ; EXIT TYPE EXIT = 4. ; I/O COMPLETE ADDRESS IF TYPE = 3 ERRTSK = 6. ; TASK # TO QUEUE IF I/O ERROR LEVEL = 7. ; DISC PRIORITY LEVEL OF I/O REQUEST ERROR = 8. ; I/O ERROR INDICATOR SYSTEM = 10. ; RESERVED FOR DISCIO DATA = 12. ; ADDRESS OF I/O BUFFER ; ; ATELACUAL C ; R04, R OV M IO SOR FERXFN IDSOR W ; 4)(RE3US,D4)(RRDWO N OV M O SIR FOT SE; 4)(RE2US,DR0 V MO /O IOFS ESDRADR TOEC S ; R0),R4T(ECLS R DD A 0 ,R2)(RTRSC V MO 3 /7152/ 9PETYR ROER- S YE; 09DBCI I BH ? LEFIW LORFVE O/O ILLWI; 3 ,RR0 P CM ORCTSET ARSTD AD ; 0 ,R2)(RTRSC D AD T ESQUREO I/F ONTTEEXE ATULLCCA; 0 ,R4)(RCTSERL D AD > R JS K AS TVETIAC; 20CKNO Q BE M RO FEDLLCAE BSTMU; VETIAC T TS C SLTM!$TCKPCH Z FN.I . = PTCKNO ; ; ; C ND.E CHARSEE NUTION C; 35CHQS BR UT-OCKLOY ITORRI PETES R; SR,PP)(S2. V MO: 80CHQS H RCEA SRTTAES R; 05CHQS BR UT-OCKLOY ITORRI PETES R; SR,PP)(S2. V MO: 70CHQS ; T OUL-OL RTEIAITIN; 10VEQO P JM T OUCKLOU CPT SERE; = ADD BCPOOL,R4 ; AND BEGINNING OF CORE POOL ; ; 25.9 USEC DELAY TST B3FR ; B3 STILL BUSY? 1/23/73 BMI QOVB50 ; YES-DO ERROR STUFF. 1/23/73 MOV (SP),PSR ; RESET LOCKOUT .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; PRIORITY TIME-SLICED OR FIXED? BMI QOVA49 ; NO MOV QPARTN(R1),R5 ; YES- EQUATES FOR I/O BUFFER ; FILEID = 0. ; FILE IDENTIFICATION NO. SCFLAG = 2. ; SECTOR FLAG INOUT = 3. ; INPUT FUNCTION DUSE1 = 4. ; RESERVED FOR DISCIO DUSE2 = 6. ; RESERVED FOR DISCIO DUSE3 = 8. ; RESERVED FOR DISCIO RLSECT = 10. ; RELATIVE SECTOR ADDRESS NWORD = 12. ; NO. OF WORDS IN XFER ; ; EQUATES FOR RELATIVE FILE P LEFIF ONTTEEXE ATULLCCA; 3 ,R2)(RTRSC D AD LEFIF OTHNGLET GE; 3 ,R2)(RTHLG V MO 3 /7152/ 8PETYR ROER- S YE; 08DBCI I BH E?IZ SLEFIN HA TERATRE G ; 2)(RTHLG0, R MP C S ORCTSEO TRTVEON C ; CTDSWRC, P SR J DCEN . 4 B1ID C NE B * ****** *ERXFN I=0/4DSOR#WE AV HSTMUK IS DDC D ; R03, # IT B C SDDD $ NZIF . 7O5//1R2 W777717F OERSFANTRX MAS AMESAS I 0 ; :SR,PP)(S V MO UPT-SES TUTA SUT-OLLRO; P SUOL,RPC R JS SKTAT OUL-OL ROFS ESDRADY TRENT ARQP; 1 ,RR5 V MO CKTA SFF OCHITSWY BEDLLCAP PO; + P)(S T TS NO; 80CHQS T BL ? OLPOALH IT WLEABATMPCOK OCBLT ARST; ) R0L(OOLP,AR3 PBCM R3 ABSW NO; 80CHQS T BG E?BLLAAIAVS CKLO BOFR BEUM NINT FI; 3 ,RR1 PBCM ZESI B'SSKTAT GE; R1),R1E(IZBS VBMO 9QPART ADDRESS FOR THIS PRIORITY MOV R4,PRTADD(R5) ; SET ADDRESS ALLOCATED FOR THIS PRI. .ENDC QOVA49: MOV #PRTHDR,R5 ; GET ADDRESS OF PARTITION HEADER INFO. QOVA50: MOV (R5)+,(R4)+ ; TRANSFER HEADER TO PARTITION BPL QOVA50 ; NOT FINISHED SUB #PHDSZE,R4 ; GET TO PARTITION BEGINNING MOV R3,(R4) ; SET SB AND NOB ; ; BUILD PARTITION HEADER, SET UP FOR ROLL-IN AND ; INITIATE I/O. ; OSITIONS ; FILEID = 0. ; FILE ID SCTR = 2. ; SECTOR FTYPE = 4. ; FILE TYPE PDVCE = 5. ; PROTECT STATUS AND DEVICE LGTH = 6. ; FILE LENGTH CKSAVE = 8. ; CHECKPOINTS SECTOR ADDRESS ; ; DISC ERROR NUMBER PARAMETERS ; ERR001 = 1. ; LIST ALREADY IN QUEUE ERR002 = 2. ; INVALID DEVICE NUMBER ERR003 = 3. ; ILL 735//1S2NKHI TERLLRONTCOS DDE NCSI0 >BET US M ; 5 B1ID C EQ B T ESQUREO I/N IDSOR WO. NET G ; 0 ,R4)(RRDWO N OV M . = 50DACI ;S ERETAMAR P/O IOR FRDWO N &CTSERLE US ; ;R LEAL CTON URET R ; C P TS R 3 1PETYR ROERT OREP R ; 0 ,R13R0ER # OV M E NUTION C -OK; 10DACI E BN ET SSSREDD ANTOIKPECCH; 4)(RE2US,D2)(RVESACK V MO . =0 A4ID C; RYTOECIR D'SLEFI6 O. NSKTAT GE; R1),R2K(TSOV SBBI R1 R CL N AIAGH RCEA SRTTA S -NO; 70CHQS E BN T TAPSE ATOLIS; R10,6077#1 C BI N AIAGH RCEA SRTTA-SIDVOY TREN; 70CHQS Q BE ? NGTIAI WLLTI SSKTAD HERCEA SIS; 1 ,R2)(R V MO T OUK-OC LTYRIIOPRT SE; SR,PCKLO#P V MO . = 60CHQS ; CEPA SRECOS K'AS TLEABNTOIKPECCH ; N IIT FLLWIT IIFE INRMTEDE- Y TRENG INITWAD UNFO ; ; 20OVQS 5 R0=PRIORITY ; R1=PRIORITY WORD INDEX ; R2=ADDRESS OF REQUEST'S QPART CELL ; R4=PARTITION ADDRESS ; QOVB00 = . MOV R2,R3 ; DUPLICATE QPART ADDRESS SUB QPARTN(R1),R3 ; CALCULATE IQPART - INDEX INTO QPART MOVB R3,IQPART(R4) ; SET IQPART IN HEADER MOVB R0,OPRIOR(R4) ; SET PARTITION'S PRIORITY MOV #GOTOV,IOCOMP(R4) ; SET I/O COMPLETE TO 'GOTOV' MOVBEGAL EXIT TYPE ERR004 = 4. ; ILLEGAL PRIORITY LEVEL ERR005 = 5. ; ILLEGAL FILE ID OR IFD ERR006 = 6. ; ILLEGAL I/O FUNCTION ERR007 = 7. ; NON-EXISTENT FILE ID ERR008 = 8. ; # WORDS IN I/O GREATER THAN FILE SIZE ERR009 = 9. ; REQUEST NO WHOLLY CONTAINED IN FILE ERR010 = 10. ; DISCIO WRITE REQUEST IN PROTECTED FILE ERR011 = 11. ; DISC I/O ERRORN IVESACK SE U -RYNT EIOKPCH ; ;R LEAL CTON URET R ; C P TS R S ORRR ENOY IFGNSI; R0 R CL: 30DACI 10E YP TORRR EET S ; 10DBCI Q BE Y TRENO CIIS DIFD TEECOTPR; 1)(REMSTSY0,0040#1 T BI LEFID TEECOTPRA T NO- K O ; 0 A3ID C PL B K ECCHE IL FEDCTTERO PRMFOER-PES Y ; 2)(RCEDV P B ST T T XI E -NO; 30DACI Q BE T?ESQUREE ITWRA T IIS; ) R4T(OUIN TBTS 2 P JM E BLTAKP C &US SL.VO= T TAPSS T'ESQURET SE; 5)(RK,SCOL#V VBMO NGOI GEPKE- O N; 20CHQS E BL S T'ARQPR IOPR NEDCHARSE; ORRINP,#R0 P CM: 55CHQS T XI END ALEABNTOIKPECCHT SE; 20PTCK BR NO; 55CHQS E BN PTCKY BEDLLCA; P)(S T TS . = 50CHQS ; ERLLCAE INRMTEDE ; ; 10CHQS BR H RCEA SOFY ITORRI PMPBU; R0 C IN: 40CHQS N'KIOO-L-AEPKE1 #3.,IOEXIT(R4) ; SET I/O EXIT TYPE MOV R4,R3 ; CALCULATE ADDRESS ADD #OFLEID,R3 ; OF DATA BUFFER MOV R3,DBADDR(R4) ; SET IT IN I/O LIST CLR R5 BISB OVTSK(R2),R5 ; GET REQUEST'S TASK NUMBER ASL R5 ; CALCULATE TASK WORD INDEX MOV IFD(R5),OFLEID(R4) ; SET IFD/FILE ID IN LIST CLRB IOFCN(R4) ; SET READ FUNCTION ADD #IOTHRD,R4 ; R4 =-I/O NOT COMPLETE ERR012 = 12. ; TIME-OUT ERROR ON XFER ERR013 = 13. ; NO CKSAVE SPECIFIED DURING CHKPIO ERR014 = 14. ; DDS DISK ONLY - # WORDS NOT MUL. OF 4.2/15/73 ERR015 = 15. ; # OF WORDS = 0 - ILLEGAL. 2/15/73 ; ; ; PSR = 177776 ; PROCESSOR STATUS REGISTER PLOCK = 000340 ; PRIORITY LOCKOUT MASK FOR PSR .PAGE .TITLE DISCIO,CHKPIO,PFRITE ;*********** ERXFF OSSREDD ARTTA SET S ; ) R41(SEDU0, R OV M0:A2ID CE ERTHO I/T ARSTD AN ; R0T,ECLS#R D AD CTSERLF OSSREDD ATELACUAL C ; R04, R OV M R FE XOFH GTEN LET S ; ) R43(SEDU0, R OV M DSOR WO. N ; 0 R SL A OR F ; 0 R SL A 4 6 ; 0 R SL A Y B ; 0 R SL A RSTOEC S ; 0 R SL A Y PLTIUL M ; 0 R .; 30CHQS BR E BLTAT ARQPN IRYNT EXTNEO TMPBU; + 2)(R+,2)(R P CM: 35CHQS E ICRVSEG INITWAY TREND UNFO; 60CHQS Q BE T TAPSE ATOLIS; R10,6077#1 C BI Y TRENT EX NTOP UM-BIDVOY TREN; 35CHQS Q BE ELEV LXTNEO TMPBU- D KEAR MILTA1 -; 40CHQS Q BE ? LEAB TOFD ENO TEDCHARSE; R1 C IN LLCET ARQPA F ORDWOT RSFIT GE; 1 ,R2)(R V MO: 30CHQS ELEV LXTNEO TMPBUT-ISEX- I/O LIST ADDRESS MOV R4,-(SP) ; SET ON STACK FOR DISC SERVICE .IFNZ $TMSLC!CHKPTC TSTB (R2) ; IS TASK CHECKPOINTED BPL QOVB10 ; NO JSR PC,CHKPIO ; YES - READ CHECKPOINTED TASK BR QOVB11 QOVB10 = . .ENDC JSR PC,DISCIO ; ROLL-IN OVERLAY TASK QOVB11: TST IOERRW(R4) ; DID DISCIO REQUEST PROCESS ERROR OCCUR? BNE QOVB60 ; YES ; ************************************************************ ;* DISCIO,CHKPIO,PFRITE * ;* * ;* PROGRAM IDENTIFICATION. DISCIO * ;* * ;* PURPOSE. THIS SUBROUTINE IS RESPONSIBLE FOR ALL COMMUNICATIONS * ;* WITH A DISC IN ROS. ALL REQUESTS ARE QUEUED IN A SPECIFIC * ;* SL A R0),R2H(GT L OV M0:A1ID C. NOR TOEC SRTTA SET S ; ) R42(SEDU),R2R(CT S OV M Y ORCTREDIS LEFIN IO.NF ISE U -NO; ; ES Y ; 0 A5ID C EQ B ? CTSERLN IORCTSEE IVATEL RSE U ; ) R4G(LACF S B ST T S YE; 40DACI E BN ? EDSTUEEQ R/O INTOIKPECCH; ) R1M(TEYS,S0000#4 T BI: 05DACI T OUCKLOT SERE; R PS+,P)(S V MO RYSAESEC NTSHA WDOS-YE; 00DCCI Q BE D?*T N'ESDO; 40CHQS Q BE S ESDRADT ARQPS Y'ITORRI PISTHT GE; 2 ,R1)(RTNARQP V MO X DEIND OR WTYRIIOPR ; R1 L AS CHARSEE ATULLCCA; 1 ,RR0 V MO: 20CHQS NO; 50CHQS E BG 'SSKTAE IVCT AANTHR HEIG HI.PR; 4 ,RR0 P CM ELEV LXTNEO TMPBU- NO; 40CHQS L BP ?ICAMYN DELEV LTYRIIOPRS I; ) R0B(TAPP TBTS: 10CHQS T RSFI1 L VELEH RCEA STOP UET S; R0.,#1 V MO) ; BEFORE EXITING FROM RPOM AFTER A QOVLAY CALL, ROLL-IN ; OR ROLL-OUT REQUEST-SET TSTAT = 9 = QINQPT ; R2 = QPART ENTRY ADDRESS ; QOVB15 = . CLR R1 BISB OVTSK(R2),R1 ; GET TASK NUMBER MOVB #QINQPT,TSTAT(R1) ; SET QINQPT AND EXIT ; ; EXIT FROM RPOM ; QOVB20 = . MOV (SP)+,PSR ; POP PSR OFF STACK AND RESET ; ; LOCKOUT JUST IN CASE SET RTS PC DISC PRIORITY. ALL DISC REQUESTS ARE FILE ORIENTED SUCH * ;* THAT THE REQUESTING PROGRAM SUPPLIES A FILE NUMBER (OR IFD) * ;* AND, OPTIONALLY, THE SECTOR NUMBER RELATIVE TO THE BEGINNING * ;* OF THE FILE AND THE NUMBER OF WORDS TO READ/WRITE. * ;* DISCIO WILL HANDLE ERRORS AND REPORT THEM TO THE SYSTEM * ;* IN THE SPECIFIED MANNER. THREE ENTRY POINTS ARE PROVIDED * ;* FOR DISC SERVICE. THEY ARE: SEESPROM CNGEI BPETYE IL FISTH; P SIPR,CR0 P CM UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO CKTA SONS PVESA; ) SP-(R,PS V MO E ATOLIS; R00,6077#1 C BI E YP TLEFIT GE; R0),R2E(YPFT VBMO STTES PROM CRENOIGS-YE; 05DACI E BN ? RYNT ETERIPF; 1)(REMSTSY0,0000#1 T BI . =D LIFI C; ERXFN IDSOR WOF. NO= ' E3US'D ; O. NORCTSET ARST= ' E2US'D &: 05CHQS K AS TVETIACF OOB/NSBT GE; R3),R1B(NOPH V MO K AS TVETIACF OSSREDD ARYNT EVESA; 5 ,RR2 V MO SKTAE IVCT AOFY ITORRI PVESA; 4 ,RR0 V MO S ESDRADR DEEA HAMGRRO PVESA; 1 ,RR4 V MO . = H RCQS ; S ESDRADR DEEA HAMGRRO P =R4 ; Y TRENS K'AS TVETIACF OSSREDD ARTPA Q =R2 ; SKTAE IVCT AOFY ITORRI P =R0 : RYNT EONUP ; Y.VLSO Q = 1T,KP C = 0. CKTA SIN % ; ; ERROR TYPE -1, QPART DOESN'T EXIST FOR THIS PRIORITY ; QOVB30 = . DEC 8.(SP) ; SET -1 ERROR CODE ON STACK BR QOVB45 ; EXIT ; ; ERROR TYPE 1, QPART FULL FOR THIS PRIORITY ; QOVB40 = . INC 8.(SP) ; SET 1 ERROR CODE ON STACK QOVB45: MOV (SP)+,R1 ; GET TASK NUMBER THAT CAUSED ERROR CLRB TSTAT(R1) ; SET TASK QUIESCENT TST (SP)+ ; POP ARG OFF STAC * ;* DISCIO-SUBROUTINE TO PERFORM DISC I/O. * ;* CHKPIO-SUBROUTINE FOR SYSTEM USE ONLY TO * ;* PERFORM CHECKPOINT I/O. * ;* PFRITE-SUBROUTINE FOR SYSTEM USE ONLY TO * ;* PERFORM PROTECTED FILE I/O (WRITE). * ;* * ;* PROGRAM USAGE. THE LINKAGE TO SUBROUTINE DISCIO IS: ; ERXFF OSSREDD ARTTA S =1'SEDU ' ;: ORRR ENOF I ;E ON N = 0D.REURCC OATTHE YP TORRR E =R0 ; ;: IDILCFM RO FRNTUREN PO U ;; O. NITUNR LEOLTRON CSCDI= 5 R ;R FEUF B/O IOFS ESDRAD= 4 R ;Y ORCTREDIE IL FTEIAPRROPP AOFS ESDRAD= 2 R ;S ESDRADT IS L/O I =R1 E:ERWH ; ;D LIFI,CPCR JS ; ;: ISE NCUEEQ SNGLIAL CHE T ;; E.NCUEEQ S/O IRTTA" ; NDOU FBEL IL WCHITSWY BEDLLCAA . EDCHARSEE BLLWI ; ESEUQUL AL, Y'VLSO'QY BEDLLCAF IS.RTPA QTYRIIOPR ; ERGHHIH RCEA SLYONL IL W',PTCK 'BYD LEAL CIF ; D.TECUXE EICOG LINL-OL/RUT-OLLROD AND DEENSPSUE BLLWI ; K AS TVETIACE TH, NDOU FISE ONF IE.ACSPE OR C'SSKTA ; VETIACE THO NT IIT FLLWIT HA TS,T'ARQPC MINADY ; HE TINT ESQUREG INITWAA D IN FTOD LEAL CISH RCQS ; ; TCKPCH Z FN.I ; ; ERCHATSPDIR OSKTAO TRNTURE; PC S !K BR QOVB20 ; EXIT ; ; ; ERROR-B3 BOX HUNG UP ; EVENTUALLY HANDLE ERROR WITH SOFTWARE BACK-UP ; ; QOVB50: HALT ; REAL-TIME ERROR HANDLER********* ; ; ERROR OCCURRED DURING THE DISCIO REQUEST PROCESSING. ; SOMETHING WRONG-CAN'T ROLL-IN ; QOVB60: MOV R4,R1 ADD #-HIOLST,R1 ; TASK HEADER ADDRESS MOV R5,R4 ASR R4 ; TASK NUMBER ASL R0 ;  * ;* * ;* MOV [LIST],-(SP) * ;* EMT DISCIO * ;* WHERE THE I/O LIST ADDRESS WILL BE FOUND ON THE STACK. * ;* THE FORTRAN EQUIVALENT CALL IS: * ;* * ;* CALL DISCIO(LIST) SHE TOR FE3US DND AE2US D1,SEDU ; ET SND ATELACUAL CLLWIE INUTROUB SISTH. RYTOECIR D'SLEFIE TH ; THWIT ECSPREN ISTUEEQ R/O IHE TOFY ITIDAL VHE TNEMIERET D ;L IL WATTHO CIIS DTOE INUTROUB SALRNTEINN AISD LIFI C ;; GEPA . 0 E1IO D R B STUEEQ RTERI/WADRER FOT EX NTERI W ; 2 ,R1. # OV M0:E2IO DO I/T ARST; 00OCDI BR CHITSWN FCE PLLIMUT SERE; 4)(RUTNO,I00#2 CBBI: 10OEDI STUEEQ RWCW/R FOT EX NCKHE CTERI W ; 2 ,R2. #RT: 40PTCK C ND.E T OUCKLOU CPT SERE; R PS+,P)(S V MO CKTA SFF OCHITSWY BEDLLCAP PO; + P)(S T TS UEUE QTYRIIOPRF OADHET ASKTAE EUQU; 0)(RSTIR,FR4 V MO: 30PTCK LYEROPPRT AS LUPT SEY-PTEM; ) R0T(AS,LR4 V MO E EUQUY PTEMT NO; 30PTCK E BN D OR WADRETHS K(AS TUPT SE; 4)(R),R0T(RSFI V MO X DEIND OR WTYRIIOPR; R0 L AS S RON IEDEUQU= T TATST SE; ) R1T(TATSS,ROIN#Q VBPRIORITY WORD INDEX JMP GOOV50 ; DISCIO READ ERROR PROCESSING ; .IFNZ $TMSLC!FXPART ; ; PUSH REQUEST INTO QPART TABLE QUEUE ; R0 = PRIORITY ; R1 = PRIORITY WORD INDEX ; R3 = TASK'S B3 REQUEST ADDRESS IF NEEDED ; QOVC00 = . MOV QPARTN(R1),R2 ; GET QPART TABLE ADDRESS THIS PRIORITY BEQ QOVB30 ; ERROR (-1), QPART DOESN'T EXIST MOV #PLOCK,PSR ; SET PR * ;* * ;* THE LINKAGE TO SUBROUTINES CHKPIO AND PFRITE ARE RESPECTIVELY: * ;* * ;* MOV [LIST],-(SP) * ;* JSR PC,CHKPIO * ;* * ;* AND MOV [LIST],-(SP) OV M ES Y ; 0 E2IO D NE B ? 4 =CN F/O I ; 4)(RUTNO,I4. # B IT B N FCD TEESQURER FOO I/M ORRFPE; 70OBDI L BP CN F/O I'SSTUEEQ RET G ; 2 ,R4)(RUTNO I B OV M . = 00OEDI ; M.ORRFPEO TONTINCFUE INRMTEDE ; . /O IRTTA SOR FUPT SEY ADREAL3 SEDUD AN2 SEDU ; E1US DM,TEYS SD.DEEE NOT NISN IOATRMFOINY ORCTREDIE IL F ;; ;R HETCPAIS DTOT XI E ; H TCSP D MP J K AS TNDPEUS S ; E AVQSC, P SR JMO LEABNTOIKPECCH= T TAPST SE; 2)(RK,TCAR#P VBMO UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO C ND.E O LS AO.FN ITNARQPD AN ; N RTQP,FPC R JS N AIAGR BEUM NSKTAT GE; 1 ,RSKTA$C V MO: 20PTCK ; Y ITORRI PICAMYN DOT NIFE ER HESOM COR ; D UNFOT NOT ESQUREG INNDPEF ICHSR QOMFRS RNTURE ; ; CHARSEQ M ORRFPES-YE; H RCQS I BM TYRIIOPRC MINADY; ) R0B(TAPP TBTS TCKPCH Z FN.I IORITY LOCKOUT CMPB NREQQP(R0),MAXENT(R2) ; IS QPART FULL? BEQ QOVC30 ; YES TSTB NREQQP(R0) ; WILL THIS BE FIRST REQUEST? BPL QOVC10 ; NO - PUT IN QUEUE TST PRTADD(R2) ; YES - DO WE NEED ALLOCATION? BNE QOVC10 ; NO - PUT IN QUEUE MOV R3,B3RR ; SET SEARCH ADDRESS FOR B3 BIS #SRCHB3,B3FR ; START SEARCH REQUEST .IFZ $CORAL JSR PC * ;* JSR PC,PFRITE * ;* FORTRAN EQUIVALENT CALLS DO NOT EXIST FOR CHKPIO AND PFRITE. * ;* * ;* THE I/O PARAMETER LIST IS CONSTRUCTED AS IN THE ROS I SPEC., * ;* PAGE 42. * ;* * ;* THE DATA BUFFER LAYOUT IS AS F NDPEUS SRYTAUNOL V ; P)(S - LR C O CIIS D ; R0+,P)(S V MO REFOBE ; R1+,P)(S V MO ERLLCA ; R2+,P)(S V MO OF ; R3+,P)(S V MO NTMEONIRNV E ; R4+,P)(S V MO RETOES R ; 5 ,R)+SP ( OV M R PSE AV S ; P)(S2.,1)+SP ( OV M . = 40ODDI ;T XI E 2PETY- M RAOGPRG INLLCAD ENSPSU ; ;N URET RNETIOUBRSU; PC  N IOATRMFOINN RTPA QNDFI; N RTQP,FPC R JS K ACSTN OPTCKY BEDLLCAT SE; ) SP-( R CL CKTA SONS TUTA SORSSCERO PVESA; ) SP-( R CL R HETCPAIS DOR FPCS RTT SE; ) SP-(H,TCSP#D V MO 0ELEV LTHWIT OUCKLOT SERE; R PS R CL T TATSN ISYBUY LAEROVT SE; ) R1T(TATST,ACVY#O VBMO R BEUM NSKTAT GE; 1 ,RSKTA$C V MO K ACSTM TEYS SONT GED ANT IDO; VESA,QPC R JS T OU,SEARCH .ENDC INCB ALLOSW(R2) ; SET ALLOCATION SWITCH QOVC10: MOV (SP)+,R4 ; GET TASK NUMBER SWAB R4 ; TASK NO./C = 0/PSTAT = WAITING MOV (SP)+,R5 ; GET TRANSMITTED ARGUMENT JSR PC,PUSHQP ; 'PUSH' ENTRY INTO QPART BNE QOVC20 ; NOT FIRST REQUEST-WAIT IN TURN MOV PRTADD(R2),R4 ; GET PARTITION ADDRESS MOV HEADQP(R2),R2 ; GET ADDRESS OF ENTRY OLLOWS: * ;* WORD 0 = FILE ID * ;* WORD 1,BYTE 0 = SCFLAG * ;* WORD 1,BYTE 1 = INOUT ; ;* WORD 2 = FOR DISCIO USE * ;* WORD 3 = FOR DISCIO USE * ;* WORD 4 = FOR DISCIO USE * ;* WORD 5 S RT 5ELEV LOMFRT SERE; R PS+,P)(S V MO CHITSW. UB STELEMPCOR METIT SERE; 5)(RSWCRTM RBCL . =0 D3IO D; NETIOUBRSUE ETPLOM CERIM TOMFRN URET R ;; RNTUREE INUTROUB S ; C P TS R R FON IOITOS PCKTA SEROPPRO TSP; + P)(S T TS R0+,P)(S V MO R1+,P)(S V MO R2+,P)(S V MO RSTEISEG R ; 3 ,R)+SP ( OV M S R'LEAL C ; 4 ,R)+SP ( OV M CKLOR DEUNE AVQS; SR,PCKLO#P V MO E EUQUREO NND ANDPEUS SL.VOIN; P)(S,-1.#- V MO E AVQSR FOR PS; ) SP-(R,PS V MO E ORGN-INO; 40PTCK T BL ? SKTAY LAEROV; INTMOV,#SKTA$C P CM K AS TVETIAC ; 40PTCK Q BE M RO FEDLLCAE BSTMU; VETIAC T TS C SLTM!$TCKPCH Z FN.I . = PTCK ; ; 4 OM CTSE.C E AG.P ; C ND.E ; OMRPM RO FITEXTST R4 ; ARE WE REQUESTING AN ALLOCATION? BNE QOVC15 ; NO JMP QOVA45 ; YES-ALLOCATE AND BUILD HEADER QOVC15: MOVB #IOIP,(R2) ; SET I/O IN PROGRESS IN PSTAT MOV (SP),PSR ; RESET PRIORITY LOCK-OUT BR QOVB00 ; SET UP AND START ROLL-IN QOVC20: MOV R3,R2 ; QPART ENTRY ADDRESS BR QOVB15 ; EXIT ; ; DETERMINE IF THERE ARE ANY ABORT REQUESTED ENTRYS ;  = RLSECT * ;* WORD 6 = NWORD * ;* WHERE: * ;* FILEID = FILE IDENTIFICATION NO. IF HIGH ORDER BIT * ;* IS SET, INDEX TO CORE RESIDENT FILE DIRECTORY * ;* (IFD = NO. OF DIRECTORIES TO REQUESTED ONE). * ;* INOUT = READ/WRITE FLAG. 0 = READ, 1 = WRITE, * ;* RETOES R ; 5 ,R)+SP ( OV M SR PRETOES R ; SR,P)+SP ( OV M5:D2IO DS YE; 40ODDI Q BE ?STUEEQ RIND IEIFECSP2 E YP TITEX; 1)(RPETY.,#2 PBCM . =0 D2IO D; SSREDD ASTLIO I/= R1 ; ERLLCAY BEDFICIPE SAST XI E ;; 25ODDI BR T OUCKLOR DEUND OR WADRETHK AC BMPBU; 1)(R C IN: 15ODDI CEENQUSET XI ERTTA S ; 5 D2IO D R B LEIBATMPCOE AK M ; P)(S,-SR P OV M ; 20VBQO P JM USATSTS RON IEDQ'E ORSTRE; ) R1T(TATSS,ROIN#Q VBMO E IM TISTHE IM TLFHAE ONY NL OVEGI; 4)(RERIMCT R AS . = 30OATS N RTQP,FPC R JS N AIAG. FOINT ARQPT GE; 1 ,RSKTA$C V MO . = 29OATS ; UEAL VALINIGOR2 1/O TCELI-SMETIT SERE ; ; E IN LINT ESQURET EX NCKHE CND A; 10OATS BR E EUQUF OUT OSKTAD TEORABE AK T; P LQUL,PPC R JS: 20OATS K AS TXTNEN -ILL  IN QPART-IF THERE IS, USE IT!! ; QOVC30 = . MOV 4.(SP),PSR ; RESET LOCKOUT QOVC35: MOV (R2),R5 ; GET QPART ENTRY INC R5 BNE QOVC40 ; OK-NOT END OF QPART JMP QOVB40 ; SORRY-QPART "IS" FULL-ERROR TYPE 1 QOVC40: CMPB (R2),#ABRTRQ ; ABORT REQUESTED ON ENTRY? BEQ QOVC50 ; YES-USE THIS CELL CMP (R2)+,(R2)+ ; NO-BUMP TO NEXT QPART CELL BR QOVC35 2 = WRITE CHECK AND 3 = WRITE WITH WRITE * ;* CHECK, 4 = WRITE AFTER READ (NOTE: THIS * ;* THIS IS AN UPDATE FCN AND MUST BE USED * ;* WITH AN EXIT TYPE 3. THE I/O COMPLETE * ;* SUBROUTINE WILL BE EXECUTED TWICE, ONCE * ;* AFTER READ AND ONCE AFTER WRITE.) * ;* SCFLAG = SECTOR FLAG. 0 = USE RLSECT AND NWORD * ;* NETIOUBRSUR ROERO I/C IS DTECUXE E ; R ERC, P SR J2:D1IO DD OR WADRE TCKBAP UM B ; ) R1 ( NC I . = 10ODDI ;1 E YP T ; ITEXN AASD TEEATRE BLLWIT I2,E YP TITEXF IE:OT N ;S ESDRADT IS L/O I =R1 ; ONTICAFISIASCLR ROER= 0 R ;T ESQURED EAHR TOTNNCA ; TERIPFR OO,PIHK,CIOSCDIM RO FITEXR ROER ; ;T UPRRTEINM RO FITEX; ORSTRE P JM 5ELEV LOMFRT SERE; R PS+,P)(S V MO RNTU RO& T OUT -ILLRO; 00VEQO P JM S SKTAH OT BOFY ITORRI P =R40= R; 4 ,RR0 V MO S YE; 29OATS Q BE ? ALINIGORO TCKBAE OM CND ATNARQP ; ; OFT OUS SKTAL AL" LLPUT ORAB "WED DI; 1 ,RR2 P CM SKTAT ESQUREF OSSREDD ARYNT EET G; 2 ,R2)(RQPADHE V MO ERADHE. RTPAN IRTPAIQW NET SE; ) R5T(ARQP,IR3 VBMO S ESDRADN IOITRTPA; 5 ,R2)(RDDTAPR V MO RTPAIQW NEE  ; KEEP A LOOKIN' QOVC50: MOV #PLOCK,PSR ; SET PRIORITY LOCKOUT CMPB (R2),#ABRTRQ ; ABORT STILL REQUESTED? BNE QOVC30 ; NO-START SEARCH ALL OVER MOV (SP)+,(R2) ; CONSTRUCT TASKNO/ C = 0/ SWAB (R2) ; AND PSTAT = WAITING MOV (SP)+,TRARG(R2) ; SET TRANSMITTED ARGUMENT JMP QOVB15 ; WAIT IN TURN .ENDC ; ; ; BSIZE BLOCKS NOT AVAILABLE AT THIS TIME ;  1 = USE FIRST SECTOR ADDRESS FROM FILE * ;* DIRECTORY. * ;* RLSECT = SECTOR ADDRESS RELATIVE TO FIRST SECTOR OF * ;* FILE. * ;* NWORD = NO. OF WORDS IN DISC TRANSFER * ;* * ;* IF SCFLAG = 0, THEN THE AREA FROM WHICH DISC DATA IS * ;* REE INUTROUB STELEMPCO- T OUE-IM T ; 0 D3IO D MI B L AL CSTUEEQ RNETIOUBRSU- NO; 20ODDI Q BE ET SAGFLT OUE-IM TORT UPRRTEIN; 5)(REDLLCA TBTS . =0 D0IO D; O. NITUNR LEOLTRON CSCDI= 5 R ;S ESDRADT IS L/O I1= R ;E ITFR PORO PIHK CO,CIIS DOMFRS ITEX ; ;# T NI UERLLRONTCOC IS DESOMEC BR5; R5 R AS ERXFO I/C IS DRTTA S ; 5)(RCS@D2, R OV M . =0 C3IO DO SIR FO5 O TATULLCCA; 3 ,RR2 B SU Y TRENT OUL-OL ROFS ESDRADW NE; 1 ,RR3 V MO SSREDD ARYNT EEDSHPUE ORSTRE; R3+,P)(S V MO: 25OATS 10OATS BR ILTAT AITT PU; P HQUS,PPC R JS P LQUL,PPC R JS NO; 25OATS E BN D?TEESQUREE BRTBO ALLWI; Q REDQ#O),R3T(TATS PBCM R BEUM NSKTA; R3 ABSW R3 RBCL S YE; 20OATS Q BE ? RYNT EOND TEESQURE R0 = PRIORITY ; R2 = QPART ENTRY ADDRESS ; QOVD00 = . TSTB PPTAB(R0) ; DYNAMIC PRIORITY? BPL QOVB15 ; NO-WAIT FOR MEMORY SPACE ; ; SEARCH FOR CHECKPOINTABLE TASK ; PSTAT = 1, PARTITION CHECKPOINTABLE ; PSTAT = 2, VOL. SUSPEND & CHECKPOINTABLE ; CHECK LOWEST PRIORITY FIRST ; QOVD05: MOV (SP),PSR ; RESET PRIORITY LOCKOUT MOV #NPRIOR,R4 ; GET FIRST SEARCH PRIORITY  TRANSFERRED TO OR FROM BEGINS AT WORD 6. IF SCFLAG = 1, * ;* THEN THE XFER BEGINS AT WORD 4. * ;* NOTE: 1 SECTOR CODED AT 64 WORDS * ;* * ;* IF AN ERROR OCCURS, WORD 4 OF THE I/O LIST (ERROR) WILL * ;* CONTAIN THE DISC I/O ERROR CODE UPON I/O REQUEST COM- * ;* PLETION. THE VALUES OF SYSTEM ARE: *ELEV LET S ; R PS0,34 # OV M O N ; 0 C3IO D S HI B 5?O TEDISRAE BITD ULHO S ; 40#3),SP ( B MP C L VELET ENRRCUE AV S ; P)(S,-SR P OV M T OUE-IM TECMS0 10R FOT SERE; ) R3M(TIES,RAYELTD V MO CEVIDES HI TLEDUMOR METIT GE; R3),R5L(TBTM V MO ;R FE X/O IONT OUE-IM TECMS0 10R FOR METIT SERE ; ;E ICEV DISTHD OR WCS DNTREUR CVESA; ) R5S(DC,CR2 V MO LEABENT UPRRTEIN& 1 :0N ICN FGOT SE; T ORAB; RQRTAB,#R3 PBCM R3),R2P(DQEA@H V MO: 10OATS Y TRENF OSSREDD AVESA; P)(S,-R3 V MO L AI TTOIN' SHPU 'ND A ; P HQUS,PPC R JS ADHEM RO FRYNT EL'UL'P; P LQUL,PPC R JS UTKOOC LTYRIIOPRT SE; SR,PCKLO#P V MO R0 R AS S ESDRADE BLTAT ARQPT GE; 2 ,R0)(RTNARQP V MO X DEIND OR WTYRIIOPR; R0 L AS NO; 30OATS E BN E?BLTAINPOCKHE CE.I., CKRTPAQOVD10: CMP R0,R4 ; IS REQUEST'S PRI. LOWER OR EQUAL? BGE QOVB15 ; YES-CAN'T CHECKPOINT THEN TSTB PPTAB(R4) ; IS SEARCH PRIORITY DYNAMIC? BPL QOVD40 ; NO-BUMP TO NEXT LEVEL MOV R4,R5 ; CALCULATE SEARCH PRIORITY ASL R5 ; WORD INDEX MOV QPARTN(R5),R1 ; GET PRIORITY'S QPART ENTRY BEQ QOVD40 ; DOESN'T EXIST - BUMP TO NEXT LEVEL QOVD20: MO  ;* * ;* 0= I/O SUCESSFUL * ;* 1= LIST ALREADY IN A QUEUE * ;* 2= INVALID DEVICE NUMBER * ;* 3= ILLEGAL EXIT TYPE REQUESTED * ;* 4= ILLEGAL PRIORITY LEVEL REQUESTED * ;* 5= ILLEGAL FILE ID OR IFD SPECIFIED 2 ,R01#1 S BI UEAL VONTINCFUT ECRRCOT GE; 2 ,R2)(RBLNTFC VBMO ;1 :002S DCN ICKHE CTERI W3= ; 012: 0CS DIND EA R2= ; 012: 0CS DINE ITWR= 1 ; ERLLRONTCOS DDR O11F- ROR FCS DCTRUSTON CND ATELACUAL C ;; C ND.E 20OCDI E BN 64**R)TOEC(SD EE N ; 0 R EC D E DAO T CFTHI S ; ) R5E(DA @ OL R 2BYY PLTIUL M ; ) R5R(DA @ SL A0:C2IO DC SDDD $ Z IF . AR DTOR TOT=TAPS; R3 C DE T TAPST GE; 3 ,R2)(R VBMO S YE; 30OATS Q BE T ARQPS T' IINE IVCT ARYNT ELYON; 0)(RQPEQNR TBTS * ********ERIM TBYE ON D * ; BEY LLALTUENEVL IL WISTH******TENO ; ; UEAL VCELI-SMETIE ORSTRE; ) R4R(METI,C4)(RXTMA V MO ONTIMAORNF IRYNT ERTPA QNDFI; N RTQP,FPC R JS CELI-SMETIO TO. NSKTAT GE; 1 V (R1),R5 ; SEARCHED TO END OF TABLE? INC R5 ; -1 TAIL MARKER BEQ QOVD40 ; YES BUMP TO NEXT LEVEL MOVB (R1),R5 ; GET CSTAT AND PSTAT BLE QOVD30 ; ALREADY CHECKPOINTED - VOID - OR WAITING CMPB R5,#VOLSCK ; IS IT CHECKPOINTABLE? BLE QOVD50 ; YES - DETERMINE IF CORE SPACE ADEQUATE QOVD30: CMP (R1)+,(R1)+ ; BUMP TO NEXT ENTRY BR QOVD20  * ;* 6= ILLEGAL I/O FUNCTION REQUESTED * ;* 7= NON-EXISTENT FILE ID * ;* 8= NO. OF WORDS TO READ/WRITE IS GREATER THAN * ;* FILE SIZE * ;* 9= RELATIVE SECTOR ADDRESS + LENGTH GOES BEYOND * ;* DEFINED FILE. * ;* 10= REQUESTED A DISCIO WRITE INTO A PROTEC S ; ) R5R(DA,@4)(RE2US D OV M DCEN . T IFSHD OR WLEUBDOR FOE IZALTINI I ; ) R5E(DA @ LR C 4 6ESIM TOR FTR CONTICALIIPLTMU; R0.,#6 V MO ;. SCDIF OITUNE BLSAESDRADT ESLLMA SBEL IL WISTH. KSOCBL ; RDWO4 6RE ARSTOEC SOS RTENO. E2US DINR TOEC SOMFR ; ERLLRONTCO1 -1RFR FOE DA& R DAT SED ANE ATULLCCA ; ;C SDDD $ Z IF . SSREDD ARTTA S ; ) R5A(CM,@4)(RE1US D OV M R TEISEG RNTOU CRDWOT SE; 5)(RCR@W,RSKTA$C V MO CKTA SONS TUTA SORSSCERO PVESA; ) SP-(R,PS V MO . = LYOVTS ; K ACSTM TEYS SON ; D DEENSPSUY ILARNTLUVOINN EE BAS HSKTA ; ; 3 OM CTSE.C LCMS$T Z FN.I E AG.P ; C ND.E S STUEEQ RNGTIAI WOR FCKHE C; 00XAQN BR B3R FOC SE U.810 ; + 2)(R),R2-( TBBI OFL TATOY LADE; + 2)(R),R2-( TBBI 0 = S ESDRADN IOITRTPAD AN ; 2)(RDDTAPR R CL ; AND EXAMINE IT. QOVD40: DEC R4 ; BUMP SEARCH LEVEL TO NEXT HIGHEST BR QOVD10 ; ; DETERMINE IF CHECKPOINTABLE OVERLAY TASK AFFORDS ; ENOUGH MEMORY SPACE FOR HIGHER PRIORITY'S REQUEST ; R0 = REQUEST'S PRIORITY ; R1 = SEARCH ENTRY'S QPART ADDRESS ; R2 = REQUEST'S QPART ADDRESS ; R4 = SEARCH ENTRY'S PRIORITY ; QOVD50 = . CLR R5 BISB OVTSK(R2),R5 ; REQUESECTED * ;* FILE. * ;* 11= DISC I/O ERROR, I/O NOT COMPLETE * ;* NOTE: DCS WILL BE IN DATA BUFFER WORD 2 * ;* DAE WILL BE IN DATA BUFFER WORD 3 * ;* 12= TIME-OUT ERROR DURING DATA TRANSFER OCCURRED * ;* 13= NO CKSAVE SPECIFIED ON CHKPIO. * ;* 14= DDS DISC ONLY - TRANSFER NOT G NE 5)(RCR@W),R43(SEDU V MO: 10OCDI ;X UWDCX-DEIND OR WITUNR LEOLTRON CSCDI= 5 R ;; WXCU DESOMEC BR5; R5 L AS R.CTT OUE-IM TZELIIAITIN; 5)(RTRMCTIY,TRRE#N VBMO R.CTR ROERE IZALTINI I ; ) R5S(RYOT,NRYETNR # B OV M . = 00OCDI ;R FE XINS RDWOF OO. N =3'SEDU ' ;. NOR TOEC SRTTA S =2'SEDU ' ;R FE XOFS ESDRADT ARST= ' E1US'D ; ;. NOT NI UERLLRONTCOC IS D =R5 ; H TCWI SONTICALOALT SERE; 2)(RSWLOAL RBCL C ND.E C LOAL,DPC R JS ALOR$C FZ.I N IOATOCLL-ADET ARST; FRB33,LBEA#D S BI E ACSPE OR C'SONTITIAR PTECALOALDE; RRB3),R2D(ADRT@P V MO M PO ROMFRT XI-ENO; 60XAQN Q BE T SEH TCWI SONTICALOALS WA; 2)(RSWLOAL TBTS: 25XCQN ORRR ERENOIG; + P)(S T TS T IUEUE-QDE; E IMQT,DPC R JS D OR WADRETHE ULOD MERIM TOFS T'S ENTRY TASK NUMBER CLR R3 BISB BSIZE(R5),R3 ; NO. OF CORE BLOCKS NEEDED CLR R5 BISB OVTSK(R1),R5 ; GET SEARCH ENTRY'S TASK NO. ASL R5 ; CALCULATE TASK # WORD INDEX MOV HEADER(R5),R5 ; GET TASK'S PROGRAM HEADER ADDRESS ; NOTE: HEADER MAY BE ZERO IF INT. CAME IN & CHECKPOINTED SEARCH ; TASK. IF IT PASSES CORE SPACE TEST, IT WILL FAIL TEST AFTER ; LOCKOUT SET. THIS TECHNIQUE REDUCES  A MULTIPLE OF 4 WORDS.*2/15/73 ;* 15= # OF WORDS SPECIFIED IS ZERO - ILLEGAL. *2/15/73 ;* * ;* AFTER AN ERROR TYPE 12, NO OTHER REQUESTS WILL BE * ;* PROCESSED FROM THE DEVICE QUEUE. * ;* * ;* REGISTERS R0 THRU R5 WILL BE SAVED * ;* ERFFBUA AT D/O IOFS ESDRAD= 4 R ;K ECCHE ITWR= 2E,ITWR= 1D,EA R0=. CN F/O ILENGSI= 2 R ;S ESDRADT IS L/O I =R1 ; CEENQUSEO I/T ARSTC IS D ;; ;E AG.P ;T OREP R ; 8 B4IO D R B 7 E YP TORRR-ENO; R07,00RR#E V MO /O IRTTA S &IDE IL FCKHE C -ES Y ; 5 B5IO D NE B ? VETIACE IL FIS; 2)(R T TS Y ORCTREDIS E'IL FOFS ESDRAD; 2 ,ROD#D D AD EXND IUETR- 0 *1FDESDRAD; P)(SD,MOIM#T D AD NGTIORABE BSTMUS-YE; P)(S,-R2 V MO NO; 25XCQN E BN D?DEEAHR TLEDUMOR METI; 2)(RODMMTI.,#1 P CM: 20XCQN STUEEQ RXTNEN -ILLRO; 00VBQO P JM UTKOOC LTYRIIOPRT SERE; SR,PP)(S V MO RTPAFXC!SLTM $IF ; T INPOS HI TATE ICRVSER FOG INITWAE BSTMUT TAPS: TENO ; ATST PINS ESGRRO PINO I/T SE; 2)(RP,OI#I SBBI E EUQUF OUT OLLPU S-YE; 10XCLOCKOUT TIME CONSIDERABLY. MOV PHNOB(R5),R5 ; OVERLAY'S SB & NOB CMPB R3,R5 ; WILL REQUEST FIT? BGT QOVD30 ; NO, KEEP-A-SEARCHIN' SWAB R5 CMPB R5,ALPOOL(R0) ; START BLOCK COMPATABLE WITH ALPOOL DEF.? BLT QOVD30 ; NO, KEEP-A-SEARCHIN' MOV #PLOCK,PSR ; YES-LOCK-OUT AND RE-CHECK TSTB (R2) ; IS REQUEST STILL WAITING? BEQ QOVD60 ; YES QO * ;* PROGRAMMER 54 * ;* DATE * ;* REVISION * ;* * ;*********************************************************************** .DEF DISCIO,CHKPIO,PFRITE,DINT,DIHA50,DIOA65 .REF PHYDEV,ACTIVE,IO IESIV G ; R22, R DD A E IV F ; 2 ,RR0 D AD ESIM T ; R0 L AS R0; R0 L AS R20, R OV M ERRKMAD IFF OID RET G ; 0 ,R000010 # IC B . = 80OBDI ;. 10D*IFE B ;D ULWOX DEINE RU T AUSTH. TSENESPRRED IFE THH ICWH ; Y ORCTREDIE THD AN' OD'DY ORCTREDIT ENIDES RRECOE TH ; OFG INNNGIBEE THN EETWBES LEFIF OERMBNUE THS IISTH ; Y.ORCTREDIE IL FTOINX DEIN- QN Q BE D?TEESQURET ORAB; RQRTAB,#2)(R PBCM D EA HATY TLENRRCUS ESDRADY TRENT ARQP; 2 ,R2)(RQPADHE V MO ONTITIAR POFS ESDRADT GE; 4 ,R2)(RDDTAPR V MO T ARQPD IEPTEM; 20XCQN I BM UEUE QOFT OUY TREND EA HLLPU; P LQUL,PPC R JS UEUE QRTPA QOFS ESDRADT GE; 2 ,R1)(RTNARQP V MO: 10XCQN X DEIND OR W ; R1 L AS Y ITORRI PTELACUAL C; 1 ,RR0 V MO . = 00XCQN VD55: JMP QOVB15 ; NO-FORGET ABOUT CHECKPOINTING QOVD60: MOVB (R1),R5 ; IS TASK STILL CHECKPOINTABLE? BLE QOVD05 ; NO-RESTART SEARCH CMPB R5,#VOLSCK BGT QOVD05 ; NO-RESTART SEARCH .IFZ CHKPTC ; ; DETERMINE IF TASK HAS EVER EXECUTED. IF NOT, NO NEED ; TO ROLL-OUT LOGIC WILL EXECUTE(QOVE10). OTHERWISE, WAIT ; FOR AVAILABLE CORE SPACE. ; CLR R5 BISB OVTSK(R1),R5STAT,RESTOR,QSAVE,DSPTCH .REF UNSPND,ERRTYP,QUEUE,LOGMAX,QTIME,DQTIME .REF $CTASK,PUSHR,POPR,RELTSK,HEADER ; .CSECT DIO ; ; CHKPIO = . MOV R0,-(SP) ; SAVE R0 MOV #40000,R0 ; CHKPIO ENTRY POINT MASK BR DIOA00 ; PFRITE = . MOV R0,-(SP) ; SAVE R0 MOV #100000,R0 ; PFRITE ENTRY POINT MASK BR DIOA00 ; DISCIO = . MOV R0,-(SP) D IF ANS INTAON CR0 ; ;5 B7IO D R B TERI/WADRER FON FCD EA RET S ; 2 R LR C8:B7IO D0 C0IO D R B EDSTUEEQ RCN FSCDIE PLTIUL MET S ;) R4T(OUIN0,20 # B IS B5:B7IO D CKHE CTERI/WTERI WOR FCN FTERI WRTTA S ; 2 ,R2. # UB S D EA RERFT ATERI W ; 8 B7IO D GT B O I/S T'ESQURET ARSTO- N ; 0 C0IO D LT B ? TERI-WADRER OCKHE CTERI/WTERI W ; . #32, R MP C0:B7IO DN FCO I/S T'ESQURET GE; R2),R4T(OUIN VB; T ARQPF OUT ORYNT ELLPU ; ; T ARXP!FLCMS$T Z FN.I ; ******R*LENDHAR ROERE IM-TALRER HEOTAN; LTHA: 40XBQN ; ; Y EROVEC RREWAFTSOE AV HLYALTUENEV ; UPG-UN HOX BB3R-ROER ; ; ; 47VAQO P JM: 30XBQN EDIX FORD CELI-SMETI; 50XAQN BR C MINADY; 35XAQN I BM K AS TERTHNO A ; ) R0B(TAPP TBTS R FOK OO LE,ACSPE OR CGHOUENT NO; SR,PP)(S V MO 3 /7231/  ; ROLL-OUT TASK NUMBER TSTB IOSTAT(R5) ; TASK HAVE ANY I/O IN PROGRESS BNE QOVD55 ; YES-SORRY CHARLIE ASL R5 ; COMPUTE WORD INDEX OF TASK NO. MOV HEADER(R5),R5 ; GET HEADER ADDRESS TST TSTACK(R5) ; TASK EVER EXECUTED? ; BEQ QOVE00 ; NO - EXECUTE ROOL OUT LOGIC ******** BR QOVD55 ; YES-WAIT FOR AVAILABLE CORE .ENDC ; .IFNZ $TMS!; SAVE R0 CLR R0 ; DISCIO ENTRY POINT MASK DIOA00: MOV R1,-(SP) ; SAVE R1 MOV R2,-(SP) ; SAVE R2 MOV R3,-(SP) ; SAVE R3 MOV R4,-(SP) ; SAVE R4 MOV R5,-(SP) ; SAVE R5 MOV 14.(SP),R1 ; R1 = ADDRESS OF DISC I/O LIST MOV 12.(SP),14.(SP) ; PUT CALLER'S PC IN PROPER POS. FOR RETURN MOV R0,SYSTEM(R1) ; SET ENTRY POINT MASKS AND CLEAR OTHER MMO RTPORES-YE; 48OBDI E BN URCC OORRR E ; 0 R ST T R FE XOR FUPT SE& E IL FCKHE C ; IDILCFC, P SR J5:B5IO D RYTOECIR D'SLEFIF OSSREDD A ;2 ,ROCRLNCD+DO # DD A CEVIDER PERO POND IOR FNGHIRCEA SEPKEO N ; 5 B2IO D NE B ? ERMBNUE ICEV DLSAL CASE AM S ; 1)(RCEVIDE3, R B MP C TELASO I ; 3 ,R007617 # IC B E IL FOF. NOE ICEV DALICOG LET G ;R3),R2E(VCPDC+LOCR+NOD D B OV M . = 50OBDI S YE; 30XBQN L BP 3 /7231/ E?RE FKSOCBLE IZBS; FRB3 TBTS 3 /7231/ R ROERT-N'IS; 40XBQN I BM 3 /7231/ W NOY BNEDOE BLDOUSH; FRB3 T TS C SE U.621F O ; + 3)(R),R3-( TBBI L TATOA R FOH RCEA S ; + 3)(R),R3-( TBBI 3 BNGRIDU ; + 3)(R),R3-( TBBI Y LADE; + 3)(R),R3-($LC!CHKPTC ; ; INITIATE ROLL-OUT OF AN OVERLAY TASK ; TASK TO BE ROLLED-OUT IS SUSPENDED EITHER VOL. OR INV. ; R0= PRIORITY OF TASK REQUESTING ROLL-OUT ; R1= QPART ENTRY ADDRESS OF ROLL-OUT TASK ; R2= QPART ENTRY ADDRESS OF REQUEST TASK ; R4= PRIORITY OF ROLL-OUT TASK ; *INTERRUPTS MUST BE LOCKED-OUT AT THIS POINT* ; QOVE00 = . JSR PC,ROLSUP ; ROLL-OUT STATUS SET-UP MOV (SP),PSR %OV #ERR001,R0 ; USE R0 TO KEEP TRACK OF ERROR TYPES MOV PSR,-(SP) ; SAVE CPU STATUS MOV #PLOCK,PSR ; SET PRIORITY LOCKOUT DEC (R1) ; DECREMENT FIRST WORD OF LIST BNE DIOA72 ; NON-ZERO-ERROR, CAN'T THREAD LIST MOV (SP)+,PSR ; RESET LOCKOUT INC R0 ; BUMP ERROR TYPE MOVB DEVICE(R1),R4 ; GET LOGICAL DEVICE NUMBER CMP R4,LOGMAX ; IS IT WITH ;. NOT NI UERLLRONTCOC IS D =R5 ; ERFFBUO I/F OSSREDD A =R4 ; E'IL'FO NT IEXND IVETIGANE= 2 R ;S ESDRADT IS L/O I =R1 ; D.TEESQURE ; CEVIDEH IT WEDATCISOASS IIDE IL FIFE INRMTEDET RSFI ; IDE IL FTEIAPRROPP ATHWIE IL FVETIACD UNFO ; ;R ROERT OREP R ; 0 D1IH D MP J8:B4IO D; S)ONTIICTRES RBR0(D0IH DTOT GEO TMP J ;; DCEN . R ROERT OREP R ; 0 D0IH D MP J7:B4IO D; /O IRTTA S -IO S ; TBBI C ND.E ******** D.EESPO TUP3 BIL TITWA. MPTE; AYEL,DPC R JS ******** ; FF.I H RCEA,SPC R JS ALOR$C FZ.I ******** H RCEA SB3T RAST; FRB33,HBRC#S V MO SSREDD ASTUEEQ RONTICALOALT SE; R 3R,BR3 V MO CHARSER FOS ESDRAD3 BNDFI; D ADB3,FPC R JS O ER ZDYEALR AR3 ; ( ; RESET PRIORITY LOCKOUT MOV R5,-(SP) ; SET IN STACK-R3 & R4 SET JSR PC,DQRPOM ; AND DE-QUEUE IT FROM ROS TST (SP)+ ; IGNORE ERROR INDICATOR ; ; SET TASK STATUS OF ROLL-OUT TASK VOLUNTARILY OR INVOLUTARILY ; SUSPENDED. IF VOL. CANNOT BE QUEUED, ETC. MAY BE ABORTED ; OR UNSUSPENDED THOUGH. ; R0 = PRIORITY OF TASK REQUESTING ROLL-OUT ; R1 = QPART ENTRY ADDRESS OF ROLL-OUT TASK ; R2 =)IN SPECIFIED RANGE BHI DIOA70 ; NO-ERROR TYPE 2 ASL R4 ; CONVERT TO INDEX MOV PHYDEV(R4),R5 ; GET PHYSICAL DESCRIPTOR FOR THIS DEVICE SWAB R5 ; CHECK IF DEVICE AVAILABLE DECB R5 ; AND, DEVICE TYPE = 1 - DISC BNE DIOA70 ; OTHERWISE-ERROR TYPE 2 SWAB R5 ; R5 NOW CONTAINS DISC CONTROLLER UNIT # INC R0 ; BUMP ERROR TYPE 0 C0IO D R B D EA RSCDIY IFECSP; R2 R CL CHITSWD TEESQURED EA RIDE IL FET S ;) R4T(OUIN0,10 # B IS B IO SOR FERXFN IDSOR W ;) R43(SEDU.,60 # OV M O I/T ARSTR FOR TOEC S ; ) R42(SEDU3, R OV M # T NI UERLLRONTCOC IS DTO5 R ; 5 R SR A O SIR FOS ESDRADE OR CRTTA S ; ) R41(SEDU),R5D(BAFD D OV M R FEUF BTADAF OSSREDD A ; R4),R1A(AT D OV M ADRET ARSTO TCHHI WATR TOEC S ; R3),R2R(CT S ; G INITWAR BEUM NSKTAY LAEROVT GE; R3),R2K(TSOV SBBI: 20XBQN N AIAGH RCEA SRTTA-SNO; 05XAQN E BN NGTIAI W &EDPTCKT NOL ILSTY TREN; 3 ,R2)(R VBMO T OUK-OC LTYRIIOPRT SE; SR,PCKLO#P V MO Y TRENE ICSLE-IM TORD XEFI; . = 10XBQN INGA ACHARSET ARST; 05XAQN BR S YE; 20XBQN Q BE E ATOLIS; R30,6077#1 C BI N AIAGH RCEA SRTTA-SIDVO; 05XAQN Q BE, QPART ENTRY ADDRESS OF REQUEST TASK ; R3 = TASK HEADER ADDRESS OF ROLL-OUT TASK ; R5 = TASK # OF ROLL-OUT TASK ; QOVE10: TST TSTACK(R3) ; HAS ROLL-OUT TASK EVER EXECUTED? BEQ QOVE30 ; NO-NO NEED TO ROLL-OUT THEN MOV #PLOCK,PSR ; SET PRIORITY LOCKOUT THEN MOVB #VOLSUS,TSTAT(R5) ; SET VOL. SUSPEND TST TRARG(R1) ; IS IT? BNE QOVE20 ; YES INCB TSTAT(R5) ; NO-ADJUS- MOVB TYPE(R1),R2 ; LEGAL EXIT TYPE? BLE DIOA70 ; NO-ERROR TYPE 3 CMP R2,#3. BGT DIOA70 ; NO-ERROR TYPE 3 INC R0 ; BUMP ERROR TYPE MOVB LEVEL(R1),R2 ; SET LEVEL OF REQUEST IN R2 BLE DIOA70 ; ERROR IF ZERO OR LESS-ERROR TYPE 4 CMPB R2,NDPRTY(R5) ; LEGAL DISC PRIORITY LEVEL? BGT DIOA70 ; ERROR TYPE 4 INC R0 ; BUMP ERDD A0:B4IO D7 B4IO D R B 7 E YP TORRR ERTPORES-YE; R07,00RR#E V MO NO; 40OBDI E BL D?DEEEXC ERYTOECIR DOFH GTEN L ; 2)(RTHLG3, R MP C R FEUF BLEFIO NT IEXND IASE AV S ;1)(R+1EMSTSY0, R B IS B R DEINMAREK AC BMPBU; 0 ,R2.#1 D AD: 35OBDI EDSHNIFIT NO; 30OBDI BR ORCTSEE IVATEL RTELAMUCUAC; R3 C IN RYTOECIR DOFR TOEC SVETILARE ; 5 B3IO D MI B D IN FTO2 1BY E?ICRVSEG INITWAL ILSTY TREN; 3 ,R2)(R V MO T OUK-OC LTYRIIOPRT SE; SR,PCKLO#P V MO RYNT ETYRIIOPRC MINADY; . = 00XBQN ; SSREDD ARYNT ERTPA Q =R2 ; EXND IRDWOY ITORRI P =R1 ; Y ITORRI P =R0 ; STUEEQ RONTICALOALG INITWAY TREND UNFO ; ; M PO ROMFRT XI EY,PTEMS Q'S-YE; 20VBQO P JM: 60XAQN NO; 20XAQN E BL S?ELEV LLL AEDCHARSE; ORRINP,#R0 P 0T QOVE20: MOV (SP),PSR ; RESET PRIORITY LOCKOUT MOV R2,HWRKWD(R3) ; SET REQUEST'S QPART ENTRY ADDR IN WRKWD MOVB R0,PHPRI(R3) ; SAVE PRIORITY OF REQUESTING TASK ; ; NOTE: ROLL-OUT TASK'S PRIORITY ; ; IS STILL IN PROGRAM HEADER MOVB #3.,HIOFCN(R3) ; SET WRITE WITH WRITE DISC CHECK MOVB #3.,HIOEXT(R3) ; SET EXIT TYPE MOV #GETOV,HIOCMP(R3) ; SET I/O CO1ROR TYPE MOV DATA(R1),R4 ; R4 = ADDRESS OF I/O BUFFER MOV (R4),R3 ; FILE ID OR IFD BEQ DIOA70 ; ZERO ID ILLEGAL-ERROR TYPE 5 BPL DIOA10 ; FILE ID BIC #100000,R3 ; STRIP OUT IFD SIGNIFIER CMP R3,#NCFILE ; CHECK AGAINST NO. OF CORE RES. FILES BGT DIOA70 ; ERROR TYPE 5 DIOA10: INC R0 ; BUMP ERROR TYPE CMPB INOUT(R4),#4. ; IS FUNCTION LEGALE IDIV D ; R0.,12 # UB S0:B3IO DT ENTIUO QINTAON CTO3 RSE U ; 3 R LR C 2 /11)#-IDE IL(FE ATULLCCA; R0 C DE OD DTEIAPRROPP AOFS ESDRAD; 2 ,R5)(RDDDADO V MO WXCU DESOMEC BR5; R5 L AS DIESDR Z FN.I ;. NOT NI UERLLRONTCOC IS D =R5 ; ERFFBUO I/F OSSREDD A =R4 ; SSREDD ASTLIO I/= 1 R ;R FOH RCEA STOD ILEFI= 0 R ;E IL FOMFRR TOEC STEIAPRROPP ACM EXND IRDWOY ITORRI PMPBU; + 1)(R T TS L VELEY ITORRI PXTNEO TMPBU; R0 C IN: 50XAQN ONTICALOALD EE NTOO ER ZBEH OT BSTMU; 10XBQN Q BE T TAPS& T TACST AOKLO; 2)(R TBTS ADHET ARYNT EOFS ESDRAD; 2 ,R2)(RQPADHE V MO: 40XAQN ITE ATOGRRTEIN; 30XAQN BR T ARQPN IRYNT EXTNEO TMPBU; + 2)(R+,2)(R P CM: 35XAQN E ICRVSEG INITWAY TREND UNFO; 00XBQN Q BE T TAPS4MPLETE SUBROUTINE ADDRESS MOV R3,R4 ADD #HFLEID,R4 ; ADDRESS OF DATA BUFFER MOV R4,HDBADD(R3) ADD #HIOLST,R3 ; CALCULATE ADDRESS OF DISC I/O LIST MOV R3,-(SP) ; TO STACK WITH IT JSR PC,CHKPIO ; ROLL IT OUT TST IOERRW(R3) ; DID REQUEST PROCESS ERROR OCCUR? BNE QOVE40 ; YES JMP QOVB15 ; RETURN TO CALLER QOVE30: CLRB (R1) ; RESE5? BLO DIOA20 ; YES BHI DIOA70 ; ERROR IF GREATER THAN 4-TYPE 6 CMPB TYPE(R1),#3. ; IF I/O FCN = 4 THEN EXIT TYPE BNE DIOA70 ; MUST = 3 DIOA20: CLR ERROR(R1) ; INITIALIZE ERROR INDICATOR CLR DUSE3(R4) ; INITIALIZE DUSE3 MOV R5,R0 ; COMPUTE DISC CONTROLLER UNIT WORD INDEX ASL R0 ; DCUWX MOV DQLAST(R0),R3 ; GET ADDRESS OF ADRE- Y ORCTREDIT ENIDES RSCDIF I ;; DCEN . 8 B4IO D R B 7 E YP TORRR E ; 0 ,R07R0ER # OV M Y ORCTREDIY NL ORECO; DIESDR FZ.I INGA ARY T ; 0 B2IO D NE B X DEINP UM B ; R2.,10 # DD A5:B2IO DT INDOU F ; 0 B5IO D EQ B CHAT MOR FRYTOECIR DRECOH RCEA S ; 2)(ROCRLNCD+DO0, R MP C0:B2IO DY ORCTREDIT ENIDES R ; ; RECOU HR TEXND IANR FOD SE U ; R2C,LOCR-N # E ATOLIS; R30,6077#1 C BI T EX NTOP UM-BRYNT EIDVO; 35XAQN Q BE R3 C DE L VELET EX NTOP UM-BLEAB TOFD EN; 50XAQN Q BE R3 C IN LLCEF ORDWOT RSFIT AOKLO; 3 ,R2)(R V MO: 30XAQN CEVIER SNGTIAI WADHEF ISTTE- NO; 40XAQN L BP ? ELEV LTYRIIOPRC MINADY; ) R0B(TAPP TBTS SSREDD ALEAB TRTPA Q'STYRIIOPRT GE; 2 ,R1)(RTNARQP V MO ELEV LXTNEO TMPBUY-PTEM; 508T TO WAITING FOR SERVICE ADD #PHNOB,R3 ; PARTITION ADDRESS MOV R3,R4 ; TO R4 FOR QOVB00 MOV R0,R1 ; CALCULATE REQUEST'S ASL R1 ; PRIORITY WORD INDEX JMP QOVB00 ; ROLL-IN REQUESTING TASK ; ; ERROR OCCURRED DURING THE DISCIO REQUEST PROCESSING ; SOMETHING WRONG-CAN'T ROLL-OUT ; QOVE40: MOV R5,R1 ; TASK NUMBER TO R1 JSR PC,FQPRTN 9DEVICE LAST LIST MOV PSR,-(SP) ; SAVE PROCESSOR STATUS ON STACK MOV #PLOCK,PSR ; SET PRIORITY LOCKOUT CMPB R2,HPRIRQ(R5) ; WILL THIS BE HIGHEST PRIORITY REQUEST BHIS DIOA50 ; NO MOVB R2,HPRIRQ(R5) ; YES - SET IN HPRIRQ DIOA50: ASL R2 ; CONVERT LEVEL TO WORD INDEX ADD R2,R3 ; GET TO PROPER 'LAST' ADDRESS +1 MOV R1,@-(R3) ; INSERT PARAMETER LIST IN QUEUE OV M D IFN A'SIT. CHARSET N'DO; 80OBDI I BM R.FOK OO LTOD ILEFIT GE; 0 ,R4)(R V MO NO; 80OADI E BN D?DEEE NONTIMAORNF IRYTOECIR DLEFI; ) R43(SEDU T TS ERFFBUO I/F OSSREDD A ; R4),R1A(AT D OV M T DCN ISTUEEQ RNTREUR CUPT SE; ) R0R(PTRQ,CR1 V MO ELEV LATTHT ANGHIYTAND IN F'TDNDI; 10OBDI Q BE R1+,3)(R V MO: 10OBDI LEAB TSTIR FCEVIDEE ATRIOPPRAPT GE; 3 ,R0)(RSTFRXAQN I BM Q?Y LAEROVS Y'ITORRI PISTHN INGHIYTAN; 0)(RQPEQNR TBTS: 20XAQN 1 L VELEY ITORRI POR FEXND IRDWO; R1.,#2 V MO 1 L VELEY ITORRI PATH RCEA SUPT SE; R0.,#1 V MO: 10XAQN UT-OCKLOE ORSTRE; SR,PP)(S V MO: 05XAQN 3 /7231/ R ROERS-YE; 40XBQN I BM 3 /7231/ G INATOCLL-ADEL ILST3 BIS; FRB3 T TS 6 1. 2OFL TATOA R FO; ; 4 < ; GET QPART INFO. OF ROLL-OUT TASK JMP GEOV20 ; DISCIO WRITE ERROR PROCESSING .ENDC ; .PAGE .CSECT OM2 ; ; ON SYSTEM STACK ; EXITING TASK HEADER HAS BEEN "CLEANED-UP" ; QOVNXT = . MOV 2.(SP),R1 ; GET EXITING TASK NUMBER MOV (SP)+,(SP) ; SET PC FOR PROPER RETURN MOV PSR,-(SP) ; SAVE PROCESSOR STATUS JSR PC,FQPRTN ; GET QPART ENTRY INFORMATION =MOV R1,(R3) ; SET LAST WORD IN DIRECTORY TST ACTIVE ; LOOK AT CURRENTLY ACTIVE TASK LOC. BEQ DIOA60 ; NO TASKS ARE ACTIVE MOV $CTASK,R3 ; R3 CONTAINS TASK NUMBER BISB R3,SYSTEM(R1) ; SAVE TASK NUMBER IN SYSTEM INCB IOSTAT(R3) ; SET I/O IN PROGRESS FOR THAT TASK DIOA60: INC NODREQ(R0) ; BUMP NO. OF DISC REQUESTS BNE DIOA75 ; NO-EXIT AS SPECIFIED CLRB CALLED(DQ V MO . =0 B0IO D; O. NITUNR LEOLTRON CSCDI= 5 R ;X UWDC= 0 R ;. STUEEQ RTYRIIOPR ; STHEIG HOR FUEUE QCEVIDEE ATRIOPPRAPH RCEA S ;; 00OEDI P JM: 80OADI 20ODDI P JM . = 75OADI 15ODDI P JM: 72OADI 10ODDI P JM: 70OADI ;0 E0IO D0,D2IO D5,D1IO D0,D1IO D ;: TO. NSIOCTRISTRER BEROVT GEO TEDUSS MP J ;; CHARSEE EUQUT ARST; 00OBDI BR ORRR ERENOIG; + P)(S T TS 5.R HEOTAND AN; + 2)(R),R2-( TBBI B3R FOL NAIOITDD AECUS4 5.Y LADE; + 2)(R),R2-( TBBI: 00XAQN EDEUQUS T'ESQURE. NOT ENEMCRDE; 0)(RQPEQNR CBDE RYNT ERTPA QIDVO; 2)(R R CL C ND.E ******** D EESPO TUP3 BIL TITWA. MPTE; AYEL,DPC R JS ******** ; FF.I C LOAL,DPC R JS ALOR$C FZ.I ******** N IOATOCLLEA DB3T QNX000: MOV #PLOCK,PSR ; SET PRIORITY LOCKOUT CLRB TSTAT(R1) ; SET TASK QUIESCENT QNXXXX: ASL R1 ; TASK WORD INDEX QNXXX1: CLR HEADER(R1) ; SET TASK NOT CORE RESIDENT IN TASK TBL .IFNZ $TMSLC!FXPART TSTB PPTAB(R0) ; DYNAMIC PRIORITY LEVEL? BPL QNXC00 ; NO- 'PULL' QPART TABLE .ENDC MOV PHNOB(R4),B3RR ; DE-ALLOCATE THE TASK'S CORE SPACE MOV #DEALB3,B3FR ; STARR5) ; CLEAR EXIT TYPE FLAG-INT. OR T-OUT MOV (SP)+,PSR ; RESTORE PROCESSOR PRIORITY DIOA65: MOV TMTBL(R0),R1 ; ADDRESS OF TIMER MODULE MOV TDELAY,RESTIM(R1) ; INCASE ALREADY THREADED MOV #TIMOUT,TIMJSR(R1) ; DISC TIME-OUT SUBROUTINE MOV R1,-(SP) ; TIMER MODULE ADDRESS TO STACK MOV TDELAY,-(SP) ; THREAD A 100 MSEC TIMER FOR THIS DISC JSR PC,QTIME ; SET TIMER MODULE IN THREAD ;YES: DO TRAILER UNLESS A BYTE TST (SP)+ ;NO TRAILER FOR ABSOLUTE GLOBALS... RTS PC ;...SO POP STACKED INSTRUCTION & RETURN TRAP05: TST R2 ;WAS THIS A "BYTE" COMMAND? BPL TRAP10 ;WORD: OKAY TO ADD TO TRAILER TST (SP)+ ;POP STACKED INSTRUCTION LDER25: MOV #25+100000,R4 ;BYTE RELOCATION ERROR JSR PC,ERRPRT RTS PC ;CALL WAS MADE EITHE AND WRITE IT OUT IF SO: CMP R5,#TRAILBLOCK+128. ;AT END OF BLOCK YET? BLO TRAP30 ;NOT YET JSR PC,TRAILIO ;WRITE OUT CURRENT TRAILER BLOCK TRAP20: INC TRASEC ;BUMP TRAILER SECTOR NUMBER MOV #TRAILBLOCK,R5 ;PREPARE TO RESET POINTER TRAP30: MOV R5,TRAILPOINTER ;NEW POINTER RTS PC TRAILIO: ;SUBROUTINE TO READ OR WRITE TO/FROM THE TRAIL BLOCK MOV #TRALST,-(SP) ;LIST FOR TRAILER