.PAGE .TITLE IAS DATA STRUCTURES ;+ ; ; ; ; ; ; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASSACHUSETTS, USA. ; ; ; THE MATERIAL INCLUDED IN THIS FUNCTIONAL SPECIFICATION, INCLUDING BUT ; NOT LIMITED TO, INSTRUCTION TIMES AND OPERATING SPEEDS IS FOR ; INFORMATION PURPOSES ONLY. ALL SUCH MATERIAL IS SUBJECT TO CHANGE ; WITHOUT NOTICE. CONSEQUENTLY DEC MAKES NO CLAIM AND SHALL NOT BE LIABLE ; FOR ITS ACCURACY. ; ; ; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE OR ; RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY ; DIGITAL EQUIPMENT CORPORATION. ; ; ; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENCE FOR USE ON A ; SINGLE COMPUTER SYSTEM AND CAN BE COPIED ( WITH INCLUSION OF DEC'S ; COPYRIGHT NOTICE ) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE ; BE PROVIDED IN WRITING BY DEC. ; ; ; ; MODULE: IAS DATA STRUCTURES ; ; VERSION: V001A ; ; AUTHORS: HILARY PIERCE / ANDY WILSON ; ; DATE: 20TH MARCH 1974 ; ; ; THIS MODULE CONTAINS THE DATA STRUCTURES FOR THE ; IAS SYSTEM ; ; MODIFIED BY: HILARY PIERCE ; DATE: 22-FEB-76 EDIT: +++001 ; ; MODIFIED BY: RICHARD NEWLAND ; DATE: 24-FEB-76 EDIT: +++002 ; ; MODIFIED BY: BOB DRAY ; DATE: 01-NOV-76 EDIT: +++003 ; ; DATE: 01-NOV-76 EDIT: +++004 ; ; DATE: 01-NOV-76 EDIT: +++005 ; ; DATE: 23-DEC-76 EDIT: ++006 ; ; DATE: 15-JAN-77 EDIT: ++007 ; ; DATE: 31-JAN-77 EDIT: ++008 REMOVE IASBUF ; ; DATE: 07-FEB-77 EDIT: ++009 SEND/RECEIVE ; ; DATE: 15-FEB-77 EDIT: ++010 TIDYING COMMENTS ; ; DATE: 17-FEB-77 EDIT: ++011 ACTIVE TASK BIT IN UJN ; ; DATE: 18-FEB-77 EDIT: ++012 GLOBAL EF FOR IAS START UP ; MODIFIED BY: HENRY TUMBLIN -- THE JACKSON LAB ; DATE: 11-APR-78 EDIT: ADDED 1-WORD FIELD TO IASCOM ; TO ENABLE STORAGE OF SYSTEM ; UTILIZATION FIGURE. ; ; .PAGE .SBTTL IAS DATA STRUCTURES - DESCRIPTION ; ; THE IAS DATA STRUCTURES CONTAINS ALL INFORMATION ; OVER AND ABOVE THAT HELD IN THE IAS KERNEL ; WHICH IS REQUIRED FOR RUNNING AN IAS SYSTEM. ; THE DATA STRUCTURES CONSIST OF A COMMUNICATIONS ; REGION WHICH CONTAINS ALL THE LIST HEADS, ; GLOBAL SYSTEM DATA AND SCHEDULING DETAILS ,AND ; A VARIABLE AREA CONTAINING THE TABLES AND NODE ; POOLS REQUIRED FOR THE IAS DATA TABLES. ; THESE DATA STRUCTURES ARE INITIALISED, FOR RELEASE 1, AT ; SYSTEM START UP TIME. ; A SMALL NUMBER OF COMMON CODE ROUTINES ARE ALSO INCLUDED. ; THE DATA STRUCTURES ARE CONTAINED IN TWO LIBRARIES , ; IASCOM, IASBUF. ; READ ACCESS TO IASCOM AND IASBUF IS LIMITED TO [1,1] TASKS. ; ; IASCOM CONTAINS ALL THE TABLES,ETC. REQUIRED FOR IAS ; AND IS BUILT ASR 2 RELATIVE. ; IASBUF CONTAINS THE BUFFER POOL FOR USE BY TCP AND ; CLI TASKS. THIS LIBRARY IS BUILT ASR 3 RELATIVE. ; ; ; .PAGE .SBTTL IAS DATA STRUCTURES - GLOSSARY ; ; UJN -- USER JOB NODE ; ; UTN -- USER TERMINAL NODE ; ; CIT -- COMMAND INTERPRETER TABLE ; ; DVT -- DEVICE TABLE ; ; JNP -- JOB NODE POOL ; ; TNP -- TERMINAL NODE POOL ; ; SFT -- SWAP FILE TABLE .PAGE .SBTTL IAS DATA STRUCTURES - VARIABLE AREA SYMBOLIC DEFINITIONS ; ; SYMBOLIC DEFINITIONS ; ; COMMON DEQUE NODE WORDS (BYTE INDICES) ; ;N.FP==00 ;WD. 00 -- FORWARD POINTER ;N.BP==02 ;WD. 01 -- BACKWARD POINTER ; .PAGE ; UJN -- USER JOB NODE ; ; A USER JOB NODE (OR JOB NODE)EXISTS FOR EVERY IAS ; JOB (TASK)WHICH CAN BE SCHEDULED TO RUN. THE NODE ; CONTAINS ALL INFORMATION ABOUT THE JOB REQUIRED FOR ; SCHEDULING AND RESOURCE MANAGEMENT FOR THE JOB. ; A JOB NODE IS PICKED FROM THE JOB NODE POOL ; BEFORE A JOB IS INITIATED AND IS RETURNED TO THE POOL ++007 ; AFTER THE JOB TERMINATES. ++007 ; A DEQUE OF JOB NODES IS LINKED TO THE UTL ENTRY ; FOR THE SCHEDULING LEVEL AT WHICH THE JOBS ARE ; TO BE RUN. ; ; UJN OFFSETS :- ;WD. 00 -- FORWARD LINKAGE ;WD. 01 --BACKWARD LINKAGE J.FW == 04 ;WD. 02 -- TASK FLAGS WORD (ACCESSED BY BOTH TCP AND TSS) ++007 J.ST == 06 ;WD. 03 (B 06) -- STATUS BYTE J.IP == 07 ; (B 07) -- NUMBER OF TCP QIOS PENDING J.TA == 10 ;WD. 04 -- TERMINAL NODE ADDRESS J.JB == 12 ;WD. 05 -- JOB NAME(RAD50) ; (2 WORDS) J.PR == 16 ;WD. 06 (B 16) -- PRIVILEGE BYTE J.WB == 17 ; (B 17) -- WORK BYTE (USED FOR FIRST TIME LOAD) J.SD == 20 ; WD. 10 (B 20) -- SCHEDULING DATA (ALLOCATION FACTOR) J.SV == 21 ; (B 21) -- SAVE AREA FOR STATUS WORD J.UI == 22 ;WD. 11 -- USER IDENTIFICATION CODE (UIC) J.PC == 22 ; (B 22) -- UIC PROGRAMMER CODE J.GC == 23 ; (B 23) -- UIC GROUP CODE J.AT == 24 ;WD. 12 -- ADDRESS OF ATL NODE FOR RUNNING TASK J.TN == 26 ;WD. 13 -- STD ENTRY OF TASK TO BE RUN J.AC == 30 ;WD. 14 -- ACCOUNTING DATA( CPU TIME USED, IN CLOCK TICKS) ;WD. 15 -- SECOND WORD OF ACCOUNTING DATA ++004 J.QU == 34 ;WD. 16 -- REMAINING QUANTUM FOR TASK ++004 J.OW == 36 ;WD. 17 -- UJN ENTRY ADDRESS FOR JOB INITIATOR ++004 J.LV == 40 ;WD. 20 -- ADDR. OF UTL LEVEL LIST HEAD FOR TASK ++004 J.TS == 42 ;WD. 21 -- SIZE OF TASK ++004 J.BU == 44 ;WD. 22 -- CURRENT BUFFER FOR TASK (FOR GET COMMAND LINE)+004 J.BC == 46 ;WD. 23 -- (BYTE 46) BYTE COUNT (FOT GET COMMAND LINE) ++004 J.SI == 47 ; -- (BYTE 47) INDEX TO SWAP FILE TABLE FOR CURRENT ALLOCATION J.PM == 50 ;WD. 24 -- PRIVILEGE MASK FOR JOB ++004 J.NL == 52 ;WD. 25 -- NODE LIST WORDS (LIST HEAD IN UTN) ++004 ;WD. 26 -- (DEQUE) ++004 J.SS == 56 ;WD. 27 -- SLOT SIZE IN SWAP FILE ++004 J.CT == 60 ;WD. 30 -- STD ADDR OF CHAIN TASK ++003 J.CB == 62 ;WD. 31 -- ADDR OF BUFFER FOR CHAIN TASK ++003 J.CC == 64 ;WD. 32 (B 64) -- BYTE COUNT OF CHAIN TASK BUFFER ++003 J.TE == 65 ;WD. 32 (B 65) -- REASON FOR TASK EVENT (BIT NAMES AS I.FC) +009/6 J.DS == 66 ;WD. 33 -- ADDRESS OF DRB CURRENTLY TO BE OUTPUT ++005 J.CR == 70 ;WD. 34 -- ADDRESS OF CHAIN TASK SEND/RECEIVE QUEUE ++009 J.F1 == 72 ;WD. 35 -- FLAGS WORD (ACCESSED ONLY BY TCP) ++007 J.EF == 74 ;WD. 36 (B 74) -- EVENT FLAG FOR NOTIFICATION TO OWNER ++007/6 ; OF TASK-RELATED EVENTS ++006 J.MT == 75 ;WD. 36 (B 75) -- MAX NO. OF OFFSPRING FOR THIS JOB ++007 J.RB == 76 ;WD. 37 -- ADDRESS OF RECEIVE QUEUE ++009 ; ; ; ; NODE SIZE AND NUMBER ; SGJNS = J.RB+2 ;++010/09/07/06/05/03 JOB NODE SIZE SGJBM = SGATT + SGXTSK ;NO. OF NODES = ; NO OF ACTIVE TERMINALS + ; NO OF ADDITIONAL TASKS ; ; ; WHEN A TASK IS LOADING FOR THE FIRST TIME THE SWAP FILE ; DISC ADDRESS NEEDS TO BE SAVED IN THE UJN. THE ATL WILL ; HOLD THE TASK IMAGE FILE DISC ADDRSS. ; THE FOLLOWING LOCATIONS ARE USED:- ; J.AC AND J.QU -- DISC ADDRESS ; J.WB -- DISC INDICATOR FOR SWAP FILE ; ; ; FLAGS WORD (J.FW) BIT SETTINGS ; JF.NL == 001 ;FIRST TIME LOAD JF.TR == 002 ;SET IF TASK IS RESIDENT JF.TL == 004 ;SET IF TASK IS TO BE LOADED JF.IA == 010 ;SET IF INSTALL IS ACTIVE (OR TO BE RUN) JF.SB == 020 ; SET IF TASK SWAPPABLE JF.TX == 040 ; SET IF TASK EXITING JF.IB == 100 ; SET IF TASK TO BE ABORTED WHEN INSTALL IS COMPLETE JF.LS == 200 ; SET IF LUNS NEED TO BE REASSIGNED JF.DS == 400 ; DELETE STD NODE ON EXIT JF.NS == 1000 ; TASK NOT SWAPPABLE (NORMALLY SET FOR A BATCH TASK) JF.BT == 2000 ; BATCH TASK (CLI OR USER TASK) JF.SA == 4000 ; TASK NON-SWAPPABLE FOR ABORT JF.TA == 10000 ;++011 TASK IS ON THE ATL OR IS BEING INSTALLED ; ; FLAGS WORD (J.F1) BIT SETTINGS ++007 ; JF.NC == 000001 ;++007/03 DON'T SUSPEND ON CNTL/C JF.CI == 000002 ;++007/03 CHAIN TASK IS AUTO-INSTALL JF.CC == 000004 ;++007/06 TERMINAL EVENT TO BE SERVICED JF.TE == 000010 ;++007/06 TASK EVENT(S) TO BE SERVICED JF.AS == 000020 ; ++007 TASK SUSPENDED BECAUSE OF CNTL/C ; ; SP.FLG == JF.SB!JF.TX ; ; ; PRIVILEGE BYTE (J.PR) BIT SETTINGS ; ;JP.PI ; ALLOWED TO ISSUE TCP CALLS ;JP.PD ; ALLOWED TO ISSUE FOREGROUND DIRECTIVES ;JP.PT ; ALLOWED TO EXECUTE A PRIVILEGED (RSX) TASK ; ; STATUS BYTE (J.ST) VALUES ; JS.RUN == 0 ; TASK IS RUNNABLE JS.RSD == 2 ; TASK IS TO BE SUSPENDED JS.SUS == 4 ; TASK SUSPENDED JS.ABT == 6 ; TASK TO BE ABORTED JS.NEW == 10 ; TASK IS NEW TO SCHEDULER JS.EXT == 12 ; TASK EXITED JS.LOD == 14 ; TASK TO BE LOADED JS.CON == 16 ; TASK TO BE CONTINUED JS.NW2 == 20 ; TASK NEW AFTER INSTALL ; ; ; ; ; AT TASK TERMINATION 'J.QU' IS SET AS FOLLOWS: ; ; BIT 8 IS SET WHEN THE LOW ORDER BYTE(BITS 0-7) CONTAIN A ; TERMINATION CODE. ; ; BIT 9 IS SET IF AN I/O RUNDOWN WAS PERFORMED FOF THE JOB. ; ; TERMINATION CODES: ; ;SC.OAD == 00 ; ODD ADDRESS OR OTHER TRAP 4 FAULT ;SC.SFL == 02 ; SEGMENT FAULT ;SC.BPT == 04 ; EXECUTION OF "BPT" INSTRUCTION OR T-BIT TRAP ;SC.IOT == 06 ; EXECUTION OF "IOT" INSTRUCTION ;SC.RES == 10 ; EXECUTION OF RESERVED INSTRUCTION ;SC.EMT == 12 ; EXECUTION OF NON IAS "EMT" INSTRUCTION ;SC.TRP == 14 ; EXECUTION OF "TRAP" INSTRUCTION ;SC.FPE == 16 ; 11/45 FPP EXCEPTION ;; ;TN.SST == 30 ; SST ABORTED (BAD STACK) ;TN.AST == 32 ; AST ABORTED (BAD STACK) ;TN.ABO == 34 ; TASK ABORTED ;TN.TIO == 36 ; TASK TIMEOUT ;TN.LRF == 40 ; TASK LOAD FAILURE (DISC READ ERROR) ;TN.RRF == 42 ; TASK SWAP FAILURE (DISC WRITE ERROR) ;TN.PAR == 44 ; TASK PARITY ERROR TN.INS == 46 ; TASK NOT INSTALLED TN.HND == 50 ; TASK COULD NOT BE LOADED BECUASE OF HANDLER ; EITHER NOT LOADED OR WOULD NOT ACCEPT LOAD/RECORD TN.SIZ == 52 ; TASK SIZE TOO LARGE TN.PRV == 54 ; TASK RSX PRIVILEDGED TN.ACT == 56 ; TASK ALREADY ACTIVE AND NOT MULTI-USER TN.NSP == 60 ; NO SWAP SPACE FOR TASK TN.UPN == 62 ; UNAVILABLE POOL NODE (FOR THE ATL) TN.FIX == 64 ; TASK FIXED IN MEMORY TN.DIS == 66 ; TASK DISABLED .PAGE ; UTN -- USER TERMINAL NODE ; ; A USER TERMINAL NODE (OR TERMINAL NODE) IS ALLOCATED ; FOR EVERY 'DEVICE' THAT CAN ISSUE CLI COMMANDS. ; TERMINAL NODES ARE CHAINED INTO A LIST FOR THE CLI ; CURRENTLY SERVICING THOSE INPUT DEVICES. A TERMINAL ; NODE CAN BE LINKED TO ONLY ONE CLI NODE AT ANY ONE ; TIME. ; THE TERMINATION OF JOBS INITIATED BY A CLI FOR ONE OF ; OF ITS TERMINAL NODES IS INDICATED BY THE SCHEDULER ; BY QUEING (INTO A DEQUE) THE TERMINAL NODE TO THAT ; CLI FOR SERVICE. THE TERMINAL NODE CONTAINS TASK ; TERMINATION INFORMATION. ; ; UTN OFFSETS :- ;WD. 00 -- FORWARD LINKAGE (ADDR. OF NEXT UTN) ;WD. 01 -- BACKWARD LINKAGE I.FC == 04 ;WD. 02 (B 04) -- FUNCTION CODE FOR CLI SERVICE ; (B 05) -- BYTE COUNT FOR BUFFER STRING I.DT == 06 ;WD. 03 -- ADDR OF DEVICE TABLE ENTRY FOR NODE I.CX == 10 ;WD. 04 (B 12) -- CLI CONTEXT BYTE I.CC == 11 ; (B 11) -- CLI CONTROL CONTEXT BYTE I.JN == 12 ;WD. 05 -- JOB TO NOTIFY OF TERMINAL EVENTS ++006 I.CE == 14 ;WD. 06 -- ADDR. OF CIT ENTRY FOR TERMINAL I.CI == 16 ;WD. 07 -- ADDR. OF CLI TASK FOR TERMINAL I.UI == 20 ; WD. 10 -- UIC FOR CLI TASK I.EX == 22 ; WD. 11 -- MINS TO TASK EXIT REQUEST I.DN == 24 ;WD. 12 -- TERMINAL DEVICE TYPE I.TT == 26 ;WD. 13 (B 26) -- TERMINAL UNIT NUMBER I.FL == 27 ; (B 27) -- FLAGS BYTE I.FJ == 30 ; WD. 14 -- UJN'S BELONGING TO CLI TASK FOR TERMINAL I.LJ == 32 ; WD. 15 -- (DEQUE) I.FB == 34 ; WD. 16 -- BUFFERS BELONGING TO CLI TASK FOR TERMINAL I.LB == 36 ; WD. 17 -- (DEQUE) ; I.ND == 40 ;WD. 20 -- (B 40) -- NUMBER OF DEVICE MAP ENRIES I.NL == 41 ; (B 41) -- NUMBER OF LUN MAP ENTRIES I.DU == 42 ;WD. 21 -- USER'S DEFAULT UFD ++006 I.SY == 44 ;WD. 22 -- USER'S DEFAULT DEVICE ++006 I.UN == 46 ;WD. 23 -- USER'S NAME (12. BYTES) ++006 I.MT == 62 ;WD. 31 -- (B 62) -- MAX JOB NODES FOR THIS TERMINAL ++010/07 ; THE REMAINDER OF THE UTN IS THE VARIABLE LENGTH ; DEVICE AND LUN MAPS. THE SIZE OF THE MAPS AND HENCE THE ; UTN IS DETERMINED AT SYSGEN TIME BY THE SETTING ; OF ASSEMBLY TIME PARAMETERS. ; I.DM == I.MT+2 ;++010/07/6 ; DM VOLUME ENTRY OFFSETS :- V.DT == 00 ;WD. 00 -- DEVICE TABLE ADDRESS FOR VOLUME ; V.SZ == V.DT+02 ; SIZE OF DEVICE MAP ENTRY ; I.LM == +I.DM ; LUN MAP ENTRY OFFSETS :- L.LN == 00 ; LUN NUMBER L.DI == 01 ; DEVICE MAP INDEX ; L.SZ == L.LN+2;LUN MAP ENTRY SIZE ; ; TERMINAL NODE SIZE AND NUMBER ; SGTNS = SGLUN*L.SZ + I.LM ;NODE SIZE - SYSGEN RESULTANT ;NUMBER OF TERMS DIRECTLY SPECIFIED AT SYSGEN TIME ; ; ; FUNCTION CODE (I.FC) BIT SETTINGS ; ; THE FUNCTION CODE IS SET WHEN A TERMINAL EVENT OCCURS ; N.B. ALL BUT IF.TX ARE USED ON A PER TASK BASIS IN J.TE IN THE JOB NODE ++006 ;IF.JS == 004 ;TASK (JOB) TERMINATED SUCESSFULLY ;IF.JA == 010 ;TASK (JOB) ABORTED ;++003 1 LINE DELETED ;IF.CC == 002 ;CONTROL C ON TERMINAL ;IF.TX == 040 ; TASK EXIT REQUESTED ;IF.NL == 020 ;REQUESTED TASK NEVER LOADED ;IF.SU == 200 ;++003 TASK SUSPENDED ITSELF ;IF.CH == 001 ;++003 TASK TERMINATED SUCCESSFULLY WITH... ;++003 CHAIN TASK REQUESTED ; ; ; CONTROL CONTEXT BYTE (I.CC) BIT SETTINGS ; ; DEFINED IN PISYM.MAC ; ; ; FLAGS BYTE BIT DEFINITIONS (I.FL) IF.BT == 001 ; 'TERMINAL' IS BATCH .PAGE ; CIT -- COMMAND INTERPRETER TABLE ; ; THE COMMAND INTERPRETER TABLE CONTAINS AN ENTRY FOR ; EACH CLI TASK WHICH CAN BE RUN CONCURRENTLY WITH ; OTHER CLI'S IN THE SYSTEM. THE MAXIMUM NUMBER OF ; CONCURRENT CLI IS SPECIFIED AT SYSGEN TIME, ; DETERMINING THE NUMBER OF CIT ENTRIES ESTABLISHED. ; ; CIT ENTRY OFFSETS :- C.ST == 00 ;WD. 00 -- STD NODE ADDRESS FOR CLI TASK C.TU == 02 ;WD. 01 -- LIST HEAD FOR UTN LIST FOR THIS CLI C.TL == 04 ;WD. 02 -- (DEQUE) C.FL == 06 ;WD. 03 -- (BYTE 06) FLAGS BYTE C.PR == 07 ; (BYTE 07) DEFAULT TCP PRIV MASK C.PM == 10 ;WD. 04 -- DEFAULT PRIVILEGE MASK ; ; ; CIT ENTRY SIZE CITSIZ = C.PM+2 ; ; FLAGS BYTE BIT DEFINITIONS:- ; CF.SPL ;SPOOLED INPUT STREAM UTN ALLOCATED ; .PAGE ; ; DVT -- DEVICE TABLE ; ; THE DEVICE TABLE SUPPLEMENTS THE INFORMATION HELD ; IN THE PUD OF THE IAS KERNEL. IT ; CONTAINS INFORMATION ABOUT DEVICE USAGE FOR IAS. ; ; DVT ENTRY OFFSETS :- D.PU == 00 ;WD. 00 -- PUD ADDRESS FOR THIS DEVICE D.UC == 02 ;WD. 01 (B 02) -- DEVICE USAGE COUNT D.FL == 03 ; (B 03) -- FLAGS BYTE D.EX == 04 ;WD. 02 -- EXCLUSIVE USER'S UTN ADDRESS ++006 D.TN == 06 ;WD. 03 -- UTN POINTER (FOR CLI INPUT DEVICES) ; ; DEVICE TABLE ENTRY SIZE DTESIZ = D.TN+2 ; ; FLAGS BYTE BIT DEFINITIONS ; DF.SY == 001 ;SET IF SYSTEM DEVICE DF.BC == 002 ;SET IF DEVICE IS ALLOCATED TO SCI DF.EX == 004 ;SET IF DEVICE IS EXCLUSIVE DF.SX == 010 ;SET IF DEVICE IS TEMPORARILY 'SYSTEM EXCLUSIVE' ; .PAGE ; ; DLT -- DEVICE LOAD TABLE +++001 ; ; THE DEVICE LOAD TABLE CONTAINS SYSTEM INFORMATION +++001 ; ABOUT DEVICES/VOLUMES REQUESTED FOR LOADING VIA THE +++001 ; OPERATOR DURING THE RUNNING OF IAS. +++001 ; NOTE THAT IT WILL NOT CONTAIN INFORMATION ABOUT +++001 ; VOLUMES MOUNTED PRIOR TO IAS START UP SINCE +++001 ; OPERATOR INTERVENTION IS NOT REQUESTED FOR THESE +++001 ; ; ; DLT ENTRY OFFSETS:- DV.RNA == 0 ; +++001 1 WORD REQUEST NODE ADDRESS DV.UJN == 2 ; +++001 1 WORD UJN ADDRESS OF REQUESTOR DV.DEV == 4 ; +++001 1 WORD DEVICE NAME DV.UNI == 6 ; +++001 1 BYTE UNIT NUMBER DV.UNF == 7 ; +++001 1 BYTE UNIT NUMBER FLAG DV.VOL == 10 ; +++001 6 WORD VOLUME ID DV.ST == 24 ; +++001 1 BYTE STATUS 1 BYTE UNUSED DV.IOS == 26 ; +++001 2 WORD IO STATUS WORDS ; ; DLT ENTRY SIZE DV.SZ=DV.IOS+4 ; +++001 DEVICE TABLE ENTRY SIZE ; ; STATUS BYTE VALUES ST.LOA == 1 ; +++001 LOAD REQUESTED FOR THIS ENTRY ST.SAT == 2 ; +++001 LOAD REQUEST SATISFIED FOR THIS ENTRY ST.REJ == 4 ; +++001 LOAD REQUEST REJECTED BY OPERATOR ; .PAGE ; ; UTL -- USER TASK LIST ; ; THIS LIST IS A DEQUE OF ENTRIES USED BY THE SCHEDULER ; TO FIND WHICH TASK TO RUN. ; IT IS DIVIDED INTO A NUMBER OF LEVELS WHICH ; DETERMINE THE PRIORITY OF THE TASKS. ; EACH ENTRY IN THE DEQUE CONTAINS THE LIST HEAD ; OF A DEQUE OF JOB NODES WHICH BELONG TO THAT ; LEVEL. ; THE SCHEDULER CAN PROMOTE AND DEMOTE TASKS BETWEEN ; LEVELS ON THE BASIS OF THEIR ACTIVITY HISTORY, ; BY UNLINKING NODES FROM ONE LEVEL AND RELINKING ; THEM INTO ANOTHER. ; JOBS IN THE LEVEL 1 UTL ENTRY GET HIGHEST ; PRIORITY SERVICE FROM THE SCHEDULER. ; THE MAXIMUM NUMBER OF LEVELS IS SPECIFIED AT SYSGEN ; TIME. ; ; UTL ENTRY OFFSETS :- Z.NL == 00 ;WD. 00 -- ADDRESS OF NEXT LEVEL Z.PL == 02 ;WD. 01 -- ADDRESS OF PREVIOUS LEVEL Z.FJ == 04 ;WD. 02 -- ADDRESS OF FIRST JOB NODE FOR LEVEL Z.LJ == 06 ;WD. 03 -- ADDR. OF LAST JOB NODE FOR LEVEL ;WD. 04 -- DUMMY FLAG WORD (LOOKS LIKE A UJN) ;WD. 05 -- DUMMY STATUS WORD Z.NE == 14 ;WD. 06 -- (B 14) -- NO. OF ENTRIES FOR LEVEL Z.FG == 15 ; (B 15) -- FLAGS BYTE Z.NT == 16 ;WD. 07 -- ROBIN POINTER FOR LEVEL Z.TF == 20 ;WD. 10 -- TIME FACTOR FOR THIS LEVEL Z.LD == 22 ;WD. 11 -- NEXT JOB TO LOAD Z.SP == 24 ;WD. 12 (B 24) -- SPARE Z.LV == 25 ; (B 25) -- LEVEL NUMBER Z.NS == 26 ;WD. 13 -- NEXT TASK TO SWAP ; ; ; ; FLAGS BYTE (Z.FG) DEFINITIONS:- ; ZB.SD == 001 ; TASK SCHEDULED AT THIS LEVEL ZB.BT == 002 ; BATCH SCHEDULING LEVEL (MUST BE THE BOTTOM LEVEL IF SET) ; ; ; NODE SIZE AND NUMBER SGUTS = Z.NS+2 ;NUMBER OF LEVELS SPECIFIED DIRECTLY AT SYSGEN TIME ; .PAGE ; ; SFT -- SWAP FILE TABLE ; ; THIS TABLE CONTAINS AN ENTRY DESCRIBING EACH SWAP FILE ; IN THE SYSTEM. THE NUMBER OF SWAP FILES ALLOWED IS ; SPECIFIED AT SYSGEN ; ; W.DI == 00 ;WD. 00 -- DISC INDICATOR (INDEX INTO PUD FOR DEVICE) W.BA == 02 ;WD. 01 -- BASE ADDRESS OF BIT MAP FOR BLOCK ALLOCATION W.BE == 04 ;WD. 02 -- END ADDRESS OF BIT MAP W.DA == 06 ;WD.03 -- BASE DISC ADDRESS FOR FILE ;WD. 04 -- SECOND WORD OF DISC ADDRESS W.BM == 012 ; WD.05 -- START OF BIT MAP ; THE REMAINDER OF EACH ENTRY CONTAINS THE BIT ; MAP FOR BLOCK ALLOCATION ON THE FILE. .PAGE ; BFN -- BUFFER NODE ; ; IAS PICKS NODES FROM THE NODE POOL AND CALLS THEM ++008 ; IAS BUFFERS. THEY ARE USED TO HOLD:- ++008 ; - COMMAND LINES ++008 ; - DATA RETURN BLOCKS ++008 ; - DEVICE NAMES ++008 ; - SEND/RECEIVE MESSAGES ++008 ; ; THE FOLLOWING EQUATES DEFINE VARIOUS OFFSETS INTO IAS BUFFERS ; ; BFN OFFSETS:- ;WD. 00 -- FORWARD POINTER ;WD. 01 -- BACKWARD POINTER ++001 B.OW == 04 ;WD. 02 -- OWNER TASK'S UJN NODE ADDRESS B.BU == 06 ;WD. 03 -- START OF USER BUFFER B.CH == SGBUF ;CHAIN LINK POSN (REL. TO B.BU) ++001 ; ; THE FIRST TWO DATA BYTES OF AN OUTPUT BUFFER CONTAIN: ; THE OFFSET TO THE FIRST OUTPUT MESSAGE & ; THE NEXT FREE BYTE IN THE BUFFER ; B.CM == 0 ;++007 OFFSET OF CURRENT OUTPUT MESSAGE B.NF == 1 ;++009/07 INTRA-BUFFER INPUT PTR B.M1 == 2 ;++010/07 LENGTH OF HEADER ; ; THE FIRST TWO BYTES OF EACH PORTION OF AN OUTPUT MESSAGE CONTAIN: ; THE OFFSET OF THE NEXT BYTE TO BE OUTPUT & ; THE OFFSET OF THE LAST BYTE + 1 OF THAT PART OF THE ++010 ; MESSAGE IN THIS BUFFER ++010 ; BIT 7 OF THE SECOND BYTE IS SET IF THERE IS MORE ; OF THE MESSAGE IN AN EXTENSION BUFFER ; B.CB == 0 ;++009/07 INTRA-MESSAGE OUTPUT PTR B.LN == 1 ;++010/09/07 INTRA-MESSAGE INPUT PTR B.MS == 2 ;++010/07 LENGTH OF MESSAGE HEADER ; B.DS == B.M1+B.MS ;++007 OFFSET TO DATA PORTION OF FIRST MESSAGE ; ; ; NOTE THAT B.CM, B.NF, B.CB, & B.LN ARE ALL OFFSETS RELATIVE TO THE ; START OF THE BUFFER. ; ; ; ; VALIDATE THE BUFFER DATA ; Z=SGBUF/2 Y=Z*2 .IF NE SGBUF-Y .ERROR SGBUF ; BUFFER SIZE ODD SGBUF=Y .ENDC .IF LT SGBUF-80. .ERROR SGBUF ; BUFFER SIZE LESS 80 BYTES SGBUF=80. .ENDC .IF GT SGBUF-126. ;++010 .ERROR SGBUF ; BUFFER SIZE GREATER THAN MAXIMUM SGBUF=126. ;++010 .ENDC ; ; BUFSIZ = SGBUF+B.BU BUFSIZ=BUFSIZ+2 ; EXTRA WORD FRO CHAIN POINTER ; BFNDCT == /20 ;++008 NO. OF 8-WORD BLOCKS IN AN IAS BUFFER .PAGE .SBTTL IAS DATA STRUCTURES - EQUEATES ; ; EVENT FLAGS AND MASKS ; EF.MRK == 000001 ; MARK TIME COMPLETE EF.TS2 == 000002 ; TSS2 EVENT EF.SWP == 000004 ; SWAP COMPLETE EF.ETS == 100000 ; END TIME SHARING EF.RTS == 000010 ;++007 ??? EF.IAS == 61. ;++012 USED AT IAS START UP BY T1INIT, TSS3 AND TCP ; ; EF.MSK == EF.MRK!EF.TS2!EF.SWP!EF.ETS!EF.RTS ;++007 EF.SHD == EF.MRK!EF.TS2!EF.ETS!EF.RTS ;++007 .PAGE .SBTTL IAS DATA STRUCTURES - COMMUNICATIONS REGION ; COMMUNICATIONS REGION ; .CM.ST == . ; START OF IASCOM .WORD GETCMD ; THIS WORD POINTS TO THE ROUTINE ; TO GET THE COMMAND LINE FOR AN ; IAS TASK. THIS WORD MUST ALWAYS ; BE AT THE BASE OF IASCOM SINCE ; THE RSX GET COMMAND LINE MAPS ONTO ; IASCOM AND JUMPS TO THE ADDRESS ; HELD AT THE BOTTOM OF IASCOM. .WORD PROMOTE ; .CRJOB::.WORD 0 ;CURRENTLY ACTIVE JOB ;(JOB NODE POINTER) .NXLD:: .WORD 0 ;NEXT JOB TO BE LOADED ;(JOB NODE POINTER) .SCHPR::.WORD SGSPR ; TICKS BETW. SCHED. PROMOTIONS .NXTPR::.WORD 0 ;TICKS TILL NEXT PROMOTION .BATSD::.WORD SGBSH ; TICKS BETWEEN BATCH SCHEDULES .BATQT::.WORD SGBQT ; NUMBER OF TICKS IN EACH BATCH QUANTUM .NXTBAT::.WORD 0 ;TICKS TILL NEXT BATCH SERVICE .MXBTSP::.WORD SGBTSP ; MAX BATCH SPACE (MOD 32.) .CRBTSP::.WORD SGBTSP ; CURRENT BATCH SPACE AVAILABLE .JBMAX::.WORD SGJBM ;MAXIMUM NO OF TS JOBS WHICH ;CAN BE RUN (<=NO. OF UJN) .JBCUR::.WORD 0 ;NO. OF CURRENTLY ACTIVE JOBS .JNSIZ::.WORD SGJNS ;SIZE OF JOB NODE .TNSIZ::.WORD SGTNS ;SIZE OF TERMINAL NODE .TMMAX::.WORD SGTMM ;MAX NUMBER OF TERMINALS .DEVMX::.WORD SGDEV ;MAX NUMBER OF REMOVABLE VOL DEVICES .LUNMX::.WORD SGLUN ;MAX NUMBER OF LUNS FOR 1 JOB .UVLMX::.WORD SGUVL ;MAX NO. OF VOLS MOUNTABLE BY A USER .BUFSZ::.WORD SGBUF ;SIZE OF TERMINAL BUFFERS ;++008 1 LINE DELETED .SYSTK::.WORD SGSTK ; SIZE OF IDLE TIME IN TICKS .SYSQT::.WORD SGTSL ; MAXIMUM RUN QUANTUM IN TICKS (TIME SLICE) .QTCON::.WORD SGCON ; CONSTANT FOR QUANTUM CALCULATION .MTKSZ::.WORD SGTKSZ ; MAXIMUM TASK SWAP SIZE(MOD 32) ; .T2ATL::.WORD 0 ; TSS2 ATL ADDRESS .TNATL::.WORD 0 ; TSSNUL ATL ADDRESS .T1PRI::.WORD SGT1PR ; PRIORITY OF TSS1 ; .AFMEM::.WORD SGAFM ;ALLOCATION FACTOR MEMORY SIZE .AFTIC::.WORD SGAFT ;ALLOCATION FACTOR TICKS/MEMORY SIZE .PIPRT::.WORD SGPIPR ; TCP PRIORITY .PIATL::.WORD 0 ; ATL FOR TCP .TTACT::.WORD SGATT ;NUMBER OF CURRENTLY ACTIVE TERMINALS ALLOWED .SCTTY::.WORD 0 ;TERMINAL TO START UP SCI CLI ON ;(SET BY ...IAS) - DEVICE TABLE ADDRESS ; .SCI:: .RAD50 /...SCI/ ;DEFAULT TASK NAME OF SCI ; ; .TTATL:: .WORD 0 ; ATL FOR THE TT HANDLER ; .USPAR:: .RAD50 /GEN / ; PARTITION FOR USER JOBS .EXPAR:: .RAD50 /GEN / ; PARTITION FOR EXECUTIVE TASKS ; .UJNPP:: .WORD .UJNPP+2 ; NEXT FREE ENTRY IN TABLE .BLKW SGTMM ; TABLE OF UJN ADDRESS TO PROMOTE TO LEVEL 1 PPSZ=. ; END OF TABLE .PAGE .SBTTL IAS DATA STRUCTURES - LIST HEADS AND TABLE POINTERS ; ; SYSTEM LIST HEADS ; ; JOB NODE POOL (JNP) LIST HEAD .JNPLH::.WORD .JNP ;POINTER TO FIRST FREE UJN .WORD JNPND-SGJNS ;POINTER TO LAST ENTRY .JNPSZ::.WORD SGJBM ; ; TERMINAL NODE POOL (TNP) LIST HEAD .TNPLH::.WORD TNP ;POINTER TO FIRST FREE UTN .WORD TNPND-SGTNS ;POINTER TO LAST NODE .TNPND::.WORD TNPND ; ; SYSTEM LISTS AND TABLES ; ; DEVICE TABLE INFO. .DVTBA::.WORD DVT ;DEVICE TABLE BASE ADDRESS .DVTNO::.WORD SGDEV+SGTMM ;NUMBER OF ENTRIES .DVTEND::.WORD DVTEND .DVTRM::.WORD DVT + ;POINTER TO ENTRY FOR FIRST ;REMOVABLE VOLUME .DTESZ::.WORD DTESIZ ;SIZE OF DEVICE TBL ENTRY ; ; DEVICE LOAD TABLE ; +++001 .DLTBA::.WORD DLT ; +++001 DLT BASE ADDRESS .DLTEND::.WORD DLTEND ; +++001 END OF TABLE .DLTNO::.WORD 0 ; +++001 NUMBER OF ENTRIES IN USE .DLTMAX::.WORD SGDEVM ; +++001 MAX NUMBER OF ENTRIES .DLTSZ::.WORD DV.SZ ; +++001 SIZE OF AN ENTRY ; ; COMMAND INTERPRETER TABLE INFO. .CITHD::.WORD CIT ;CIT BASE ADDRESS .CITEND::.WORD CITEND .CITNO::.WORD 0 ;NUMBER OF ENTRIES .CITMAX::.WORD SGCIT ;MAX NUMBER OF ENTRIES .CITSZ::.WORD CITSIZ ; ; SWAP LIST INFO .SWPLH::.WORD 0 ;MUL ADDRESS OF FIRST ENTRY .WORD 0 ; LAST ENTRY IN SWAP LIST .SWPCT::.WORD 0 ;NUMBER OF ENTRIES IN LIST ; ;USER TASK LIST (UTL) INFO .UTLHD::.WORD UTL ;ADDR. OF LEVEL 1 LIST ENTRY .WORD UTLEND-SGUTS ; ADDR. OF LAST LEVEL ENTRY .WORD . ; MAKE LIST HEAD LIKE .WORD .-2 ; LIKE A LEVEL .WORD 0 ; LIST .BYTE JS.SUS,0 ; HEAD .WORD 0 .WORD .UTLHD+4 .WORD 0 .WORD 0 .WORD 0 .WORD .UTLHD+4 .UTLNO::.WORD SGUTL ;NUMBER OF LEVELS ; ; SWAP FILE HEADER ; .NOFIL::.WORD 0 ; NUMBER OF SWAP FILES .MXFIL::.WORD SGSPF ; MAXIMUM NUMBER OF FILES .LBKSZ::.WORD SGLBSZ ; LOGICAL SWAP BLAOCK SIZE .MXFSZ::.WORD SGFLSZ ; MAXIMUM FILE SIZE .PAGE .SBTTL IAS DATA STRUCTURES - STATISTICS AREA ; ; STATISTICS AREA ; ; THIS AREA IS USED TO HOLD INFORMATION ABOUT THE PERFORMANCE ; OF VARIOUS PARTS OF THE SYSTEM SO THAT STATISTICS CAN BE COLLECTED ; ; ; SYSTEM COMPONENTS STATISTICS: ; .SETIM::.BLKW 2 ; ELAPSE TIME (IN TICKS) SINCE SYSTEM START .SSTIM::.BLKW 2 ; ELAPSE TIME (IN TICKS) SINCE START OF ; STATISTICS RECORDING. .SNTIM::.BLKW 2 ; TOTAL TIME (IN TICKS) NULL JOB ; (AND/OR BATCH) EXECUTING. .SUTIM::.BLKW 2 ; TOTAL TIME USER JOBS EXECUTING .SPTIM::.BLKW 2 ; TOTAL TIME NO TIME SHARING JOBS EXECUTING ; BECAUSE OF SWAPPING ; .SBTIM:: .BLKW 2 ; TOTAL TIME GIVEN TO BATCH ; ; THE NEXT PARAMETER WAS ADDED BY HENRY TUMBLIN ; IT IS TO ENABLE THE UTILIZATION ROUTINE A PLACE ; TO STORE THE LAST SYSTEM UTILIZATION FIGURE SO ; ANY ROUTINE CAN ACCESS THIS FIELD WITH READ ACCESS ; AND OBTAIN THE CURRENT SYSTEM UTILIZATION .SUTIL:: .BLKW 1 ;SYSTEM UTILIZATION IN % .PAGE .SBTTL COMMON CODE -- MACROS ; .MCALL CALL,RETURN ; .MACRO .INH ; INHIBIT INTERRUPTS MOV PS.EXP,-(SP) ; BIS #340,PS.EXP ; .ENDM .INH ; ; .MACRO .ENB ;;; ENABLE INTERRUTS MOV (SP)+,PS.EXP ;;; .ENDM .ENB ; ; .MACRO .INH0 ; INHIBIT TASK SWITCHING MOV PS.EXP,-(SP) BIS #140,PS.EXP .ENDM .INH0 ; ; .MACRO .ENB0 ;; ENABLE TASK SWITCHING CALL ..ENB0 ;; .ENDM .ENB0 .MACRO .PUTP A,E ; PUT A WORD INTO PREVIOUS SPACE MTPI A BR .+4 .WORD E .ENDM .PUTP ; ; .PAGE .SBTTL COMMON CODE -- .UJNMV ; ; ; THIS ROUTINE STORES A UJN ENTRY ADDRESS FOR TSS1 TO PROMOTE TO LEVEL 1 ; ; CALLED BY: ; TTY HANDLER WHEN A READ IS COMPLETE FOR A T/S TASK ; ; INPUT CONDITIONS: ; R0 = UJN ADDRESS ; ; ; .UJNMV:: CMP J.LV(R0),.UTLHD ; ALREADY AT LEVEL ONE? BEQ 100$ ; YES SO LEAVE IT. ; CMP .UJNPP,#PPSZ ; TABLE FULL? BEQ 100$ ; YES SO EXIT ; MOV R0,@.UJNPP ; STORE ADDRESS ADD #2,.UJNPP 100$: RETURN .PAGE ; ; ROUTINE TO PROMOTE A TASK TO LEVEL 1 ; ; THIS ROUTINE IS CALLED IN KENEL MODE FROM THE SCOMM ROUTINE ; CALLED BE THE TELETYPE HANDLER ; ; R0 = ATL NODE ADDRESS ; ; PROMOTE:: MOV R0,-(SP) CALL .UJNAD ; FIND UJN BCS 10$ ; NO FOUND CALL .UJNMV ; MOVE IT 10$: MOV (SP)+,R0 RETURN .PAGE .SBTTL COMMON CODE -- .UJNAD ; ; ; THIS ROUTINE RETURNS THE USER JOB NODE ADDRESS OF ; A TIME SHARING TASK GIVEN THE ATL ADDRESS ; ; CALLED BY: ; ; ; INPUT CONDITIONS: ; R0 = ATL ADDRESS ; ; ; .UJNAD:: MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) .INH0 MOV .UTLHD,R1 ;; CURRENT UTL IN R1 MOV .UTLHD+2,R2 ;; LAST UTL IN R2 10$: ;; OUTER LOOP MOV Z.FJ(R1),R3 ;; CURRENT UJN IN R3 MOV Z.LJ(R1),R4 ;; LAST UJN IN R4 TSTB Z.NE(R1) ;; ARE THERE ANY UJN'S? BEQ 30$ ;; NO 20$: ;; INNER LOOP CMP J.AT(R3),R0 ;; DOES THIS UJN HAVE THE ATL? BEQ 50$ ;; YES - FOUND CMP R3,R4 ;; WAS THAT THE LAST UJN FOR THIS UTL? BEQ 30$ ;; YES - RETURN TO OUTER LOOP MOV N.FP(R3),R3 ;; NO - NEXT UJN BR 20$ 30$: CMP R1,R2 ;; WAS THAT THE LAST UTL? BEQ 40$ ;; YES - FAIL MOV Z.NL(R1),R1 ;; NO - NEXT UTL BR 10$ ;; OUTER LOOP 40$: ;; FAILURE BIS #1,(SP) ;; SET ERROR INDICATOR (C BIT) BR 60$ ;; EXIT 50$: ;; SUCCESS MOV R3,R0 ;; UJN BIC #1,(SP) ;; CLEAR ERROR INDICATOR (C BIT) 60$: .ENB0 MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 ; RESTORE REGISTERS RETURN .PAGE .SBTTL COMMON CODE -- GETCMD ; ; THIS ROUTINE IS CALLED IN KERNEL MODE FROM THE RSX ; GET COMMAND LINE DIRECTIVE SERVICE ROUTINE TO OBTAIN ; THE COMMAND FOR AN IAS TASK ; ; KERNEL ASR 2 AND 3 WILL HAVE BEEN MAPPED ONTO THE ; IAS LIBRARIES. ; GETCMD: MOV .CRJOB,R5 ; GET UJN FOR CURRENT TASK ; MOVB J.BC(R5),R3 ; GET NUMBER OF CHARACTERS BEQ 5$ ; IF ZERO DO NOT MOVE ; MOV J.BU(R5),R2 ; GET BUFFER ADDRESS BNE 10$ ; NO BUFFER 5$: CLR R5 ; ERROR RETURN BR ERREXT ; ERROR EXIT 10$: ASR R3 ; ROUND UP NUMBER OF INC R3 ; BYTES TO NUMBER OF WORDS 20$: MOV (R2)+,-(SP) ; MOVE WORD .PUTP (R1)+,SEGERR ; SOB R3,20$ ; ; 30$: MOV R4,-(SP) ;++006 MOV J.BU(R5),R4 ;++006 GET BUFFER ADDR CALL RELBFF ;++006 RELEASE IT MOV (SP)+,R4 ;++006 CLR J.BU(R5) ;++006 FLAG NO BUFFER ; MOVB J.BC(R5),R3 ; RETURN CLRB J.BC(R5) ; NUMBER MOV R3,R5 ; OF BYTES CLC RETURN SEGERR: ; SEGMENT FAULT ; MOV #2,R5 ERREXT: SEC RETURN .PAGE .SBTTL RELEASE BUFFER ROUTINE -- RELBFF,RELBF2 ;/ ; THIS ROUTINE HAS BEEN MOVED FROM TCPCOMM ++006 ; ; RELEASE BUFFER ROUTINE ; ; THIS ROUTINE RELEASES A BUFFER BY CLEARING ; OUT THE BUFFER ; THE ROUTINE IS CALLED AS 'RELBFF' IF THE ADDRESS ; SUPPLIED IS THE USER'S BUFFER ADDRESS AND AS RELBF2 ; IF THE ADDRESS IS THE REAL BUFFER ADDRESS. ; CONTENTS AND RETURNING THE BUFFER TO THE BUFFER ; NODE POOL. ; ENTRY CONDITIONS:- ; RELBFF -- R4 - USER'S BUFFER ADDRESS ; RELBF2 -- R4 - REAL BUFFER ADDRESS ; ; ;\ ; RELBFF::SUB #B.BU,R4 ; GET REAL BUFFER ADDRESS RELBF2::MOV R1,-(SP) ; SAVE RNA MOV R3,-(SP) MOV R4,-(SP) ; AND BUFFER NODE ADDRESS ;++006 5 LINES DELETED MOV R4,R1 ; NODE ADDRESS FOR ..NADD CALL @#..NDEL ; DELETE IT FROM THE UTN DEQUEUE MOV .BUFSZ,R3 ; CLEAR... ADD #B.BU+2,R3 ; ...ALL... 10$: CLRB (R4)+ ; ..THE BUFFER SOB R3,10$ MOV #BFNDCT,R3 ;++008 2 LINES REPLACED CALL @#..NADV ;++008 RETURN THE NODE TO THE POOL CLC ;++006 1 LINE DELETED ;++007 6 LINES DELETED MOV (SP)+,R4 ; BUFFER NODE ADDRESS MOV (SP)+,R3 ; UTN MOV (SP)+,R1 ; RNA RETURN ; ; .PAGE .SBTTL IAS DATA STRUCTURES - NODE POOLS ; ; NODE POOLS FOR JOB NODES TERMINAL NODES AND BUFFERS ; ARE SET UP HERE. ; THE SIZES OF EACH NODE TYPE OR BUFFER IS ; AND THE NUMBER OF NODES IN EACH POOL ARE CONTAINED IN THE ; COMMUNICATIONS REGION. ; ; SET UP JOB NODE POOL (JNP) ; COUNT =-1 .JNP:: .REPT SGJBM COUNT = COUNT + 1 .IF EQ COUNT -SGJBM+1 ;IS THIS THE LAST NODE? .IFT .WORD .JNPLH ;YES-FWD LINK POINTS TO HEAD .IFF .WORD .+SGJNS ;NO-THEN POINT AT NEXT NODE .ENDC .IF EQ COUNT ;IS IT THE FIRST NODE? .IFT .WORD .JNPLH ;Y-BKWD LINK PTS TO LIST HD .IFF .WORD .-SGJNS-2 ;N-THEN POINT AT PREV NODE .ENDC .BLKB J.NL-J.FW .WORD . ;NODE LIST WORDS .WORD .-2 .WORD 0 .BLKW /2 ;++003 STEP TO END OF NODE .ENDR JNPND = . ; ; ; ; ; SET UP TERMINAL NODE POOL (TNP) ; COUNT = -1 TNP: .REPT SGTMM UTNBEG = . COUNT = COUNT + 1 .IF EQ COUNT-SGTMM+1 ;IS THIS THE LAST NODE .IFT .WORD .TNPLH ;Y-THEN FWD LINK TO LIST HEAD .IFF .WORD .+SGTNS ;N-THEN POINT AT NXT NODE .ENDC .IF EQ COUNT ;IS IT THE FIRST NODE? .IFT .WORD .TNPLH ;Y-BKWD LINK TO LIST HEAD .IFF .WORD .-SGTNS-2 ;N-POINT AT PREV NODE .ENDC .BLKB I.FJ-I.FC ;UTN TERMINAL INFO(EXCEPT LIST HEADS) .REPT 2 ;LIST HEADS FOR UJNS... .WORD . .WORD .-2 ;...AND BUFFERS .ENDR .WORD 0 ;LUNS AND DEVICES COUNT .BLKB I.DM-I.ND-2 ;++006 STEP TO END OF NODE .BLKB SGUVL*V.SZ ;DEVICE MAP .BLKB SGLUN*L.SZ ;LUN MAP .ENDR TNPND = . ; ; ; ; ; ; ; ; ; SET UP USER TASK LIST (UTL) ; COUNT = -1 QUANT = 1 UTL: .REPT SGUTL COUNT = COUNT + 1 .IF EQ COUNT-SGUTL+1 ;LAST LEVEL? .IFT .WORD .UTLHD ;FWD LINK TO HEAD .IFF .WORD .+SGUTS ;NO-POINT TO NXT LEVEL .ENDC .IF EQ COUNT ;FIRST LEVEL? .IFT .WORD .UTLHD ;BKWD LINK TO LH .IFF .WORD .-SGUTS-2 ;NO-POINT AT PREV NODE .ENDC .WORD . .WORD .-2 .WORD 0 .BYTE JS.SUS .BYTE 0 .WORD 0 .WORD .- .WORD QUANT .WORD 0 .BYTE 0 .BYTE COUNT+1 .WORD .- QUANT=QUANT*2 .ENDR ; ; ; ; UTLEND = . ; ; ; ;SET UP CIT ; CIT: .REPT SGCIT .BLKW 1 .WORD . .WORD .-2 .BLKB CITSIZ-C.FL .ENDR CITEND = . ; ; ; ; ;SET UP DEVICE TABLE DVT: .REPT SGDEV+SGTMM .BLKB DTESIZ .ENDR DVTEND = . ; ; SET UP DEVICE LOAD TABLE +++001 DLT: ; +++001 .REPT SGDEVM .WORD 0 ; +++001 REQUEST NODE ADDRESS .WORD 0 ; +++001 UJN ADDRESS OF REQUESTOR .WORD 0 ; +++001 DEVICE NAME .BYTE 0 ; +++001 UNIT NUMBER .BYTE 0 ; +++001 UNIT NUMBER FLAG .BLKW 6 ; +++001 VOLUME ID REQUESTED .WORD 0 ; +++001 STATUS WORD .BLKW 2 ; +++001 STATUS WORDS .ENDR DLTEND=. ; ; SET UP THE SWAP FILE TABLE ; .SWPTB:: X=+1 .REPT SGSPF F0=. .WORD ; DISC INDICATOR .WORD .+10 ; BASE OF BIT MAP .WORD .+4+ ; END OF BIT MAP .BLKW 2 ; BASE DISC ADDRESS .REPT X .WORD .ENDR WS.SZ==.-F0 .ENDR ; .CM.ED == . ;END OF IASCOM .IF GT .CM.ED-.CM.ST-16384. .IFT .ERROR <.CM.ED-.CM.ST-16384.>/2 ; GREATER THAN 4K WORDS .ENDC ; .END