From 2244a501f50d0813846eba353c00492f352dcad1 Mon Sep 17 00:00:00 2001 From: Paul Kimpel Date: Fri, 25 Jul 2014 23:50:38 +0000 Subject: [PATCH] Commit B6500 MCP Mark 0.0 source, additional transcription by James Fehlinger, as of 2014-07-15. --- source/B65MCP/MARK00.esp_m | 2026 +++++++++++++++++++++++++++++++++++- 1 file changed, 2012 insertions(+), 14 deletions(-) diff --git a/source/B65MCP/MARK00.esp_m b/source/B65MCP/MARK00.esp_m index 2d6a251..35c85ca 100644 --- a/source/B65MCP/MARK00.esp_m +++ b/source/B65MCP/MARK00.esp_m @@ -792,7 +792,7 @@ COMMENT FOLLOWING IS THE FORMAT OF THE NORMAL AND STUFFED IRWS; 10140000 , STUFFEDIRW ( TAG ~ IRW 10145000 , EBITF ~ 1 10146000 , STKNRF = 45:10 10147000 - , DISPF = 33:16 %OF MKST10148000140626PK + , DISPF = 35:16 %OF MKST10148000 , SIRWDELTAF = 12:13 %DELTA 10149000 ) 10150000 , MARKSTACKCW( TAG ~ MSCW 10151000 @@ -971,7 +971,7 @@ COMMENT THE FOLLOWING ILLUSTRATE THE METHOD OF ACCESSIN REGISTERS; 10252000 , ENABLEOVERLAY = ;# % DUMMY DECLARATION 10314000 ; 10315000 PROCEDURE HANDLETHESOFTWAREINTERRUPT;; 10316000 -COMMENT THIs IS A DUMMY PROCEDURE; 10317000 +COMMENT THIS IS A DUMMY PROCEDURE; 10317000 QUEUE SOFTWAREINTERRUPTQ(Y);REAL Y; 10318000 COMMENT THIS IS A DUMMY DECLARATION; 10319000 USING 10320000 @@ -1047,7 +1047,7 @@ DEFINE FASTPLACE = BACKWARDLINKF#, 11021100 DECREMENTED.; 11021800 LAYOUT LINKA COMMENT THE FIRST LINK WORD OF AN IN-USE AREA; 11022000 (TAG ~ 3, 11023000 - INUSEID = 47:10, COMMENT THE USERS ID FOR THIS AREA ; 11024000140626PK + INUSEID = 47:10, COMMENT THE USERS ID FOR THIS AREA ; 11024000 INUSELENGTH = 37:17, COMMENT A SELF-RELATIVE INDEX FOR 11025000 FINDING LINKZ FOR THIS AREA. I.E. LENGTH OF 11026000 AREA + NUMBER OF LINK WORDS; 11027000 @@ -1132,7 +1132,7 @@ DEFINE PROCSTACKSIZE = 12000000 COMMENT THE NUMBER OF WORDS THAT ARE RESERVED 12012000 ABOVE LOSR TO HANDLE STACK OVERFLOWS. ;12013000 STACKSPERMODULE = 12014000 - 32#; 12015000140626PK + 32#; 12015000 COMMENT THE NUMBER OF STACK VECTOR WORDS THAT 12016000 ARE ALLOCATED FOR EACH PRESENT MEMORY MODULE UP 12017000 TO THE MAXIMUM OF 1024 STACKS.; 12018000 @@ -1288,7 +1288,7 @@ DEFINE% FOR OUTPUTMESS AMD MESSER 13057000 BEGMCPID,% 13059030 BEGIOERR,% 13059040 BEGSTDIOERR,% 13059050 - 1305905513059050 + 13059055 BEGMISCMSG,% 13059060 0)#,% 13059090 IOERRMESSL(A,B,C)=MESSER(0&WHOCALLSL(5,A,B),C)#, 13059800 @@ -1311,7 +1311,7 @@ DEFINE% FOR OUTPUTMESS AMD MESSER 13057000 8"XTOI"4"00"% * 13076000 8"DATAN"4"00" 8"DATAN2"4"00" 8"DCOS"4"00" 8"DEXP"4"00"% * 13077000 8"DLOG"4"00" 8"DLOG10"4"00" 8"DSIN"4"00" 8"DSQRT"4"00"% * 13078000 - 8"CABS"4"00" 8"CCOS"4"00" 8"CEXP"4"00" 8"CLOG"4"00"% * 13079000140626PK + 8"CABS"4"00" 8"CCOS"4"00" 8"CEXP"4"00" 8"CLOG"4"00"% * 13079000 8"CSIN"4"00" 8"CSQRT"4"00",% END MATH ERRORS*** 13080000 8"NOT READY"4"00"% STATUS MESSAGES SSSS 13081000 8"UNIDENTIFIED FLYING UNIT"4"00"% S 13081200 @@ -1340,9 +1340,9 @@ DEFINE% FOR OUTPUTMESS AMD MESSER 13057000 ,% END MISCELLANEOUS MESSAGES MMM 13085900 0),% END MESSAGES USED BY MESSER 13099900 MONTHS ~( 8"JANUARY"4"00",8"FEBRUARY"4"00",8"MARCH"4"0000", 13120000 - 8"APRIL"4"0000",8"MAY"4"00000000",8"JUNE"4"000000", 13120010140626PK + 8"APRIL"4"0000",8"MAY"4"00000000",8"JUNE"4"000000", 13120010 8"JULY"4"000000",8"AUGUST","00",8"SEPTEMBER"4"00", 13120020 - 8"OCTOBER"4"00",8"NOVEMBER"4"00",8"DECEMBER"4"00"), 13120030140626PK + 8"OCTOBER"4"00",8"NOVEMBER"4"00",8"DECEMBER"4"00"), 13120030 PIE~( 8"3.1415926535897932384626433832795028841971693993751058" 13120100 8"209749445923078164062862089986280348253421170679821480" 13120110 8"865132823066470938446095505822317253594081284811174502" 13120120 @@ -1388,7 +1388,7 @@ LAYOUT TIMEL ( 47:16,31:16,15:16);% 13140210 BOOLEAN ARRAY OLDSTATUSWORD[*]; % OLD STATUS 13141000 REAL RDLBLP; % READALABEL PROCESS CONTROL WORD 13142000 DEFINE% FOR STATUS, READALABEL 13143000 - MAXRDLBLP = 6#,% MAXIMUM # READALABELS 13143010140626PK + MAXRDLBLP = 6#,% MAXIMUM # READALABELS 13143010 STATOPM(N)= N&WHOCALLSL(STATMSGSEC)#,% 13143020 NOTREADYMSG(U)= MESSER(STATOPM(0),U)#,% 13143030 UFUMSG(U)= MESSER(STATOPM(1),U)#,% 13143040 @@ -1694,7 +1694,7 @@ DEFINE% FOR KEYIN AND ASSOCIATED PROCEDURES 13355000 INPUT(IOCW) = BOOLEAN(IOCW.IOREADBIT)#, 13407000 TIMEDOUT = BOOLEAN(RSDS.RDTIMEOUT)#,% 13407100 INTEVNTARY(S,D,L) = 13408000 - REPLACE POINTER(D) BY POINTER(S) FOR 2x(L-1) OVERWRITE#, 13409000 + REPLACE POINTER(D) BY POINTER(S) FOR 2|(L-1) OVERWRITE#, 13409000 USINGSTACK(S) = NOT STACKVECTOR[S] IS 0&DATADESCRIPTOR()#,% 13410000 MCPNOTUSINGSTACK(S)=STACK[S,FIRSTMSCWPLACE].STKMRF!0#,% 13410100 D2STACKIS(S) = STACK[S,PROCESSNATUREPLACE].PROCESSHISTORYF!0#,13410200 @@ -1751,7 +1751,7 @@ COMMENT DECLARATIONS FOR QUEUES OF I/O REQUESTS WAITING FOR UNIT 13463000 ARRAY DUMMYIOQUE[*]; COMMENT FOR MAKING ENTRY IN IOQUE; 13465000 DEFINE FIRSTIOU=FIRSTIO[INDEX]#, COMMENT INDEX IS QUEUE HEAD INDEX; 13466000 LASTIOU=LASTIO[INDEX]#; 13467000 -QUEUE ARRAY IOQUE:FIRSTIO[*](USER,MISC,AREADESC,EVNT: 13468000140626PK +QUEUE ARRAY IOQUE:FIRSTIO[*](USER,MISC,AREADESC,EVNT: 13468000 PRVSIO,NEXTIO); 13469000 VALUE USER,MISC,AREADESC, 13470000 PRVSIO,NEXTIO; 13471000 @@ -1785,7 +1785,7 @@ QUEUE ARRAY IOQUE:FIRSTIO[*](USER,MISC,AREADESC,EVNT: 13468000 IF FIRSTIOU=LASTIOU THEN COMMENT ONLY ONE ENTRY IN QUEUE; 13499000 FIRSTIOU ~ LASTIOU ~NULL ELSE 13500000 BEGIN COMMENT REMOVES ENTRY FROM TOP; 13501000 - FIRSTIOU ~NEXTIO @ FIRSTIOU; 13502000140626PK + FIRSTIOU ~NEXTIO @ FIRSTIOU; 13502000 PRVSIO @(FIRSTIOU) ~ NULL; 13503000 END ELSE 13504000 IF ENTRY=LASTIOU THEN COMMENT REMOVES LAST ENTRY OF QUEUE; 13505000 @@ -1804,7 +1804,7 @@ COMMENT DECLARATIONS FOR QUEUES OF UNITS WAITING FOR CHANNEL. 13517000 ONE QUEUE FOR EACH MPX; 13518000 ARRAY DUMMYWAITCHANNELQUE[*]; COMMENT FOR MAKING ENTRY IN 13519000 WAITCHANNELQUE; 13520000 -REFERENCE ARRAY LASTUNIT[*]; COMMENT POINTS TO LAST ENTRY IN 13521000140626PK +REFERENCE ARRAY LASTUNIT[*]; COMMENT POINTS TO LAST ENTRY IN 13521000 WAITCHANNELQUE; 13522000 DEFINE FIRSTUNITI=FIRSTUNIT[INDEX]#, COMMENT INDEX-QUEUE HEAD INDEX; 13523000 LASTUNITI=LASTUNIT[INDEX]#; 13524000 @@ -1826,4 +1826,2002 @@ QUEUE ARRAY WAITCHANNELQUE:FIRSTUNIT[1](UNTWORD:PRVSUNIT,NEXTUNIT); 13525000 NEW ENTRY; 13540000 NEXTUNIT @(FIRSTUNITI)~PRVSUNIT @(FIRSTUNITI) ~NULL; 13541000 END ELSE 13542000 -?END 99999999140625PK + BEGIN COMMENT PUT ENTRY AT TAIL OF QUEUE; 13543000 + PRVSUNIT @(ENTRY)~ LASTUNITI; 13544000 + NEXTUNIT @(LASTUNITI) ~ ENTRY; 13545000 + LASTUNITI ~ ENTRY; 13546000 + NEXTUNIT @ (ENTRY) ~NULL; 13547000 + END; 13548000 + END INSERTION OF ENTRY IN WAITCHANNELQUE: 13549000 + TO DELINK, 13550000 + BEGIN 13551000 + IF ENTRY=FIRSTUNITI THEN COMMENT ENTRY IS THE TOP OF QUEUE; 13552000 + IF FIRSTUNITI=LASTUNITI THEN COMMENT ONLY ONE ENTRY IN QUEUE;13553000 + FIRSTUNITI~LASTUNITI~NULL ELSE 13554000 + BEGIN COMMENT REMOVE ENTRY FROM TOP; 13555000 + FIRSTUNITI ~ NEXTUNIT @ FIRSTUNITI; 13556000 + PRVSUNIT @ (FIRSTUNITI) ~ NULL; 13557000 + END ELSE 13558000 + IF ENTRY=LASTUNITI THEN COMMENT REMOVE LAST ENTRY OF QUEUE; 13559000 + BEGIN 13560000 + LASTUNITI ~ PRVSUNIT @ ENTRY; 13561000 + NEXTUNIT @(LASTUNITI)~NULL; 13562000 + END ELSE COMMENT REMOVES ANY OTHER ENTRY; 13563000 + BEGIN 13564000 + COMMENT FIX NEXTUNIT POINTER IN THE UPPER LINK OF ENTRY; 13565000 + NEXTUNIT @(PRVSUNIT @ ENTRY) ~ NEXTUNIT @ ENTRY; 13566000 + COMMENT FIX PRVSUNIT POINTER IN THE LOWER LINK OF ENTRY; 13567000 + PRVSUNIT @(NEXTUNIT @ ENTRY) ~ PRVSUNIT @ ENTRY; 13568000 + END; 13569000 + FORGETAREA(3,WORD(ENTRY).ADDRESS); 13570000 + END DELINKING OF ENTRY FROM QUEUE; 13571000 + 13572000 +EVENT TIMERINTERRUPTEVENT, 13573000 + STATUSEVENT, COMMENT EVENT CAUSED AFTER EACH STATUS RUN; 13574000 + ERRORFLAGEVENT; 13575000 +COMMENT GLOBALS FOR DISK MANAGEMENT; 14000000 +REAL MCPTOP; COMMENT THE HIGHEST DISKADDRESS OF THE MCP CODE FILE; 14000100 +DEFINE MCPINFOSIZE = 60 #; COMMENT SIZE IN WORDS OF DISK INFO; 14001000 +ARRAY MCPINFO[MCPINFOSIZE]; COMMENT WE WILL STUFF THE DISK ADDRESS OF 14002000 + THE INFO SEGMETNS IN THE DESCRIPTOR SO THAT14002010 + PRESENCEBIT WILL READ IT IN FOR US IF 14002020 + IT IS NOT PRESENT; 14002030 +REAL NEXTADDR, LASTADDR, NEXTROW, FIRSTADDR, MAXADDR, 14002040 + DIRECTORYCOMPLEMENTREPORTBACK; 14002050 +BOOLEAN PERIPHERALINVALIDADDRESS = DIRECTORYCOMPLEMENTREPORTBACK; 14002060 +COMMENT THE ABOVE ARE USED IN BUILDING THE DISK TABLES AND CAN BE 14003000 + RE-USED ONCE PERIPHERALINITIALIZE HAS EXITED; 14004000 +BOOLEAN PROCEDURE GIVEBACKDISK(DKADDR, SIZE); 14005000 + VALUE DKADDR, SIZE; 14006000 + REAL DKADDR, SIZE; FORWARD; 14007000 +ARRAY DISKMAPARRAY[*,*]; %USED FOR DISK TABLE BUILDING 14008000 +DEFINE LLLROWS = 10 #, %THE NUMBER OF ROWS FOR THE ABOVE 14009000 + LLLCHUNK = 100 #; %THE ROW SIZE OF THE ABOVE; 14010000 +COMMENT THE CELL FOR DISKMAPARRAY IS AVAILABLE AFTER DISKMAPING; 14011000 +COMMENT DECLARATIONS FOR USER DISK MANAGEMENT; 14012000 +COMMENT FIELD DEFINES FOR USERDISK TABLE; 14013000 +FIELD 14014000 + DISKADDRF=19:20, COMMENT DISK ADDRESS; 14020000 + EUNOF = 27:8; COMMENT UNIT NUMBER OF EU; 14021000 +LAYOUT DISKADDRESSL(EUNOF, DISKADDRF); 14025000 + LAYOUT FIRSTMAPWORD ( 14026000 + MAPUNITNOF = 47:8 14027000 + , MAPADDRESSF = 39:20 14028000 + , ADDRESSF 14029000 + ) 14030000 + , FIRSTMAPWORDRIME( 14031000 + MAPAREAF = 47:28 14032000 + , ADDRESSF 14033000 + ) 14034000 + ; 14035000 +SAVE ARRAY NEXTEU[3]; COMMENT ONE WORD FOR EACH DISK DENSITY; 14035100 +ARRAY USERDISKLIST[*,*], % ROW SIZE MUST BE EVEN 14036000 + USERDISKDOPEVECTOR = USERDISKLIST [*], %DOPE VECTOR OF ABOVE 14036500 + GETUSERDISKHEAD[*], % SIZE IS NUMBER OF ROWS IN 14037000 + FORGETUSERDISKHEAD[*]; % USERDISKLIST 14038000 +INTERLOCK USERDISKLOCK; 14039000 +DEFINE DISKRETURNLOCK = HEADERLOCKS[1] #, 14039100 + EUFACTOR = 2 #, 14039150 + USERDISKLISTROWSIZE = 30 #; 14039160 +LAYOUT USERDISKHEADWORD( 14041000 + USERDISKINDEXF = 47:20 14042000 + , EUNOF 14043000 + , ADDRESSF 14044000 + ) 14045000 + , DISKAREAWORDL( 14046000 + DISKAREASIZEF = 47:20 14047000 + , DISKADDRESSF = 27:28 14048000 + ) 14049000 + ; 14050000 + VALUE ARRAY DISKFILE1C5 := ( % DISK TYPE MOD SWITCH 14051000 + 0 % 1C-5 0 0 14052000 + , 25200 % 1C-5 0 1 14053000 + , 50400 % 1C-5 0 2 14054000 + , 75600 % 1C-5 0 3 14055000 + , 100800 % 1C-5 1 0 14056000 + , 126000 % 1C-5 1 1 14057000 + , 151200 % 1C-5 1 2 14058000 + , 176400 % 1C-5 1 3 14059000 + , 201600 % 1C-5 2 0 14060000 + , 226800 % 1C-5 2 1 14061000 + , 252000 % 1C-5 2 2 14062000 + , 277200 % 1C-5 2 3 14063000 + , 302400 % 1C-5 3 0 14064000 + , 327600 % 1C-5 3 1 14065000 + , 352800 % 1C-5 3 2 14066000 + , 378000 % 1C-5 3 3 14067000 + , 403200 % 1C-5 4 0 14068000 + , 428400 % 1C-5 4 1 14069000 + , 453600 % 1C-5 4 2 14070000 + , 478800 % 1C-5 4 3 14071000 + , 503000 % 1C-5 5 0 14072000 + ), 14073000 + DISKFILE1AX := ( % DISK TYPE MOD SWITCH 14074000 + 0 % 1A-X 0 0 14075000 + , 12500 % 1A-X 0 1 14076000 + , 25000 % 1A-X 0 2 14077000 + , 37500 % 1A-X 0 3 14078000 + , 50000 % 1A-X 1 0 14079000 + , 62500 % 1A-X 1 1 14080000 + , 75000 % 1A-X 1 2 14081000 + , 87500 % 1A-X 1 3 14082000 + , 100000 % 1A-X 2 0 14083000 + , 112500 % 1A-X 2 1 14084000 + , 125000 % 1A-X 2 2 14085000 + , 137500 % 1A-X 2 3 14086000 + , 150000 % 1A-X 3 0 14087000 + , 162500 % 1A-X 3 1 14088000 + , 175000 % 1A-X 3 2 14089000 + , 187500 % 1A-X 3 3 14090000 + , 200000 % 1A-X 4 0 14091000 + , 212500 % 1A-X 4 1 14092000 + , 225000 % 1A-X 4 2 14093000 + , 237500 % 1A-X 4 3 14094000 + , 250000 % 1A-X 5 0 14095000 + ), 14096000 + DISKFILESIM := ( % DISK TYPE MOD SWITCH 14097000 + 0 % SI-M 0 0 14098000 +,0,0,0 COMMENT FILLER TO MAKE IT WORK LIKE THE REST OF THEM; 14098100 + , 1250 % SI-M 0 1 14099000 + ), 14100000 + DISKFILE1C3 := ( % DISK TYPE MOD SWITCH 14101000 + 0 % 1C-3 0 0 14102000 + , 27600 % 1C-3 0 1 14103000 + , 55600 % 1C-3 0 2 14104000 + , 83400 % 1C-3 0 3 14105000 + , 111200 % 1C-3 1 0 14106000 + , 139000 % 1C-3 1 1 14107000 + , 166800 % 1C-3 1 2 14108000 + , 194600 % 1C-3 1 3 14109000 + , 222400 % 1C-3 2 0 14110000 + , 250200 % 1C-3 2 1 14111000 + , 278000 % 1C-3 2 2 14112000 + , 305800 % 1C-3 2 3 14113000 + , 333600 % 1C-3 3 0 14114000 + , 361400 % 1C-3 3 1 14115000 + , 389200 % 1C-3 3 2 14116000 + , 417000 % 1C-3 3 3 14117000 + , 444800 % 1C-3 4 0 14118000 + , 472600 % 1C-3 4 1 14119000 + , 500400 % 1C-3 4 2 14120000 + , 528200 % 1C-3 4 3 14121000 + , 556000 % 1C-3 5 0 14122000 + ), 14123000 + DISKFILE1C4 := ( % DISK TYPE MOD SWITCH 14124000 + 0 % 1C-4 0 0 14125000 + , 31800 % 1C-4 0 1 14126000 + , 63600 % 1C-4 0 2 14127000 + , 95400 % 1C-4 0 3 14128000 + , 127200 % 1C-4 1 0 14129000 + , 159000 % 1C-4 1 1 14130000 + , 190800 % 1C-4 1 2 14131000 + , 222600 % 1C-4 1 3 14132000 + , 254400 % 1C-4 2 0 14133000 + , 286200 % 1C-4 2 1 14134000 + , 318000 % 1C-4 2 2 14135000 + , 349800 % 1C-4 2 3 14136000 + , 381600 % 1C-4 3 0 14137000 + , 413400 % 1C-4 3 1 14138000 + , 445200 % 1C-4 3 2 14139000 + , 477000 % 1C-4 3 3 14140000 + , 508800 % 1C-4 4 0 14141000 + , 540600 % 1C-4 4 1 14142000 + , 572400 % 1C-4 4 2 14143000 + , 604200 % 1C-4 4 3 14144000 + , 636000 % 1C-4 5 0 14145000 + ); 14146000 +COMMENT GLOBALS FOR GETAREA/FORGETAREA; 15000000 +COMMENT FIELD DECLARATIONS FOR AREASTATUS ITEM OF BLOCKOFAREASQUE;15001000 +FIELD BASEADDRF =39:20, COMMENT BASE ADDRESS OF THE BLOCK; 15002000 + AREASIZEFF=47:4 , COMMENT SIZE OF AREA IN A BLOCK; 15003000 + AREASTATUSBITSF=19:20; COMMENT BITS FOR INDICATING 15004000 + AVAILABLITY OF AREAS; 15005000 +DEFINE MAXNOOFAREAS =20#; COMMENT KLUDGE UNTIL BOBS PATCH IS IN 15006000 +INTEGER MAXNOOFAREAS; COMMENT NO. OF AREAS ALLOWED IN A BLOCK WHICH IS15007000 + ALLOCATED AT A TIME. MAXIMUM NO OF AREAS IS 20; 15008000 +DEFINE AITDESCRIPTORPLACE=19#; COMMENT TEMP DEFINE FOR AIT; 15009000 +COMMENT DECLARATION FOR QUEUE OF BLOCKS OF AREAS OF DIFFERENT SIZE; 15010000 +ARRAY DUMMYBLOCKOFAREASQUE[*]; COMMENT FOR MAKING ENTRY IN 15011000 + BLOCKOFAREASQUE; 15012000 +REFERENCE LASTBLOCK; COMMENT POINTS TO LAST BLOCK IN BLOCKOFAREASQUE;15013000 +PROCEDURE STANDARDINSERT (FIRSTENTRY, LASTENTRY, ENTRY); 16000000 + VALUE ENTRY; 16001000 + REFERENCE FIRSTENTRY, LASTENTRY, ENTRY; 16002000 + COMMENT ASSUMES FIRST 2 ITEMS OF QUEUE ARE PREVIOUS ENTRY 16003000 + AND NEXT ENTRY, RESPECTIVELY. SEE STANDARDQUEUE.; 16004000 + IF LASTENTRY =NULL 16005000 + THEN BEGIN COMMENT QUEUE IS EMPTY; 16006000 + FIRSTENTRY ~ LASTENTRY ~ ENTRY; 16007000 + PREVIOUSSTANDARD @(ENTRY) ~ NEXTSTANDARD @(ENTRY) ~ NULL; 16008000 + END 16009000 + ELSE BEGIN COMMENT NEW ENTRY TO TAIL OF QUEUE; 16010000 + PREVIOUSSTANDARD @(ENTRY) ~ LASTENTRY; 16011000 + NEXTSTANDARD @ (LASTENTRY) ~ ENTRY; 16012000 + LASTENTRY ~ ENTRY; 16013000 + NEXTSTANDARD @ (ENTRY) ~ NULL; 16014000 + END OF STANDARD QUEUE INSERTION ALGORITHM; 16015000 +PROCEDURE STANDARDDELINK (FIRSTENTRY, LASTENTRY, ENTRY); 16016000 + VALUE ENTRY; 16017000 + REFERENCE ENTRY, FIRSTENTRY, LASTENTRY; 16018000 + COMMENT ASSUMES FIRST 2 ITEMS OF QUEUE ARE PREVIOUS ENTRY 16019000 + AND NEXT ENTRY, RESPECTIVELY. SEE STANDARDQUEUE.; 16020000 + IF ENTRY =FIRSTENTRY COMMENT ENTRY IS THE TOP OF THE QUEUE; 16021000 + THEN IF FIRSTENTRY = LASTENTRY 16022000 + THEN FIRSTENTRY ~LASTENTRY ~NULL 16023000 + ELSE BEGIN 16024000 + FIRSTENTRY ~ NEXTSTANDARD @ FIRSTENTRY; 16025000 + PREVIOUSSTANDARD @(FIRSTENTRY) ~NULL; 16026000 + END 16027000 + ELSE IF ENTRY =LASTENTRY 16028000 + THEN BEGIN COMMENT REMOVE LAST ENTRY; 16029000 + LASTENTRY ~PREVIOUSSTANDARD @ ENTRY; 16030000 + NEXTSTANDARD @ (LASTENTRY) ~NULL; 16031000 + END 16032000 + ELSE BEGIN COMMENT REMOVE ANY OTHER ENTRY; 16033000 + NEXTSTANDARD @(PREVIOUSSTANDARD @ ENTRY) ~ 16034000 + NEXTSTANDARD @ ENTRY; 16035000 + PREVIOUSSTANDARD @ (NEXTSTANDARD @ ENTRY) ~ 16036000 + PREVIOUSSTANDARD @ ENTRY; 16037000 + END OF DELINKING STANDARD QUEUE; 16038000 +REFERENCE LASTNAME; 17000000 +save reference procedure allocatenameq; forward; 17000100**KLUDGE +QUEUE NAMEQUEUE:FIRSTNAME(PREVNAME,NEXTNAME,POINTERTONAME,CHARCOUNT); 17001000 + VALUE POINTERTONAME, CHARCOUNT, PREVNAME, NEXTNAME; 17002000 + REFERENCE PREVNAME, NEXTNAME; 17003000 + POINTER POINTERTONAME; 17004000 + INTEGER CHARCOUNT; 17005000 + COMMENT QUEUE INDIVIDUAL NAMES UNTIL A "DIRECTORYSEARCH" TYPE 17006000 + POINTER CAN BE BUILT; 17007000 + USING LOCKED: 17008000 + ALLOCATE IS ALLOCATENAMEQ: 17009000 + TO INSERT, 17010000 + STANDARDINSERT (FIRSTNAME, LASTNAME, ENTRY): 17011000 + TO DELINK, 17012000 + STANDARDDELINK (FIRSTNAME, LASTNAME, ENTRY); 17013000 +SAVE REFERENCE PROCEDURE ALLOCATENAMEQ; 17014000 + BEGIN 17015000 + REFERENCE R; 17016000 + ARRAY A [3]; 17017000 + ALLOCATENAMEQ ~ R ~ R & DATADESCRIPTOR(,1,*,,,,,,4,GETAREA(4));17018000 + POINTERTONAME @(R) ~ POINTER (A); 17019000 + RETURN (R); 17019100 + END NAMEQUEUE ALLOCATION AND INITIALIZATION; 17020000 +QUEUE BLOCKOFAREASQUE :FIRSTBLOCK(PRVSBLOCK, NEXTBLOCK, AREASTATUS); 17021000 + VALUE PRVSBLOCK, NEXTBLOCK, AREASTATUS; 17022000 + REFERENCE PRVSBLOCK, NEXTBLOCK; 17023000 + REAL AREASTATUS; 17024000 + USING 17025000 + ALLOCATE IS REFERENCE (DUMMYBLOCKOFAREASQUE & 17026000 + ARRAYDESCL( ,3,GETSPACE(3,0,4,0))): 17027000 + TO INSERT, 17028000 + STANDARDINSERT (FIRSTBLOCK, LASTBLOCK, ENTRY): 17029000 + TO DELINK, 17030000 + BEGIN 17031000 + STANDARDDELINK (FIRSTBLOCK, LASTBLOCK, ENTRY); 17032000 + FORGETSPACE (WORD(ENTRY).ADDRESS); 17033000 + END; 17034000 +% GLOBALS FOR KEYINQ 17035000 +REAL KEYINLK; 17036000 +REFERENCE FIRSTINP, 17037000 + NEXTINP, 17038000 + LASTINP; 17039000 +INTEGER PROCEDURE CENSUS(O,Y);VALUE O,Y;REFERENCE O,Y;FORWARD; 17039100 +QUEUE KEYINQ:KEYQHD (KUSER,KRD,KBUF,KEVNT:PREINP,NEXINP); 17040000 + VALUE KUSER,KRD,KBUF,KEVNT,PREINP,NEXINP; 17041000 + REFERENCE KBUF, PREINP, NEXINP; 17042000 + REAL KUSER, KRD, KEVNT; 17043000 + USING 17045000 + NEXT IS 17046000 + (NEXTINP~NEXINP @ NEXTINP): 17047000 + LOCKED: 17048000 + POPULATION = CENSUS(FIRSTINP,LASTINP):% 17048100 + TO DELINK, 17049000 + BEGIN 17050000 + IF ENTRY=FIRSTINP THEN 17051000 + IF ENTRY=LASTINP THEN 17052000 + FIRSTINP~LASTINP~NULL 17053000 + ELSE BEGIN 17054000 + FIRSTINP~NEXINP @ FIRSTINP; 17055000 + PREINP @ (FIRSTINP)~NULL; 17056000 + END 17057000 + ELSE IF ENTRY=LASTINP THEN 17058000 + BEGIN 17059000 + LASTINP~PREINP @ LASTINP; 17060000 + NEXINP @ (LASTINP)~NULL; 17061000 + END 17062000 + ELSE BEGIN 17063000 + NEXINP @ (PREINP @ ENTRY)~NEXINP @ ENTRY; 17064000 + PREINP @ (NEXINP @ ENTRY)~PREINP @ ENTRY; 17065000 + END; 17066000 + END: 17067000 + TO INSERT, 17068000 + BEGIN 17069000 + IF LASTINP=NULL THEN% EMPTY 17070000 + BEGIN 17071000 + LASTINP~FIRSTINP~ENTRY; 17072000 + NEXINP @ (FIRSTINP)~PREINP @ (FIRSTINP)~NULL; 17073000 + END 17074000 + ELSE BEGIN 17075000 + PREINP @ (ENTRY)~LASTINP; 17076000 + NEXINP @ (LASTINP)~ ENTRY; 17077000 + LASTINP~ENTRY; 17078000 + NEXINP @ (ENTRY)~ NULL; 17079000 + END; 17080000 + END; 17081000 +INTEGER PROCEDURE CENSUS(OLDEST,YOUNGEST);VALUE OLDEST,YOUNGEST; 17082000 + REFERENCE OLDEST,YOUNGEST; 17082100 + BEGIN INTEGER TMP~1;% 17082200 + IF OLDEST=NULL THEN RETURN(0) ELSE% 17082400 + BEGIN 17082410 + NEXTINP~OLDEST;% 17082500 + WHILE OLDEST!YOUNGEST DO% 17082600 + BEGIN% 17082610 + TMP~*+1;% 17082620 + OLDEST~NEXT(KEYINQ);% 17082630 + END;% 17082690 + END;% 17082700 + RETURN(TMP);% 17082900 + END CENSUS;% 17082990 +% GLOBALS FOR SPOUTQ 17090000 +REAL SPOUTLK;% 17090100 +REFERENCE FIRSTOUTP,% 17090200 + NEXTOUTP,% 17090300 + LASTOUTP;% 17090400 +QUEUE SPOUTQ:SPOQHD(SUSER,SRD,SBUF,SEVNT:PREOUTP,NEXOUTP); 17091000 + VALUE SUSER,SRD,SBUF,SEVNT,PREOUTP,NEXOUTP; 17091100 + REAL SUSER,SRD;% 17091200 + WORD SEVNT;% 17091210 + REFERENCE SBUF, PREOUTP,NEXOUTP; 17091300 + USING 17091400 + NEXT IS 17091500 + (NEXTOUTP~NEXOUTP@NEXTOUTP):% 17091600 + LOCKED: 17091700 + TO INSERT,% 17091800 + BEGIN% 17091900 + IF LASTOUTP=NULL THEN% EMPTY 17092000 + BEGIN% 17092100 + LASTOUTP~FIRSTOUTP~ENTRY;% 17092200 + NEXOUTP@(FIRSTOUTP)~PREOUTP@(FIRSTOUTP)~NULL;% 17092300 + END% 17092400 + ELSE BEGIN% 17092500 + PREOUTP@(ENTRY)~LASTOUTP;% 17092600 + NEXOUTP@(LASTOUTP)~ENTRY;% 17092700 + LASTOUTP~ENTRY;% 17092800 + NEXOUTP@(ENTRY)~NULL;% 17092900 + END;% 17093000 + END:% 17093100 + TO DELINK,% 17094000 + BEGIN% 17094100 + IF ENTRY=FIRSTOUTP THEN% 17094200 + IF ENTRY=LASTOUTP THEN% ONE AND ONLY ONE ITEM IN QUEUE 17094300 + FIRSTOUTP~LASTOUTP~NULL% 17094400 + ELSE BEGIN% TOP ITEM IN QUEUE 17094500 + FIRSTOUTP~NEXOUTP@FIRSTOUTP;% 17094600 + PREOUTP@(FIRSTOUTP)~NULL;% 17094700 + END 17094800 + ELSE IF ENTRY=LASTOUTP THEN% BOTTOM ITEM IN QUEUE 17094900 + BEGIN% 17095000 + LASTOUTP~PREOUTP@LASTOUTP;% 17095100 + NEXOUTP@(LASTOUTP)~NULL;% 17095200 + END% 17095300 + ELSE BEGIN% ITEM IS IN THE MIDDLE OF QUEUE 17095400 + NEXOUTP@(PREOUTP@ENTRY)~NEXOUTP@ENTRY;% 17095500 + PREOUTP@(NEXOUTP@ENTRY)~PREOUTP@ENTRY;% 17095600 + END;% 17095700 + END;% 17095800 +INTERLOCK ARRAY CHANNELLOCKS[*];% 17100000 +ARRAY CHANNELGUIDE[*];% 17100100 +LAYOUT LNDESCL (FIRF=19:1,LASF=18:1,PGF=17:10,LNF=7:8),% 17100500 + GYDEFORM (RATINGSAMPLEF=47:30,SERF=17:8,CUSTF=9:8,0:1~1); 17100590 +FIELD LNSTATF = 19:2;% 17100600 +PROCEDURE CHANLINSERT(E,I);VALUE E,I;REAL I;REFERENCE E; FORWARD; 17101000 +PROCEDURE CHANLREPLACE(E); VALUE E; REFERENCE E; FORWARD;% 17101100 +DEFINE% FOR TUNING CHANNELS 17102000 + MAXPSUEDOCHANNELS=10#,% 17102100 + PICQSZ= 6#,% 17102110 + MIXPIC = 0%,% 17102200 + PERPIC = 1#,% 17102210 + SCHPIC = 2#,% 17102220 + DIRPIC = 3#,% 17102230 + MIXCHNLLK = CHANNELLOCKS[MIXPIC]#,% 17102300 + MIXQ(R) = PICQ,R,MIXPIC#,% 17102310 + MIXQHD = CHANLHD[MIXPIC]#,% 17102320 + PRINTMIXPIC(A)= CHANLOUT(MIXPIC,A)#,% 17102330 + FIRSTLN= CHANLHD[INDEX]#,% 17102340 + TOPLINE= 1&LNDESCL(,,1)#,% 17102350 + FIRSTIMAGE(L,P)= L&LNDESCL(1,0,P)#,% 17102360 + LASTIMAGE(L,P)= L&LNDESCL(0,1,P)#,% 17102370 + CURRENTIMAGE(L,P)= L&LNDESCL(1,1,P)#,% 17102380 + AVAILABLEIMAGE(L,P)= L&LNDESCL(0,0,P)#,% 17102390 + AVAILINE(L)= (L).LNSTATF=0#,% 17102400 + STATUSPOSIT= 28#,% 17102500 + STATUSSZ= 3#,% 17102600 +ENDCHANLQDEF=0#;% 17102990 +QUEUE ARRAY PICQ:CHANLHD[*](LNID,LNDESC,LNBUF,INTERPICLNK,PRELN,NEXLN); 17103000 + VALUE LNID,LNDESC, INTERPICLNK,PRELN,NEXLN; 17103100 + REAL LNID,LNDESC, INTERPICLNK; 17103200 + ARRAY LNBUF[*];% 17103210 + REFERENCE PRELN,NEXLN; 17103300 + USING LOCKED:% 17103400 + TO INSERTINTO, CHANLINSERT(ENTRY,INDEX):% 17103500 + TO REPLACIT, CHANLREPLACE(ENTRY):% 17103600 + TO INSERT,% 17103700 + BEGIN% 17103710 + IF FIRSTLN=NULL THEN% 17103720 + BEGIN% 17103730 + FIRSTLN~ENTRY;% 17103740 + PRELN@(ENTRY)~ENTRY;% 17103750 + NEXLN@(ENTRY)~NULL;% 17103760 + END% 17103770 + ELSE BEGIN% 17103780 + NEXLN@(ENTRY)~FIRSTLN;% 17103790 + NEXLN@(PRELN@FIRSTLN)~ENTRY;% 17103800 + PRELN@(ENTRY)~PRELN@FIRSTLN;% 17103810 + PRELN@(FIRSTLN)~ENTRY; 17103820 + END; 17103830 + END: 17103890 + TO DELINK,% 17104000 + BEGIN% 17104010 + IF ENTRY=FIRSTLN THEN% 17104020 + IF NEXLN@ENTRY=NULL THEN FIRSTLN~NULL% 17104030 + ELSE BEGIN% 17104040 + FIRSTLN~NEXLN@ENTRY;% 17104050 + PRELN@(FIRSTLN)~PRELN@ENTRY;% 17104060 + END% 17104070 + ELSE IF NEXLN@ENTRY=NULL THEN NEXLN@(PRELN@ENTRY)~NULL% 17104080 + ELSE BEGIN% 17104090 + NEXLN@(PRELN@ENTRY)~NEXLN@ENTRY;% 17104100 + PRELN@(NEXLN@ENTRY)~PRELN@ENTRY;% 17104110 + END;% 17104120 + FORGETAREA(WORD(ENTRY).LENGTHF,WORD(ENTRY).ADDRESSF); 17104130 + END:% 17104190 + TO REARRANGE,% 17104200 + BEGIN% 17104210 + ENTRY~NEXLN@ENTRY; 17104220 + WHILE PRELN@ENTRY!PRELN@FIRSTLN DO% 17104230 + BEGIN% 17104240 + PRELN@(ENTRY)~PRELN@(PRELN@ENTRY);% 17104250 + IF AVAILINE(LNDESC@(NEXLN@(PRELN@ENTRY))) THEN% 17104260 + FORGETAREA(WORD(NEXLN@(PRELN@ENTRY)).LENGTHF,% 17104270 + WORD(NEXLN@(PRELN@ENTRY)).ADDRESSF);% 17104280 + END;% 17104290 + END;% 17104300 + PROCEDURE CHANLINSERT(ENTREE,CHNNO);VALUE ENTREE,CHNNO;% 17110000 + REAL CHNNO; REFERENCE ENTREE;% 17110100 + BEGIN% 17111000 + INTEGER TMPLN, TMPPG~-1;% 17112000 + REFERENCE TMPENTRY~CHANLHD[CHNNO];% 17113000 + LABEL LOOP;% 17119000 +LOOP: TMPLN:=(TMPLN MOD MAXLNS)+1;% 17121000 + IF TMPENTRY=NULL THEN% 17122000 + BEGIN% 17123000 + LNDESC@(ENTREE)~FIRSTIMAGE(TMPLN,TMPPG+REAL(TMPLN=1)); 17124000 + PICQ[CHNNO]~ENTREE;% 17125000 + END% 17126000 + ELSE BEGIN% 17127000 + IF AVAILINE(TMPLN~LNDESC@TMPENTRY) THEN% 17128000 + BEGIN% 17129000 + LNDESC@(ENTREE)~FIRSTIMAGE(TMPLN,TMPLN.PGF);% 17130000 + PRELN@(ENTREE)~TMPENTRY;% 17131000 + REPLACIT(PICQ,ENTREE,CHNNO);% 17132000 + END% 17133000 + ELSE BEGIN% 17134000 + TMPENTRY~NEXLN@TMPENTRY;% 17135000 + GO TO LOOP;% 17136000 + END;% 17137000 + END;% 17138000 + END CHANLINSERT;% 17139900 + PROCEDURE CHANLREPLACE(ENTREE);VALUE ENTREE;REFERENCE ENTREE; 17150000 + BEGIN% 17150100 + REFERENCE PREVLINE~PRELN@ENTREE;% 17150200 + PRELN @ (ENTREE) ~ PRELN @ PREVLINE;% 17150300 + NEXLN @ (ENTREE) ~ NEXLN @ PREVLINE;% 17150400 + NEXLN @ (PRELN @ ENTREE) ~ PRELN @ (NEXLN @ ENTREE) ~ENTREE; 17150500 + FORGETAREA(WORD(PREVLINE).LENGTHF,% 17150700 + WORD(PREVLINE).ADDRESSF);% 17150702 + END CHANLREPLACE;% 17151990 +REFERENCE LASTPARAM; 17152000 +QUEUE PARAMETERQUEUE:FIRSTPARAM 17153000 + (PREVPARAM, NEXTPARAM, POINTERTOID, PARAMETERINFO); 17154000 + VALUE PREVPARAM, NEXTPARAM, POINTERTOID, PARAMETERINFO; 17155000 + REFERENCE PREVPARAM, NEXTPARAM, PARAMETERINFO; 17156000 + POINTER POINTERTOID; 17157000 + COMMENT QUEUE PARAMETER NAMES AND THEIR ASSOCIATED INFO 17158000 + UNTIL ALL ITEMS CAN BE PLACED IN A SINGLE 17159000 + VECTOR.; 17160000 + USING LOCKED: 17161000 + ALLOCATE IS ALLOCATENAMEQ: 17162000 + TO INSERT, 17163000 + BEGIN 17164000 + PARAMETERINSERT (FIRSTPARAM, LASTPARAM, ENTRY); 17165000 + END: 17166000 + TO DELINK, 17167000 + BEGIN 17168000 + STANDARDDELINK (FIRSTPARAM, LASTPARAM, ENTRY); 17169000 + FORGETAREA (4, WORD (ENTRY).ADDRESSF); 17170000 + END: 17171000 + TO INITIALINSERT, 17172000 + STANDARDINSERT (FIRSTPARAM, LASTPARAM, ENTRY); 17173000 +PROCEDURE PARAMETERINSERT (FIRSTPARAM, LASTPARAM, ENTRY); 17174000 + VALUE ENTRY; 17175000 + REFERENCE FIRSTPARAM, LASTPARAM, ENTRY; 17176000 + BEGIN 17177000 + POINTER PT, PE; 17178000 + ARRAY PB [*]; 17179000 + REFERENCE RT, PBR = PB; 17180000 + INTEGER IT, IE, WORDS; 17181000 + REAL T; 17182000 + LABEL AWAY; 17183000 + IF RT ~ FIRSTPARAM ! NULL 17184000 + THEN BEGIN 17185000 + WORDS~REAL(POINTERTOID@(RT),6).TOTALINFOWORDSF; 17186000 + DO IF IT ~ REAL(PT ~POINTERTOID@(RT), 6). 17187000 + KEYFIELDF = 17188000 + IE ~ REAL(PE ~POINTERTOID@(ENTRY),6). 17189000 + KEYFIELDF 17190000 + THEN IF PT+6 = PE+6 FOR IT.ALFALENGTHF 17191000 + THEN BEGIN 17192000 + PBR ~ PARAMETERINFO@(RT); 17193000 + WORDS ~ WORDS - REAL(PT,6).INFOINDEXF - 17194000 + PB.LENGTHF; 17195000 + STANDARDDELINK (FIRSTPARAM, LASTPARAM, RT); 17196000 + FORGETSPACE(PT.ADDRESSF); 17197000 + FORGETSPACE(PB.ADDRESSF); 17198000 + FORGETAREA(4, WORD (RT).ADDRESSF); 17199000 + GO AWAY 17200000 + END 17201000 + UNTIL RT ~ NEXTPARAM@(RT) = NULL; 17202000 + END 17203000 + ELSE PE ~ POINTERTOID@(ENTRY); 17204000 +AWAY: PBR ~ PARAMETERINFO@(ENTRY); 17205000 + STANDARDINSERT (FIRSTPARAM, LASTPARAM, ENTRY); 17206000 + UPDATEWORDCOUNT 17207000 + (WORDS + (REAL(PE,6).INFOINDEXF) + 17208000 + (T ~ PB.LENGTHF), FIRSTPARAM); 17209000 + UPDATEINFOINDEX (T, ENTRY); 17210000 + END; 17211000 +% GLOBALS FOR LOGGING 17300000 +ARRAY LOGBUF[*],% 17300100 + LOGHDR[*];% 17300200 +REAL LOGLOCK,% 17300300 + LOGRECCNT;% 17300400 +DEFINE 17301000 + LOGROWSZ= 1000#,% 17301100 + SEGMENTSZ= 30#,% 17301200 + LOGRECSZ= 15#,% 17301300 + LOGHDRSZ= 30#,% 17301400 +ENDLOGDEF=0#;% 17301900 +COMMENT GLOBALS FOR ARRAYDEC; 18000000 + DEFINE MCPAITSIZE=10#, 18000300 + AITSIZE=64#; 18000700 + ARRAY MCPARRAYINFOT[MCPAITSIZE]; 18001000 +LAYOUT SARRAYDESCL(TAG~5,LENGTHF,MCPARRAYBIT=19:1,FILETYPEF, 18002000 + AITINDICATORF,AITINDEXF=16:12,ARRAYTYPEF=4:5); 18003000 + COMMENT TO MAKE UP A SPECIAL ARRAY 18004000 + DESCRIPTOR FOR ARRAY DECLARATIONS; 18005000 +FIELD DOUBLEBIT=2:1,LSAVEBIT=0:1; 18006000 +COMMENT GLOBALS FOR FILE MANAGEMENT; 18007000 +DEFINE STOPFILETIMING=STARTFILETIMING #, COMMENT WHEN 18008000 + STOPFILETIMING IS CALLED SECOND PARAMETER IS FALSE; 18009000 + SETUNITAVAILABLE=SETUNITINUSE #, COMMENT WHEN 18010000 + SETUNITAVAILABLE IS CALLED SECOND PARAMETER IS FALSE;18011000 + LEBZERO=LEB[0]#, 18012000 + LEBONE=LEB[1]#, 18013000 + LEBTWO=LEB[2]#; 18014000 + FIELD BYTE1F=47:8, 18015000 + BYTE2F=39:8, 18016000 + BYTE3F=31:8, 18017000 + BYTE4F=23:8, 18018000 + BYTE5F=15:8, 18019000 + BYTE6F=7:8; 18020000 +DEFINE PUTINBITSTABLE(TABLE,U) =TABLE[U DIV 48].[U MOD 48:1]~1#; 18021000 +FIELD PTYPEF =4:5, % DEVICE CODE OF PERIPHERAL TYPE 18022000 + PTYPECODEF=7:3, % QUALIFYING CODE FOR PERIPHERAL TYPE 18023000 + UNOF =U:1; % FOR RESETTING BITS IN UNIT BITS TABLE 18024000 + EVENT FINDINPUTEVENT; % NOW YOU CAN CALL FINDINPUT 18024100 +REAL MCPDISKUNITNO; % UNIT NO TO BE USED FOR TALKING ABOUT DISK18024200 +COMMENT DEFINES FOR CODE VALUE PASSED TO FINDINPUT; 18024300 +DEFINE SEARCHONLY=1# % DONOT WAIT IF DISK FILE IS LOCKED 18024400 + ; 18024800 +ARRAY REPLY[*]; COMMENT FOR STORING REPLYCODE FOR CHECKING 19002000 + VALID RESPONSES FROM SPO FOR EACH STACK NO.19003000 + (SNR).WHEN VALID RESPONSE IS RECEIVED 19004000 + REPLY[SNR]>0 AND WILL CONTAIN THE RECEIVED 19005000 + MESSAGE; 19006000 +% THE ARRAY REPLY[*] IS TEMPORARILY BEING INITIALIZED 19006200 +% TO MAXIMUM NO OF STACKS -- EVENTUALLY IT SHOULD BE MADE DYNAMIC, 19006210 +% POSSIBLY BY A QUEUE MECHANISM OR BY STANDARD OFFSET FROM BOSR. 19006220 + LAYOUT REPWRDL (% 19006500 + REPINFOF=23:9,% MISC. INFO 19006510 + REPVALF=14:15);% RESPONSE VALUE 19006590 + DEFINE% REPLY BIT VALUE REPINFOF 19006900 + DSREP = 1#,% NOTHING 19007000 + RMREP = 2#,% NOTHING 19007010 + OKREP = 4#,% NOTHING 19007020 + ILREP = 8#,% UNIT NO. 19007030 + FMREP = 16#,% UNIT NO. 19007040 + ULREP = 32#,% UNIT NO. 19007050 + OUREP = 64#,% UNIT TYPE 19007060 + FRREP = 128#,% NOTHING 19007070 + OFREP = 256#,% NOTHING 19007080 + USREP = 512#,% GEN AND VER NOS. 19007090 + AXREP = 1024#,% DONT KNOW YET 19007100 +DEFINEREPEND=O#; 19014000 +COMMENT DEFINES FOR BIT NO VALUE IN REPLY MASK; 19014010 +DEFINE DSV =0# 19014020 + ,RMV =1# 19014030 + ,OKV =2# 19014040 + ,ILV =3# 19014050 + ,FMV =4# 19014060 + ,ULV =5# 19014070 + ,OUV =6# 19014080 + ,FRV =7# 19014090 + ,OFV =8# 19014100 + ,USV =9# 19014110 + ,AXV =10# 19014120 + ; 19014300 +COMMENT DEFINES FOR FIB; 19015000 + 20000000 + 20001000 + DEFINE INDEPENDENTRUNNERCORE = 512 # %***STACK CORE 20002000 + , IRCORE = 500 # %TOTAL CORE 20003000 + , IRPROCTIME = 1000 # 20004000 + , IRIOTIME = 500 # 20005000 + , DOOFFSET = 0 # 20006000 + ; 20007000 + REAL INDEPENDENTRUNNERLOK 20008000 + ; 20009000 +COMMENT THE FOLLOWING INDICES ARE USED FOR PARTITIONING INDEPENDENT 20009100 + RUNNER PROCEDURES 20009200 + ; 20009300 + REAL IRPCWSTARTPLACE~NAME(CONTROLCARD).ADRCPLF 20009400 + , ONEONLYINDEX ~ NAME(STATUS).ADRCPLF -IRPCWSTARTPLACE 20009500 + , MAXIRINDEX ~ NAME(TERMINATE).ADRCPLF -IRPCWSTARTPLACE20009600 + , MAXIRINDEXPLUS1 ~ MAXIRINDEX+1 20009700 + ; 20009800 +COMMENT THE FOLLOWING INDICATORS ARE USED BY INDEPENDENT RUNNER IN 20010000 + RECOGNISING THOSE RUNNERS REQUIRING SPECIAL ACTION. FOR 20010200 + EXAMPLE INITIALISE WILL PUT PRIORITIES FOR RECOGNISED RUNNERS 20010400 + INTO "IRPRIORITIES"(NOTE - THIS HAS TO BE CODED) - NON 20010600 + RECOGNISED RUNNERS WILL HAVE DEFAULT PRIORITIES 20010800 + ; 20011000 + 20011100 + 20011200 + REAL CONTROLCARDINDICATOR ~ NAME(CONTROLCARD).ADRCPLF 20013000 + -IRPCWSTARTPLACE 20013200 + , INITIATEINDICATOR ~ NAME(INITIATE).ADRCPLF 20014000 + -IRPCWSTARTPLACE 20014200 + , TERMINATEINDICATOR ~ NAME(TERMINATE).ADRCPLF 20015000 + -IRPCWSTARTPLACE 20015200 + , DIRCOMPLEMENTINDICATOR := NAME(DIRECTORYCOMPLEMENT). 20015300 + ADRCPLF - IRPCWSTARTPLACE 20015400 + ; 20016000 + DEFINE FORK(PROC,PARAM)=INDEPENDENTRUNNER(NAME(PROC).ADRCPLF20020020 + -IRPCWSTARTPLACE,PARAM) # ; 20020040 +COMMENT FOLLOWING DEFINE DEFAULT PRIORITY AND PRIORITIES FOR RUNNERS 20020100 + WITH WHICH INDICATORS ARE ASSOCIATED; 20020200 + DEFINE IRDEFAULTPRIORITY 20020300 + = 10 # 20020400 + , DIRCOMPLEMENTPRIORITY = 18 # 20020420 + , CONTROLCARDPRIORITY 20020500 + = 12 # 20020600 + , INITIATEPRIORITY 20020620 + = 12 # 20020640 + , TERMINATEPRIORITY 20020660 + = 19 # 20020680 + ; 20020900 + REAL IRSTACKS %~2 20023000 + , PIRSTACKS 20024000 + ; 20025000 + ARRAY STACKINUSE[*], 20026000 + IRPRIORITIES[*] 20026100 + %EACH IR MUST BE INITI-20027000 + %ALISED 20028000 + ; 20029000 + ARRAY IRPARAMETERLOK[*] 20030000 + ; 20031000 + BOOLEAN NOTFIRSTWAIT % *** KLUDGE 20032000 + ; 20033000 + INTEGER TERMINATESTACK % STACK NUMBER FOR TERMINATE 20034000 +; 20035000 + LAYOUT REDYQHEAD( FIRSTREADYF = 12:10 21000000 + ,LASTREADYF = 22:10 21001000 + ) 21002000 + ; 21003000 + REAL ARRAY VECTORLOK[2] 21004000 + ; 21005000 + DEFINE SHEETINDICATOR = FALSE # 21006000 + , READYINDICATOR = TRUE # 21007000 + , SVECTORPLACE = 16 # 21008000 + 21009000 + 21010000 + , PRIORITYRANGE = 9 # % UPPER LIMIT ON PRIORITIES 21011000 + , PRIORITYRANGEPLUS1 = 10 # 21011100 + , TIMELOAD = 10# % NO OF RE-ARRANGES OF SHEET21012000 + % BEFORE PRIORITY INCREASE 21013000 + , ALLOWABLESLACK = 120# % IN SHEET,STACK VECTOR SIZE21014000 + , VECTORMODULE = 100# % SHEET AND STACK VECTOR 21015000 + ; 21016000 + REAL LASTNOTAVAILABLEINVECTOR 21017000 + , FIRSTAVAILABLEINVECTOR 21018000 + ; 21019000 + 21020000 + 21021000 + ARRAY PRIORITYLEVEL[PRIORITYRANGEPLUS1] 21022000 + ; 21023000 + REAL HIGHESTSHEETVECTOR 21024000 + , HIGHESTSTACKVECTOR 21025000 + ; 21026000 + DEFINE SHEET = 0 # %NORMAL 21027000 + , REDY = 1 # %FROM WAITQ 21028000 + , SHEETI = SHEET # 21029000 + , WAITI = 2 # 21030000 + , OTHERREDY = 3 # 21031000 + , OTHER = OTHERREDY # 21032000 + , GETIRS = 4 # 21033000 + , TERMINATEI = 5 # 21034000 + , READYQHEAD = READYQHED # 21034100 + ; 21035000 + 21036000 + 21037000 + 21038000 +COMMENT FOLLOWING ARE FORMATS OF SHEET PSEUDO-STACK,PROCESS STACK, 21039000 + D1 STACK AND D2 STACK NOTE CORRESPONDENCE WITH SHEETQ AND READYQ 21040000 + DECLARATIONS - IN GENERAL THERE ARE TWO WAYS OF REFERENCING STACK 21041000 + OR PSEUDO STACK INFORMATE - THROUGH ITEM REFERENCES OR THROUGH 21042000 + DIRECT INDEXING INTO STACK OR SHEET ARRAY 21043000 + ; 21044000 + DEFINE FIRSTPLACE = 0 # 21045000 + , LINKPLACE = 1 # 21046000 + , COREPLACE = 2 # 21047000 + , PRIORITYPLACE = 3 # 21048000 + , PROCTIMEPLACE = 4 # 21049000 + , IOTIMEPLACE = 5 # 21050000 + , FPBDESCPLACE = 6 # 21051000 + , COMMONVALUEPLACE = 7 # 21052000 + , PROCESSNATUREPLACE= 8 # 21053000 +, FIRSTPARAMETERPLACE = 9# 21053200 +, LASTPARAMETERPLACE =10# 21053400 + , STACKOLAYABLECOREPLACE = 9 # 21054000 + , STACKNONOLAYABLECOREPLACE= 10# 21055000 + , TARGETTIMEPLACE = 13# 21056000 + , IDPLACE = 14# 21057000 + , TIMEENTEREDPLACE = 15 # 21058000 + , FIRSTXPLACE = 16# 21059000 + , CODEFILEDESCPLACE= 17# 21060000 + , CODEFILENAMEDESCPLACE= 18# 21061000 + , STACKSIZEPLACE = 20# 21062000 + , SEPCOMPILEINFOPLACE = 21# 21063000 + , EXTERNALINFOPLACE = 22# 21064000 + , D1DESCRIPTORPLACE = 23# 21065000 + , D2DESCRIPTORPLACE = 24# 21066000 + , NEXTPROGRAMPLACE = 26# 21066100 + , AUTHORITYLINKPLACE = 32# 21067000 + , REQUIREDPLACE = 33 # 21067200 + , AUTHORITYPLACE = 34 # 21067400 + , AUTHORITYEVENTPLACE = 35# 21067600 + , FIRSTMSCWPLACE 21072000 + = 36 # 21072050 + , FIRSTRCWPLACE 21072100 + = 37 # 21072150 + , IRPARAMETERPLACE 21072200 + = 38 # 21072250 + , IRPCWPLACE 21072300 + = 39 # 21072350 + , SECNDMSCWPLACE 21072400 + = 40 # 21072450 + , RETURNCONTROLWORDPLACE 21072500 + = 41 # 21072550 + ; 21073000 + DEFINE EVENTWAITQLINK = LINKPLACE # ; 21074000 + COMMENT FOLLOWING APPLY TO PSEUDO-STACK ONLY; 21075000 + DEFINE SCHEDULEIDPLACE= 14# 21076000 + , COLLAPSEDNAMEPLACE = 15# 21077000 + ; 21078000 + 21079000 + COMMENT FOLLOWING APPY TO PROCESS STACK ONLY; 21080000 + DEFINE JOBIDPLACE = 14# 21081000 + , PROCESSIDPLACE = 16# 21082000 + , TRPLACE = 17# 21083000 + , TWPLACE = 18# 21084000 + , AITDESCPLACE = 19# 21085000 + , TPPLACE = 20# 21086000 + , CURRENTPRIORITYPLACE= 23# 21087000 + , MYCOURSEPLACE = 24# 21088000 + , IOTIMEACCUMPLACE = 25# 21089000 + 21090000 + , DATDESCRIPTORPLACE = 26# 21091000 + , OLAYFILEDESCRIPTORPLACE= 27# 21092000 + , PROCESSFAMILYLINKPLACE = 28# 21093000 + , ERRORCOUNTPLACE = 29 # 21094000 + , ABORTEVENTPLACE = 30 # 21095000 + , REPLYEVENTPLACE = 31 # 21096000 + ; 21097000 + COMMENT FOLLOWING APPLY TO D1 STACK ONLY; 21098000 + DEFINE SEGDICTIDENTPLACE = 2 # 21099000 + , FIRSTPCWPLACE = 3 # 21100000 + , D1CODEFILEDESCPLACE = 4 # 21101000 + , D1CODEFILENAMEDESCPLACE =5# 21102000 + , USERCOUNTNLINKAGEPLACE =6 # 21103000 + , D1MSCWPLACE = 13# 21104000 + , D1RCWPLACE = 14# 21105000 + , MYCODEFILENAME(D2STKNR)= WORDSTACK[WORDSTACK[D2STKNR,21105100 + PROCESSFAMILYLINKPLACE].FATHERF, 21105102 + D1CODEFILENAMEDESCPLACE]#% 21105104 + ; 21106000 + DEFINE D1INFO = D1MSCWPLACE # 21107000 + ; 21108000 + LAYOUT READYWAITLINK ( BACKWARDLINKF = 22:10 21109000 + , FORWARDLINKF = 12:10 21110000 + , SELFIDENTF = 45:10 21111000 + , HEYOUINTERRUPTF= 24:1 21112000 + ) 21113000 + ; 21114000 + FIELD DEDICATEDSTACKF = 25:1 21114200 + ; 21114400 + WORD D2MSCW2 21115000 + , SHEETTOSCW 21116000 + , D2MSCW1 21117000 + , IRMSCW1 21118000 + , IRMSCW2 21119000 + , D1MSCW 21120000 + , D2RCW1 21121000 + , IRTOSCW 21122000 + , D2TOSCW 21122100 + ; 21123000 + FIELD DYNAMICLINKSF =22:23 21124000 + , STATUSINDICATORF = 23:21 21125000 + , FULLINDICATORF = 23:1 21126000 + ; 21127000 + DEFINE 21128000 + 21129000 + D1TOSCW = SHEETTOSCW # 21130000 + , IRRCW1 = D2RCW1 # 21131000 + 21131200 + , D1RCW = D2RCW1 # 21132000 + ; 21133000 + LAYOUT USERLINK ( LATENTUSERSF = 39:10 21134000 + , ACTIVEUSERSF = 29:10 21135000 + , FIRSTD2VALUE = 19:20 21136000 + ) 21137000 + ; 21138000 + FIELD NUMBEROFUSERSF = 39:20 21138010 + ; 21138020 + LAYOUT PROCESSFAMILYLINKAGE 21138100 +% *** AT PRESENT ,A D2 STACK CAN HAVE NO FATHER AND 21138110 +% *** FATHERPROCESSF HOLDS THE D1 STACK NO. THE 21138120 +% *** D1LINKFLAGF(WHICH AT PRESENT IS UNUSED) MAY PROVE 21138130 +% *** USEFUL IF THIS SITUATION CHANGES.15 MARCH 1969 21138140 + ( FATHERF = 9:10 21138200 + , D1LINKFLAGF = 10:1 21138300 + , ELDESTSONF = 20:10 21138400 + , OLDERBROTHERF = 30:10 21138500 + , YOUNGERBROTHERF = 40:10 21138600 + ); 21138900 + 21139000 + QUEUE READYQ :WRONGTYPEREADYQHEAD ( 21140000 + READYQBOTTOM 21141000 + , READYQLINK 21142000 + , READYQCORE 21143000 + , DECLAREDPRIORITY 21144000 + , PROCESSLIMIT 21145000 + , IOLIMIT 21146000 + , FPBDESCRIPTOR 21147000 + , COMMONVALUE 21148000 + , PROCESSCLASS 21149000 + , STACKOLAYABLECORE 21149200 + , STACKNONOLAYABLECORE 21149400 + , DUMMYREDY1 21149600 + , DUMMYREDY2 21149800 + , TARGETTIME 21150000 + , JOBID 21151000 + , TIMEENTERED 21152000 + , PROCESSID 21153000 + , TIMEINREADYQ 21154000 + , WAITTIME 21155000 + , AITDESCRIPTOR 21155200 + , PROCESSTIME 21156000 + , SEPCOMPILEINFO 21156200 + , EXTERNALINF 21156400 + , CURRENTPRIORITY 21157000 + , MYCOURSEITEM 21158000 + , ACCUMULATEDIOTIME 21159000 + 21160000 + , OATDESCRIPTOR 21161000 + , OLAYFILEDESCRIPTOR 21162000 + , PROCESSFAMILYLINK 21163000 + , ERRORCOUNT 21164000 + , ABORTEVENT 21165000 + , REPLYEVENT 21166000 + , AUTHORITYLINK 21166010 + , REQUIRED 21166100 + , AUTHORITY 21166200 + , AUTHORITYEVENT 21166300 + , FIRSTMSCW 21166400 + , FIRSTRCW 21166500 + , IRPARAMETER 21166600 + , IRPCW 21166700 + , SECNDMSCW 21166800 + , RETURNCONTROLWD 21166900 + ); 21167000 + VALUE READYQBOTTOM 21168000 + , READYQLINK 21169000 + , READYQCORE 21170000 + 21171000 + , DECLAREDPRIORITY 21172000 + , PROCESSLIMIT 21173000 + , IOLIMIT 21174000 + , FPBDESCRIPTOR 21175000 + , COMMONVALUE 21176000 + , TARGETTIME 21177000 + , JOBID 21178000 + , TIMEENTERED 21179000 + , PROCESSCLASS 21180000 + , PROCESSID 21181000 + , TIMEINREADYQ 21182000 + , WAITTIME 21183000 + , PROCESSTIME 21184000 + , CURRENTPRIORITY 21185000 + , MYCOURSEITEM 21186000 + , ACCUMULATEDIOTIME 21187000 + , AITDESCRIPTOR 21188000 + , OATDESCRIPTOR 21189000 + , OLAYFILEDESCRIPTOR 21190000 + , PROCESSFAMILYLINK 21191000 + , ERRORCOUNT 21192000 + , DUMMYREDY1 21193000 + , DUMMYREDY2 21193200 + , SEPCOMPILEINFO 21193400 + , EXTERNALINF 21193600 + , AUTHORITYLINK 21193800 + , REQUIRED 21194000 + , AUTHORITY 21194200 + , IRPARAMETER 21194400 + , FIRSTMSCW 21194600 + , FIRSTRCW 21194800 + , IRPCW 21195000 + , SECNDMSCW 21195200 + , RETURNCONTROLWD 21195400 + , STACKOLAYABLECORE 21195700 + , STACKNONOLAYABLECORE 21195800 + ; 21195900 + REAL READYQCORE 21196000 + 21197000 + , DECLAREDPRIORITY 21198000 + , PROCESSLIMIT 21199000 + , IOLIMIT 21200000 + , COMMONVALUE 21201000 + , TARGETTIME 21202000 + , JOBID 21203000 + , TIMEENTERED 21204000 + , PROCESSCLASS 21205000 + , PROCESSID 21206000 + , TIMEINREADYQ 21207000 + , WAITTIME 21208000 + , PROCESSTIME 21209000 + , CURRENTPRIORITY 21210000 + , MYCOURSEITEM 21211000 + , ACCUMULATEDIOTIME 21212000 + , PROCESSFAMILYLINK 21213000 + , ERRORCOUNT 21214000 + , DUMMYREDY1 21214100 + , DUMMYREDY2 21214200 + , SEPCOMPILEINFO 21214300 + , EXTERNALINF 21214400 + , AUTHORITYLINK 21214500 + , REQUIRED 21214600 + , AUTHORITY 21214700 + , IRPARAMETER 21214800 + , STACKOLAYABLECORE 21214820 + , STACKNONOLAYABLECORE 21214840 + ; 21215000 + WORD READYQBOTTOM 21216000 + , READYQLINK 21217000 + , FPBDESCRIPTOR 21218000 + , AITDESCRIPTOR 21219000 + , OATDESCRIPTOR 21220000 + , OLAYFILEDESCRIPTOR 21221000 + , FIRSTMSCW 21221100 + , FIRSTRCW 21221200 + , IRPCW 21221300 + , SECNDMSCW 21221400 + , RETURNCONTROLWD 21221500 + ; 21222000 + EVENT ABORTEVENT 21223000 + , REPLYEVENT 21224000 + , AUTHORITYEVENT 21224100 + ; 21225000 +USING 21226000 + LOCKED 21227000 + :TO INSERT, VECTORINSERT(REDY ,ENTRY) 21228000 + :TO REARRANGE, STACKQREARRANGE(READYINDICATOR) 21229000 + :EMPTY IF REAL(M[NAME(WRONGTYPEREADYQHEAD)])=0 21230000 + :TO INSERTINQ, INSERTINQUEUE(REDY ,INDEX) 21231000 + : TO MOVETONEXTINREADY ,NEXTPROCESS 21232000 + : TO MOVEFROMSHEET, SELECTION 21233000 + ; 21234000 + 21235000 + 21236000 + DEFINE FIRSTATLEVEL = FIRSTREADYF # 21237000 + , LASTATLEVEL = LASTREADYF # 21238000 + ; 21239000 + FIELD COUNTATLEVEL = 45:20 21240000 + ; 21241000 + LAYOUT LEVELFORMAT ( FIRSTATLEVEL 21241010 + , LASTATLEVEL 21241020 + ,COUNTATLEVEL 21241030 + ); 21241040 + DEFINE DEFAULTPRIORITY= 5 # 21241100 + ; 21241200 +COMMENT FOLLOWING ARE THE CURRENT WEIGHTING COEFFICIENTS OF THE 21242000 + SCHEDULING ALGORITHMS. THEY ARE PURELY TEMPORARY FOR THE 21243000 + FOLLOWING REASONS : 21244000 + A THEIR DERIVATION WAS PURELY ARBITRARY. AS YET THERE HAS 21245000 + BEEN NO ATTEMPT TO ARRIVE AT GOOD VALUES. FURTHER ANALYSIS21246000 + ,SIMULATION AND EXPERIENCE ARE REQUIRED 21247000 + B THE VALUES OF THE COEFFICIENTS WILL BE DYNAMIC RATHER 21248000 + THAN FIXED AS SHOWN BELOW 21249000 + ; 21250000 + REAL DECLAREDPRIORITYWEIGHT ~ 1.0 21251000 + 21252000 + %)TIMES IN SECS21253000 + , READYTIMEWEIGHT ~ 0.0017 %)THUS 1 ADDED 21254000 + , WAITTIMEWEIGHT ~ 0.0017 %)EVERY 10 OR 21255000 + , ELAPSEDTIMEWEIGHT ~ 0.00017 %)HUNDRED MINS 21256000 + %)TO PRIORITY 21257000 + 21258000 + , TARGETTIMEWEIGHT ~ 0.1 21259000 + , COREWEIGHT ~ 0.002 21260000 + , TIMEINSCHEDULEWEIGHT ~ 0.0017 21261000 + ; 21262000 + QUEUE SHEETQ :WRONGTYPESHEETQHEAD ( 21263000 + SHEETBOTTOM 21264000 + , SHEETLINK 21265000 + , SHEETCORE 21266000 + , SHEETPRIORITY 21267000 + , PROCESSLIMITINSHEET 21268000 + , IOLIMITINSHEET 21269000 + , FPBDESCRIPTORINSHEET 21270000 + , COMMONVALUEINSHEET 21271000 + , PROCESSNATURE 21272000 +, FIRSTPARAMETER 21272200 +, LASTPARAMETER 21272400 + , DUMMYSHEET3 21272600 + , DUMMYSHEET4 21272800 + , TARGETTIMEINSHEET 21273000 + , SCHEDULEID 21274000 + , TIMEENTEREDINSHEET 21275000 + , FIRSTXINSHEET 21276000 + , SHEETCODEFILEDESCRIPTOR 21277000 + , SHEETCODEFILENAMEDESCRIPTOR 21278000 + , COLLAPSEDNAME 21279000 + , STACKSIZEINSHEET 21280000 + , SEPARATELYCOMPILEDINFO 21281000 + , EXTERNALINFO 21282000 + , D1DESCRIPTOR 21283000 + , D2DESCRIPTOR 21284000 + , PREVIOUSPROGRAM 21285000 + , NEXTPROGRAM 21286000 + , DUMMYSHEET5 21286020 + , DUMMYSHEET6 21286040 + , DUMMYSHEET7 21286060 + , DUMMYSHEET8 21286080 + , DUMMYSHEET9 21286100 + , AUTHORITYLINKINSHEET 21286120 + , REQUIREDINSHEET 21286140 + , AUTHORITYINSHEET 21286160 + , AUTHORITYEVENTINSHEET 21286180 + , FIRSTMSCWINSHEET 21286200 + , FIRSTRCWINSHEET 21286220 + , IRPARAMETERINSHEET 21286240 + , IRPCWINSHEET 21286260 + , SECNDMSCWINSHEET 21286280 + , RETURNCONTROLWORDINSHEET 21286300 + ); 21287000 + VALUE SHEETBOTTOM 21288000 + , SHEETLINK 21289000 + , SHEETCORE 21290000 + , SHEETPRIORITY 21291000 + , PROCESSLIMITINSHEET 21292000 + , IOLIMITINSHEET 21293000 + , FPBDESCRIPTORINSHEET 21294000 + , COMMONVALUEINSHEET 21295000 + , TARGETTIMEINSHEET 21296000 + , SCHEDULEID 21297000 + , TIMEENTEREDINSHEET 21298000 + , PROCESSNATURE 21299000 + , FIRSTPARAMETER 21299200 + , LASTPARAMETER 21299400 + , FIRSTXINSHEET 21300000 + , SHEETCODEFILEDESCRIPTOR 21301000 + , SHEETCODEFILENAMEDESCRIPTOR 21302000 + , COLLAPSEDNAME 21303000 + , STACKSIZEINSHEET 21304000 + , SEPARATELYCOMPILEDINFO 21305000 + , EXTERNALINFO 21306000 + , D1DESCRIPTOR 21307000 + , D2DESCRIPTOR 21308000 + , PREVIOUSPROGRAM 21309000 + , NEXTPROGRAM 21310000 + , AUTHORITYLINKINSHEET 21310020 + , REQUIREDINSHEET 21310040 + , AUTHORITYINSHEET 21310060 + , FIRSTMSCWINSHEET 21310080 + , FIRSTRCWINSHEET 21310100 + , IRPARAMETERINSHEET 21310120 + , IRPCWINSHEET 21310140 + , SECNDMSCWINSHEET 21310160 + , RETURNCONTROLWORDINSHEET 21310180 + ; 21311000 + REAL SHEETCORE 21312000 + , SHEETPRIORITY 21313000 + , PROCESSLIMITINSHEET 21314000 + , IOLIMITINSHEET 21315000 + , COMMONVALUEINSHEET 21316000 + , TARGETTIMEINSHEET 21317000 + , SCHEDULEID 21318000 + , TIMEENTEREDINSHEET 21319000 + , PROCESSNATURE 21320000 + , COLLAPSEDNAME 21321000 + , STACKSIZEINSHEET 21322000 + , SEPARATELYCOMPILEDINFO 21323000 + , EXTERNALINFO 21324000 + 21324020 + 21324040 + , DUMMYSHEET3 21324060 + , DUMMYSHEET4 21324080 + , DUMMYSHEET5 21324100 + , DUMMYSHEET6 21324120 + , DUMMYSHEET7 21324140 + , DUMMYSHEET8 21324160 + , DUMMYSHEET9 21324180 + , AUTHORITYLINKINSHEET 21324200 + , REQUIREDINSHEET 21324220 + , AUTHORITYINSHEET 21324240 + ; 21325000 + WORD SHEETBOTTOM 21326000 + , SHEETLINK 21327000 + , FPBDESCRIPTORINSHEET 21328000 + , SHEETCODEFILEDESCRIPTOR 21329000 + , SHEETCODEFILENAMEDESCRIPTOR 21330000 + , D1DESCRIPTOR 21331000 + , D2DESCRIPTOR 21332000 + , FIRSTMSCWINSHEET 21332020 + , FIRSTRCWINSHEET 21332040 + , IRPARAMETERINSHEET 21332060 + , IRPCWINSHEET 21332080 + , SECNDMSCWINSHEET 21332100 + , RETURNCONTROLWORDINSHEET 21332120 + , FIRSTXINSHEET 21333000 + ; 21334000 + REFERENCE PREVIOUSPROGRAM 21335000 +, FIRSTPARAMETER 21335200 +, LASTPARAMETER 21335400 + , NEXTPROGRAM 21336000 +; 21337000 + EVENT 21337020 + AUTHORITYEVENTINSHEET 21337040 + ; 21337100 +USING 21338000 + LOCKED 21339000 + :TO INSERT, VECTORINSERT(SHEETI ,ENTRY) 21340000 + :TO REARRANGE, STACKQREARRANGE(SHEETINDICATOR) 21341000 + :EMPTY IF REAL(M[NAME(WRONGTYPESHEETQHEAD)])=0 21342000 + : NEXTINDEX = NEXTINSCHEDULE 21343000 + ; 21344000 + DEFINE MOVETONEXTINREADYQ = MOVETONEXTINREADY(READYQ)# 21345000 + , MOVETONEXTONEINREADYQ = MOVETONEXTINREADYQ # 21346000 + , NEXTSTACKINREADYQ = READYQHED.FIRSTREADYF# 21347000 + , NOTHINGTODO = (EMPTY(READYQ) AND EMPTY(SHEETQ))# 21347100 + ; 21348000 + WORD WORDREADYQHEAD = WRONGTYPEREADYQHEAD 21349000 + , WORDSHEETQHEAD = WRONGTYPESHEETQHEAD 21350000 + ; 21351000 + DEFINE FILLARRAY(ARAY,VALU ,LENGTH) 21352000 + = REPLACE POINTER(ARAY) BY VALU FOR LENGTH 21353000 + OVERWRITE # 21354000 + ; 21355000 + 21356000 + QUEUE TERMINATEQ:WRONGTYPETERMINATEQHEAD(DUMMY); REAL DUMMY; 21357000 + USING 21358000 + LOCKED 21358200 + : TO INSERTINQ , INSERTINQUEUE(TERMINATEI,INDEX) 21358400 + : EMPTY IF REAL(M[NAME(WRONGTYPETERMINATEQHEAD)])= 0 21358600 + : TO REMOVE, STACKQREMOVE(TERMINATEI,INDEX) 21359000 + ; 21360000 + DEFINE NEXTINTERMINATEQ=TERMINATEQHEAD.FIRSTREADYF # 21361000 + ; 21361500 + WORD WORDTERMINATEQHEAD = WRONGTYPETERMINATEQHEAD ; 21362000 + REAL READYQHED =WRONGTYPEREADYQHEAD 21363000 + , TERMINATEQHEAD = WRONGTYPETERMINATEQHEAD 21364000 + , SHEETQHEAD=WRONGTYPESHEETQHEAD 21365000 + ; 21366000 + 21367000 + 21368000 + 21369000 + DEFINE FORWARDLINKSF = FORWARDLINKF # 21370000 + , SELFIDENTSF = SELFIDENTF # 21371000 + , BACKWARDLINKSF = BACKWARDLINKF # 21372000 + ; 21373000 + 21374000 + 21375000 + REAL FIRSTLOK 21376000 + ; 21377000 + LAYOUT LINKWORD ( FORWARDLINKSF 21378000 + , SELFIDENTSF 21379000 + , BACKWARDLINKSF 21380000 + ) 21381000 + ; 21382000 + BOOLEAN MUSTREARRANGE 21383000 + ; 21384000 + DEFINE RUNRETURNCONTROLWORD = RUNPCW&RETURNCONTROLWORD 21385000 + (,*,*,*,*,*,*) # 21386000 + ; 21387000 + 21388000 + DEFINE LOOKFORSOMETHING = 21388200 + BEGIN 21388300 + UNLOCK(READYQ); 21388320 + IF NOTFIRSTWAIT AND NOT BUSY(INDEPENDENTRUNNERLOK) 21388400 + THEN FORK(STATUS,0); 21388500 + ALLOW; ALLOW; DISALLOW; 21388600 + GO LOOKFORNEWPROCESS; 21388700 + END # ; 21388800 + 21389000 + 21390000 + DEFINE TIMEOFDAY = SCANIN(TIMEOFDAYWORD) # 21391000 + ; 21392000 + LAYOUT JOBTIME ( TIMEOFDAYF = 47:36) 21393000 + ; 21394000 + REAL SHEETENTRYSIZE ~ SIZE(SHEETQ)-4; 21394200 + DEFINE READYENTRYSIZE=SHEETENTRYSIZE # 21394300 + , FIXEDIRSIZE = SHEETENTRYSIZE # 21394400 + ; 21394500 + REFERENCE DUMMYREF; 21395000 + REAL NEXTINREADYVECTOR 21395100 + , NEXUNSHEETVECTOR 21395200 + ; 21395300 + SAVE EVENT ARRAY HOLEINVECTOR[2] 21395400 + ; 21395500 + DEFINE PUTINJOBIDANDTIME(S,N) 21395600 + =S[JOBIDPLACE]~N&JOBTIME(S[TIMEENTEREDPLACE] 21395700 + ~TIMEOFDAY)# 21395800 + ; 21395900 +COMMENT *** FOLLOWING IS DUMMY UNTIL COREFACTOR DEFINED; 21399000 + BOOLEAN COREFACTOR; COMMENT TRUE IF MEMORY USAGE IS SATIS- 21400000 + FACTORY FOR NEW PROCESS INITIATION; 21400100 + DEFINE FIRSTBITPH = 20 # 21400200 + , LENGTHPH = 5 # 21400300 + , FIRSTBITPC = 15 # 21401000 + , LENGTHPC = 8 # 21401500 + ; 21402000 + LAYOUT NATUREOFPROCESS(PROCESSHISTORYF=FIRSTBITPH:LENGTHPH 21402500 + ,PROCESSCLASSF= FIRSTBITPC:LENGTHPC ) 21403000 + ; 21403200 + DEFINE AD1STACK 21403500 + = 0 # 21404000 + , NORMAL 21404500 + = 1 # 21405000 + , XSED 21405500 + = 2 # 21406000 + , DSED 21406500 + = 3 # 21407000 + , DEPENDENT 21407200 + = 4 # 21407400 + , INDEPENDENT 21407600 + = 5 # 21407800 + , TERMINATEIR 21408000 + = 6 # 21408200 + ; 21408800 +COMMENT THE FOLLOWING ARE VALUES FOR PROCESSCLASS; 21409000 + DEFINE GOJOB = 0 # 21410000 + , EXECUTEJOB= 1 # 21411000 + , COMPILENGOJOB= 10# 21412000 + , COMPILENSYNTAXJOB= 11# 21413000 + , COMPILETOLIBRARYJOB=12# 21414000 + , COMPILETOLIBRARYANDGOJOB = 19 # 21414100 + , RUNJOB = 20# 21415000 + , LIBRARYNGOJOB = 6# 21415100 + , COMPILENSYNTAXOBJECT = 7# 21415200 + ; 21416000 + DEFINE FIRSTCOMPILEEOPTION = COMPILENGOJOB # 21416200 + , LASTCOMPILEROPTION = COMPILETOLIBRARYJOB # 21416300 + ; 21416400 + FIELD INITIATESTACKF = 21:1 21416500 + ; 21416600 +DEFINE COMPILEFORSYNTAX(P) = 21417000 + P.PROCESSCLASSF = COMPILENSYNTAXOBJECT#; 21418000 +COMMENT DIRECTORY MANAGEMENT GLOBALS; 23000000 +DEFINE DIRECTORYBITE = 90 #, %THE SIZE OF A DIRECTORY RECORD 23001000 + SEGMENTSPERDIRECTORYBITE = 3 #, 23002000 + SYSTEMDIRECTORYINDEX = 0 # %INDEX INTO DISKFILEHEADERS 23002100 + ; 23003000 +ARRAY DISKFILEHEADERS[*,*]; 23003100 +INTERLOCK HEADERLOCK; 23003200 +ARRAY DISKFILEHEADERSDOPEVECTOR = DISKFILEHEADERS [*]; 23003250 +REAL DISKB;%KLUDGE FOR SIMULATOR"S DIRECTORY SEARCH 23003301 +DEFINE DIRECTORYLOCK = HEADERLOCKS[0] # 23003310 + , HEADERSTOSTARTWITH = 10 # 23003320 + ; 23003330 +INTERLOCK ARRAY HEADERLOCKS[HEADERSTOSTARTWITH]; 23003335 +ARRAY SYSTEMDIRECTORY[*]; 23003340 +LAYOUT DIRECTORYSEARCHCODES( 23003355 + DCODE1 = 38:15 23003360 + ,DCODE2 = 23:8 23003370 + ,DCODE3 = 14:15 23003375 + ); 23003380 +COMMENT DEFINES FOR DCODE3 FIELD VALUE WHEN DIRECTORYSEARCH IS 23003383 + UNSUCCESSFUL- (WHEN IT RETURNS NEGATIVE VALUE); 23003387 +DEFINE NOSUCHFILE=1#, 23003390 + NOTAVALIDFILENAME=2#, % DIRECTORY NAME MISSING 23003393 + FILETHEREBUTLOCKED=3#, 23003395 + FILEWITHWRONGGENEALOGY=4#; 23003397 + LAYOUT STANDARDMASSADDRESSWORD( %STANDARD MASS STORAGE 23004000 + %ADDRESS FORMAT 23005000 + VOLUMEKIND = 47:3 %VOLUME TYPE 23006000 + , VOLUMENOEUNOF = 44:25 %VOLUME OR EU UNIT 23007000 + %AS PER ABOVE. 23008000 + , BLOCKADDRESSF = 19:20 %BLOCK ADDRESS OR BLOCK23009000 + %NUMBER. 23010000 + ); 23011000 + DEFINE VOLUMENOF = VOLUMENOEUNOF # 23012000 + ; 23013000 + COMMENT EUNOF = VOLUMENOEUNOF%UNIT NO. OF EU 23014000 + , DISKADDRESS = BLOCKADDRESSF 23015000 + ; 23016000 + DEFINE %THESE DEFINITIONS ARE TO 23017000 + %BE USED FOR "VOLUMEKIND" 23018000 + %IN STANDARD MASS ADDRESS 23019000 + %WORDS 23020000 + FIXEDDISK = 0# 23021000 + , DISKPACK = 1# 23022000 + , TAPE = 2# 23023000 + ; 23024000 +COMMENT: 23024050 + THE FOLLOWING ARE THE FIRST FOUR WORDS OF A DIRECTORY RECORD. 23024100 + SUCCESSOR RECORD = WORD 0 23024150 + PREDICESSOR RECORD = WORD 1 23024200 + FIRST AVAILABLE NAME BLOCK INDEX = WORD 2 23024250 + RECORD NUMBER OF THIS RECORD = WORD 3 23024300 + NOTE: 23024350 + THERE IS ALWAYS AT LEAST ONE WORD AT THE END OF A RECORD 23024400 + WHICH IS USED AS A STOPPER. IT HAS A VALUE OF EITHER 23024450 + THREE OR ONE, AS DESCRIBED BY "ENDER" IN THE NAME BLOCK 23024500 + DESCRIPTION. 23024550 + ; 23024600 + COMMENT: 23025000 + THE FOLLOWING IS A DESCRIPTION OF THE NAME ENTRY FOR A FILE 23026000 + IN A DIRECTORY RECORD. 23027000 + ; 23028000 + LAYOUT DIRECTORYENTRYINFOWORD( %WORD 0 23029000 + USEMEDIUMF = 47:5 %STORAGE MEDIUM WHERE 23030000 + %FILE IS SUPOSED TO BE 23031000 + %WHEN IT IS IN USE. 23032000 + %USEMEDIUM=0 MEANS THAT23033000 + %IT IS WHERE IT SHOULD 23034000 + %BE. 23035000 + , FILEKINDF = 36:8 %FILE TYPE FOR THE FILE23038000 + %(PROGRAM,DIRECTORY...)23039000 + , HEADERSIZEF = 28:10 %SIZE (IN WORDS) OF THE23040000 + %HEADER FOR THIS FILE. 23041000 + , ENDER = 1:2 %DIRECOTRY END MARKER 23042000 + % =3 IS END OF RECORD 23043000 + % =1 IS END OF FILE 23044000 + %IF THE WORD IS -1 THEN23044100 + %IT MARKS THE END OF A 23044200 + %SCRAMBLED DIRECTORY. 23044300 + ) 23045000 + COMMENT ADDRESSOFFILEHEADER = STANDARDMASSADDRESSWORD-WORD 1;23046000 + , DIRECTORYENTRYFILENAME( %WORD 2 23047000 + CHARACTERCOUNTF= 47:8 %CHARACTER COUNT FOR 23048000 + %FILE NAME. 23049000 + , FIRSTFIVECHRS = 39:40 %FIRST FIVE EBCDIC 23050000 + %CHARACTERS OF THE FILE23051000 + %NAME. (LEFT JUSTIFIED23052000 + %WITH TRAILING ZEROS IF23053000 + %NECESSARY. 23054000 + ) 23055000 + ; 23056000 +COMMENT THE NEXT TWO WORDS CONTAIN THE REST OF THE NAME. THE NAME 23057000 + IS LIMITED TO 17 CHARACTERS; 23058000 + COMMENT: 23069000 + THE FOLLOWING IS A DESCRIPTION OF A FILE HEADER 23070000 + ; 23071000 + COMMENT ADDRESSOFHEADER = STANDARDMASSADDRESSWORD 23072000 + THIS WORD IS WORD -1 23073000 + OF THE CORE COPY OF THE23074000 + HEADER RELATIVE TO THE 23075000 + DESCRIPTOR RETURNED BY 23076000 + DIRECTORY SEARCH 23077000 + IT IS IN THE MEMORY LINK 23078000 + ; 23079000 + LAYOUT COREADDRANDLOCKER( %WORD 0 23080000 + COREADDRF = 19:20 %ON DISK THIS FIELD IS 23086000 + %THE POINTER TO THE 23087000 + %CORE COPY OF THIS 23088000 + %HEADER. IF THIS FIELD23089000 + %IS ZERO, THERE IS NO 23090000 + %COPY IN CORE. 23091000 + ) 23092000 + , HEADERINFOONE( %WORD 1 23093000 + UPDATEBITF = 47:1 %TRUE IF FILE UPDATED 23094000 + , OPENCOUNTF = 46:10 %NUMBER OF PROCESSES 23095000 + %LOOKING AT THE HEADER.23096000 + , FILEKINDF %SAME AS IN 23097000 + %DIRECTORYENTRYINFOWORD23098000 + , HEADERSIZEF %SAME AS IN 23099000 + %DIRECTORYENTRYINFOWORD23100000 + , SECURITYCODEF = 18:4 %CLASS OF SECURITY ON 23101000 + %THIS FILE. 23102000 + , SECINFOSIZEF = 14:8 %SIZE (IN WORDS) OF THE23103000 + %SECURITY INFORMATION 23104000 + %IN THIS HEADER. 23105000 + , LOGICALMODEF = 3:4 %EBCDIC, DOUBLE, ETC...23106000 + ) 23108000 + , HEADERINFOTWO( % FILE ORGANIZATION 23109000 + PACKEDB = 47:1 % (IF 1 FILE IS PACKED)23110000 + , PROTECTIONF = 46:1 % (1 IF FILE PROTECTED)23110100 + , PERMANENCYF = 45:1 % (1 IF TEMPORARY FILE)23110200 + , RECORDTYPEF = 42:3 % RECORD TYPE 23111000 + , FILEORGF = 39:40 % FILE ORGANIZATION 23113000 + ) 23114000 + COMMENT WORD 3 IS FIB TANKDATA2; 23115000 + COMMENT ENDOFFILECOUNT WORD 4; 23116000 + , ROWINFO( %WORD 5 23117000 + NUMROWSF = 29:10 %NUMBER OF ROWS FOR 23120000 + %WHICH ROW ADDRESS 23121000 + %WORDS ARE ASSIGNED. 23122000 + , ROWSIZEF = 19:20 %SIZE (IN SEGMENTS) OF 23123000 + %EACH ROW . 23124000 + ) 23125000 + , NAMEQUALIFICATIONINFO( %WORD 6 23126000 + SAVEFACTORF = 47:10 %SAVE TIME 23127000 + , CREATEDDATEF = 37:18 %WHEN THE FILE WAS MADE23128000 + , GENERATIONNOF = 19:15 %USASCI GENERATION NO. 23128100 + , MAXGENERATIONSF= 4:5 %PURGE ANY OVER THIS 23128200 + , GENERATIONNO = 19:20 %USASCI GENERATION NO. 23129000 + ) 23130000 + , ACCESSINFO( %WORD 7 23131000 + LASTACCESSDATEF=17:18 %DATE LAST USED 23132000 + ) 23133000 +COMMENT WORD 8 IS USED FOR VARIOUS PURPOSES DEPENDING ON THE FILE KIND.23134000 + FOR DIRECTORIES, IT IS THE SCRAMBLE MODULUS. 23134100 + FOR CODE FILES, IT IS THE STACK NUMBER FOR THE D1 STACK WHEN 23134200 + A COPY OF THE PROGRAM IS RUNNING. 23134300 + ; 23134900 + COMMENT SPARE (WORD 9) = RESERVED FOR EXPANSION; 23135000 + COMMENT ROW ADDRESS WORDS IN STANDARD MASS ADDRESS WORD 23136000 + FORMAT. ONE WORD PER ROW FOR 23137000 + NUMROWS ROWS; 23138000 + COMMENT SECURITYINFO SECINFOSIZE WORDS; 23139000 + ; 23141000 +DEFINE FIRSTROWINDEX = 10 # 23141100 + , FIRSTROWADDRESS(HDR) = HDR[FIRSTROWINDEX] # 23141120 + , ROWADDRESS(HDR, ROW) = HDR[FIRSTROWINDEX + ROW] # 23141130 + , SCRAMBLEMOD(HDR) = HDR[8] # 23141150 + , HEADERSIZE(HDR) = HDR[1].HEADERSIZEF # 23141200 + , HEADERUPDATED(HDR) = TRUE # % TEMPORARY 23141250 + , OPENCOUNT(HDR) = HDR[1].OPENCOUNTF # 23141300 + , ROWSIZE(HDR) = HDR[5].ROWSIZEF # 23141350 + , CRUNCHED(HDR) = 0 # COMMENT TEMPORARY ONLY; 23141400 + , NUMBEROFROWS(HDR) = HDR[5].NUMROWSF # 23141450 + , D1STACKNUMBER(HDR) = HDR[8] # 23141500 + , UPDATED(HDR) = HDR[1].UPDATEBITF# 23141550 + , DISKBLOCKING(HDR) = HDR[3]# 23141600 + , FIBINFO(HDR) = HDR[2]# 23141650 + ; 23141950 + DEFINE %THESE DEFINITIONS ARE TO 23142000 + %BE USED FOR "FILEKIND" IN 23143000 + %FILE HEADERS AND DIRECTORY 23144000 + %NAME ENTRIES 23145000 + DIRECTORY = 0# 23146000 + , DATA = 1# 23147000 + ; 23148000 +COMMENT *** FOLLOWING FIELD AND DEFINE ARE TEMPORARY ; 23177100 + FIELD TYPEINFOF = 35: 36 ; 23177200 + DEFINE COMPILERS = 0 # ; 23177300 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24000000 +% I/O INTRINSIC DECLARATIONS %24001000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24002000 +% %24003000 +% * WARNING * %24004000 +% %24005000 +% DO NOT REFER TO FIB WORDS OR FIELDS DIRECTLY. INSERT YOUR FIB %24006000 +% REFERENCE INTO THE MASTER-FIB DEFINE LIST. ONLY THIS LIST WILL %24007000 +% BE CHECKED WHEN IT IS NECESSARY TO CHANGE THE DEFINITION OF A FIB %24008000 +% WORD OR FIELD. %24009000 +% (HONI SOIT QUI MAL Y PENSE) %24010000 +% %24011000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24012000 + 24013000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24252000 + % FIXED PART OF FILE INFORMATION BLOCK %24253000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24254000 +DEFINE 24255000 + %%%%% SIMPLE I/O 24256000 + FIBSIZE = FIB[0]#, % SIZE OF FILE INFO BLOCK 24257000 + RECORDSTATUS = FIB[1]#, 24258000 + FILESTATUS = FIB[2]#, 24259000 + TANKDATA1 = FIB[3]#, % BLOCK SIZE INFORMATION 24260000 + TANKDATA2 = FIB[4]#, % RECORD SIZE INFORMATION 24261000 + TANKDATA3 = FIB[5]#, % BUFFER SIZE INFORMATION 24262000 + IOINFO = FIB[6]#, % HARDWARE INFORMATION 24263000 + IOADESC = FIBW[7]#, % TOP IOAREA 24264000 + LBLEQTN = FIBW[8]#, % LABEL EQUATION BLOCK 24265000 + %%%%% REGULAR I/O 24266000 + BUFDESC = FIBW[9]#, % BUFFER DESCRIPTOR 24267000 + UNITSLEFT = FIB[10]#, % WORDS OR CHARACTERS LEFT 24268000 + BLOCKCOUNT = FIB[11]#, % BLOCK COUNT OR PAGE COUNT 24269000 + RECORDCOUNT = FIB[12]#, % RECORD COUNT OR LINE COUNT24270000 + LABELATT = FIB[13]#; % LABEL ATTRIBUTES 24272000 +LAYOUT 24273000 + FIBSIZEL ( 24274000 + FIBFXD = 47:8, % SIZE OF FIXED PART 24275000 + FIBOPT = 39:40), % VARIABLE PART MASK 24276000 + RECORDSTATUSL ( 24277000 + MTBUF = 0:1, % BUFFER NEEDS I/O 24278000 + UFEAT = 1:1, % UNIT FEATURE 24279000 + DRCDSIZE = 2:1, % RECORD SIZE REQUIRED OR DESIRED24280000 + EXCEPTION = 3:1, % EXCEPTION CONDITION 24281000 + OPNOUT = 4:1, % OPEN OUTPUT 24282000 + OPNIN = 5:1, % OPEN INPUT 24283000 + DIO = 6:1, % DIRECTED I/O (DATA COMM) 24284000 + SIO = 7:1), % SIMPLE I/O 24285000 + FILESTATUSL ( 24286000 + % EXCEPTION CONDITIONS 24287100 + STATEF = 9:10, % STATE OF FILE 24287200 + % 0:1 = EOF (DISCONNECT) 24287300 + % 1:1 = PARITY ERROR 24287400 + % 2:1 = DATA ERROR 24287500 + % 3:1 = LOCKOUT 24287600 + % 4:1 = NO INPUT(TIME OUT) 24287700 + % 5:1 = BREAK 24287800 + % ERROR HANDLING LEVEL 24287900 + ERRLEVEL = 12:2, % LEVEL OF ERROR RECOVERY 24288000 + % 0 = FULL SYSTEM ACTION 24288100 + % 1 = INHIBIT COPY 24288200 + EXCEPTIONT= 13:1, % EXCEPTION ACTION TAKEN 24288300 + OPT = 14:1, % OPTIONAL 24288400 + IMPOPEN = 15:1, % (1 IF IMPLICIT OPEN IS NOT OK) 24288410 + % EXCEPTION ACTION 24288500 + % CODES ARE: 24288600 + % 0 = MARK AND EXIT 24288700 + % 1 = EVENT OR IMPLICIT LABEL 24288800 + % 2 = RETURN OR USE ROUTINE 24288900 + % 3 = TERMINATE 24289000 + EOFACTION = 22:3, 24289100 + PARACTION = 25:3, 24289200 + DATACTION = 28:3, 24289300 + LOCACTION = 31:3, 24289400 + NOIACTION = 34:3, 24289500 + BREACTION = 37:3), 24289600 + TANKDATA1L ( 24345000 + BLKFUNNY = 47:1, % ALTERNATE AREA IN USE 24346000 + BLKD = 46:1, % BLOCKED 24347000 + MLTBLK = 45:1, % MULTI-PHYSICAL-RECORD BLOCK 24348000 + PNTR = 44:1, % (1 IF POINTER TO BE RETURNED) 24349000 + INTMODE = 43:3, % INTERNAL RECORD FORM - 24350000 + % RECORD DESCRIPTOR TYPE: 24351000 + % 0 = SINGLE DATA 24352000 + % 1 = DOUBLE DATA 24353000 + % 2 = PACKED-DECIMAL (4) 24354000 + % 3 = BCL (6) 24355000 + % 4 = EBCDIC (8) 24356000 + % 5 = ASCII (8) 24357000 + RCDUNTS = 40:2, % RECORD UNITS: 24358000 + % 0 = WORDS 24359000 + % 1 = CHARACTERS 24360000 + RCRDTYPE = 38:4, % RECORD TYPE 24361000 + % 0 = "F" - FIXED LENGTH 24362000 + % 1 = "D" = VARIABLE, LENGTH24363000 + % IN BINARY IN FIRST 2 24363100 + % CHARACTERS 24363200 + % 2 = "V" - VARIABLE, LENGTH24364000 + % IN DECIMAL IN FIRST 424364100 + % CHARACTERS 24364200 + % 3 = "U" - UNDEFINED, SIZE 24365000 + % PROVIDED EXPLICITLY 24365100 + % 4 = "I" - VARIABLE, LENGTH24366000 + % IN RECORD AT FIXED 24366100 + % LOCATION 24366200 + % 5 = "L" - LINKS 24367000 + % 6 = "Z" - FORTRAN 24367100 + % 7 = DEPENDENT SPECIFICATN 24367200 + % FIXED UP AT OPEN 24368000 + SIZEMODE = 34:3, % SIZE MODE 24369000 + SIZEOFF = 31:16, % SIZE OFFSET 24370000 + SIZESZ = 15:16), % SIZE SIZE 24371000 + TANKDATA2L ( 24372000 + BLOCKSIZE = 47:16, % BLOCK SIZE 24373000 + MINRECSIZE= 31:16, % MINIMUM RECORD SIZE 24374000 + MAXRECSIZE= 15:16), % MAXIMUM RECORD SIZE 24375000 + TANKDATA3L ( 24376000 + BUFFERD = 47:1, % (1 IF BUFFERED - LEVEL 2&3 I/O)24377000 + CNTGS = 44:1, % CONTIGUOUS - BUFFERS ADJACENT 24378000 + BFFRLCK = 45:1, % (1 IF BUFFERS NEED LOCKS) 24378100 + BUFFPROT = 44:1, % (1 IF MUST PROTECT BUFFERS) 24378200 + BEVNT = 43:12, % BUFFER EVENT # 24379000 + BFFRSZ = 31:16, % BUFFER SIZE (IOAREA SIZE) 24380000 + BUFFREQSTD= 15:8, % BUFFERS REQUESTED 24381000 + BUFFASSGND= 7:8), % BUFFERS ASSIGNED 24382000 + IOINFOL ( 24383000 + %%%%% FOR DATACOM USE THIS WORD FOR LAST STATION 24383100 + SKLTNIOCW = 47:27, % SKELETON IOCW 24384000 + UNITNUM = 12:8, % UNIT NUMBER 24385000 + UNITYPP = 4:5), % UNIT TYPE 24386000 + LABELATTL ( 24387000 + LABELUSER = 47:1, % LABEL USE ROUTINES 24388000 + LABELTYP = 46:3, % LABEL TYPE 24389000 + % 0 = B6500 USASI 24390000 + % 1 = UNLABELLED 24391000 + % 2 = SYSTEM STANDARD 24392000 + WRPRND = 17:1, % (1 IF WRAPAROUND SPECIFIED) 24392100 + USERSIZE = 16:4, % NUMBER OF USERS LABELS 24393000 + LBLEQTD = 12:1, % (1 IF HAVE LOCATED FPB) 24394000 + EVNTNO = 11:12); % FILE EVENT # 24395000 +FIELD 24396000 + %%%%% RECORDSTATUS 24397000 + OPENBITS = 9:2, 24398000 + %%%%% FILESTATUS 24398010 + EOFB = 0:1, % END-OF-FILE (DISCONNECT) 24398020 + PARITYB = 1:1, % PARITY ERROR 24398030 + DATAERRORB= 2:1, % DATA ERROR 24398040 + LOCKOUTB = 3:1, % LOCKOUT 24398050 + NOINPUTB = 4:1, % NO INPUT (TIME OUT) 24398060 + BREAKB = 5:1, % BREAK 24398070 + %%%%% IOINFO 24404000 + SIOCWSTANDARD = 45:10; % STANDARD FIELD OF IOCW 24405000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24406000 + % OPTIONAL PART OF FILE INFORMATION BLOCK %24407000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24408000 +DEFINE 24409000 + ALTDESCF = 0#, 24410000 + FIBLOCKF = 1#, 24411000 + FRMTLOCKF = 2#, 24412000 + DISKHDRF = 3#, 24413000 + DISKINFOF = 4#, 24414000 + LIMITSF = 5#, 24415000 + USERSF = 6#, 24416000 + RERUNF = 7#, 24417000 + EOFF = 8#, 24418000 + PARITYP = 9#, 24419000 + NOINPUTF = 10#, 24420000 + BREAKF = 11#, 24421000 + OUEUEFULLF= 12#, 24422000 + INQUEUEF = 13#, 24423000 + TLISTF = 14#, 24424000 + TOWF = 15#, 24425000 + TMISCF = 16#, 24426000 + OUTQUEUEF = 17#, 24426100 + SORTWORDF = 18#, 24426200 + % FIBOVERFLOW=39#, % RESERVED FOR EXPANSION 24426900 + FIIB(FLD) = FIB[FIB0.FIBFXD 24428000 + +ONES(FIB0.[39:FLD])]#, 24429000 + FIIBW(FLD)= FIBW[FIB0.FIBFXD 24430000 + +ONES(FIB0.[39:FLD])]#, 24431000 + FIBB(FLD) = BOOLEAN(FIB0.[39-(FLD):1])#, 24432000 + ALTDESC = FIBW[FIB0.FIBFXD]#, % ALTERNATE DESCRIPTOR 24433000 + % IF BLOCKEDFUNNY THEN DESCRIPTOR FOR ALTERNATE 24434000 + % AREA. IF COPY BLOCKING THEN POINTER TO OTHER 24435000 + % FIB. 24436000 + LOCKER = FIIB(FIBLOCKF)#, % LOGICALRECORD LOCK 24437000 + FLOCK = FIIB(FRMTLOCKF)#, % FORMATTER LOCK 24438000 + DISKHEADER= FIIBW(DISKHDRF)#, % DISK HEADER 24439000 + FILEACCESS= FIIB(DISKINFOF)#, % FILE ACCESS INFORMATION 24440000 + FILELIMITS= FIIB(LIMITSF)#, % FILE LIMITS 24441000 + USEROUTINES=FIIBW(USERSF)#, % USE-ROUTINE-INDEX ARRAY 24442000 + RERUNATT = FIIB(RERUNF)#, % RERUN ATTRIBUTES 24443000 + EOFE = FIIBW(EOFF)#, % END OF FILE EVENT 24444000 + PARITYE = FIIBW(PARITYP)#, % PARITY EVENT 24445000 + NOINPUTE = FIIBW(NOINPUTF)#, % NO INPUT EVENT 24446000 + BREAKE = FIIBW(BREAKF)#, % BREAK EVENT 24447000 + QUEUEFULLE= FIIBW(QUEUEFULLF)#,% QUEUE FULL EVENT 24448000 + INQUEUE = FIIBW(INQUEUEF)#, % INPUT QUEUE 24449000 + TERMINALISTF=FIIBW(TLISTF)#, % TERMINAL LIST 24450000 + TOCCURSWORD=FIIB(TOWF)#, % TERMINAL OCCURS WORD 24451000 + TMISC = FIIB(TMISCF)#, % TERMINAL MISC WORD 24452000 + OUTQUEUE = FIIBW(OUTQUEUEF)#,% OUTPUT QUEUE 24452100 + SORTWORD = FIIB(SORTWORDF)#, % SORT INFO 24452200 + USERS = FIBB(USERSF)#, 24453000 + KLUDGED = 0#; 24454000 +LAYOUT 24455000 + FILEACCESSL ( 24456000 + EXPADRS = 41:1, % (1 IF EXPLICIT ADDRESS IS 24459000 + % PERMITTED WITH SEQUENTIAL 24460000 + % FILE) 24461000 + BEGINO = 40:1, % (1 IF FILE BEGINS AT 1) 24462000 + ACSSTYPE = 39:4, % FILE ACCESS TYPE: 24463000 + % 0 = SERIAL 24464000 + % 1 = RANDOM 24465000 + % 2 = LINKED 24466000 + % 3 = DIRECTED 24467000 + ACSSMODES = 35:1, % (1 IF ACCESS MODE SPECIFIED) 24467100 + ACSSMODE = 34:3, % ACCESS MODE (IF LINKED) 24468000 + % SAME VALUES AS INTMODES 24469000 + ACSSOFF = 31:16, % ACCESS OFFSET 24473000 + ACSSZ = 15:16), % ACCESS SIZE 24474000 + RERUNATTL ( 24475000 + RERUNEOR = 47:2, % RERUN END-OF-REEL 24476000 + % 0 = NONE 24477000 + % 1 = EOR 24478000 + % 2 = RECORDS 24479000 + % 3 = CLOCK UNITS 24480000 + RERUNHERE = 45:1, % RERUN ON THIS TAPE 24481000 + RERUNCOUNT= 31:16, % NUMBER OF RECORDS: ACCUMULATOR 24482000 + RERUNNO = 15:16), % NUMBER OF RECORDS: TARGET 24483000 + TOCWL ( 24484000 + TERMINALSZ= 47:16, % TERMINAL SIZE 24485000 + NUMTERMS = 31:16); % NUMBER OF TERMINALS 24486000 +DEFINE 24487000 + % TERMINAL LIST 24488000 + TOUTQUEUE = TLISTW[TSZ]#, % OUTPUT QUEUE (DIRECTED) 24489000 + TSTATUS = TLIST[TSZ+1]#, % TERMINAL STATUS 24490000 + TFILE = TLISTW[TSZ+2]#, % TERMINAL FILE 24491000 + TTIME = TLIST[TSZ+3]#, % TERMINAL TIME DATA 24492000 + TINQUEUE = TLISTW[TSZ+4]#, % INPUT QUEUE (TERMINAL) 24493000 + TSTAT = TLIST[TSZ+5]#; % TERMINAL STATISTICS 24494000 +DEFINE 24494100 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24494110 + % LABEL-EQUATION BLOCK (LEB) %24494120 + % SAME FORMAT ALSO USED IN LABEL TABLE AND FPB %24494130 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24494140 + % FIXED PART LEB 24494150 + LEBC = LEB[0]#, % BASIC DATA: SIZE,KIND ... 24494160 + GEN1 = LEB[1]#, % REEL, CYCLE, VERSION 24494170 + GEN2 = LEB[2]#, % DATE, SAVE FACTOR 24494180 + DSKS = LEB[3]#, % DISK INFO AND MYUSE,OTHERUSE...24494190 + OPENTIME = LEB[4]#, % TIME FILE OPEN 24494200 + % OPTIONAL PART LEB 24494210 +% BLK1 = LEB[U]#, % FILE TYPE,BLOCK SIZE,MAX REC SZ24494220 +% BLK2 = LEB[U+1]#, % MINIMUM RECORD SIZE 24494230 + % TITLE FOLLOWS LAST WORD OF OPTIONAL PART 24494240 + % LABEL TABLE 24494250 + LCNTRL = UINFOP[U,0]#, 24494260 + LGEN1 = UINFOP[U,1]#, 24494270 + LGEN2 = UINFOP[U,2]#, 24494280 + LMISC = UINFOP[U,3]#, 24494290 + USERFIB = UINFOPW[U,4]#,% SIRW TO USERS FIB 24494300 + LBLK1 = UINFOP[U,5]#, 24494310 + LBLK2 = UINFOP[U,6]#; 24494320 +LAYOUT 24495000 + % LABEL-EQUATION BLOCK (LEB) 24496000 + LEBCNTRL ( 24497000 + FXD = 47:4, % NUMBER OF WORDS IN FIXED PART 24498000 + OPTMASK = 43:15, % OPTIONAL-PART MASK 24499000 +% OPTIONALF = 23:1, % OPTIONAL 24499010 +% FPRTCTD = 20:1, % FILE PROTECTED 24499020 + LPARITY = 19:1, % PARITY (1 IS ODD) 24500000 + DENSITYS = 18:1, % ON IF DENSITY SPECIFIED 24501000 + DENSITYL = 17:2, % DENSITY: 0-800, 1-556, 2-200, 24502000 + % 3-1600 24503000 + LABELTYPES= 15:1, % ON IF LABEL TYPE SPECIFIED 24504000 + LABELTYPEL= 14:4, % LABEL TYPE: 24505000 + % 0 - B6500 USASI 24506000 + % 1 - UNLABELLED 24507000 + % 2 - B5500 24508000 + % 3 - SYSTEM STANDARD 24509000 + % 4 - B3500 USASI 24510000 + % 5 - NON-STANDARD USASI 24511000 + % 6 - BACKUP TAPE 24512000 + % 7 - LIBRARY TAPE 24513000 + % 8 - LOAD-CONTROL TAPE 24514000 + % 9 - SYSTEM TAPE 24515000 + % 10 - B5500 BACKUP 24516000 + % 11 - B5500 LIBRARY 24517000 + EXTFORML = 10:3, % EXTERNAL FORM 24518000 + % PROBLEM WITH UNSPECIFIED Q 24518010 + PTYPEL = 7:8), % PERIPHERAL TYPE 24519000 + %%%%% FOR CARD READERS HAVE ONLY THIS BLOCK PLUS THE NAMES 24520000 + GENEALOGY1 ( 24521000 + CYCLE =38:15, % CYCLE (GENERATION NUMBER) 24522000 + GENVERSN = 23:8, % GENERATION VERSION 24523000 + REELS = 15:1, % ON IF REEL NUMBER SPECIFIED 24524000 + REEL = 14:15), % REEL NUMBER 24525000 + GENEALOGY2 ( 24526000 + % SERIALN = 45:20, % SERIAL # (FOR LABEL TABLE) 24526010 + SAVFACTOR = 25:11, % SAVE FACTOR 24527000 + CRTNDATE = 14:15), % CREATION DATE 24528000 + LMISCL ( % USED IN LABEL TABLE 24529000 + BCNTL = 43:20, % BLOCK COUNT 24530000 + RCNTL = 23:24), % RECORD COUNT 24531000 + DISKSPECL ( 24532000 + DIRECTIONF= 47:1, % (1 IF REVERSED) 24533000 + REVACTIONF= 46:1, % (1 IF OPEN REVERSE GOES 1 REEL)24533100 + DRCTRYF = 43:1, % (1 IF GOES IN DIRECTORY) 24533200 + PACKEDF = 42:1, % PACKED 24533300 + FLEXIBLEF = 41:1, % FLEXIBLE 24533400 + SPEEDF = 40:3, % SPEED 24534000 + OTHERUSEF = 37:2, % OTHER USE 24535000 + MYUSEF = 35:2, % MY USE 24536000 + ACCSSTYPEF= 33:4, % ACCESS TYPE 24537000 + NUMAREAS = 29:10, % NUMBER OF AREAS 24538000 + AREASIZE = 19:20), % AREA SIZE 24539000 + % OPTIONAL PART OF LEB RELATIVE WORD #24540000 + %*************************************************************%24540050 + % POINTER TO INTERNAL NAME (IF ANY) % 124540100 + %*************************************************************%24540110 + BLOCKING1 ( % 224541000 + FILETYPEL = 41:3, % FILE TYPE 24542000 + NONBUFFRDL= 38:1, % NON-BUFFERED 24543000 + BUFFERNOL = 37:6, % NUMBER OF BUFFERS 24544000 + MAXRECSZL = 31:16, % MAXIMUM RECORD SIZE 24545000 + BLOCKSZL = 15:16), % BLOCK SIZE 24546000 + BLOCKING2 ( % 324547000 + MINRECSZL = 15:16); % MINIMUM RECORD SIZE 24548000 +FIELD 24549000 + FPRTCTD = 20:1, % FILE PROTECTED 24550000 + OPTIONALF =23:1, % ON, IF OPTIONAL FILE 24551000 + % GENEALOGY2 24552000 + SERIALN = 45:20; % SERIAL # (FOR LABEL TABLE) 24553000 +DEFINE 24553100 + INTNAME = 0#, 24553110 + BLCKNG1 = 1#, 24553120 + BLCKNG2 = 2#, 24553130 + FRMS = 3#, 24553140 + LEEB(FLD) = LEB[LEBC.FXD+ONES(LEBC.[43:FLD])]#, 24553150 + LEBB(FLD) = BOOLEAN(LEB[LEBC.FXD+ONES(LEBC.[43-FLD:1])])#,24553160 + BLK1 = LEEB(BLCKNG1)#,% FILE TYPE, BLOCKING INFO 24553170 + BLK2 = LEEB(BLCKNG2)#,% MINIMUM RECORD SIZE 24553180 + KLUDGED1 = 0#; 24553190 +DEFINE 24571000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24571100 + % FILE LABEL DEFINES %24571200 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24571300 + 24571400 + % B6500 USASI LABELS 24572000 + % VOL1 24573000 + UVSN = PVOL1+4#, % SERIAL NUMBER 24574000 + UMFID = PVOL1+11#, % MULTIPLE FILE ID 24575000 + USYSN = PVOL1+28#, % "65" 24576000 + USYST = PVOL1+30#, % TAPE TYPE 24577000 + % 0 - SCRATCH 24578000 + % 1 - USER 24579000 + % 2 - LIBRARY 24580000 + % 3 - BACK UP 24581000 + % 4 = LOAD CONTROL 24582000 + ULSL = PVOL1+79#, % 1 IF STANDARD USASI 24583000 + % HDR1 24584000 + UFID = PHDR1+4#, % FILE ID 24585000 + URLNMBR = PHDR1+27#, % FILE SECTION NUMBER (REEL #) 24586000 + USQNCNMBR = PHDR1+31#, % FILE SEQUENCE NUMBER (POSITION)24587000 + UGNRTN = PHDR1+35#, % GENERATION NUMBER 24588000 + UVRSN = PHDR1+39#, % VERSION 24589000 + UCDT = PHDR1+42#, % CREATION DATE 24590000 + UEDT = PHDR1+48#, % EXPIRATION DATE 24591000 + UBCNT = PHDR1+54#, % BLOCK COUNT 24592000 + URCNT = PHDR1+60#, % RECORD COUNT 24593000 + USYSL = PHDR1+67#, % " B6500" 24594000 + % HDR2 24595000 + URF = PHDR2+4#, % RECORD FORMAT 24596000 + UBL = PHDR2+5#, % BLOCK LENGTH 24597000 + URL = PHDR2+10#, % RECORD LENGTH 24598000 + UDNSTY = PHDR2+15#, % DENSITY 24599000 + USNTNL = PHDR2+16#, % SENTINEL 24600000 + UPRTY = PHDR2+17#, % PARITY 24601000 + UFORM = PHDR2+18#, % EXTERNAL FORM 24602000 + UMRL = PHDR2+19#, % MINIMUM RECORD LENGTH 24603000 + UOFS = PHDR2+50#, % OFFSET TO DATA 24604000 + % B3500 USASI LABELS 24605000 + % VOL1 ALL BLANKS EXCEPT "VOL1",SERIAL NUMBER, AND "1" 24606000 + % HDR1 24607000 + B35FID = PHDR1+13#, % B3500 FILE ID 24608000 + B35MFID = PHDR1+21#, % B3500 MULTIPLE FILE ID 24609000 + % NO HDR2 24610000 + % B5500 LABELS 24611000 + % B5500 LABEL 24612000 + LMFIO = PVOL1+9#, 24613000 + LFID = PVOL1+17#, 24614000 + LREEL = PVOL1+24#, 24615000 + LCDT = PVOL1+27#, 24616000 + LCYCLE = PVOL1+32#, 24617000 + LEDT = PVOL1+34#, 24618000 + LSNTNL = PVOL1+39#, 24619000 + LBCNT = PVOL1+40#, 24620000 + LRCNT = PVOL1+45#, 24621000 + LMEMDUMP = PVOL1+52#, 24622000 + LVSN = PVOL1+53#; 24623000 +LAYOUT 24624000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24624100 + % UNIT FEATURE WORD (PASSED BY COMPILERS TO LOGICALRECORD) %24624200 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24624300 + UFEATL ( % UNIT FEATURE LAYOUT 24625000 + MOTIONF = 47:1, % (1 IF PRINT AFTER PAPER MOTION)24626000 + DRCTNF = 46:1, % (1 IF REVERSE SPACE) 24627000 + SKIPFF = 45:1, % (1 IF SKIP TO CHANNEL) 24628000 + ABSLINEF = 44:1, % (1 IF ABSOLUTE LINE NUMBER) 24629000 + WRAPF = 43:1, % ( 1 IF WRAPAROUND) 24630000 + REUSEF = 42:1, % (1 IF REUSE THIS RECORD) 24631000 + FORMATTERF= 41:1, % (1 STILL IN THE FORMATTER) 24632000 + MEMINHIBITF=40:1, % (1 NO DATA TRANSFER) 24632010 + CVALUEF = 15:16); % CONTROL VALUE: 24633000 + % ABSOLUTE LINE NUMBER 24634000 + % RELATIVE LINE NUMBER 24635000 + % CHANNEL # 24636000 + % ABSOLUTE RECORD # 24637000 + % RELATIVE RECORD # 24638000 +DEFINE 24639000 + % USE-ROUTINES-INDEX ARRAY 24640000 + % INPUT 24641000 + BBRI = PUSE#, % BEFORE BEGINNING REEL INPUT 24642000 + ABRI = PUSE+1#, % AFTER BEGINNING REEL INPUT 24643000 + BBFI = PUSE+2#, % BEFORE BEGINNING FILE INPUT 24644000 + ABFI = PUSE+3#, % AFTER BEGINNING FILE INPUT 24645000 + BERI = PUSC+4#, % BEFORE ENDING REEL INPUT 24646000 + AERI = PUSE+5#, % AFTER ENDING REEL INPUT 24647000 + BEFI = PUSE+6#, % BEFORE ENDING FILE INPUT 24648000 + AEFI = PUSE+7#, % AFTER ENDING FILE INPUT 24649000 + % OUTPUT 24650000 + BBRO = PUSE+8#, % BEFORE BEGINNING REEL OUTPUT 24651000 + ABRO = PUSE+9#, % AFTER BEGINNING REEL OUTPUT 24652000 + BBFO = PUSE+10#, % BEFORE BEGINNING FILE OUTPUT 24653000 + ABFO = PUSE+11#, % AFTER BEGINNING FILE OUTPUT 24654000 + BERO = PUSE+12#, % BEFORE ENDING REEL OUTPUT 24655000 + AERO = PUSE+13#, % AFTER ENDING REEL OUTPUT 24656000 + BEFO = PUSE+14#, % BEFORE ENDING FILE OUTPUT 24657000 + AEFO = PUSE+15#, % AFTER ENDING FILE OUTPUT 24658000 + % IO 24659000 + BBRIO = PUSE+16#, % BEFORE BEGINNING REEL IO 24660000 + ABRIO = PUSE+17#, % AFTER BEGINNING REEL IO 24661000 + BBPIO = PUSE+18#, % BEFORE BEGINNING FILE IO 24662000 + ABFIO = PUSE+19#, % AFTER BEGINNING FILE IO 24663000 + BERIO = PUSE+20#, % BEFORE ENDING REEL IO 24664000 + AERIO = PUSE+21#, % AFTER ENDING REEL IO 24665000 + BEFIO = PUSE+22#, % BEFORE ENDING FILE IO 24666000 + AEFIO = PUSE+23#, % AFTER ENDING FILE IO 24667000 + % ERROR 24668000 + EI = PUSE+24#, % ERROR INPUT 24669000 + ERO = PUSE+25#, % ERROR OUTPUT 24670000 + EIO = PUSE+26#; % ERROR IO 24671000 +DEFINE 24672000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24673000 + % IOAREA - NORMAL STATE I/O BUFFER LAYOUT %24674000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24675000 + % AT THE FRONT OF THE IOAREA IS THE IOCB - I/O CONTROL BLOCK %24676000 + % USER = 0 % USER WORD: 24677000 + % PRIORITY, UNIT-NUMBER, 24678000 + % WORD-COUNT, I/O-ERROR RECOVERY 24679000 + % MISC = 1 % RECEIVES RESULT DESCRIPTOR 24680000 + % AREADESC= 2 % POINTS AT BEGINNING OF BUFFER (IOCW)24681000 + % EVNT = 3 % POINTS AT THE BUFFER (FILE) EVENT 24682000 + % PRVSIO = 4 % FORWARD QUEUE LINK 24683000 + % NEXTIO = 5 % BACKWARD QUEUE LINK 24684000 + % A FEW WORDS ARE NEEDED FOR BUFFER CONTROL ... %24685000 + IOAL = 6#, % FORWARD & REVERSE BUFFER LINKS 24686000 + IOAW = 7#, % HOLDS NECESSARY FIELDS 24687000 + % REWRITE,BEFORE,PASSED,ACTIVE 24688000 + % THE BEGINNING OF THE BUFFER %24689000 + IOCWP = 8#, % IOCW - I/O CONTROL WORD 24690000 + FRSTDATA = 9#, % FIRST DATA 24691000 + IOTANKSZ = 9#; 24692000 +FIELD 24693000 + % IOAW FIELDS 24694000 + RWRT = 47:1, % REWRITE 24695000 + BFR = 46:1, % BEFORE 24696000 + RCN = 39:20, % RECORD NUMBER 24697000 + PSSD = 39:10, % PASSED 24698000 + ACTV = 29:10, % ACTIVE 24699000 + ACTLKY = 19:20; % ACTUAL KEY 24700000 +DEFINE 24701000 + % ARGUMENT 24702000 + INV = 1#, 24703000 + OUTV = 2#, 24704000 + IOV = 3#, 24705000 + REGOPEN = 0#, 24706000 + RLSWTCH = 1#, 24707000 + STATUSV = 2#, 24708000 + PRESENTV = 3#, 24709000 + REGCLOSE = 0#, 24709100 + RELEASEV = 1#, 24710000 + PURGEV = 2#, 24710100 + MOREWINDV = 3#, 24710200 + LOCKV = 4#, 24711000 + CRUNCHV = 5#, 24711100 + HERE = 6#, 24712000 + ASTRSK = 7#; 24713000 +DEFINE 24714000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24715000 + % MASTER LIST OF FIB DEFINES %24716000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24717000 + ACCESSMODE = FILEACCESS.ACSSMODE#, %24718000 + ACCESSOFF = FILEACCESS.ACSSOFF#, 24719000 + ACCESSZ = FILEACCESS.ACSSZ#, 24720000 +?END 99999999