From 43a9aaa7bc77f464b9a4b227a5b9215e6521bf55 Mon Sep 17 00:00:00 2001 From: Paul Kimpel Date: Fri, 25 Jul 2014 23:48:11 +0000 Subject: [PATCH] Commit B6500 MCP Mark 0.0 source, additional transcription by James Fehlinger, as of 2014-06-26. --- source/B65MCP/MARK00.esp_m | 3653 ++++++++++++++++++------------------ 1 file changed, 1829 insertions(+), 1824 deletions(-) diff --git a/source/B65MCP/MARK00.esp_m b/source/B65MCP/MARK00.esp_m index d534a35..2d6a251 100644 --- a/source/B65MCP/MARK00.esp_m +++ b/source/B65MCP/MARK00.esp_m @@ -1,1824 +1,1829 @@ -BEGIN 00000000 -COMMENT MCP LISTING DIRECTORY 00001000 - 010000000 INDEPENDENT RUNNER FORWARD DECLARATION 00002000 - 020000000 FORWARD PROCEDURE DECLARATION 00003000 - 08000000 INITIAL VALUE TABLES 00004000 - 08000000 BCL TO EBCEDIC 00005000 - 08018000 EBCEDIC TO BCL 00006000 - 08084000 TRUTH SETS 00007000 - 08106000 POWER OF TEN TABLES 00007100 - 08247000 CONTROL CARD 00007200 - 09000000 STANDARD QUEUE DECLARATION 00008000 - 10000000 GLOBALS 00009000 - 10017000 INTERRUPT - EVENT HANDLING GLOBALS 00010000 - 10055000 TAG DEFINITION 00011000 - 10075000 CONTROL WORD LAYOUTS 00012000 - 10252000 REGISTERS DEFINITIONS 00013000 - 11000000 STORAGE ALLOCATION GLOBALS 00014000 - 12000000 INITIALIZE GLOBALS 00015000 - 13000000 INPUT - OUTPUT GLOBALS 00016000 - 13056500 VALUE ARRAYS - MCPID,KEYIN GLOSSARIES,ETC. 00016100 - 13276000 KEYIN - SPOUT GLOBALS 00017000 - 13318000 IOQUE QUEUE DECLARATION 00018000 - 13375000 WAITCHANNELQUE QUEUE DECLARATION 00019000 - 14000000 DISK MANAGEMENT 00020000 - 15000000 GETAREA - FORGET AREA GLOBALS 00021000 - 16000000 STANDARD INSERT 00022000 - 16016000 STANDARD DELINK 00023000 - 17000000 NAMEQUE QUEUE DECLARATION 00024000 - 17021000 BLOCKSOFAREAQUE QUEUE DECLARATION 00025000 - 17035000 KEYING QUEUE DECLARATION 00026000 - 18007000 FILE MANAGEMENT 00027000 - 19000000 REPLY MESSAGE 00028000 - 20000000 INDEPENDENT RUNNER GLOBALS 00029000 - 21140000 READYQ QUEUE DECLARATION 00030000 - 21263000 SHEETQ QUEUE DECLARATION 00031000 - 21357000 TERMINATEQ QUEUE DECLARATION 00032000 - 23000000 DIRECTORY MANAGEMENT 00034000 - 24000000 I/0 INTRINSIC DECLARATIONS 00034100 - 30000000 GETSPACE / FORGETSPACE 00035000 - 31000000 GETAREA / FORGETAREA 00036000 - 32000000 INITIALIZE 00037000 - 33000000 HARDWAREINTERRUPT 00038000 - 33167000 PRESENCEBIT 00039000 - 33538000 WHATDOIDO 00040000 - 33567000 EVENTHANDLER 00041000 - 33763000 SOFTWAREINTERRUPTDEC 00042000 - 33855000 HOLD 00043000 - 33890000 HOLDINITIALIZE 00044000 - 33961000 GETINDEPENDENTRUNNERSTACK 00045000 - 33960000 INDEPENDENTRUNNER 00046000 - 34051000 RUN 00047000 - 34086000 LOADFIXDIRSTACK 00048000 - 38000000 CONTROL CARD 00048600 - 40000000 INPUT - OUTPUT ROUNTINES 00049000 - 40005000 STARTIO 00050000 - 40037000 INITIATEIO 00051000 - 40075000 IOREQUEST 00052000 - 40089000 WAITIO 00053000 - 40131000 NEWIO 00054000 - 40154000 IOFINISH 00055000 - 40316000 STATUS 00056000 - 40565000 DISKIO 00057000 - 40597000 DISKWAIT 00058000 - 44022000 DISPLAY ROUTINES 00059000 - 44097000 KEYIN 00060000 - 44176000 SPOUT 00061000 - 50000000 ERROR ROUTINES 00062000 - 50000000 IOERROR 00063000 - 55000000 DISK MANAGEMENT 00064000 - 55018000 FORGETESPDISK 00066000 - 55039000 GETUSERDISK 00067000 - 55123000 FORGETUSERDISK 00068000 - 58000000 LIBRARY MAINTENANCE 00068900 - 59000000 PERIPHERALINITIALIZE 00069000 - 60000000 PROGRAM INTRINSICS 00070000 - 65000000 ARRAYDEC 00071000 - 65174000 BLOCKEXIT 00072000 - 65228000 GOTOSOLVER 00073000 - 70000000 PROGRAM INPUT- OUTPUT INTRINSICS 00074000 - 80000000 SELECTION - PROCESS HANDLING 00075000 - 80361000 INITIATE 00076000 - 80519000 SELECTION 00077000 - 80600000 TERMINATE 00077200 - 99000000 MONITOR 00078000 - 99970000 MCP OUTER BLOCK 00079000 - ; 00999999 -COMMENT FOLLOWING ARE FORWARD DECLARATIONS FOR PROCEDURES CAPABLE OF 01000000 - RUNNING AS INDEPENDENT RUNNERS. THE FORWARD DECLARATION FOR 01001000 - A NEW INDEPENDENT RUNNER MUST APPEAR BEFORE THAT FOR STATUS IF 01001500 - IT IS CAPAPABLE OF MULTIPLE REPRESENTATION. AN INDICATOR MAY. 01002000 - BE ASSOCIATED WITH AN INDEPENDENT RUNNER (SEE CROSS FEFERENCE 01002500 - FOR "TERMINATE" AND "TERMINATEINDICATOR" FOR HOW THIS IS 01003000 - EFFECTED). THIS INDICATOR ISNOT NECESSARY TO THE 01003500 - IMPLEMENTATION, HOWEVER IT IS NECESSARY IF INDEPENDENTRUNNER IS01004000 - 01004300 - TO RECOGNISE THE NEW RUNNER AS A SPECIAL CASE 01004500 - 01004600 - ; 01005000 -PROCEDURE CONTROLCARD (PARAMETER); 01006000 - WORD PARAMETER; FORWARD; 01007100 -PROCEDURE READALABEL(LINFO);VALUE LINFO;REAL LINFO;FORWARD; 01007105 -PROCEDURE PURGIT(U);VALUE U;REAL U;FORWARD; 01007107 -PROCEDURE DIRECTORYCOMPLEMENT(ROW); ARRAY ROW[*]; FORWARD; 01007200 - PROCEDURE IRTEST(IND); INTEGER IND; FORWARD; 01008000 - PROCEDURE INITIATE (DUMMY); REAL DUMMY; FORWARD; 01008200 - PROCEDURE IOERROR(RD); REAL RD; FORWARD; 01008500 - 01009000 - PROCEDURE STATUS (COUNT); INTEGER COUNT; FORWARD; 01009100 -PROCEDURE KEYIN(COUNT); REAL COUNT; FORWARD; 01009110 -PROCEDURE CONNSOUL(COUNT); REAL COUNT; FORWARD;% 01010000 - PROCEDURE TERMINATE (PARAMETER); REAL PARAMETER ; FORWARD; 01011000 -COMMENT: FOR THOSE OF YOU WHO DON"T KNOW SO, TERMINATE MUST BE THE 01011100 - LAST INDEPENDENTRUNNER DECLARED IN THIS FORWARD LIST. 01011200 - ONE WRITES "FORK(, )" TO START ONE OF 01011300 - THESE GUYS UP; 01011400 - PROCEDURE WHATDOIDO; FORWARD; 02000000 - PROCEDURE INDEPENDENTRUNNER(INDEX,PAR);VALUE INDEX,PAR;REAL INDEX; 02001000 - WORD PAR; FORWARD; 02002000 - PROCEDURE LOADFIXEDIRSTACK(STACKNO);VALUE STACKNO;INTEGER STACKNO; 02003000 - FORWARD; 02004000 -SAVE INTEGER PROCEDURE TRACE = (0,19) ( TRACTER ) ; 02005000 - VALUE TRACTER; INTEGER TRACTER; FORWARD; 02006000 -SAVE REAL PROCEDURE GETSPACE (SIZE, WHOFOR, TYPE, ADDRESS); 02007000 - VALUE SIZE, WHOFOR, TYPE, ADDRESS; 02008000 - INTEGER SIZE, WHOFOR, TYPE; 02009000 - REAL ADDRESS; FORWARD; 02010000 -SAVE INTEGER PROCEDURE FORGETSPACE (ADDRESS); 02011000 - VALUE ADDRESS; INTEGER ADDRESS; FORWARD; 02012000 -SAVE PROCEDURE OVERLAY (ADDRESS); VALUE ADDRESS;INTEGER ADDRESS;FORWARD;02013000 -REAL PROCEDURE DIRECTORYSEARCH(POINT, CODE, LLOCK); 02016100 - VALUE POINT, CODE, LLOCK; 02016200 - POINTER POINT; 02016300 - REAL CODE; 02016400 - BOOLEAN LLOCK; FORWARD; 02016500 -SAVE PROCEDURE IOFINISH(MPXINDEX); VALUE MPXINDEX; 02017000 - INTEGER MPXINDEX; FORWARD; 02018000 -PROCEDURE FINISHOFFIO(IOCB); VALUE IOCB; REFERENCE IOCB; FORWARD;02019000 -PROCEDURE FINISHOFFIO(IOCB); VALUE IOCB; REFERENCE IOCB; ; COMMENT * * ;02020000 -SAVE 02020998 - PROCEDURE SPOUT(IOCB,U);VALUE IOCB,U;REAL U;REFERENCE IOCB;FORWARD; 02021000 -PROCEDURE MESSER(W,INFO);VALUE W,INFO;REAL W;WORD INFO;FORWARD;% 02021100 - PROCEDURE MIXPRINT(BUF);ARRAY BUF[*]; FORWARD;% 02022000 -BOOLEAN PROCEDURE JULIT(P);POINTER P; FORWARD; 02022300 -PROCEDURE DATIT(P); POINTER P; FORWARD;% 02022400 - REAL PROCEDURE CURRENTTIME; FORWARD; 02022500 - PROCEDURE CHANLOUT(I,BUFF);VALUE I;REAL I;ARRAY BUFF[*];FORWARD; 02022600 -SAVE PROCEDURE CONNQUEST(UNIT); VALUE UNIT; REAL UNIT; FORWARD; 02023000 -SAVE PROCEDURE UNEXPIOERROR(IOCB,IOERRORMASK); 02024000 - VALUE IOCB,IOERRORMASK; 02025000 - REFERENCE IOCB; 02026000 -REAL IOERRORMASK; ; COMMENT * * * * * * * * ** ; 02027000 -SAVE REAL PROCEDURE WAITIO(AREA, USER, IOMASK); 02030000 - VALUE USER, IOMASK; 02031000 - ARRAY AREA[*]; 02032000 - REAL USER, IOMASK; 02033000 - FORWARD; 02034000 -SAVE PROCEDURE IOREQUEST(IOCB);VALUE IOCB;REFERENCE IOCB;FORWARD; 02034100 -SAVE REFERENCE PROCEDURE DISKIO(CORE,INDEX,SIZE,DISK,MASK,DISKIOEVNT); 02035000 - VALUE INDEX,SIZE,DISK,MASK; 02036000 - INTEGER INDEX,SIZE,DISK,MASK; 02037000 - ARRAY CORE [*]; 02038000 - EVENT DISKIOEVNT ; FORWARD; 02039000 -SAVE PROCEDURE DISKWAIT(CORE,INDEX,SIZE,DISK,MASK); 02040000 - VALUE INDEX,SIZE,DISK,MASK; 02041000 - INTEGER INDEX,SIZE,DISK,MASK; 02042000 - ARRAY CORE[*]; 02043000 - FORWARD; 02044000 - PROCEDURE HARDWAREINTERRUPT(P1,P2); VALUE P1,P2; 02045000 - INTEGER P1; WORD P2; FORWARD; 02046000 -WORD HARDWAREINTERRUPTPCW = HARDWAREINTERRUPT; 02046100 -WORD D03 = (0, 3); 02046200 -SAVE PROCEDURE HOLDINITIALISE; FORWARD; 02047000 -SAVE PROCEDURE PERIPHERALINITIALIZE; FORWARD; 02048000 -REAL MCPDISKBASE = PERIPHERALINITIALIZE; COMMENT ADDRESS OF MCP DISK; 02049000 -SAVE PROCEDURE INITIALIZE(P1, P2); 02050000 - VALUE P1; 02051000 - INTEGER P1; 02052000 - WORD P2; FORWARD; 02053000 -REAL MAXCHANNELS = INITIALIZE; COMMENT THE NUMBER OF MULTIPLEXORS; 02054000 -BOOLEAN MAXMPX = MAXCHANNELS; 02055000 -WORD INITIALIZEPCW = INITIALIZE; 02055100 -SAVE INTEGER PROCEDURE GETAREA(SIZE); VALUE SIZE; INTEGER SIZE; FORWARD;02057000 -SAVE PROCEDURE FORGETAREA(SIZE,ADDRESS); VALUE SIZE,ADDRESS; 02058000 - INTEGER SIZE,ADDRESS; FORWARD; 02059000 -PROCEDURE UPDATEUNITBITSTABLE(TABLENAME,U); VALUE U; 02060000 - INTEGER U; 02061000 -BOOLEAN ARRAY TABLENAME[*]; FORWARD; 02062000 -PROCEDURE EVENTHANDLER = (0,15) (THEEVENT,EVENTWORD1,WAITFLAG); 02063000 - VALUE EVENTWORD1,WAITFLAG; 02064000 - WORD THEEVENT,EVENTWORD1; 02065000 - BOOLEAN WAITFLAG; FORWARD; 02066000 -WORD PROCEDURE SOFTWAREINTERRUPTDEC = (0,14) (THEEVENT,EVENTWORD1, 02067000 - EVENTWORD2,KLUDGE,PCWPOINTER); 02068000 - VALUE EVENTWORD1,EVENTWORD2,PCWPOINTER,KLUDGE; 02069000 - WORD THEEVENT,EVENTWORD1,EVENTWORD2,PCWPOINTER,KLUDGE; 02070000 - FORWARD; 02071000 -DEFINE INTERLOCK = EVENT # 02071100 - , PROCURE(LOCK) = GAOLER(LOCK, FALSE) # 02071200 - , LIBERATE(LOCK) = GAOLER(LOCK, TRUE) # 02071300 - ; 02071400 -PROCEDURE GAOLER = (0,18) (E,U); VALUE U; EVENT E; BOOLEAN U; FORWARD; 02071500 -SAVE WORD PROCEDURE DOPEVECTOR(MOM); 02072000 - VALUE MOM; 02073000 - WORD MOM; FORWARD; 02074000 -SAVE PROCEDURE ARRAYDEC =(0,7) (NOOFDIMS,NOOFARRAYS,TYPE); 02075000 - VALUE NOOFDIMS,NOOFARRAYS,TYPE; 02076000 - INTEGER NOOFDIMS,NOOFARRAYS,TYPE; FORWARD; 02077000 -SAVE PROCEDURE DUMMYFORCUTTINGSTACK; ; 02077100 -WORD DUMMYFORCUTTINGSTACKPCW=DUMMYFORCUTTINGSTACK; 02077200 -SAVE WORD PROCEDURE SIM1TOR(A,V); VALUE A, V; REAL A; WORD V; 02078000 - BEGIN 02079000 - INTEGER T; 02080000 - T ~REGISTERS [63]; 02081000 - SIM1TOR ~ V; 02082000 - END; 02083000 -SAVE PROCEDURE MEMDUMP = (0,20) (I,J);VALUE I,J;REAL I,J;FORWARD; 02083100 -WORD PROCEDURE JACKMONITOR (A, V); VALUE A, V; REAL A; WORD V; 02084000 - FORWARD; 02085000 -WORD PROCEDURE RAJMONITOR (A, V); VALUE A, V; REAL A; WORD V; 02086000 - FORWARD; 02087000 -WORD PROCEDURE BOBMONITOR (A, V); VALUE A, V; REAL A; WORD V; 02088000 - FORWARD; 02089000 -WORD PROCEDURE DONMONITOR (A, V); VALUE A, V; REAL A; WORD V; FORWARD; 02090000 -WORD PROCEDURE STEVEMONITOR(A,V);VALUE A,V;REAL A;WORD V; FORWARD; 02090100 -WORD PROCEDURE MIKEMONITOR(A,V); VALUE A,V; REAL A; WORD V; FORWARD; 02090200 -REAL PROCEDURE GETUSERDISK(SEGMENTS, SPEED); 02091000 - VALUE SEGMENTS, SPEED; 02092000 - REAL SEGMENTS, SPEED; FORWARD; 02093000 -PROCEDURE FORGETUSERDISK(DKADDR, SEGMENTS); 02094000 - VALUE DKADDR, SEGMENTS; 02095000 - REAL DKADDR, SEGMENTS; FORWARD; 02095500 -REAL PROCEDURE NOUSERDISK(SEGMENTS, SPEED); 02095600 - VALUE SEGMENTS, SPEED; 02095700 - REAL SEGMENTS, SPEED; FORWARD; 02095800 -SAVE PROCEDURE BLOCKEXIT = (0,10); FORWARD; 02096000 -PROCEDURE FORGETDOPEVECTORS(DD); WORD ARRAY DD[*]; FORWARD; 02097000 -SAVE PROCEDURE MOMTOVECTOR (MOM, VECTOR, INDEX); 02098000 - VALUE COMMENT A COPY OR MOM DESCRIPTOR THAT IS AC- 02098100 - CEPTABLE TO PRESENCE BIT; 02098200 - COMMENT AN-UNINDEXED DESCRIPTOR THAT IS AC- 02099000 - CEPTABLE TO AN NXLN OPERATOR; 02099100 - INDEX; COMMENT THE INDEX FOR VECTOR WHERE MOM IS TO 02100000 - BE PLACED; 02100100 - WORD ARRAY MOM[*], 02100200 - VECTOR[*]; 02100300 - INTEGER INDEX; FORWARD; 02100400 -SAVE REFERENCE PROCEDURE ALLOCATEMAMEQ; FORWARD; 02101000 -SAVE BOOLEAN PROCEDURE TURNOVERLAYKEY (ADDRESSOFMOM); 02102000 - VALUE ADDRESSOFMOM; 02103000 - INTEGER ADDRESSOFMOM; FORWARD; 02104000 -SAVE PROCEDURE MAKEPRESENTANDSAVE (DATA); 02104100 - WORD ARRAY DATA [*]; FORWARD; 02104200 -PROCEDURE LIBMAIN(MFID);VALUE MFID;POINTER MFID;FORWARD; 02105000 -SAVE INTEGER PROCEDURE CONSOLIDATEANDORDER(ADDRESS); 02109000 - VALUE ADDRESS; 02110000 - INTEGER ADDRESS; FORWARD; 02111000 -PROCEDURE OPEN=(0,31)(FIB,TYPEV);VALUE TYPEV;ARRAY FIB[*];REAL TYPEV; 02111100 - FORWARD; 02111200 -PROCEDURE GOTOSOLVER = (0,11) (SIRW); VALUE SIRW; REAL SIRW; FORWARD; 02112000 -REAL PROCEDURE FINDINPUT(LEB,CODE);VALUE CODE;INTEGER CODE;ARRAY LEB[*];02112010 - FORWARD; 02112020 -SAVE 02113000 -WORD PROCEDURE MON1TOR (A, V); VALUE A, V; REAL A; WORD V; FORWARD; 02114000 -INTEGER PROCEDURE VECTORINSERT(READYINDICATOR,NEWENTRY); 02115000 - VALUE READYINDICATOR 02116000 - , NEWENTRY 02117000 - ; 02118000 - REAL READYINDICATOR 02119000 - ; 02120000 - WORD NEWENTRY 02121000 - ; FORWARD; 02122000 -PROCEDURE STACKQREARRANGE(READYINDICATOR) ; 02123000 - VALUE READYINDICATOR 02124000 - ; 02125000 - BOOLEAN READYINDICATOR 02126000 - ; FORWARD; 02127000 -PROCEDURE STACKQREMOVE (PATH,STACKINDICATOR); 02128000 - VALUE PATH 02129000 - , STACKINDICATOR 02130000 - ; 02131000 - REAL PATH 02132000 - ; 02133000 - INTEGER STACKINDICATOR 02134000 - ; FORWARD; 02135000 -PROCEDURE INSERTINQUEUE (PATH,STACKINDICATOR); 02136000 - VALUE PATH 02137000 - , STACKINDICATOR 02138000 - ; 02139000 - REAL PATH 02140000 - , STACKINDICATOR 02141000 - ; FORWARD; 02142000 -INTEGER PROCEDURE GETINDEPENDENTRUNNERSTACK(STAKADRES);REAL STAKADRES; 02143000 - FORWARD; 02144000 - 02145000 - 02146000 -PROCEDURE NEXTPROCESS; FORWARD; 02147000 -INTEGER PROCEDURE NEXTINSCHEDULE; FORWARD; 02148000 - 02149000 - 02150000 - 02151000 -PROCEDURE SELECTION; FORWARD; 02152000 -PROCEDURE RUN (PARAMETER,PROCEEDURE); 02153000 - VALUE PARAMETER 02154000 - ; 02155000 - WORD PARAMETER 02156000 - ; 02157000 - PROCEDURE PROCEEDURE 02158000 - ; FORWARD; 02159000 -WORD RUNPCW = RUN; COMMENT USED BY INDEPENDENTRUNNER MECHANISM; 02160000 -PROCEDURE STANDARDINSERT(FIRSTENTRY,LASTENTRY,ENTRY); 02161000 - VALUE ENTRY; 02162000 - REFERENCE FIRSTENTRY,LASTENTRY,ENTRY; FORWARD; 02163000 -PROCEDURE STANDARDDELINK(FIRSTENTRY,LASTENTRY,ENTRY); 02164000 - VALUE ENTRY; 02165000 - REFERENCE FIRSTENTRY,LASTENTRY,ENTRY; FORWARD; 02166000 -SAVE PROCEDURE QUEUEMYSTACK (AUTHORITY, REQUIRED, COUNT, MYEVENT, HEAD);02167000 - VALUE AUTHORITY, COMMENT THE SORTKEY FOR THIS OUEUE; 02168000 - REQUIRED, COMMENT AN ADDITIONAL INFORMATION WORD FOR THE 02169000 - QUEUE ENTRY; 02170000 - COUNT; COMMENT A 10 BIT COUNTER IN THE STACK LINK 02171000 - WORD FOR THIS QUEUE; 02172000 - EVENT MYEVENT; COMMENT THE LOCAL EVENT MY STACK IS TO WAIT ON;02172500 - INTEGER COUNT; 02172550 - REAL AUTHORITY, 02172600 - REQUIRED, 02172700 - HEAD ; COMMENT A GLOBAL REAL THAT CONTAINS THE BACK- 02173000 - WARD AND FORWARD LINKS FOR THE QUEUE. THE BACK 02174000 - WARD LINK POINTS TO THE ENTRY WITH THE HIGHEST 02175000 - AUTHORITY; FORWARD; 02176000 -PROCEDURE DELINKASTACK (WHOSE, HEAD); 02177000 - VALUE WHOSE; 02178000 - INTEGER WHOSE; COMMENT THE AUTHORITY TYPE STACK TO DELINK; 02179000 - REAL HEAD ; COMMENT THE HEAD OF THE AUTHORITY TYPE STACK; 02180000 - FORWARD; 02181000 -PROCEDURE PARAMETERINSERT (FIRSTPARAM, LASTPARAM, ENTRY); 02182000 - VALUE ENTRY; 02183000 - REFERENCE FIRSTPARAM, LASTPARAM, ENTRY; FORWARD; 02184000 -BOOLEAN SIMULATING = (0,12); % TRUE FOR SIMULATOR RUN 02560000 - VALUE ARRAY BCLTOEBC = (0,33) ~ ( 08000000 - 4"F0F1F2F3" 08001000 - , 4"F4F5F6F7" 08002000 - , 4"F8F97B7C" 08003000 - , 4"6F7A6E69" 08004000 - , 4"4EC1C2C3" 08005000 - , 4"C4C5C6C7" 08006000 - , 4"C8C94B70" 08007000 - , 4"504D4C48" 08008000 - , 4"00D1D2D3" 08009000 - , 4"D4D5D6D7" 08010000 - , 4"D8D95B5C" 08011000 - , 4"605D5E49" 08012000 - , 4"4061E2E3" 08013000 - , 4"E4E5E6E7" 08014000 - , 4"E8E96B6C" 08015000 - , 4"597E6A7F" 08016000 - ); 08017000 - VALUE ARRAY EBCTOBCL = (0,34) ~ ( 08018000 - 4"0C0C0C0C" 08019000 - , 4"0C0C0C0C" 08020000 - , 4"0C0C0C0C" 08021000 - , 4"0C0C0C0C" 08022000 - , 4"0C0C0C0C" 08023000 - , 4"0C0C0C0C" 08024000 - , 4"0C0C0C0C" 08025000 - , 4"0C0C0C0C" 08026000 - , 4"0C0C0C0C" 08027000 - , 4"0C0C0C0C" 08028000 - , 4"0C0C0C0C" 08029000 - , 4"0C0C0C0C" 08030000 - , 4"0C0C0C0C" 08031000 - , 4"0C0C0C0C" 08032000 - , 4"0C0C0C0C" 08033000 - , 4"0C0C0C0C" 08034000 - , 4"300C0C0C" 08035000 - , 4"0C0C0C0C" 08036000 - , 4"1F2F0C1A" 08037000 - , 4"1E1D100C" 08038000 - , 4"1C0C0C0C" 08039000 - , 4"0C0C0C0C" 08040000 - , 4"0C3C0C2A" 08041000 - , 4"2B202E0C" 08042000 - , 4"2C310C0C" 08043000 - , 4"0C0C0C0C" 08044000 - , 4"0C0F3E3A" 08045000 - , 4"3B0C0E0C" 08046000 - , 4"1B0C0C0C" 08047000 - , 4"0C0C0C0C" 08048000 - , 4"0C0C0D0A" 08049000 - , 4"0B0C3D3F" 08050000 - , 4"0C0C0C0C" 08051000 - , 4"0C0C0C0C" 08052000 - , 4"0C0C0C0C" 08053000 - , 4"0C0C0C0C" 08054000 - , 4"0C0C0C0C" 08055000 - , 4"0C0C0C0C" 08056000 - , 4"0C0C0C0C" 08057000 - , 4"0C0C0C0C" 08058000 - , 4"0C0C0C0C" 08059000 - , 4"0C0C0C0C" 08060000 - , 4"0C0C0C0C" 08061000 - , 4"0C0C0C0C" 08062000 - , 4"0C0C0C0C" 08063000 - , 4"0C0C0C0C" 08064000 - , 4"0C0C0C0C" 08065000 - , 4"0C0C0C0C" 08066000 - , 4"0C111213" 08067000 - , 4"14151617" 08068000 - , 4"18190C0C" 08069000 - , 4"0C0C0C0C" 08070000 - , 4"0C212223" 08071000 - , 4"24252627" 08072000 - , 4"28290C0C" 08073000 - , 4"0C0C0C0C" 08074000 - , 4"0C0C3233" 08075000 - , 4"34353637" 08076000 - , 4"38390C0C" 08077000 - , 4"0C0C0C0C" 08078000 - , 4"00010203" 08079000 - , 4"04050607" 08080000 - , 4"08090C0C" 08081000 - , 4"0C0C0C0C" 08082000 - ); 08083000 - SAVE VALUE ARRAY FOURBITSTUFF = (0,39) ~ ( 08083100 - 4"00010203", 4"04050607", 4"08091112", 4"13141516", 08083200 - 8"0123", 8"4567", 8"89AB", 8"CDEF" ); 08083300 -DEFINE HEXTOBCL = FOURBITSTUFF[0]#, 08083400 - HEXTOEBC = FOURBITSTUFF[4]#; 08083500 - VALUE ARRAY TRUTHSETS = (0,38) ~ ( 08084000 - 6(0) % EBCDIC ALPHA-NUMERIC 08085000 - , 4"7FC07FC0" % EBCDIC ALPHA-NUMERIC 08086000 - , 4"3FC0FFC0" % EBCDIC ALPHA-NUMERIC 08087000 - , 6(0) % EBCDIC ALPHABETIC 08088000 - , 4"7FC07FC0" % EBCDIC ALPHABETIC 08089000 - , 4"3FC00000" % EBCDIC ALPHABETIC 08090000 - , 7(0) % EBCDIC NUMERIC 08091000 - , 4"0000FFC0" % EBCDIC NUMERIC 08092000 - , 4"FFC07FC0" % BCL ALPHA NUMERIC 08093000 - , 4"7FC03FC0" % BCL ALPHA NUMERIC 08094000 - , 4"00007FC0" % BCL ALPHABETIC 08095000 - , 4"7FC03FC0" % BCL ALPHABETIC 08096000 - , 4"FFC00000" % BCL NUMERIC 08097000 - , 0 % BCL NUMERIC 08098000 - , 2(0) % EBCDIC SPECIAL CHARACTERS 08098100 - , 4"803F803F" % EBCDIC SPECIAL CHARACTERS 08098200 - , 4"C03F007F" % EBCDIC SPECIAL CHARACTERS 08098300 - , 0 % EBCDIC SPECIAL CHARACTERS 08098400 - , 4"40000000" % EBCDIC SPECIAL CHARACTERS 08098500 - , 4"80008000" % EBCDIC SPECIAL CHARACTERS 08098600 - , 4"C0000000" % EBCDIC SPECIAL CHARACTERS 08098700 - ); 08099000 -DEFINE EBCDICALPHANUMERIC = TRUTHSETS[00] #, 08100000 - EBCDICALPHABETIC = TRUTHSETS[08] #, 08101000 - EBCDICNUMERIC = TRUTHSETS[16] #, 08102000 - BCLALPHANUMERIC = TRUTHSETS[24] #, 08103000 - BCLALPHABETIC = TRUTHSETS[26] #, 08104000 - BCLNUMERIC = TRUTHSETS[28]#, 08105000 - EBCDICSPECIALS = TRUTHSETS[30]#, 08105100 - ENDTRUTHSETS=0#;% 08105990 - COMMENT THESE ARE THE 6500 POWERS OF TEN TABLES. 08106000 - 10*I=POTL[I.[05:06]]|POTM[I.[11:06])|POTH[I.[14:03]]. 08106500 - THE VALUES ARE ALL DOUBLE PRECISION AND ARE ALL --TRUNCATED--. THE 08107000 - FLAG-BIT OF THE MOST-SIGNIFICANT WORD IS THE FIRST BIT DROPPED 08107500 - (FIRST BIT AFTER THE PERCENT). ALL VALUES WERE CALCULATED TO FULL 08108000 - SIGNIFICANCE (I.E., AS INTEGERS), THEN CHOPPED TO 78 BITS.; 08108500 - 08109000 - DOUBLE VALUE ARRAY POTL 08109500 - 08110000 - ~(3"1141000000000000",3"0000000000000000", % =@0000008110500 - 3"1131200000000000",3"0000000000000000", % =@0000108111000 - 3"1121440000000000",3"0000000000000000", % =@0000208111500 - 3"1111750000000000",3"0000000000000000", % =@0000308112000 - 3"1102342000000000",3"0000000000000000", % =@0000408112500 - 3"1073032400000000",3"0000000000000000", % =@0000508113000 - 3"1063641100000000",3"0000000000000000", % =@0000608113500 - 3"1054611320000000",3"0000000000000000", % =@0000708114000 - 3"1045753604000000",3"0000000000000000", % =@0000808114500 - 3"1037346545000000",3"0000000000000000", % =@0000908115000 - 3"1011124027620000",3"0000000000000000", % =@0001008115500 - 3"0001351035564000",3"0000000000000000", % =@0001108116000 - 3"0011643245121000",3"0000000000000000", % =@0001208116500 - 3"0022214116345200",3"0000000000000000", % =@0001308117000 - 3"0032657142036440",3"0000000000000000", % =@0001408117500 - 3"0043432772446150",3"0000000000000000", % =@0001308118000 - 3"0054341571157602",3"0000000000000000", % =@0001608118500 - 3"0065432127413542",3"0004000000000000", % =@0001708119000 - 3"0076740555316473",3"0001000000000000", % =@0001808119500 - 3"0111053071060221",3"0001720000000000", % =@0001908120000 - 3"0121265707274265",3"0004304000000000", % =@0002008120500 - 3"0131543271153342",3"0007365000000000", % =@0002108121000 - 3"0142074147406233",3"0005262200000000", % =@0002208121500 - 3"0152513201307702",3"0004536640000000", % =@0002308122000 - 3"0163236041571663",3"0001666410000000", %0 =@0002408122500 - 3"0174105452130240",3"0000244112000000", %00 =@0002508123000 - 3"0205126764556310",3"0000315134400000", %000 =@0002608123500 - 3"0216354561711772",3"0000400363500000", %0000 =@0002708124000 - 3"0231004771627437",3"0000450046042000", %000000 =@0002808124500 - 3"0241206170175346",3"0006562057453400", %0000000 =@0002908125000 - 3"0251447626234640",3"0004316473365100", %00000000 =@0003008125500 - 3"0261761573704010",3"0005402212262320", %000000000 =@0003108126000 - 3"0272356132665012",3"0006702654737004", %0000000000 =@0003208126500 - 3"0303051561442215",3"0004463430126605", %00000000000 =@0003308127000 - 3"0313664115752660",3"0007600336154346", %200000000000 =@0003408127500 - 3"4324641141345435",3"0001540425607437", %6400000000000 =@0003508128000 - 3"4336011371636744",3"0004070533151347", %6100000000000 =@0003608128500 - 3"4347413670206535",3"0005106662003641", %5520000000000 =@0003708129000 - 3"0361131664625026",3"0005033043640461", %2104400000000 =@0003808129500 - 3"4371360241772234",3"0002241654610575", %4525500000000 =@0003908130000 - 3"4401654312370703",3"0002712227752734", %7653020000000 =@0004008130500 - 3"0412227375067064",3"0001474675745524", %1625624000000 =@0004108131000 - 3"0422675274304701",3"0002014055337051", %2173171000000 =@0004208131500 - 3"4433454553366061",3"0004417070626663", %4632027200000 =@0004308132000 - 3"4444367706263475",3"0007522706774440", %4000435040000 =@0004408132500 - 3"4455465667740415",3"0003347470573550", %5000544250000 =@0004508133000 - 3"4467003245730520",3"0006361406732502", %6200675322000 =@0004608133500 - 3"0501060411731664",3"0005005571052122", %3364105460640 =@0004708134000 - 3"0511274514320241",3"0006207127264547", %0261126775010 =@0004808134500 - 3"4521553637404312",3"0001650755141700", %6335354574212 =@0004908135000 - 3"0532106607305374",3"0006223150372261", %0024647733254 =@0005008135500 - 3"0542530351166673",3"0007670002470735", %2032021722127 =@0005108136000 - 3"4553256443424452",3"0007646003207124", %4440426306555 =@0005208136500 - 3"4564132154331565",3"0005617404050751", %5550533770310 =@0005308137000 - 3"0575160607420123",3"0001163305063144", %1102662766373 =@0005408137500 - 3"0606414751324147",3"0007420166277775", %1323437564071 =@0005508138000 - 3"4621012014361120",3"0001732422375777", %4361034752111 =@0005608138500 - 3"0631214417455344",3"0002321127075377", %3455244144533 =@0005708139000 - 3"0641457523370635",3"0003005354714677", %2370515175662 =@0005808139500 - 3"0651773450267004",3"0005606650100057", %1066640435236 =@0005908140000 - 3"4662372362344605",3"0007150422120072", %7304410544506 =@0006008140500 - 3"4673071057035747",3"0003002526544111", %5165512675627 =@0006108141000 - 3"0703707272645341",3"0001603254275134", %0423035455175 =@0006208141500 - 3"0714671151416631",3"0004144127354363");%0527644770435 =@0006308142000 - DOUBLE VALUE ARRAY POTM 08142500 - 08143000 - ~(3"1141000000000000",3"0000000000000000", % =@0000008143500 - 3"4726047403722377",3"0007175154247457", %6655616166544 =@0006408144000 - 3"4014473510762300",3"0023514315770633", %6315541553040 =@0012808144500 - 3"0103403417361516",3"0032235253250267", %3704517643661 =@0019208145000 - 3"0172523756577347",3"0043747364335667", %3440156307756 =@0025608145500 - 3"0262014102745174",3"0055463433536324", %1053014006506 =@0032008146000 - 3"0351423057061025",3"0066761250270402", %3777752636047 =@0038408146500 - 3"4441125722256075",3"0073757717235176", %5234420343164 =@0044808147000 - 3"0527061464053523",3"0100164434331431", %2561245705013 =@0051208147500 - 3"4615310177342265",3"0115474537630672", %7473770141554 =@0057608148000 - 3"0704060636744362",3"0125124721622671", %1262127057024 =@0064008148500 - 3"4773070652155207",3"0137074016271665", %5207710607022 =@0070408149000 - 3"4062271771625063",3"0152002464306621", %5177450026246 =@0076808149500 - 3"0151627122640561",3"0165346774161061", %0506313263060 =@0083208150000 - 3"4241272171262634",3"0173653557514160", %5215416216354 =@0089608150500 - 3"0331022323162501",3"0205135477216203", %1245320571711 =@0096008151000 - 3"0416227316541500",3"0215650301354503", %2364507430552 =@0102408151500 - 3"0504620511515514",3"0225724603203653", %0555750424133 =@0108808152000 - 3"0573504063603007",3"0230356777015603", %0655471421103 =@0115208152500 - 3"0662605010657142",3"0245363441540115", %3421137501315 =@0121608153000 - 3"0752061310601672",3"0257025566260413", %3631527002756 =@0128008153500 - 3"0041457313355310",3"0276331702015753", %3773670162764 =@0134408154000 - 3"4131153323315222",3"0306736070051361", %5040437573377 =@0140808154500 - 3"4217264213744524",3"0311675660467444", %4154541753113 =@0147208155000 - 3"4305453406516634",3"0326235176210225", %7260732301656 =@0153608155500 - 3"0374174156441746",3"0333645413752311", %0303470002531 =@0160008156000 - 3"4463162072241271",3"0341737734347416", %7422224407341 =@0166408156500 - 3"0552345400577533",3"0356011231622714", %1525032050036 =@0172808157000 - 3"0641670156730222",3"0362225342141324", %0160746354415 =@0179208157500 - 3"4731323261527331",3"0372522515457463", %6343655705733 =@0185608158000 - 3"4021045371360351",3"0413414001145703", %5702156731116 =@0192008158500 - 3"4106413245605716",3"0426047563137443", %5242020310123 =@0198408159000 - 3"0174750547327342",3"0434752736224723", %2243161451531 =@0204808159500 - 3"4263606774750311",3"0446764211226705", %4547637466166 =@0211208160000 - 3"4352667652055261",3"0454023267541401", %7377467717610 =@0217608160500 - 3"4442127774503364",3"0463742052221706", %4122154367526 =@0224008161000 - 3"0531514561003110",3"0471751001571765", %0310004020172 =@0230408161500 - 3"4621201540275231",3"0506473330776521", %5366506221123 =@0236808162000 - 3"0707473511634104",3"0517004116002775", %1152751023607 =@0243208162500 - 3"4775622261444010",3"0521205705141406", %7655434075660 =@0249608163000 - 3"4064312252460020",3"0542417412313577", %5502311046401 =@0256008163500 - 3"0153255351072377",3"0556751574341722", %1215026472552 =@0262408164000 - 3"4242422450716472",3"0565704017717023", %6360057144043 =@0268808164500 - 3"4331732353517622",3"0577535625522740", %5134162537656 =@0275208165000 - 3"0421355270251523",3"0603662737142310", %0207247354427 =@0281608165500 - 3"0511071176733572",3"0613704412666424", %2133176163115 =@0288008166000 - 3"0576603323156425",3"0623433740626150", %0550153112134 =@0294408166500 - 3"0665103732441040",3"0630015131727227", %3211033421651 =@0300808167000 - 3"0753714225644566",3"0641055324257642", %0430466411545 =@0307208167500 - 3"4042754362757206",3"0667221753325314", %7312430336457 =@0313608168000 - 3"4132177767210373",3"0670275217323337", %7025527435203 =@0320008168500 - 3"0221553062356341",3"0707214653450062", %3447603463570 =@0326408169000 - 3"0311230607367652",3"0716463771052416", %1546004325010 =@0332808169500 - 3"0377707704136465",3"0723164760756106", %3250540305734 =@0339208170000 - 3"4465774701726534",3"0732463541673204", %4732427535727 =@0345608170500 - 3"0554433204752653",3"0746747152676716", %3707123370534 =@0352008171000 - 3"0643352734424257",3"0756237637571265", %2043073016410 =@0358408171500 - 3"0732501217041756",3"0762617070716002", %2726527630323 =@0364808172000 - 3"0021775736715436",3"1005415273205562", %1025012750314 =@0371208172500 - 3"4111410235752271",3"1011076017302041", %6734200515373 =@0377608173000 - 3"0201115560167157",3"1025614475554304", %3513554047640 =@0384008173500 - 3"4266777643636764",3"1030310431025755", %4146654653371 =@0390408174000 - 3"0355242335310112",3"1046512350074012", %0066765167472 =@0396808174500 - 3"4444024052516417",3"1051111675276213");%4500576335227 =@0403208175000 - DOUBLE VALUE ARRAY POTH 08175500 - 08176000 - ~(3"1141000000000000",3"0000000000000000", % =@0000008176500 - 3"4533043005100212",3"1064202274654451", %4052376002244 =@0409608177000 - 3"4431132435035057",3"2157536204320307", %6050444301372 =@0819208177500 - 3"0323470676540576",3"3242655607106551", %3574104722476 =@1228808178000 - 3"0221305102507076",3"4331314016653042", %3341046467066 =@1638408178500 - 3"4114177702444352",3"5423212615565017", %4553563624050 =@2048008179000 - 3"4011502433123006",3"6513114751647704", %4507464541024 =@2457608179500 - 3"4705000563145240",3"7575774067453713");%5601112567747 =@2867208180000 - 08180500 - COMMENT SKELETON PARAMETER QUEUE ENTRIES FOR COMPILER 08247000 - FILES.; 08248000 -SAVE ARRAY COMPILERCODEFILE ~ ( 08249000 - 4"000003000008", 4"010104C3D6C4C500"), 08250000 - COMPILERCARDFILE ~ ( 08251000 - 4"000003000008", 4"010104C3C1D9C400"), 08252000 - COMPILERCARDEXTERNAL ~ ( 08253000 - 4"000005000015", 4"010112000000", 0, 0, 0); 08254000 -QUEUE STANDARDQUEUE (PREVIOUSSTANDARD, NEXTSTANDARD); 09000000 - VALUE PREVIOUSSTANDARD, NEXTSTANDARD; 09001000 - REFERENCE PREVIOUSSTANDARD, NEXTSTANDARD; 09002000 - COMMENT STANDARDQUEUE EXISTS ONLY TO ESTABLISH THE LOCATION OF ITS09003000 - ITEMS FOR USE BY QUEUEING ALGORITHMS THAT DEAL WITH QUEUES09004000 - THAT ARE ORDERED ON A FIRST IN - FIRST OUT BASIS.; 09005000 - USING LOCKED; 09006000 - INTEGER PBLOK %PRESENCE BIT LOCK 10000000 - , GROSSLOK % LOCK ON INTERRUPTS 10001000 - , PROCESSCHANGELOCK 10002000 - ; 10003000 - DEFINE SETOVERFLOWFF = ; # 10004000 - ; 10005000 - REAL MULTIPLEREFERENCELOK %FOR PRESENCE BIT 10006000 - ; 10007000 -REAL MONITORLOCK; % MONITOR 10008000 -REAL MONITORVALUE = (0,8), 10009000 - MONITORMASK = (0,9); 10010000 -FIELD MONMASKF = 19:10, MONVALF =9:10; 10011000 -DEFINE JACKBIT =2# 10012000 - ,RAJBIT =4# 10013000 - ,DONBIT = 8# 10014000 - ,BOBBIT =16# 10015000 - ,STEVEBIT = 32# 10015100 - ,MIKEBIT = 64# 10015200 - ,GLOBALSTOP = STOP (PDR, PIR)# 10015990 - ; 10016000 -COMMENT THE FOLLOWING DEFINES SPECIFY VALUES OF 10017000 - PARAMETERS TO PROCEDURES SUCH AS KILLME, 10018000 - NOTYETCODED AND ARITHMETICFAULT 10019000 - ; 10020000 - DEFINE DZ = 1# )"DIVIDE BY ZERO "(10021000 - EO = 2# )"EXPONENT OVERFLOW "(10022000 - EU = 3# )"EXPONENT UNDERFLOW "(10023000 - II = 4# )"INVALID INDEX "(10024000 - IO = 5# )"INTEGER OVERFLOW "(10025000 - GCAINTERRUPT = 6# )"FIRST UNASSIGNED MPX INT"(10026000 - STACKOVER = 7# )"STACK OVERFLOW "(10027000 - SYLLABLEDEPENDENT2 = 8# )"COMPROMISED SYLLABLE DEP"(10028000 - BLOWUP = 9# )"BASE FOR ALARM INTERRUPT"(10029000 - LOOP = 10# )" "(10030000 - MEMPARITY = 11# )" "(10031000 - MPXPARITY = 12# )" "(10032000 - INVALIDADDRESS = 13# )" "(10033000 - STACKUNDER = 14# )"STACK UNDERFLOW "(10034000 - INVALIDOPCODE = 15# )"CODE NOT VALID OPERATOR "(10035000 - MEMPROTECT = 16# )" "(10036000 - INVALIDOP = 17# )"OPERATION ILLEGAL "(10037000 - SEQERROR = 18# )"SEQUENCE ERROR "(10038000 - ML1 = 19# )"INTERUPT ON MULTI-LINE 1"(10039000 - ML2 = 20# )"INTERUPT ON MULTI-LINE 2"(10040000 - ML3 = 21# )" "(10041000 - ML4 = 22# )" "(10042000 - EXTMPX = 23# )"EXTERNAL MPX "(10043000 - UA2 = 24# )"SECND UNASSIGNED MPX INT"(10044000 - UA3 = 25# )"THIRD UNASSIGNED MPX INT"(10045000 - UA4 = 26# )"FORTH UNASSIGNED MPX INT"(10046000 - MACHINEERROR = 27# )"HOPEFULLY "(10047000 - PRTOPR = 28# )"PROCESSOR TO PROCESSOR "(10048000 - STACKBOTTOM = 29# )"BOTTOM OF STACK INT "(10049000 - EVENTLISTERR = 30 # %ERROR IN EVENTIST 10050000 - , INTERRUPTDEC = 31 # %ERROR IN INTERRUPT DEC 10051000 - 10052000 - , GROSSLOCK = 64 # % TEMPORARY GROSSLOK STOP 10053000 - ; 10054000 -COMMENT FOLLOWING ARE THE VARIOUS VALUES OF THE TAG FIELD; 10055000 - DEFINE SINGL = 0 #, 10056000 - IRW = 1 #, 10057000 - DOUBL = 2 #, 10058000 - MEMLINK = 3 #, 10059000 - CODE = 3 #, 10060000 - SEGDESC = 3 #, 10061000 - MSCW = 3 #, 10062000 - TOS = 3 #, 10063000 - RCW = 3 #, 10064000 - DATADESC = 5 #, 10065000 - STRINGDESC = 5#, 10066000 - UNITAL = 6 #, 10067000 - PCW = 7 # 10068000 - ; 10069000 - 10070000 - DEFINE SINGLE = SINGL# 10071000 - ; 10072000 - FIELD FULLWORD = 47:48 10073000 - ; 10074000 - LAYOUT DATADESCRIPTOR ( TAG ~ DATADESC 10075000 - , PBITF = 47:1 %PRESENCE BIT 10076000 - , CBITF = 46:1 %COPY BIT 10077000 - , IBITF = 45:1 %INDEXED BIT 10078000 - , SBITF = 44:1 %SEGMENT BIT 10079000 - , RBITF = 43:1 %READ ONLY BIT 10080000 - , NUF =42:2:=0 %MUST BE ZERO 10081000 - , DBITF = 40:1 %DOUBLE PREC. BIT 10082000 - , LENTHINDEXF=39:20 %LENGTH/INDEX FLD 10083000 - , ADDRESSF = 19:20 %ADDRESS FIELD 10084000 - ) 10085000 - , REFERENCED ( PBITF 10086000 - , IBITF 10086100 - , LENTHINDEXF 10087000 - , ADDRESSF 10088000 - ) 10089000 - , DESCADDRESS ( ADDRESSF 10090000 - ) 10091000 - , STRINGDESCRIPTOR ( TAG ~ STRINGDESC 10092000 - , PBITF 10093000 - , CBITF 10094000 - , IBITF ~ 0 10095000 - , SBITF 10096000 - , RBITF 10097000 - , SZF = 42:3 %CHARACTER SIZE 10098000 - , LENGTHSTF = 39:20 %LENGTH FIELD 10099000 - , ADDRESSF 10100000 - ) 10101000 - , INDEXEDSTRINGDESCRIPTOR(TAG ~ STRINGDESC 10102000 - , PBITF 10103000 - , CBITF 10104000 - , IBITF ~ 1 10105000 - , SBITF 10106000 - , RBITF 10107000 - , SZF 10108000 - , BYTEF = 39:4 %BYTE FILED 10109000 - , INDEXSTF = 35:16 %INDEX FILED 10110000 - , ADDRESSF 10111000 - ) 10112000 - , SEGMENTDESCRIPTOR( TAG ~ SEGDESC 10113000 - , PBITF 10114000 - , CBITF 10115000 - , DICTIONARYF = 45:1 10116000 - , LOCKBITF = 44:1 10117000 - , LENGTHSEGF 10118000 - , ADDRESSF 10119000 - , SVBITF =19:1 %SAVE BIT FIELD 10120000 - ) 10121000 - , SETTAG ( TAG 10122000 - ) 10123000 - ; 10124000 - DEFINE LENGTHF = LENTHINDEXF #%)CONVENIENT 10125000 - , INDEXF = LENTHINDEXF #%)NOMENCLATUR10126000 - , EBCDIC = 4 # %CHARACTER SIZE AS 10127000 - , BCL = 3 # %PER SZF FIELD IN 10128000 - , DIGIT = 2 # %STRING DESCRIPTOR 10129000 - , TAGZOT(X) = (X) & SETTAG(SINGL) # 10130000 - , DESCRIPTORLOCK =(MOM.DESCRIPTORLOCKF 10130100 - =7 AND KIND = DATADESC) # 10130200 - ; 10131000 - FIELD OLAYTYPEF = 18:1 10132000 - 10133000 - , FILETYPEF = 18:1 10134000 - , MCPF = 19:1 10135000 - , AITINDICATORF = 17:1 10136000 - , ADDRESF = 16:17 10137000 - , DESCRIPTORLOCKF = 19:3 10137100 - , MCPCODEF =19:2 10138000 - ; 10139000 - LAYOUT NOTPRESENTARRAYDESCL( 10139050 - PCBITSF = 47:2 ~0 10139100 - , LENGTHF 10139150 - , MCPCODEF 10139200 - , AITINDICATORF 10139300 - , ADDRESF 10139350 - ), 10139400 - ARRAYDESCL ( 10139430 - PCBITSF ~ 2 10139450 - , LENGTHF 10139500 - , ADDRESSF 10139550 - ); 10139600 -COMMENT FOLLOWING IS THE FORMAT OF THE NORMAL AND STUFFED IRWS; 10140000 - LAYOUT NORMALIRW ( TAG ~ IRW 10141000 - , EBITF = 46:1 ~ 0 % E BIT 10142000 - , ADRCPLF = 13:14 10143000 - ) 10144000 - , STUFFEDIRW ( TAG ~ IRW 10145000 - , EBITF ~ 1 10146000 - , STKNRF = 45:10 10147000 - , DISPF = 33:66 %OF MKST10148000 - , SIRWDELTAF = 12:13 %DELTA 10149000 - ) 10150000 - , MARKSTACKCW( TAG ~ MSCW 10151000 - , DSBITF =47:1 10152000 - , EBITF 10153000 - , STKNRF, 10154000 - , VBITF = 19:1 10155000 - , LLF = 18:5 10156000 - , DFF = 13:14 10157000 - ) 10158000 - , MARKSTACKWD( TAG ~ MSCW 10159000 - , DSBITF 10160000 - , EBITF 10161000 - ,STKNRF 10162000 - , DISPFMS = 35:16 10163000 - , VBITF 10164000 - , LLF 10165000 - , DFF 10166000 - ) 10167000 - , RETURNCONTROLWORD (TAG ~ RCW 10168000 - , STKNRF 10169000 - , PSRF =35:3 10170000 - , PIRF = 32:13 10171000 - , NCSFF= 19:1 10172000 - , LLF 10173000 - , SDIF = 13:14 10174000 - ) 10175000 - , POINTTOIOCB ( LOCKBITF 10176000 - , ADDRESSF 10177000 - ) 10178000 - ; 10179000 -COMMENT FOLLOWING IS FORMAT OF TOS CONTROL WORD; 10180000 - LAYOUT TOSCW ( TAG ~ TOS 10181000 - , SGNFFF = 47:1 10182000 - , OFFFF = 46:1 10183000 - , TFFFF = 45:1 10184000 - , FLTFF = 44:1 10185000 - , DSF = 39:20 10186000 - , NCSFF 10187000 - , LLF 10188000 - , DF = 13:14 10189000 - ) 10190000 - ; 10191000 -COMMENT FOLLOWING IS THE FORMAT OF THE FIRST WORD OF AN EVENT; 10192000 - LAYOUT FIRSTEVENTWORD(TAG~DOUBL 10193000 - ,COUNTF = 47:27 10194000 - , WAITQHEADF= 18:10 % HEAD WAITQ 10195000 - , WAITQTAILF= 22:10 % TAIL WAITQ 10196000 - , AVAILABLEBITF= 2:1 10197000 - , HAPPENEDBITF = 1:1 10198000 - , EVENTLOCKBITF= 0:1 10199000 - ) 10200000 - ; 10201000 - FIELD EVENTLINKSF = 22:20 10202000 - ; 10203000 - LAYOUT LOKMOM(LOCKBITF,DESCRIPTORLOCKF) 10204000 - , FIXDESC(PBITF,LOCKBITF,ADDRESSF) 10205000 - , SETCOPYBIT(CBITF) 10206000 - ; 10207000 - SAVE 10208000 - REAL ARRAY SOFTWAREINTERRUPTMASK[32]%EACH BIT INDICATES WHETHER 10209000 - %THERE ARE ANY SOFTWARE 10210000 - %INTERRUPTS FOR THE CORRES- 10211000 - %PONDING STACK 10212000 - ; 10213000 - 10214000 - FIELD ENABLEBITF = 46:1 10215000 - , MOD32F = 4:5 10216000 - , DIV32F = 9:5 10217000 - , MOD64F = 5:6 10217010 - , DIV64F = 9:4 10217020 - , D0DISPF = 12:13 10217100 - , D2DISPF = 11:12 10217200 - , D4DISPF = 10:11 10217300 - , D8DISPF = 9:10 10217400 - , D16DISPF = 8:9 10217500 - , D0D1SEGBIT= 13:1 10217600 - , REALSDIF = 12:13 10217700 - ; 10218000 - DEFINE MYCOURSEWORD = 20 # 10219000 - , CODEFILEDESC=1# 10220000 - , OLAYFILEDESC=2# 10221000 - ; 10222000 - 10223000 - 10224000 - REAL COUNTFORTIMERINTERRUPTEVENT 10225000 - , NUMBEROFPROCESSORS 10226000 - ; 10227000 - BOOLEAN MORETHANONEPROCESSOR 10228000 - ; 10229000 - DEFINE IFTHEREISASOFTWAREINTERRUPT = 10230000 - IF BOOLEAN (SOFTWAREINTERRUPTMASK 10231000 - [MYSNR.DIV32F].MOD32F)# 10232000 - , MYCOURSE = STACK[MYSNR,MYCOURSEWORD] # 10233000 - , MYDIVIDEBYZERO(X) = KILLME(WHICH) # 10234000 - , MYEXPONENTUNDERFLOW(X) = KILLME(WHICH) # 10235000 - , MYEXPONENTOVERFLOW(X) = KILLME(WHICH) # 10236000 - , MYINVALIDINDEX(X) = KILLME(WHICH) # 10237000 - , MYINTEGEROVERFLOW(X) = KILLME(WHICH) # 10238000 - ; 10239000 - REAL CORESIZE = (0,6) 10240000 - , SOFTWAREINTERRUPTLOCK= (0,17) 10241000 - , INDEPENDENTRUNNERSTACKS 10242000 - ; 10243000 - SAVE REFERENCE ARRAY 10244000 - SHEETVECTOR = (0,16) [* ] 10245000 - ; 10246000 - SAVE WORD ARRAY 10247000 - SHEETARRAY = SHEETVECTOR[*,*] 10248000 - ; 10249000 - SAVE REAL ARRAY 10250000 - SHEETREALS = SHEETVECTOR[*,*] 10250200 - ; 10251000 -COMMENT THE FOLLOWING ILLUSTRATE THE METHOD OF ACCESSIN REGISTERS; 10252000 - DEFINE D = REGISTERS # , 10253000 - D0 = D[0] #, 10254000 - D1 = D[1] #, 10255000 - D2 = D[2] #, 10256000 - D3 = D[3] #, 10257000 - D4 = D[4] #, 10258000 - D5 = D[5] #, 10259000 - D6 = D[6] #, 10260000 - D7 = D[7] #, 10261000 - D8 = D[8] #, 10262000 - D9 = D[9] #, 10263000 - D10 = D[10]#, 10264000 - D11 = D[11]#, 10265000 - D12 = D[12]#, 10266000 - D13 = D[13]#, 10267000 - D14 = D[14]#, 10268000 - D15 = D[15]#, 10269000 - D16 = D[16]#, 10270000 - D17 = D[17]#, 10271000 - D18 = D[18]#, 10272000 - D19 = D[19]#, 10273000 - D20 = D[20]#, 10274000 - D21 = D[21]#, 10275000 - D22 = D[22]#, 10276000 - D23 = D[23]#, 10277000 - D24 = D[24]#, 10278000 - D25 = D[25]#, 10279000 - D26 = D[26]#, 10280000 - D27 = D[27]#, 10281000 - D28 = D[28]#, 10282000 - D29 = D[29]#, 10283000 - D30 = D[30]#, 10284000 - D31 = D[31]#, 10285000 - IRSR(X) = REGISTERS[X+32]#, 10286000 - PIR = REGISTERS[32]#, 10287000 - SIR = REGISTERS[33]#, 10288000 - DIR = REGISTERS[34]#, 10289000 - TIR = REGISTERS[35]#, 10290000 - LOSR = REGISTERS[36]#, 10291000 - BOSR = REGISTERS[37]#, 10292000 - F = REGISTERS[38]#, 10293000 - BRSR(X) = REGISTERS[X+48] #, 10294000 - PBR = REGISTERS[48]#, 10295000 - SBR = REGISTERS[49]#, 10296000 - DBR = REGISTERS[50]#, 10297000 - TBR = REGISTERS[51]#, 10298000 - S = REGISTERS[52]#, 10299000 - SNR = REGISTERS[53]#, 10300000 - PDR = REGISTERS[54]# 10301000 - ; 10302000 - DEFINE OLAYROWLENTH = 180 # 10303000 - , CODEROWLENTH = 180 # 10304000 - ; 10305000 - DEFINE UPTOYOU =0# )"THE MCP DOES AS IT PLEASES "(10306000 - FINISH =1# )"THE MCP MUST D-ES ME "(10307000 - CARRYON =3# )"THE MCP MUST IGNORE INTERRUPT "(10308000 - TELLME =4# )"THE MCP MUST SET SOME FLAGS "(10309000 - SELECT =5# )"ACCESS PCW APPROPRIATE TO INTERUPT"(10310000 - FAULTROUTINE =6# 10311000 - ; 10312000 - DEFINE DISABLEOVERLAY = ;# % DUMMY DECLARATION 10313000 - , ENABLEOVERLAY = ;# % DUMMY DECLARATION 10314000 - ; 10315000 - PROCEDURE HANDLETHESOFTWAREINTERRUPT;; 10316000 -COMMENT THIs IS A DUMMY PROCEDURE; 10317000 - QUEUE SOFTWAREINTERRUPTQ(Y);REAL Y; 10318000 -COMMENT THIS IS A DUMMY DECLARATION; 10319000 - USING 10320000 - TO INSERT,ENTRY ~ENTRY 10321000 - ; 10322000 - DEFINE SETINTERVALTIMER = TIMER(100)#; 10323000 -SAVE PROCEDURE KILLME(KILLVALUE); VALUE KILLVALUE; REAL KILLVALUE; 10324000 - BEGIN 10325000 - MONITOR JACKMONITOR(KILLVALUE); 10326000 - LAYOUT KILLLAYOUT (39:16, 19:20); 10326100 - KILLVALUE~KILLVALUE; 10327000 - STOP (0&KILLLAYOUT (KILLVALUE, PDR), PIR); 10328000 - IF NOT SIMULATING THEN MEMDUMP(0,0); 10328100 - STOP(4"93C838E049E4",4"038038E491C0"); 10328200 - END KILLME; 10329000 - PROCEDURE MYFAULT(W); WORD W;; %DUMMY DEC 10330000 -LAYOUT FIRSTPOINTERWORDL 10982000 - (TOTALINFOWORDSF= 47:16 10983000 - ,INFOINDEXF = 31: 8 10984000 - ,INFOLENGTHF = 23: 8 10985000 - ,INFOTYPEF = 15: 9 10986000 - ,ALFALENGTHF = 6: 7 10987000 - ,KEYFIELDF = 15:16 10988000 - ); 10989000 - COMMENT DEFINES FOR INFOTYPEF AS USED IN PARAMETER QUEUE10990000 - ALGORITHMS. VALUES SHOULD BE GREATER THAN 128 10991000 - AND LESS THAN 511.; 10992000 -DEFINE FILETYPEP = 129#, 10993000 - ENDOFPTYPE= 511#; 10994000 -DEFINE UPDATEWORDCOUNT(NEWWORDS, ENTRY) = 10995000 - REPLACE POINTERTOID@(ENTRY) 10996000 - BY (REAL(POINTERTOID@(ENTRY) , 6) & 10997000 - FIRSTPOINTERWORDL(NEWWORDS)) 10998000 - FOR 6 #, 10999000 - UPDATEINFOINDEX (INFOI, ENTRY) = 10999900 - REPLACE POINTERTOID@(ENTRY) 10999930 - BY (REAL(POINTERTOID@(ENTRY), 6) & 10999960 - FIRSTPOINTERWORDL(*,*,INFOI))FOR 6 ;#;10999990 -COMMENT STORAGE ALLOCATION VARIABLES ***********; 11000000 -INTEGER PREVADDR, COMMENT THE ABSOLUTE ADDRESS FOR AVAILA OF THE 11001000 - LARGEST AVAILABLE AREA NOT FOLLOWING AN OVER- 11002000 - LAYABLE AREA OF MEMORY; 11003000 - AVAILI, COMMENT THE ABSOLUTE ADDRESS OF THE FIRST 11004000 - AVAILABLE LINK.; 11005000 - MINDEX, COMMENT A UTILITY MEMORY INDEX; 11006000 - MLENGTH, COMMENT A UTILITY MEMORY LENGTH; 11007000 - AVAILABLECORE, COMMENT THE AMOUNT OF PRIMARY MEMORY(FRAGMENTED 11007100 - OR OTHERWISE) THAT IS AVAILABLE AT ANY MOMENT; 11007200 - SPACEQHEAD, COMMENT THE STACK THAT CONTAINS THE SUPER 11007300 - SPACE AUTHORITY AND THE LINK TO THE STACK THAT 11007400 - HAS THE SPACE REQUEST WITH THE HIGHEST PRIORITY;11007500 - BACKALLOCATED, COMMENT ABSOLUTE ADDRESS LINKA FOR MOST 11008000 - RECENTLY ALLOCATED AREA.; 11009000 - LEFTOFF, COMMENT ABSOLUTE ADDRESS OF LINKA FOR HEAD OF 11010000 - LEFTOFF LIST.; 11011000 - STOPPER; COMMENT ABSOLUTE ADDRESS OF AVAILA FOR END OF 11012000 - AVAILABLE LIST. BIT 42:1 = 1, I.E. SIZE IS 11013000 - LARGER THAN LARGEST MEMORY POSSIBLE AND THE LINK11014000 - IS ZERO. AVAILB OF STOPPER IS ADDRESS OF LARG- 11015000 - EST AVAILABLE AREA.; 11016000 -REAL SPACELOCK; COMMENT SPACELOCK INSURES THAT ONLY ONE PROC- 11017000 - CESS AT A TIME HAS ACCESS TO MEMORY LINKS. IT 11018000 - IS THEREFORE BUZZED UPON ENTRY TO GETSPACE AND 11019000 - FORGETSPACE AND UNLOCKED BEFORE THESE PROCEDURES11020000 - ARE EXITED.; 11021000 -DEFINE FASTPLACE = BACKWARDLINKF#, 11021100 - SLOWPLACE = FORWARDLINKF #, 11021200 - RETRYCOUNT = SELFIDENTF #, 11021300 - SPACERETRY = 10#; COMMENT THE MAXIMUM NUMBER OF TIMES A 11021400 - SPACE "QUEUE" ENTRY CAN BE IGNORED BECAUSE AN 11021500 - ORDERED SIZE IS NOT ADEQUATE. THE ENTRY MUST BE11021600 - AT THE HEAD OF THE QUEUE BEFORE THE COUNTER IS 11021700 - DECREMENTED.; 11021800 -LAYOUT LINKA COMMENT THE FIRST LINK WORD OF AN IN-USE AREA; 11022000 - (TAG ~ 3, 11023000 - INUSEID = 47:1O, COMMEMT 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 - AVAILABLE = 20:1 ~ 0, 11028000 - BACKLINK = 19:20), COMMENT THE LINK TO THE LAST PREVIOUSLY11029000 - ALLOCATED AREA FOR THIS USER; 11030000 - LINKB COMMENT THE SECOND LINK WORD OF AN IN-USE AREA;11031000 - (TAG ~ 3, 11032000 - USAGE = 47:7, COMMENT THE USAGE OF THE AREA; 11033000 - ADDRTYPE = 40:1, COMMENT IS THE ADDRESS OF MOM ABSOLUTE OR11034000 - BOS RELATIVE. 1 IS BOS RELATIVE.; 11035000 - ADDRMOM = 39:20, COMMENT THE ADDRESS OF THE MOM DESCRIPT;11036000 - DISKADDR = 19:20), COMMENT THE DISK ADDRESS OF THE AREA 11037000 - DESCRIBED BY MOM. 19:1 = 1 INDICATES OVERLAY 11038000 - DISK.; 11039000 - LINKC COMMENT THE THIRD LINK WORD OF AN IN-USE AREA; 11040000 - (TAG ~ 3 11041000 - ), COMMENT THIS WORD IS RESERVED FOR EXPANSION; 11042000 - LINKZ COMMENT THE FINAL LINK WORD OF AN IN-USE AREA; 11043000 - (TAG ~ 3, 11044000 - OLAY = 47:1, COMMENT THE PERMANENT OVERLAYABLE STATE OF 11045000 - AN AREA. GETSPACE PLACES THE RESULT OF A 11046000 - LOGICAL AND OF THE OERLAY BIT OF ITS TYPE 11047000 - AND ADDRESS (OF MOM)! 0 IN THIS BIT; 11048000 - DELTAWDS = 46:5, 11049000 -FRONTLINK =43:20, COMMENT - CHECK-OUT * * * * * * * 11050000 - FRONTLINK = 41:20, COMMENT THE LINK TO THE NEXT ALLOCATED11051000 - AREA FOR THIS IN-USE ID.; 11052000 - SPACEOLAYLOCK = 21:1, COMMENT IF BIT IS ON AREA IS OVER-11053000 - LAYABLE. GETSPACE TURNS THE BIT OFF AND THE 11054000 - CALLER HAS THE RESPONSIBILITY OF EXCHANGING THE 11055000 - OLAY BIT AND THIS BIT.; 11056000 - AVAILABLE ~ 0, 11057000 - INUSELENGTHZ = 19:20), COMMENT A SELF-RELATIVE INDEX FOR 11058000 - FINDING LINKA OF THIS AREA.; 11059000 - AVAILA COMMENT THE FIRST LINK WORD OF AN AVAILABLE AREA.; 11060000 - (TAG ~ 3, 11061000 - PREOLAY = 41:1, COMMENT THE OLAY BIT OF THE PREVIOUS 11062000 - AREA; 11063000 - LENGTH = 40:20, COMMENT A SELF-RELATIVE INDEX TO AVAILZ 11064000 - OF THIS AREA. LENGTH = WORDS IN AREA + LINKSIZ;11065000 - AVAILABLE ~ 1, 11066000 - LINK = 19:20), COMMENT THE ABSOLUTE ADDRESS OF THE NEXT 11067000 - AVAILABLE AREA; 11068000 - AVAILB COMMENT THE SECOND LINK WORD OF AN AVAILABLE AREA.; 11069000 - (TAG ~ 0, 11070000 - LINKTOPREVIOUSAVAILABLEAREA = 47:48), 11071000 - AVAILZ COMMENT THE FINAL LINK WORD OF AN AVAILABLE AREA.; 11072000 - (TAG ~ 3, 11073000 - AVAILABLE ~ 1, 11074000 - LENGTHZ = 19:20), COMMENT A SELF-RELATIVE INDEX TO FIND 11075000 - AVAILA FOR THIS AREA.; 11076000 - SPACETYPE 11077000 - ( 11078000 - PRINTNOMEM = 4:1, COMMENT 1 = PRINT NO MEM MESSAGE; 11079000 - MAKEROOM = 3:1, COMMENT 1 = OVERLAY IF REQUIRED; 11080000 - SLEEPY = 2:1, COMMENT 1 = SLEEP IF MEMORY N/A; 11081000 - 11082000 - OERLAY = 0:1), COMMENT 1 = SPACE FOR OVERLAYABLE; 11083000 - LLLUARG 11084000 - (21:1, COMMENT PREVIOUS OVERLAYABILITY; 11085000 - 20:20); COMMENT SIZE; 11086000 -DEFINE INITIALIZETOZERO (ADDRESS, LENGTH) = 11087000 - REPLACE POINTER(M[ADDRESS]) BY 0 FOR LENGTH OVERWRITE#; 11088000 -FIELD AVAILKEY = 47:28; COMMENT AVAILA SORT KEY FIELD.; 11089000 -DEFINE LINKSIZE = COMMENT NUMBER OF WORDS IN MEMORY LINKS -1; 11090000 - 3#, 11091000 - LINKSIZETIMES2PLUS1 = COMMENT SIZE OF TEMPLINKS ARRAY.; 11092000 - 8#; 11093000 -DEFINE PROCSTACKSIZE = 12000000 - 512#, 12001000 - COMMENT ARBITRARY - F AND S ARE SET TO 12002000 - SOME ADDRESS IN THE SECOND HALF OF MOD 0 12003000 - UNTIL MORE PERMANENT STACKS CAN BE GOTTEN.;12004000 - 12005000 - 12006000 - COMMENT THEN NUMBER OF WORDS IN A SHEET ENTRY 12007000 - AND THE NUMBER OF WORDS THAT ARE RESERVED AT THE12008000 - BOTTOM OF A PROCESSES LOWEST LEVEL STACK. ;12009000 - STACKOFLOWSIZE = 12010000 - 64 #, 12011000 - COMMENT THE NUMBER OF WORDS THAT ARE RESERVED 12012000 - ABOVE LOSR TO HANDLE STACK OVERFLOWS. ;12013000 - STACKSPERMODULE = 12014000 - 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 - INTEGER MAXSTACKS; COMMENT THE MAXIMUM INDEX FOR THE 12019000 - STACK VECTOR.; 12020000 -SAVE WORD ARRAY TEMPLINKS [LINKSIZETIMES2PLUS1]; 12021000 - COMMENT RESERVES SPACE IN LEVEL 0 12022000 - STACK FOR FIRST AVAILABLE 12023000 - AND STOPPER LINKS; 12024000 -ARRAY MEMMODS [64]; COMMENT DURING MEMORY INITIALIZATION EACH12025000 - WORD CONTAINS A ONE IF THE CORRESPONDING 12026000 - MODULE IS PRESENT. AFTER MISSING MODS ARE 12027000 - ACCOUNTED FOR THE ELEMENTS ARE AVAILABLE TO12028000 - BE DEFINED AS VARIOUS LOCAL INITIALIZE 12029000 - VARIABLES. AFTER INITIALIZE THE AREA IS 12030000 - FORGOTTEN AND THE STACK CELL IS AVAILABLE 12031000 - FOR A PERMANENT GLOBAL.; 12032000 -INTEGER PROCSTACKSTART = MEMMODS; 12033000 -WORD PROCSTACKSTARTW= MEMMODS;COMMENT ONLY WAY TO OVERWRITE DESC.;12034000 -REAL SLAVEQUARTERS, COMMENT USED TO LOCK ALL PROCESSORS EX- 12035000 - CEPT THE ONE THAT LOCKS IT UNTIL INITIAL- 12036000 - IZATION HAS THE SITUATION SOMEWHAT UNDER 12037000 - CONTROL; 12038000 - TIMEOUT, COMMENT CONTAINS SOME VALUE OF THE TIME- 12039000 - OF-DAY CLOCK + AN INCREMENT OF TIME THAT IS12040000 - SUFFICIENT TO ALLOW ALL EXPECTED PROCESSORS12041000 - TO GET THEIR STACKS IN TEMPORARY ORDER.; 12042000 - MEMMAX, COMMENT THE MAXIMUM AMOUNT OF AVAILABLE 12043000 - MEMORY.; 12044000 - SAVE1ADDRESS, COMMENT THE ADDRESS OF MEMORY AREA THAT 12045000 - CONTAINS INITIALIZATION CODE AND IS TO BE 12046000 - FORGOTTEN AFTER INITIALIZATION. STACK CELL12047000 - IS AVAILABLE AFTER INITIALIZATION.; 12048000 - PROCMASK = NUMBEROFPROCESSORS; 12049000 - COMMENT A ONE BIT IN THIS WORD IDENTIFIES12050000 - AN AVAILABLE PROCESSOR, THE BITS POSITION 12051000 - IS THE PROCESSOR ID.; 12052000 -BOOLEAN INITSWITCH; COMMENT USED TO CHANGE MPX INTERRUPT TO 12053000 - PTPI INTERRUPT IN INITIALIZE AND 12054000 - TO TELL STORAGE ALLOCATION WHEN A 12054500 - PERMANENT LEFTOFF HEAD IS READY.; 12055000 -LAYOUT SEGTRACEL (STKNRF~1, PIRF, ADDRESSF); 12055500 - SAVE REAL PROCEDURE SEGTRACE(SEGTRACTER);% 12055600 - VALUE SEGTRACTER; REAL SEGTRACTER;% 12055610 - BEGIN 12055620 - IF NOT SIMULATING THEN RETURN(0);% 12055625 - SEGTRACE~REGISTERS[60]; 12055630 - REGISTERS[60]~SEGTRACTER; 12055640 - END SEGTRACE; 12055650 -SAVE INTEGER PROCEDURE TRACE (TRACTER); 12056000 - VALUE TRACTER; 12057000 - INTEGER TRACTER; 12058000 - BEGIN 12059000 - IF NOT SIMULATING THEN RETURN(0);% 12059100 - TRACE ~ REGISTERS [64]; 12060000 - REGISTERS [64] ~ TRACTER; 12061000 - END TRACE; 12062000 - COMMENT THE ARRAYS BETWEEN "UNIT" AND 13000000 - "TRANSACTION" ARE INITIALIZED TO MAXI-13001000 - MUM NUMBER OF UNITS ON A GIVEN SYSTEM 13002000 - BY THE CALL: 13003000 - INITIALIZEARRAY(UNIT,TRANSACTION,MAXU)13004000 - IN THE INITIALIZE PROCEDURE. THIS 13005000 - SERIES OF ARRAY DECLARATIONS SERVES TO13006000 - ILLUSTRATE THE METHOD FOR THE DECLAR- 13007000 - ATION AND INITIALIZATION OF A NUMBER 13008000 - (ONE OR MORE) ARRAYS TO THE SAME SIZE.13009000 - ALL ARRAYS INITIALIZED THIS MANNER 13010000 - ARE PLACED IN HIGH CONTIGUOUS MEMORY 13011000 - AND MARKED AS NON-OVERLAYABLE. TO ADD13012000 - ANOTHER ARRAY THAT IS TO HAVE A LENGTH13013000 - OF MAXU, IT IS ONLY NECESSARY TO DE- 13014000 - CLARE THE ARRAY BETWEEN "UNIT" AND 13015000 - "TRANSACTION". (ALSO SEE DECLARATION &13016000 - PROCEDURE CALL FOR "OLDSTATUSWORD"). 13017000 - 13018000 - FROM THE FOREGOING IT SHOULD BE 13019000 - APPARENT THAT: 13020000 - 1. ARRAYS THAT ARE TO BE INITIALIZED13021000 - TO THE SAME LENGTH SHOULD BE DE- 13022000 - CLARED CONTIGUOUSLY. 13023000 - 2. AT LEAST ONE PROCEDURE CALL IS 13024000 - REQUIRED FOR EACH SERIES (ONE OR 13025000 - MORE) OF ARRAYS THAT ARE TO BE 13026000 - INITIALIZED TO THE SAME LENGTH. 13027000 - 3. ALL STACKCELLS BETWEEN THE FIRST 13028000 - AND LAST ARRAY DECLARATIONS WILL 13029000 - BE INITIALIZED TO ARRAY DESCRIP- 13030000 - TORS. 13031000 - ;13032000 -INTEGER DIAGNOSTICUNIT;COMMENT THE LOGICAL UNIT NO. OF THE 13033000 - DIAGNOSTIC FILE; 13034000 -DEFINE DIAGNOSTICIOCW = 40"04004" #, % IOCW FOR PRINTER-BCL SNG SPACE 13037100 - DIAGNOSTICUNITTYPE = BUFFPRINTER#; %UNIT TYPE FOR MONITOR UNIT 13037200 -SAVE WORD ARRAY DIAGNOSTICARRAY[22]; %BUFFER AND IOCW FOR MONITOR 13037300 -ARRAY MONITER[*]; %DESCRIPTOR TO I/O AREA OF ABOVE 13037400 -EVENT MONITORFINISH; %MONITOR I/O FINISH EVENT 13037500 -REAL DCPSANDGCAS; 13037600 -BOOLEAN MULTIPLEXORMASK; % A ONE BIT "N" MEANS THERE IS AN MPX-N 13037700 -ARRAY UNIT[ * ]; COMMENT CONTAINS INFORMATION OF EACH UNITS CURRENT 13038000 - STATE; 13039000 -REFERENCE ARRAY LASTIO [*]; 13040000 -ARRAY UINFO[*], % DESCRIPTORS FOR NON-DISK UNITS WHICH ARE 13041000 - % READY. THE DESCRIPTORS POINT TO A "LABEL 13042000 - % BLOCK" WHICH HAS THE SAME FORM AS A "LABEL- 13043000 - % EQUATION BLOCK" (LEB) (SEE 24000000 FOR THE 13044000 - % FORMAT OF THE LEB). 13045000 - 13046000 - IOTIME [*], COMMENT ARRAY FOR RECORDING USERS IO TIME; 13047000 - TRANSACTION[*], COMMENT FOR RECORDING RECORD TRANSACTIONS; 13048000 - DUMMYAREA[1]; % FOR MAKING I/O REQUEST 13050000 -WORD ARRAY UINFOW = UINFO[*]; 13050100 -ARRAY UINFOP = UINFO[*,*]; 13050200 -WORD ARRAY UINFOPW=UINFOW[*,*]; 13050210 -BOOLEAN OPTIONS;% OPTIONS BIT WORD 13051000 - DEFINE% OPTIONS 13051100 - RETTOG = OPTIONS.BIT47#,% 13051200 - 13052000 - ENDOPTDEF=0#;% 13054000 -COMMENT 13054990 -SCREEN IS INITIALIZED BY PERIPHERALINITIALIZE--SHOULD BE DYNAMIC;13055000 -ARRAY SCREEN[*];% 13055010 -% GLOBALS FOR OUTPUTMESS AND MESSER 13056000 -LAYOUT WHOCALLSL (WHOF=47:24,WHICHF=11:12,WHATF=23:12);% 13056100 -DEFINE% FOR OUTPUTMESS AMD MESSER 13057000 - BEGFINMSG = 0#,% 13057100 - BEGFOUTMSG = BEGFINMSG + FINSZ#,% 13057200 - BEGMATHERR = BEGFOUTMSG + FOUTSZ#,% 13057300 - BEGSTATMSG = BEGMATHERR + MATHERRSZ#,% 13057400 - BEGMCPID = BEGSTATMSG + STATSZ#,% 13057500 - BEGIOERR = BEGMCPID + MCPIDSZ#, 13057510 - BEGSTDIOERR =BEGIOERR + IOERRSZ#,% 13057520 - BEGMISCMSG= BEGSTDIOERR + STDIOERRSZ#,% 13057530 - FINSZ = 6#,% 13057600 - FOUTSZ = 4#,% 13057700 - MATHERRSZ = 30#,% 13057800 - STATSZ = 11#,% 13057900 - MCPIDSZ = 4#,% 13058000 - IOERRSZ = 5#,% 13058010 - STDIOERRSZ = 18#,% 13058020 - MISCSZ= 2#,% 13058030 - FINMSGSEC= 0#,% 13058100 - FOUTMSGSEC= 1#,% 13058200 - MATHERRMSGSEC= 2#,% 13058300 - STATMSGSEC= 3#,% 13058400 - MCPIDSEC= 4#,% 13058500 - IOERRSEC=5#,% 13058600 - STDIOERRSEC=6#,% 13058700 - MISCMSGSEC= 7#,% 13058710 - OPMINDXR(N) = CASE N OF (% 13059000 - BEGFINMSG,BEGFOUTMSG,BEGMATHERR,% 13059010 - BEGSTATMSG,% 13059020 - BEGMCPID,% 13059030 - BEGIOERR,% 13059040 - BEGSTDIOERR,% 13059050 - 13059050 - BEGMISCMSG,% 13059060 - 0)#,% 13059090 - IOERRMESSL(A,B,C)=MESSER(0&WHOCALLSL(5,A,B),C)#, 13059800 - BOJMESSER(SNR)= MESSER(0&WHOCALLSL(MISCMSGSEC),SNR)#,% 13059810 - EOJMESSER(SNR)= MESSER(1&WHOCALLSL(MISCMSGSEC),SNR)#,% 13059820 - ENDOPMDEF=0#; % 13059990 - ARRAY% **** "SCAN" DOES NOT LIKE READ ONLY ARRAYS 13060000 - OUTPUTMESS~(% ALL MESSAGES USED BY MESSER 13065000 - 8"NO FILE"4"00"% **** FINDINPUT MSG**13066000 - 8"UNMATCHED GENEALOGY"4"00"% * 13066100 - 8"DUP FIL"4"00"% * 13067000 - ,% END FIND-INPUT MSG** 13068000 - 8"REQUIRED"4"00" 8"NEW PBT ON"4"00"% FIND-OUTPUT MSG### 13069000 - ,% END FIND-OUTPUT MSG### 13070000 - 8"ALGAMA"4"00" 8"ALOG"4"00" 8"ALOG10"4"00"%MATH ERRORS*** 13071000 - 8"ARCOS"4"00" 8"ARSIN"4"00" 8"ATAN"4"00" % * 13072000 - 8"ATAN2"4"00" 8"COS"4"00" 8"COSH"4"00" 8"COTAN"4"00"% * 13073000 - 8"ERF"4"00" 8"EXP"4"00" 8"GAMMA"4"00" 8"SIN"4"00"% * 13074000 - 8"SINH"4"00" 8"SQRT"4"00" 8"TAN"4"00" 8"TANH"4"00"% * 13075000 - 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"% * 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 - 8"PARITY RW/L"4"00"% S 13081300 - 8"RET"4"00"% S 13081500 - 8"MCP PBT ON"4"00"% S 13081700 - ,% END STATUS MESSAGES SSSS 13081990 - 8"B6500 MCP"% **** BEGINNING MCP ID ******* 13082000 - 8" LEVEL "% * 13082200 - 8"0"% LEVEL NUMBER * 13082200 - 8"."% * 13082300 - 8"0"% PATCH NUMBER WITHIN LEVEL * 13082400 - 4"00",% **** END MCPID ******* 13082500 - 8"FILE OPEN"4"00" % I/O ERRORS 13082600 - 8"FILE ATTRIBUTE"4"00" 13082700 - , % END I/O ERRORS 13082800 - 8"DESCRIPTOR ERROR"4"00" % STD I/O ERRORS 13082900 - 8"INVALID MEM ADDRESS"4"00"% 13083000 - 8"I/O MEMORY PARITY"4"00"% 13083100 - 8"MEMORY PROTECT ERROR"4"00"% 13083200 - 8"UNIT READ CHECK"4"00"% 13083300 - 8"WRITE LOCK-OUT"4"00"% 13083400 - , % END STD I/O ERRORS 13084000 - 8"BOJ"4"00"% BEGIN MISCELLANEOUS MESSAGES MMM 13085000 - 8"EOJ"4"00"% M 13085100 - ,% 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", 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"), 13120030 - PIE~( 8"3.1415926535897932384626433832795028841971693993751058" 13120100 - 8"209749445923078164062862089986280348253421170679821480" 13120110 - 8"865132823066470938446095505822317253594081284811174502" 13120120 - 8"841027019385211055596446229489549303819644288109756659" 13120130 - 8"334461284756482337867831652712019091456485669234603486" 13120140 - 8"104543266482133936072602491412737245870066063155881748" 13120150 - 8"815209209628292540917153643678925903600113305305488204" 13120160 - 8"665213841469519415116094330572703657595919530921861173" 13120170 - 8"819326117931051185480744623799627495673518857527248912" 13120180 - 8"279381830119491298336733624406566430860213949463952247" 13120190 - 8"371907021798609437027705392171762931767523846748148676" 13120200 - 8"694051320005681271452635608277857713427577896091736371" 13120210 - 8"787214684409012249534301465495853710507922796892589235" 13120220 - 8"420199561121209219608640344181598136297747713099605187" 13120230 - 8"072113499999983729780499510597317328160963185950244594" 13120240 - 8"553469083026425223082533446850352619311881710100031378" 13120250 - 8"387528865875332083814206171776691473035982534904287554" 13120260 - 8"6873115956286388235378759375195778185778 5321712268066"), 13120270 - DICA~(8"MIXSCHJOB PERPCD DIREXP "),% 13124000 - DICB~(% 13125000 - 8"TISTXSES"% PREFIX, NO SUFFIX 13125100 - 8"DSRMOKILFMULOUFROFUSAXPR"% PREFIX, NO SUFFIX--VALID REPLIES 13125200 - 8"OLRYPGPBSVRWCL"% SUFFIX, NO PREFIX 13125300 - 8"TRDRRDSFSOROTC"% SUFFIX, NO PREFIX 13125400 - 8"LORNTO"% NO PREFIX, SUFFIX OPTIONAL 13125500 - 8"TFWTWDWMPIEILE"% NO PREFIX, NO SUFFIX 13125600 - ),% 13125900 - MNEMONIC~(8" DKSCODPRPPLPLP CRCPCP MTMTMT ",% BE SURE THESE13131000 - 8" MT");% ARE CONTIGUOUS 13132000 -ARRAY 13133000 - MNEMTOUNIT [*],% USED TO OBTAIN PHYS. UNIT NO. FROM UNIT MNEM. 13134000 - TYPEINDX[*];% USED TO OBTAIN INDEX INTO MNEMTOUNIT OF LOWEST 13135000 -% NUMBERED UNIT OF TYPE I. 13136000 - COMMENT THE ARRAYS DICA THROUGH TYPEINDX WILL BE CONVERTED TO 13137000 - EBCDIC STRING DESCRIPTORS IN PERIPHERALINITIALIZE. CARE SHOULD BE 13138000 - USED WHEN ADDING DECLARATIONS INBETWEEN AND WHEN USING THE 13139000 - DESCRIPTORS, SINCE ALL INDEXING WILL BE BY CHARACTERS; 13140000 -ARRAY DATE ~(8"1969182TUESDAY, JULY 1, 1969"4"00",0);% 13140100 -REAL TODAYSDATE~69182; 13140110 -DEFINE FORMATTEDDATEPOINTER = POINTER(DATE,8) + 7 #; 13140150 -ARRAY TIME[1];% 13140200 -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#,3 MAXIMUM # READALABELS 13143010 - STATOPM(N)= N&WHOCALLSL(STATMSGSEC)#,% 13143020 - NOTREADYMSG(U)= MESSER(STATOPM(0),U)#,% 13143030 - UFUMSG(U)= MESSER(STATOPM(1),U)#,% 13143040 - PARITYRWLMSG(U)=MESSER(STATOPM(2),U)#,% 13143050 - RETMSG(U)= MESSER(STATOPM(3),U)#,% 13143060 - PBTONMSG(U)= MESSER(STATOPM(4),U)#,% 13143070 -ENDSTATDEF=0#;% 13143990 -FIELD RF = 6:6; % READALABEL CONTROL FIELD (0:1-LOCK)13144000 -REAL PRGT; % PURGIT PROCESS CONTROL WORD 13145000 -FIELD 13146000 - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13147000 - % UNIT TABLE %13148000 - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13149000 - UNITTYPE = 47:5, 13150000 - UNITTYPECNTRF =42:8,% ORDINAL # OF UNIT WITHIN TYPE 13150100 - UERRORSTATUSBITS = 34:14,COMMENT COMBINED FIELD FOR ERROR 13151000 - AND STATUS BITS; 13152000 - UNITERRORFIELD = 30:5, % UNIT ERROR COUNT (USED BY IOFINISH) 13154000 - UNITSTATUS =25:5 , COMMENT FIELD INDICATING UNIT STATE-AS13155000 - UNITREADY,UNITERROR,UNITBUSY ETC; 13156000 - UNITNOTREADY=25:1, COMMENT 1- NOT READY 13157000 - 0- READY; 13158000 - UNITERROR=24:1 , COMMENT IF SET(=1),ERROR ON UNIT; 13159000 - UCHANWAITORBUSY=23:3, COMMENT UNIT BUSY OR WAITING FOR A 13160000 - CHANNEL; 13161000 - UCHANWAIT=23:1, COMMENT UNIT WAITING FOR A CHANNEL; 13162000 - UNITIOBUSY=22:2, COMMENT I/O IN PROCESS & UNITBUSY; 13163000 - % 01 - AWAITING PRINTER FINISH 13164000 - IOINPROCESS=22:1, COMMENT I/O IN PROCESS; 13165000 - UNITINPROCESS=22:1, COMMENT UNIT IN PROCESS; 13166000 - UNITSTATE = 20:15, % STATE OF UNIT 13167000 - UNITRETRY =20:1, COMMENT UNIT BEING RETRIED; 13168000 - ULOCKED = 19:1, % UNIT LOCKED 13169000 - USAVED = 18:1, % UNIT SAVED 13170000 - DENSITYF = 17:3, % DISK TYPE 13171000 - USCRATCH = 14:1, % UNIT IS SCRATCH 13172000 - UNITASSIGNED = 13:1, % UNIT ASSIGNED TO A USER 13173000 - ULABELLED = 12:1, % UNIT LABELLED 13174000 - UINREWIND = 11:1, % UNIT REWINDING 13175000 - UCLOSEDNOREWIND= 10:1, % UNIT CLOSED WITH NO REWIND 13176000 - UTOBEPURGED = 9:1, % UNIT CLOSED WITH PURGE 13177000 - UWRITERING = 8:1, % WRITE RING 13178000 - UNITMPXD =5:4, COMMENT MPXDESIGNATOR FOR THE UNIT; 13179000 - UNITMPXI =1:1; COMMENT MPXINDICATOR FOR THE UNIT; 13180000 -COMMENT =0:1 RESERVED FOR UNITNOLOCK; 13181000 -LAYOUT UNITL(UNITNOTREADY,19:2,14:3,UINREWIND); 13182000 -REAL 13183000 - MAXUNIT, COMMENT MAXIMUM UNIT NO ON THE SYSTEM. UNIT13187000 - NO ASSIGNED TO PSEUDO CARD READER IS 13188000 - MAXUNIT + 1; 13189000 - MINUNIT ~ - 1; COMMENT MINIMUM UNIT ON SYSTEM; 13190000 -INTEGER MAXPSEUDOUNIT, COMMENT MAXIMUM UNIT FOR PSEUDO 13191000 - CARD READERS - IT IS EQUAL TO 13192000 - MAXUNIT + NO. OF PSEUDO CARD 13193000 - READERS; 13194000 - UBITSTABLESIZE; COMMENT SIZE = HIGHEST WHOLE NO. 13195000 - OF MAXPSEUDOUNITS/48; 13196000 -FIELD RDMEMADDR=47:20, COMMENT MEMORY ADDRESS FIELD OR RESULT DESC;13198000 - RDCHRCNT =27:3 , COMMENT CHARACTER COUNT FIELD OF R.D.; 13199000 - RDUNUMERR=24:25,% BOTH UNIT NUMBER AND ERROR FIELD. 13200000 - RDUNITNO =24:8 , COMMENT UNIT NO. FIELD IN RESULT DESC.; 13201000 - RDERROR =16:17, COMMENT RESULT DESCRIPTOR ERROR FIELD; 13202000 - RDSTNDERROR=6:7, COMMENT STANDARD ERROR FIELD OF R.D.; 13203000 - RDATTNEXCP=1:2, % ATTENTION EXCEPTION BITS 13204000 - RDEXCEPTION=0:1, % HARDWARE EXCEPTN13205000 - RDATTENTION=1:1, % SOFTWARE ATTNTN 13206000 - RDBIT432 =4:3, COMMENT UNITUSABLE BITS; 13207000 - RDBUSY =2:1, COMMENT BUSY; 13208000 - RDNOTREADY =3:1, COMMENT NOT READY; 13209000 - RDERRORBIT =4:1, COMMENT DESCRIPTOR ERROR; 13210000 - RDMEMADDRBIT =5:1, COMMENT MEMORY ADDRESS ERROR; 13211000 - RDMEMPARITY =6:1, COMMENT MEMORY PARITY ERROR; 13212000 - RDUNITERROR=15:9, COMMENT UNIT ERROR FIELD OF R. D. ; 13213000 - RDMEMACCESS =7:1, COMMENT MEMORY ACCESS ERROR; 13214000 - RDENDOFTAPE =8:1, COMMENT END OR BEGINNING OF TAPE; 13215000 - RDLOWPAPER= 8:1, % LOW PAPER 13216000 - RDWLOOREOF =9:1, COMMENT WRITE LOCK-OUT OR END OF FILE;13217000 - RDCNTRLCARD =10:1,COMMENT CONTROL CARD; 13218000 - RDINCREC = 10:1, % INCOMPLETE RECORD 13219000 - RDDENSITY = 11:2, % DENSITY IN RD AFTER TEST 13220000 - RDOVERFLOW =11:1,COMMENT EXCEED WORD COUNT; 13221000 - RDCRCCORRECT =12:1,COMMENT CRC CORRECTION; 13222000 - RDNONPRESENT =13:1,COMMENT NON-PRESENT; 13223000 - RDREWINDING =14:1,COMMENT REWINDING; 13224000 - RDBLANKTAPE =15:1,COMMENT BLANK TAPE; 13225000 - RDMEMPROTECT =16:1;COMMENT MEMORY PROTECT ERROR; 13225500 -FIELD RDDISKFILETYPEF= 11:2; 13226000 - COMMENT 1C-5 = 0 13227000 - 1A-X = 1 13228000 - 1C-3 = 2 13229000 - 1C-4 = 3; 13230000 - COMMENT 1A-X = 0 ALSO, BUT ONLY ON 101, I HOPE; 13231000 -FIELD SLCNTRDY = 15:1; COMMENT SINGLE LINE CONTROL TIMEOUT; 13232000 -FIELD CONSOLEIDF = 14:3; 13232100 -FIELD COMMENT I/O CONTROL WORD FIELDS; 13233000 - IOSTANDARDFIELD =45:10, 13234000 - IOATTENTION =45:1, 13235000 - IOREADBIT =44:1, 13236000 - IOMEMINHIBIT =43:1, 13237000 - IOMODE =42:2, 13238000 - IOTRANSLATE =42:1, 13239000 - IOFRAMESIZE =41:1, 13240000 - IOMEMPROTECT =40:1, 13241000 - IOBACKWARD =39:1, 13242000 - IOTESTBIT =38:1, 13243000 - IOTRANSFERTAG =37:1, 13244000 - IOFORCETAG =36:1, 13245000 - IOUNITFIELD =35:36; 13246000 -FIELD ADDRESS =19:20, 13247000 - USTATUSVECTORNO=11:3, COMMENT EACH VECTOR NO REPRESENTS 13248000 - READY STATUS OF 32 UNITS; 13249000 - MPXDESIGNATOR = 4:4, COMMENT MPXA(=1), MPXB(=2), ETC; 13250000 - MPXINDICATOR = 0:1, COMMENT 0 MEANS INTERROGATE ALL MPXS 13251000 - 1 MEANS INTERROGATE THE ONE 13252000 - SPECIFIED BY MPXDESIGNATOR; 13253000 - UNITNO =16:8, COMMENT NOTE-UNITNO WITH UNIT STATUS 13254000 - VECTOR NO PRECEEDING MAKES UNITNOS 13255000 - FROM 0 TO 255; 13256000 - BUFFERLENGTH =39:20, COMMENT BUFFER LENGTH IN AREA DESC.; 13257000 - SIGNBITF=46:1, 13260000 - DIV4E = 47:46,% 13260100 - MOD4F = 1:2,% 13260200 - DIV2F = 47:47,% 13260300 - MOD2F = 0:1,% 13260400 - FIRSTCHRF =47:6, COMMENT FIELD FOR FIRST CHARACTER; 13261000 - CONTROLFIELD =8:4; COMMENT CONTROL FIELD FOR VARIOUS 13262000 - SCAN IN FUNCTIONS; 13263000 -DEFINE IOCBSIZE =6#, % SIZE OF IOCB 13263100 - % INDICES OF ITEMS IN IOCB 13263200 - USERINDEX =0#, 13263300 - MISCINDEX =1#, 13263400 - AREADESCINDEX =2#, 13263500 - EVENTINDEX =3#; 13263600 -COMMENT FIELDS FOR USER WORD OF IOCB; 13264000 -FIELD IDNO =47:10, COMMENT USER IDENTIFICATION NO.; 13265000 - PRIORITYF =37:5 , COMMENT CONTAINS PRIORITY; 13266000 - UNITNOF =32:9 , COMMENT CONTAINS LOGICAL UNIT NO.; 13267000 - IOERRORRECOVERY= 23:1, % I/O RECOVEIQ09N PROCESS FOR THIS I/O13268000 - USERIOFIELD =22:10, % FIELD FOR USER I/O ACTION 13269000 - USERPARITYBIT =22:1, % PARITY ACTION TO BE TAKEN BY USER 13269200 - USEREOFORTBIT =21:1, % END OF FILE OR END OF TAPE ACTION 13269400 - USERIOFINISH =20:1, % USER I/O FINISHED 13269600 - USERSPECIALID =19:1 , % SPECIAL ACTION TO BE TAKEN 13269800 - USERIOBIT =18:1; % USER I/O 13270000 -COMMENT FIELDS FOR MISC WORD OF IOCB; 13270100 -FIELD 13270200 - WORDCOUNTF =47:20, % WORD COUNT FIELD 13270300 -COMMENT RDCHRCNT =27:3, CHARACTER COUNT FIELD; 13270400 -COMMENT RDUNITNO =24:8, UNIT NUMBER; 13270500 - IOERRORMASKFIELD =16:17; % FOR MASKING I/O ERRORS IN 13270600 - % IOFINISH 13270700 -COMMENT AFTER SUCCESSFUL IOFIMISH , IOERRORMASKFIELD CONTAINS 13270800 - ERROR FIELD (AFTER MASKING) OF RESULT DESCRIPTOR; 13270850 -COMMENT ADDITIONAL FIELDS HAVE BEEN ADDED TO USERL. PRESENT REFERENCES13270880 - TO USERL WILL NOT BE AFFECTED,FOR USING ADDITIONAL FIELDS 13270900 - NEW LAYOUT MAY BE NECESSARY; 13270950 -LAYOUT IOPATHWORD(UNITNO,MPXDESIGNATOR,MPXINDICATOR), 13271000 - COMMENT WORD USED FOR INTERROGATING I/O PATH; 13272000 - USTATUSWORD(USTATUSVECTORNO, 8:4~1,MPXDESIGNATOR,MPXINDICATOR),13273000 - COMMENT WORD USED FOR INTERROGATING PERIPHERAL 13274000 - STATUS; 13275000 - UNITINITIALIZE (UNITTYPE, UNITMPXD, UNITMPXI), 13276000 - COMMENT TO INITIALIZE UNIT TABLE; 13277000 - BINEL (47:8), 13278000 - TYPEINTERROGATE(UNITNO, 13279000 - CONTROLFIELD ~6, 13280000 - MPXDESIGNATOR, 13281000 - MPXINDICATOR), 13282000 - COMMENT TO INTERROGATE TYPE (AND PATH) AT 13283000 - INITIALIZE TIME.; 13284000 - BITL( BIT47=47:1, BIT46=46:1, BIT45=45:1, BIT44=44:1, 13285000 - BIT43=43:1, BIT42=42:1, BIT41=41:1, BIT40=40:1, 13286000 - BIT39=39:1, BIT38=38:1, BIT37=37:1, BIT36=36:1, 13287000 - BIT35=35:1, BIT34=34:1, BIT33=33:1, BIT32=32:1, 13288000 - BIT31=31:1, BIT30=30:1, BIT29=29:1, BIT28=28:1, 13289000 - BIT27=27:1, BIT26=26:1, BIT25=25:1, BIT24=24:1, 13290000 - BIT23=23:1, BIT22=22:1, BIT21=21:1, BIT20=20:1, 13291000 - BIT19=19:1, BIT18=18:1, BIT17=17:1, BIT16=16:1, 13292000 - BIT15=15:1, BIT14=14:1, BIT13=13:1, BIT12=12:1, 13293000 - BIT11=11:1, BIT10=10:1, BIT9 = 9:1, BIT8 = 8:1, 13294000 - BIT7 = 7:1, BIT6 = 6:1, BIT5 = 5:1, BIT4 = 4:1, 13295000 - BIT3 = 3:1, BIT2 = 2:1, BIT1 = 1:1, BIT0 = 0:1), 13296000 - DIVMOML(PCBITSF~0,ADDRESSF~0), 13297010 - IOL(BL=39:20,FL=19:20), 13297020 - IOLINKL(NUMRECSLNK=47:16,BCKWRDLNK=31:16,FRWRDLNK=15:16), 13297030 - SCANINWORD(CONTROLFIELD,MPXDESIGNATOR,MPXINDICATOR), 13298000 - COMMENT CONTROL WORD USED FOR VARIOUS SCAN IN FUNCTIONS; 13299000 - SCANOUTWORD(CONTROLFIELD,MPXDESIGNATOR,MPXINDICATOR), 13299100 - COMMENT SCAN OUT CONTROL WORD; 13299200 - RDLBL(PNO=19:8,PTP=11:4,UNO=7:8), % READALABL LAYOUT13300000 - IOCWDISKL(REPORTF=35:4,DECADDRF=27:28), 13301000 - COMMENT UNIT FIELD OF IOCW FOR DISK; 13302000 - IOCWPRINTERL(SKIPF=35:4,SPACEF=31:2), COMMENT FOR MAKING 13303000 - UNIT FIELD OF IOCW FOR PRINTER; 13304000 - IOCWTAPEL(FUNCTIONF=35:2,BPISPECF=33:1,BPIF=32:2, 13305000 - PARITYF=30:1,CRCSPECF=29:1,CRCTRACK=28:3), 13306000 - COMMENT FOR MAKING UNIT FIELD OF IOCW FOR TAPE; 13307000 - COMMENT TO MAKE UP A DESCRIPTOR; 13308000 - IOCWL(IOSTANDARDFIELD,IOUNITFIELD), COMMENT TO FORM IOCW; 13309000 - IOCWDETAILL(IOATTENTION,IOREADBIT,IOMODE,IOUNITFIELD), 13310000 - COMMENT FOR SETTING UP IOCW FOR DIFF. RECORDING MODE;13311000 - IOCWSPACEL(IOSTANDARDFIELD~@600,39:1,23:16) 13312000 - , COMMENT TO MAKE UP TAPE SPACE ; 13313000 - TAPEIOCWL(IOREADBIT,IOTRANSLATE,IOFRAMESIZE,33:3,PARITYF), 13313010 - PRINTIOCWL(IOREADBIT~0,IOTRANSLATE,IOFRAMESIZE,SKIPF,SPACEF), 13313020 - PPRTIOCWL(IOREADBIT,IOTRANSLATE,IOFRAMESIZE,IOMEMPROTECT, 13313030 - FUNCTIONF), 13313040 - MISCL (SIGNBITF~1,IOERRORMASKFIELD), 13314000 - IOERRORMASKL(BUFFERLENGTH,ADDRESS), 13315000 - COMMENT TO MAKE UP IOERRORMASK FOR WAITIO; 13316000 - USERL(IDNO,PRIORITYF,UNITNOF,IOERRORRECOVERY); 13317000 - COMMENT TO FORM USER WORD FOR IOCB; 13318000 -REAL 13319000 - MAXVECTORNO; COMMENT MAXIMUM VECTOR NO; 13321000 -DEFINE TIMEOFDAYWORD=96 #; COMMENT CONTROL WORD FOR SETTING & 13324000 - READING TIME OF DAY; 13325000 -DEFINE BASICCLOCKUNIT = 2.4 # % BASIC UNIT TOD CLOCK 13326000 - , ONESECOND = 416667 # % NUMBER OF BASIC UNITS13327000 - % IN ONESECOND(ACTUALLY13328000 - % IN 1.0000008 SECONDS)13329000 - 13330000 - , REARRANGETIME = 416667 # % NUMBER OF BASIC UNITS13331000 - % BETWEEN RE-ARRANGING 13332000 - % READYQ 13333000 - ; 13334000 -DEFINE COMMENT DEFINES FOR UNIT TYPES-(REF FIELD UNITTYPE); 13335000 - NOUNIT =0#, 13336000 - DISKFILE =1#, 13337000 - CONN = 2#, 13338000 - SPO = CONN#,% SPO IS HOLD-OVER FROM B5500. 13339000 - PAPERTAPERDR =4#, COMMENT PAPER TAPE READER; 13340000 - PAPERTAPEPNCH =5#, COMMENT PAPER TAPE PUNCH; 13341000 - BUFFPRINTER =6#, COMMENT LINE PRINTER I BUFFERED; 13342000 - UNBUFFPRINTER =7#, COMMENT LINE PRINTER IIUNBUFFERED; 13343000 - CARDREADER =9#, 13344000 - CARDPUNCH1 =10#, COMMENT CARD PUNCH I; 13345000 - CARDPUNCH2 =11#, COMMENT CARD PUNCH II ; 13346000 - MAGTAPE1 =13#, COMMENT MAGNETIC TAPE I(7 TRACK); 13347000 - MAGTAPE2 =14#, COMMENT MAGNETIC TAPE II (9 TRACK); 13348000 - MAGTAPE3 = 15#, COMMENT MAGNETIC TAPE III (9 TRACK); 13349000 - MAGTAPCLUSTER1= 29#,% MAGNETIC TAPE CLUSTER I (7 TRACK) 13350000 - MAGTAPCLUSTER2= 30#,% MAGNETIC TAPE CLUSTER II (9 TRACK) 13351000 - MAGTAPCLUSTER3= 31#,% MAGNETIC TAPE CLUSTER III (9 TRACK) 13352000 - MAGTAPE(TYPE) = (TYPE } 13 AND TYPE { 15 OR TYPE } 29) #; 13353000 -DEFINE MAXUNITTYPE = 31 #; 13353100 - 13354000 -DEFINE% FOR KEYIN AND ASSOCIATED PROCEDURES 13355000 - POINTTOMSGAREA= POINTER(MSGAREA[1],BYTESZ)#, 13356000 - MCP = 0#, 13357000 - KEYINQSZ = 2#, 13358000 - INVKBDSZ = 2#, 13359000 - JFACTOR = INVKBDSZ+3#, 13360000 - TI(X) = REAL(POINTER(TYPEINDX[X], *), 1) #, 13361000 - UNITBL(U1,U2) = REAL(POINTER(MNEMTOUNIT[U1+U2-1],*),1)#, 13362000 - CLEAR(P,B) = REPLACE P BY B" " FOR B WORDS#,% 13363000 - ETX = 48"03"#,% 13364000 - BLANK = 8" "#,% 13366000 - CLEARSCREEN = 48"0C0000" #, 13367000 - LINEERASE = 48"00110000"#,% 13368000 - REVERSELF = 48"00130000"#,% 13369000 - HOME = 48"3C00"#,% 13370000 - CARRETURN = 48"0D0000"#,% 13371000 - LINEFEED = 48"2500"#,% 13372000 - COLON = 8":"#,% 13373000 - EQUAAL = 8"="#,% 13374000 - AT = 8"@"#,% 13375000 - SLASH = 8"/"#,% 13376000 - PERIOD = 8"."#,% 13377000 - COMMA = 8","#,% 13377100 - QUESTION = 48"6F"#,% 13378000 - BACKSPACE = 48"1600"#,% 13379000 - NUL = 48"00"#,% 13379900 - ZERO = 8"0"#,% 13380100 - DISPLAYONMIX = DISPLAYONKEYER#, 13381000 - DISPLAYONPER = DISPLAYONKEYER#, 13382000 - DISPLAYONKEYER= SCREEN[2]#, 13383000 - DISPLAYONCON = DISPLAYONKEYER#, 13384000 - NOOFSCREENSRQD= 4#, 13385000 - MNEMLIM = 14#, 13386000 - MNEMSZ = 2#, 13387000 - BUFFS = 6#, 13388000 - CHRS = 6#, 13389000 - BYTESZ = 8#, 13390000 - RUSER(U) = 0&USERL(,,U,)#, 13391000 - RIOCW = 0&IOCWL(@440)#,% 13392000 - RERRMSK = @116001#, 13393000 - WIOCW = 0%IOCWL(#40)#,% 13394000 - WUSER(U) = 0%USERL(*,*,U,*)#, 13395000 - WERRMSK = @110001#, 13396000 - RDTIMEOUT = RDBLANKTAPE#, 13397000 - DATEIS = 8"DATE IS "#,% 13398100 - TIMEIS = 8"TIME IS "#,% 13398200 - MAXMSGSZ = 1000#, 13399000 - LINESZ = 40#,% 13400000 - SCREENSZ = 960#,% 13400100 - MAXPGS = 2#,% 13400200 - MAXLNS = 20#,% 13401000 - DICASZ = 3#, 13402000 - MAXDICA = 24#, 13403000 - DICBSZ = 2#, 13404000 - MAXDICB = 102#, 13405000 - MIN(A,B) = (IF A{B THEN A ELSE B)#, 13406000 - 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 - 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 - HAVENTSUSPENDED(S)=WORDSTACK[S,REPLYEVENTPLACE].TAG=0 OR% 13410300 - BOOLEAN(M[STACK[S,REPLYEVENTPLACE]])#, 13410302 - JOBREF(S) = WORDSTACK[S,JOBIDPLACE]#,% 13410400 - KFPSCRATCHWORDSZ= 1#,% 13428000 - LEAP(Y) = Y.MOD4F=0 AND(Y MOD 100!0 OR(Y MOD 400=0 AND 13428100 - Y MOD 4000!0))#, 13428102 - DAY = 8"DAY, "#,% 13428200 - JULDATESZ = 7#,% 13428300 - 13428400 - STARTYEARPLACE= 0#,% 13428500 - STARTDAYPLACE = 4#,% 13428600 - YEARSZ = 4#,% 13428700 - DAYSZ = 3#,% 13428800 - BASEYEAR = 1700#,% 13428900 - PERCENTAGE(X) = X DIV 10 FOR 2 DIGITS,PERIOD,% 13431000 - X MOD 10 FOR 1 DIGITS#,% 13432000 - TIMECORRFACT = 2400#,% ::= (2.4|10@6)/10@3 GIVING SECONDS 13433000 - DIV2(X) = REAL(BOOLEAN(X)AND NOT BOOLEAN(3))#,% 13433100 -DEFINEND=0#; 13434000 -DEFINE 13435000 - % FOR READALABEL AND PURGIT 13436000 - USAH = 0&USERL(,,U,)#, 13437000 - SCHANNEL = UNT.UNITTYPE=13#, 13438000 - NCHANNEL = NOT SCHANNEL#, 13439000 - ERAH(M,S) = 0&IOERRORMASKL(M,S)#, 13440000 - UNEXP = 3"377635"#, 13441000 - TAPETEST = 4#, 13442000 - TAPEPARITY=BOOLEAN(RSLT.RDMEMACCESS)AND RSLT.RDDENSITY=3#,13444000 - GETUNT = WHILE BOOLEAN(UNT~READLOCK(1,UNIT[U])) DO#, 13445000 - PUTUNT(A,B,C,D)=GETUNT;UNIT[U]~UNT&UNITL(A,B,C,D)#, 13446000 - GETOLDS = OLDSTATUS~OLDSTATUSWORD[VECTORNO]; 13447000 - % KLUDGE 13448000 - OLDSTATUSWORD[VECTORNO]~OLDSTATUS AND NOT 13449000 - BOOLEAN(BITWORD)#, 13450000 - RD432 = RDBIT432#, 13451000 - PHDR1 = PVOL1#, 13452000 - PHDR2 = PVOL1#, 13453000 - RCRDFRMT = IF TAPETYPE=1 THEN 13454000 - IF URF=6"F"THEN 0 ELSE IF URF=6"D"THEN 1 13455000 - ELSE IF URF=6"V"THEN 2 ELSE 13456000 - IF URF=6"I"THEN 4 ELSE IF URF=6"L"THEN 5 13457000 - ELSE IF URF=6"Z"THEN 6 ELSE 3 13457050 - ELSE 13458000 - IF URF=8"F"THEN 0 ELSE IF URF=8"D"THEN 1 13459000 - ELSE IF URF=8"V"THEN 2 ELSE 13460000 - IF URF=8"I"THEN 4 ELSE IF URF=8"L"THEN 5 13461000 - ELSE IF URF=8"Z"THEN 6 ELSE 3#, 13461050 - WERRORS = BOOLEAN(@260201)#; 13462000 -COMMENT DECLARATIONS FOR QUEUES OF I/O REQUESTS WAITING FOR UNIT 13463000 - ONE QUEUE FOR EACH UNIT; 13464000 -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: 13468000 - PRVSIO,NEXTIO); 13469000 - VALUE USER,MISC,AREADESC, 13470000 - PRVSIO,NEXTIO; 13471000 - REAL USER,MISC; 13472000 - EVENT EVNT; 13473000 - REFERENCE PRVSIO,NEXTIO,AREADESC; 13474000 - USING 13475000 - ALLOCATE IS REFERENCE(DUMMYIOQUE & 13476000 - ARRAYDESCL(3, 6, GETAREA(6))): 13477000 - NEXT IS NEXTIO @ FIRSTIO[INDEX]: 13478000 - TO INSERT, COMMENT QUEUE IS ARRANGED ON A FIRST COME FIRST 13479000 - BASIS; 13480000 - BEGIN 13481000 - IF LASTIOU=NULL THEN COMMENT QUEUE IS EMPTY; 13482000 - BEGIN 13483000 - LASTIOU~FIRSTIOU~ENTRY; COMMENT ENTRY IS THE ADDRESS OF 13484000 - DESC. POINTING TO DATA OF NEW 13485000 - ENTRY; 13486000 - NEXTIO@(FIRSTIOU)~PRVSIO @(FIRSTIOU)~ NULL; 13487000 - END ELSE 13488000 - BEGIN COMMENT PUT ENTRY AT TAIL OF QUEUE; 13489000 - PRVSIO @(ENTRY)~ LASTIOU; 13490000 - NEXTIO @(LASTIOU)~ENTRY; 13491000 - LASTIOU ~ENTRY; 13492000 - NEXTIO @(ENTRY)~NULL; 13493000 - END; 13494000 - END INSERTION OF ENTRY IN QUEUE: 13495000 - TO DELINK, 13496000 - BEGIN 13497000 - IF ENTRY=FIRSTIOU THEN COMMENT ENTRY IS THE TOP OF QUEUE; 13498000 - 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; 13502000 - PRVSIO @(FIRSTIOU) ~ NULL; 13503000 - END ELSE 13504000 - IF ENTRY=LASTIOU THEN COMMENT REMOVES LAST ENTRY OF QUEUE; 13505000 - BEGIN 13506000 - LASTIOU~PRVSIO @ ENTRY; 13507000 - NEXTIO @(LASTIOU)~ NULL; 13508000 - END ELSE COMMENT REMOVES ANY OTHER ENTRY; 13509000 - BEGIN 13510000 - COMMENT FIX NEXTIO POINTER IN THE UPPER LINK OF ENTRY; 13511000 - NEXTIO @(PRVSIO @ ENTRY)~ NEXTIO @ ENTRY; 13512000 - COMMENT FIX PRVSIO POINTER IN THE LOWER LINK OF ENTRY; 13513000 - PRVSIO @(NEXTIO @ ENTRY)~ PRVSIO @ ENTRY; 13514000 - END; 13515000 - END DELINKING OF ENTRY FROM OUEUE; 13516000 -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 13521000 - WAITCHANNELQUE; 13522000 -DEFINE FIRSTUNITI=FIRSTUNIT[INDEX]#, COMMENT INDEX-QUEUE HEAD INDEX; 13523000 - LASTUNITI=LASTUNIT[INDEX]#; 13524000 -QUEUE ARRAY WAITCHANNELQUE:FIRSTUNIT[1](UNTWORD:PRVSUNIT,NEXTUNIT); 13525000 - VALUE UNTWORD,PRVSUNIT,NEXTUNIT; 13526000 - REAL UNTWORD; 13527000 - REFERENCE PRVSUNIT,NEXTUNIT; 13528000 - USING 13529000 - ALLOCATE IS REFERENCE(DUMMYWAITCHANNELQUE & 13530000 - ARRAYDESCL(,3,GETAREA(3))): 13531000 - NEXT IS NEXTUNIT @ FIRSTUNIT[INDEX]: 13532000 - TO INSERT, COMMENT QUEUE IS ARRANGED ON A FIRST COME FIRST 13533000 - BASIS; 13534000 - BEGIN 13535000 - IF LASTUNITI=NULL THEN COMMENT QUEUE IS EMPTY; 13536000 - BEGIN 13537000 - LASTUNITI~FIRSTUNITI~ENTRY; COMMENT ENTRY IS THE ADDRESS 13538000 - OF DESC. POINTING TO DATA OF 13539000 - NEW ENTRY; 13540000 - NEXTUNIT @(FIRSTUNITI)~PRVSUNIT @(FIRSTUNITI) ~NULL; 13541000 - END ELSE 13542000 +?EXECUTE B65ESP/DISK 00000010140621PK +?FILE CODE=B65MCP/DISK 00000020140621PK +?DATA CARD 00000080140621PK +$ LIST SINGLE PRT DEBUG DONSBUG INFO POOL 00000090140621PK +BEGIN 00000100 +COMMENT MCP LISTING DIRECTORY 00001000 + 010000000 INDEPENDENT RUNNER FORWARD DECLARATION 00002000 + 020000000 FORWARD PROCEDURE DECLARATION 00003000 + 08000000 INITIAL VALUE TABLES 00004000 + 08000000 BCL TO EBCEDIC 00005000 + 08018000 EBCEDIC TO BCL 00006000 + 08084000 TRUTH SETS 00007000 + 08106000 POWER OF TEN TABLES 00007100 + 08247000 CONTROL CARD 00007200 + 09000000 STANDARD QUEUE DECLARATION 00008000 + 10000000 GLOBALS 00009000 + 10017000 INTERRUPT - EVENT HANDLING GLOBALS 00010000 + 10055000 TAG DEFINITION 00011000 + 10075000 CONTROL WORD LAYOUTS 00012000 + 10252000 REGISTERS DEFINITIONS 00013000 + 11000000 STORAGE ALLOCATION GLOBALS 00014000 + 12000000 INITIALIZE GLOBALS 00015000 + 13000000 INPUT - OUTPUT GLOBALS 00016000 + 13056500 VALUE ARRAYS - MCPID,KEYIN GLOSSARIES,ETC. 00016100 + 13276000 KEYIN - SPOUT GLOBALS 00017000 + 13318000 IOQUE QUEUE DECLARATION 00018000 + 13375000 WAITCHANNELQUE QUEUE DECLARATION 00019000 + 14000000 DISK MANAGEMENT 00020000 + 15000000 GETAREA - FORGET AREA GLOBALS 00021000 + 16000000 STANDARD INSERT 00022000 + 16016000 STANDARD DELINK 00023000 + 17000000 NAMEQUE QUEUE DECLARATION 00024000 + 17021000 BLOCKSOFAREAQUE QUEUE DECLARATION 00025000 + 17035000 KEYING QUEUE DECLARATION 00026000 + 18007000 FILE MANAGEMENT 00027000 + 19000000 REPLY MESSAGE 00028000 + 20000000 INDEPENDENT RUNNER GLOBALS 00029000 + 21140000 READYQ QUEUE DECLARATION 00030000 + 21263000 SHEETQ QUEUE DECLARATION 00031000 + 21357000 TERMINATEQ QUEUE DECLARATION 00032000 + 23000000 DIRECTORY MANAGEMENT 00034000 + 24000000 I/0 INTRINSIC DECLARATIONS 00034100 + 30000000 GETSPACE / FORGETSPACE 00035000 + 31000000 GETAREA / FORGETAREA 00036000 + 32000000 INITIALIZE 00037000 + 33000000 HARDWAREINTERRUPT 00038000 + 33167000 PRESENCEBIT 00039000 + 33538000 WHATDOIDO 00040000 + 33567000 EVENTHANDLER 00041000 + 33763000 SOFTWAREINTERRUPTDEC 00042000 + 33855000 HOLD 00043000 + 33890000 HOLDINITIALIZE 00044000 + 33961000 GETINDEPENDENTRUNNERSTACK 00045000 + 33960000 INDEPENDENTRUNNER 00046000 + 34051000 RUN 00047000 + 34086000 LOADFIXDIRSTACK 00048000 + 38000000 CONTROL CARD 00048600 + 40000000 INPUT - OUTPUT ROUNTINES 00049000 + 40005000 STARTIO 00050000 + 40037000 INITIATEIO 00051000 + 40075000 IOREQUEST 00052000 + 40089000 WAITIO 00053000 + 40131000 NEWIO 00054000 + 40154000 IOFINISH 00055000 + 40316000 STATUS 00056000 + 40565000 DISKIO 00057000 + 40597000 DISKWAIT 00058000 + 44022000 DISPLAY ROUTINES 00059000 + 44097000 KEYIN 00060000 + 44176000 SPOUT 00061000 + 50000000 ERROR ROUTINES 00062000 + 50000000 IOERROR 00063000 + 55000000 DISK MANAGEMENT 00064000 + 55018000 FORGETESPDISK 00066000 + 55039000 GETUSERDISK 00067000 + 55123000 FORGETUSERDISK 00068000 + 58000000 LIBRARY MAINTENANCE 00068900 + 59000000 PERIPHERALINITIALIZE 00069000 + 60000000 PROGRAM INTRINSICS 00070000 + 65000000 ARRAYDEC 00071000 + 65174000 BLOCKEXIT 00072000 + 65228000 GOTOSOLVER 00073000 + 70000000 PROGRAM INPUT- OUTPUT INTRINSICS 00074000 + 80000000 SELECTION - PROCESS HANDLING 00075000 + 80361000 INITIATE 00076000 + 80519000 SELECTION 00077000 + 80600000 TERMINATE 00077200 + 99000000 MONITOR 00078000 + 99970000 MCP OUTER BLOCK 00079000 + ; 00999999 +COMMENT FOLLOWING ARE FORWARD DECLARATIONS FOR PROCEDURES CAPABLE OF 01000000 + RUNNING AS INDEPENDENT RUNNERS. THE FORWARD DECLARATION FOR 01001000 + A NEW INDEPENDENT RUNNER MUST APPEAR BEFORE THAT FOR STATUS IF 01001500 + IT IS CAPAPABLE OF MULTIPLE REPRESENTATION. AN INDICATOR MAY. 01002000 + BE ASSOCIATED WITH AN INDEPENDENT RUNNER (SEE CROSS FEFERENCE 01002500 + FOR "TERMINATE" AND "TERMINATEINDICATOR" FOR HOW THIS IS 01003000 + EFFECTED). THIS INDICATOR ISNOT NECESSARY TO THE 01003500 + IMPLEMENTATION, HOWEVER IT IS NECESSARY IF INDEPENDENTRUNNER IS01004000 + 01004300 + TO RECOGNISE THE NEW RUNNER AS A SPECIAL CASE 01004500 + 01004600 + ; 01005000 +PROCEDURE CONTROLCARD (PARAMETER); 01006000 + WORD PARAMETER; FORWARD; 01007100 +PROCEDURE READALABEL(LINFO);VALUE LINFO;REAL LINFO;FORWARD; 01007105 +PROCEDURE PURGIT(U);VALUE U;REAL U;FORWARD; 01007107 +PROCEDURE DIRECTORYCOMPLEMENT(ROW); ARRAY ROW[*]; FORWARD; 01007200 + PROCEDURE IRTEST(IND); INTEGER IND; FORWARD; 01008000 + PROCEDURE INITIATE (DUMMY); REAL DUMMY; FORWARD; 01008200 + PROCEDURE IOERROR(RD); REAL RD; FORWARD; 01008500 + 01009000 + PROCEDURE STATUS (COUNT); INTEGER COUNT; FORWARD; 01009100 +PROCEDURE KEYIN(COUNT); REAL COUNT; FORWARD; 01009110 +PROCEDURE CONNSOUL(COUNT); REAL COUNT; FORWARD;% 01010000 + PROCEDURE TERMINATE (PARAMETER); REAL PARAMETER ; FORWARD; 01011000 +COMMENT: FOR THOSE OF YOU WHO DON"T KNOW SO, TERMINATE MUST BE THE 01011100 + LAST INDEPENDENTRUNNER DECLARED IN THIS FORWARD LIST. 01011200 + ONE WRITES "FORK(, )" TO START ONE OF 01011300 + THESE GUYS UP; 01011400 + PROCEDURE WHATDOIDO; FORWARD; 02000000 + PROCEDURE INDEPENDENTRUNNER(INDEX,PAR);VALUE INDEX,PAR;REAL INDEX; 02001000 + WORD PAR; FORWARD; 02002000 + PROCEDURE LOADFIXEDIRSTACK(STACKNO);VALUE STACKNO;INTEGER STACKNO; 02003000 + FORWARD; 02004000 +SAVE INTEGER PROCEDURE TRACE = (0,19) ( TRACTER ) ; 02005000 + VALUE TRACTER; INTEGER TRACTER; FORWARD; 02006000 +SAVE REAL PROCEDURE GETSPACE (SIZE, WHOFOR, TYPE, ADDRESS); 02007000 + VALUE SIZE, WHOFOR, TYPE, ADDRESS; 02008000 + INTEGER SIZE, WHOFOR, TYPE; 02009000 + REAL ADDRESS; FORWARD; 02010000 +SAVE INTEGER PROCEDURE FORGETSPACE (ADDRESS); 02011000 + VALUE ADDRESS; INTEGER ADDRESS; FORWARD; 02012000 +SAVE PROCEDURE OVERLAY (ADDRESS); VALUE ADDRESS;INTEGER ADDRESS;FORWARD;02013000 +REAL PROCEDURE DIRECTORYSEARCH(POINT, CODE, LLOCK); 02016100 + VALUE POINT, CODE, LLOCK; 02016200 + POINTER POINT; 02016300 + REAL CODE; 02016400 + BOOLEAN LLOCK; FORWARD; 02016500 +SAVE PROCEDURE IOFINISH(MPXINDEX); VALUE MPXINDEX; 02017000 + INTEGER MPXINDEX; FORWARD; 02018000 +PROCEDURE FINISHOFFIO(IOCB); VALUE IOCB; REFERENCE IOCB; FORWARD;02019000 +PROCEDURE FINISHOFFIO(IOCB); VALUE IOCB; REFERENCE IOCB; ; COMMENT * * ;02020000 +SAVE 02020998 + PROCEDURE SPOUT(IOCB,U);VALUE IOCB,U;REAL U;REFERENCE IOCB;FORWARD; 02021000 +PROCEDURE MESSER(W,INFO);VALUE W,INFO;REAL W;WORD INFO;FORWARD;% 02021100 + PROCEDURE MIXPRINT(BUF);ARRAY BUF[*]; FORWARD;% 02022000 +BOOLEAN PROCEDURE JULIT(P);POINTER P; FORWARD; 02022300 +PROCEDURE DATIT(P); POINTER P; FORWARD;% 02022400 + REAL PROCEDURE CURRENTTIME; FORWARD; 02022500 + PROCEDURE CHANLOUT(I,BUFF);VALUE I;REAL I;ARRAY BUFF[*];FORWARD; 02022600 +SAVE PROCEDURE CONNQUEST(UNIT); VALUE UNIT; REAL UNIT; FORWARD; 02023000 +SAVE PROCEDURE UNEXPIOERROR(IOCB,IOERRORMASK); 02024000 + VALUE IOCB,IOERRORMASK; 02025000 + REFERENCE IOCB; 02026000 +REAL IOERRORMASK; ; COMMENT * * * * * * * * ** ; 02027000 +SAVE REAL PROCEDURE WAITIO(AREA, USER, IOMASK); 02030000 + VALUE USER, IOMASK; 02031000 + ARRAY AREA[*]; 02032000 + REAL USER, IOMASK; 02033000 + FORWARD; 02034000 +SAVE PROCEDURE IOREQUEST(IOCB);VALUE IOCB;REFERENCE IOCB;FORWARD; 02034100 +SAVE REFERENCE PROCEDURE DISKIO(CORE,INDEX,SIZE,DISK,MASK,DISKIOEVNT); 02035000 + VALUE INDEX,SIZE,DISK,MASK; 02036000 + INTEGER INDEX,SIZE,DISK,MASK; 02037000 + ARRAY CORE [*]; 02038000 + EVENT DISKIOEVNT ; FORWARD; 02039000 +SAVE PROCEDURE DISKWAIT(CORE,INDEX,SIZE,DISK,MASK); 02040000 + VALUE INDEX,SIZE,DISK,MASK; 02041000 + INTEGER INDEX,SIZE,DISK,MASK; 02042000 + ARRAY CORE[*]; 02043000 + FORWARD; 02044000 + PROCEDURE HARDWAREINTERRUPT(P1,P2); VALUE P1,P2; 02045000 + INTEGER P1; WORD P2; FORWARD; 02046000 +WORD HARDWAREINTERRUPTPCW = HARDWAREINTERRUPT; 02046100 +WORD D03 = (0, 3); 02046200 +SAVE PROCEDURE HOLDINITIALISE; FORWARD; 02047000 +SAVE PROCEDURE PERIPHERALINITIALIZE; FORWARD; 02048000 +REAL MCPDISKBASE = PERIPHERALINITIALIZE; COMMENT ADDRESS OF MCP DISK; 02049000 +SAVE PROCEDURE INITIALIZE(P1, P2); 02050000 + VALUE P1; 02051000 + INTEGER P1; 02052000 + WORD P2; FORWARD; 02053000 +REAL MAXCHANNELS = INITIALIZE; COMMENT THE NUMBER OF MULTIPLEXORS; 02054000 +BOOLEAN MAXMPX = MAXCHANNELS; 02055000 +WORD INITIALIZEPCW = INITIALIZE; 02055100 +SAVE INTEGER PROCEDURE GETAREA(SIZE); VALUE SIZE; INTEGER SIZE; FORWARD;02057000 +SAVE PROCEDURE FORGETAREA(SIZE,ADDRESS); VALUE SIZE,ADDRESS; 02058000 + INTEGER SIZE,ADDRESS; FORWARD; 02059000 +PROCEDURE UPDATEUNITBITSTABLE(TABLENAME,U); VALUE U; 02060000 + INTEGER U; 02061000 +BOOLEAN ARRAY TABLENAME[*]; FORWARD; 02062000 +PROCEDURE EVENTHANDLER = (0,15) (THEEVENT,EVENTWORD1,WAITFLAG); 02063000 + VALUE EVENTWORD1,WAITFLAG; 02064000 + WORD THEEVENT,EVENTWORD1; 02065000 + BOOLEAN WAITFLAG; FORWARD; 02066000 +WORD PROCEDURE SOFTWAREINTERRUPTDEC = (0,14) (THEEVENT,EVENTWORD1, 02067000 + EVENTWORD2,KLUDGE,PCWPOINTER); 02068000 + VALUE EVENTWORD1,EVENTWORD2,PCWPOINTER,KLUDGE; 02069000 + WORD THEEVENT,EVENTWORD1,EVENTWORD2,PCWPOINTER,KLUDGE; 02070000 + FORWARD; 02071000 +DEFINE INTERLOCK = EVENT # 02071100 + , PROCURE(LOCK) = GAOLER(LOCK, FALSE) # 02071200 + , LIBERATE(LOCK) = GAOLER(LOCK, TRUE) # 02071300 + ; 02071400 +PROCEDURE GAOLER = (0,18) (E,U); VALUE U; EVENT E; BOOLEAN U; FORWARD; 02071500 +SAVE WORD PROCEDURE DOPEVECTOR(MOM); 02072000 + VALUE MOM; 02073000 + WORD MOM; FORWARD; 02074000 +SAVE PROCEDURE ARRAYDEC =(0,7) (NOOFDIMS,NOOFARRAYS,TYPE); 02075000 + VALUE NOOFDIMS,NOOFARRAYS,TYPE; 02076000 + INTEGER NOOFDIMS,NOOFARRAYS,TYPE; FORWARD; 02077000 +SAVE PROCEDURE DUMMYFORCUTTINGSTACK; ; 02077100 +WORD DUMMYFORCUTTINGSTACKPCW=DUMMYFORCUTTINGSTACK; 02077200 +SAVE WORD PROCEDURE SIM1TOR(A,V); VALUE A, V; REAL A; WORD V; 02078000 + BEGIN 02079000 + INTEGER T; 02080000 + T ~REGISTERS [63]; 02081000 + SIM1TOR ~ V; 02082000 + END; 02083000 +SAVE PROCEDURE MEMDUMP = (0,20) (I,J);VALUE I,J;REAL I,J;FORWARD; 02083100 +WORD PROCEDURE JACKMONITOR (A, V); VALUE A, V; REAL A; WORD V; 02084000 + FORWARD; 02085000 +WORD PROCEDURE RAJMONITOR (A, V); VALUE A, V; REAL A; WORD V; 02086000 + FORWARD; 02087000 +WORD PROCEDURE BOBMONITOR (A, V); VALUE A, V; REAL A; WORD V; 02088000 + FORWARD; 02089000 +WORD PROCEDURE DONMONITOR (A, V); VALUE A, V; REAL A; WORD V; FORWARD; 02090000 +WORD PROCEDURE STEVEMONITOR(A,V);VALUE A,V;REAL A;WORD V; FORWARD; 02090100 +WORD PROCEDURE MIKEMONITOR(A,V); VALUE A,V; REAL A; WORD V; FORWARD; 02090200 +REAL PROCEDURE GETUSERDISK(SEGMENTS, SPEED); 02091000 + VALUE SEGMENTS, SPEED; 02092000 + REAL SEGMENTS, SPEED; FORWARD; 02093000 +PROCEDURE FORGETUSERDISK(DKADDR, SEGMENTS); 02094000 + VALUE DKADDR, SEGMENTS; 02095000 + REAL DKADDR, SEGMENTS; FORWARD; 02095500 +REAL PROCEDURE NOUSERDISK(SEGMENTS, SPEED); 02095600 + VALUE SEGMENTS, SPEED; 02095700 + REAL SEGMENTS, SPEED; FORWARD; 02095800 +SAVE PROCEDURE BLOCKEXIT = (0,10); FORWARD; 02096000 +PROCEDURE FORGETDOPEVECTORS(DD); WORD ARRAY DD[*]; FORWARD; 02097000 +SAVE PROCEDURE MOMTOVECTOR (MOM, VECTOR, INDEX); 02098000 + VALUE COMMENT A COPY OR MOM DESCRIPTOR THAT IS AC- 02098100 + CEPTABLE TO PRESENCE BIT; 02098200 + COMMENT AN-UNINDEXED DESCRIPTOR THAT IS AC- 02099000 + CEPTABLE TO AN NXLN OPERATOR; 02099100 + INDEX; COMMENT THE INDEX FOR VECTOR WHERE MOM IS TO 02100000 + BE PLACED; 02100100 + WORD ARRAY MOM[*], 02100200 + VECTOR[*]; 02100300 + INTEGER INDEX; FORWARD; 02100400 +SAVE REFERENCE PROCEDURE ALLOCATEMAMEQ; FORWARD; 02101000 +SAVE BOOLEAN PROCEDURE TURNOVERLAYKEY (ADDRESSOFMOM); 02102000 + VALUE ADDRESSOFMOM; 02103000 + INTEGER ADDRESSOFMOM; FORWARD; 02104000 +SAVE PROCEDURE MAKEPRESENTANDSAVE (DATA); 02104100 + WORD ARRAY DATA [*]; FORWARD; 02104200 +PROCEDURE LIBMAIN(MFID);VALUE MFID;POINTER MFID;FORWARD; 02105000 +SAVE INTEGER PROCEDURE CONSOLIDATEANDORDER(ADDRESS); 02109000 + VALUE ADDRESS; 02110000 + INTEGER ADDRESS; FORWARD; 02111000 +PROCEDURE OPEN=(0,31)(FIB,TYPEV);VALUE TYPEV;ARRAY FIB[*];REAL TYPEV; 02111100 + FORWARD; 02111200 +PROCEDURE GOTOSOLVER = (0,11) (SIRW); VALUE SIRW; REAL SIRW; FORWARD; 02112000 +REAL PROCEDURE FINDINPUT(LEB,CODE);VALUE CODE;INTEGER CODE;ARRAY LEB[*];02112010 + FORWARD; 02112020 +SAVE 02113000 +WORD PROCEDURE MON1TOR (A, V); VALUE A, V; REAL A; WORD V; FORWARD; 02114000 +INTEGER PROCEDURE VECTORINSERT(READYINDICATOR,NEWENTRY); 02115000 + VALUE READYINDICATOR 02116000 + , NEWENTRY 02117000 + ; 02118000 + REAL READYINDICATOR 02119000 + ; 02120000 + WORD NEWENTRY 02121000 + ; FORWARD; 02122000 +PROCEDURE STACKQREARRANGE(READYINDICATOR) ; 02123000 + VALUE READYINDICATOR 02124000 + ; 02125000 + BOOLEAN READYINDICATOR 02126000 + ; FORWARD; 02127000 +PROCEDURE STACKQREMOVE (PATH,STACKINDICATOR); 02128000 + VALUE PATH 02129000 + , STACKINDICATOR 02130000 + ; 02131000 + REAL PATH 02132000 + ; 02133000 + INTEGER STACKINDICATOR 02134000 + ; FORWARD; 02135000 +PROCEDURE INSERTINQUEUE (PATH,STACKINDICATOR); 02136000 + VALUE PATH 02137000 + , STACKINDICATOR 02138000 + ; 02139000 + REAL PATH 02140000 + , STACKINDICATOR 02141000 + ; FORWARD; 02142000 +INTEGER PROCEDURE GETINDEPENDENTRUNNERSTACK(STAKADRES);REAL STAKADRES; 02143000 + FORWARD; 02144000 + 02145000 + 02146000 +PROCEDURE NEXTPROCESS; FORWARD; 02147000 +INTEGER PROCEDURE NEXTINSCHEDULE; FORWARD; 02148000 + 02149000 + 02150000 + 02151000 +PROCEDURE SELECTION; FORWARD; 02152000 +PROCEDURE RUN (PARAMETER,PROCEEDURE); 02153000 + VALUE PARAMETER 02154000 + ; 02155000 + WORD PARAMETER 02156000 + ; 02157000 + PROCEDURE PROCEEDURE 02158000 + ; FORWARD; 02159000 +WORD RUNPCW = RUN; COMMENT USED BY INDEPENDENTRUNNER MECHANISM; 02160000 +PROCEDURE STANDARDINSERT(FIRSTENTRY,LASTENTRY,ENTRY); 02161000 + VALUE ENTRY; 02162000 + REFERENCE FIRSTENTRY,LASTENTRY,ENTRY; FORWARD; 02163000 +PROCEDURE STANDARDDELINK(FIRSTENTRY,LASTENTRY,ENTRY); 02164000 + VALUE ENTRY; 02165000 + REFERENCE FIRSTENTRY,LASTENTRY,ENTRY; FORWARD; 02166000 +SAVE PROCEDURE QUEUEMYSTACK (AUTHORITY, REQUIRED, COUNT, MYEVENT, HEAD);02167000 + VALUE AUTHORITY, COMMENT THE SORTKEY FOR THIS OUEUE; 02168000 + REQUIRED, COMMENT AN ADDITIONAL INFORMATION WORD FOR THE 02169000 + QUEUE ENTRY; 02170000 + COUNT; COMMENT A 10 BIT COUNTER IN THE STACK LINK 02171000 + WORD FOR THIS QUEUE; 02172000 + EVENT MYEVENT; COMMENT THE LOCAL EVENT MY STACK IS TO WAIT ON;02172500 + INTEGER COUNT; 02172550 + REAL AUTHORITY, 02172600 + REQUIRED, 02172700 + HEAD ; COMMENT A GLOBAL REAL THAT CONTAINS THE BACK- 02173000 + WARD AND FORWARD LINKS FOR THE QUEUE. THE BACK 02174000 + WARD LINK POINTS TO THE ENTRY WITH THE HIGHEST 02175000 + AUTHORITY; FORWARD; 02176000 +PROCEDURE DELINKASTACK (WHOSE, HEAD); 02177000 + VALUE WHOSE; 02178000 + INTEGER WHOSE; COMMENT THE AUTHORITY TYPE STACK TO DELINK; 02179000 + REAL HEAD ; COMMENT THE HEAD OF THE AUTHORITY TYPE STACK; 02180000 + FORWARD; 02181000 +PROCEDURE PARAMETERINSERT (FIRSTPARAM, LASTPARAM, ENTRY); 02182000 + VALUE ENTRY; 02183000 + REFERENCE FIRSTPARAM, LASTPARAM, ENTRY; FORWARD; 02184000 +BOOLEAN SIMULATING = (0,12); % TRUE FOR SIMULATOR RUN 02560000 + VALUE ARRAY BCLTOEBC = (0,33) ~ ( 08000000 + 4"F0F1F2F3" 08001000 + , 4"F4F5F6F7" 08002000 + , 4"F8F97B7C" 08003000 + , 4"6F7A6E69" 08004000 + , 4"4EC1C2C3" 08005000 + , 4"C4C5C6C7" 08006000 + , 4"C8C94B70" 08007000 + , 4"504D4C48" 08008000 + , 4"00D1D2D3" 08009000 + , 4"D4D5D6D7" 08010000 + , 4"D8D95B5C" 08011000 + , 4"605D5E49" 08012000 + , 4"4061E2E3" 08013000 + , 4"E4E5E6E7" 08014000 + , 4"E8E96B6C" 08015000 + , 4"597E6A7F" 08016000 + ); 08017000 + VALUE ARRAY EBCTOBCL = (0,34) ~ ( 08018000 + 4"0C0C0C0C" 08019000 + , 4"0C0C0C0C" 08020000 + , 4"0C0C0C0C" 08021000 + , 4"0C0C0C0C" 08022000 + , 4"0C0C0C0C" 08023000 + , 4"0C0C0C0C" 08024000 + , 4"0C0C0C0C" 08025000 + , 4"0C0C0C0C" 08026000 + , 4"0C0C0C0C" 08027000 + , 4"0C0C0C0C" 08028000 + , 4"0C0C0C0C" 08029000 + , 4"0C0C0C0C" 08030000 + , 4"0C0C0C0C" 08031000 + , 4"0C0C0C0C" 08032000 + , 4"0C0C0C0C" 08033000 + , 4"0C0C0C0C" 08034000 + , 4"300C0C0C" 08035000 + , 4"0C0C0C0C" 08036000 + , 4"1F2F0C1A" 08037000 + , 4"1E1D100C" 08038000 + , 4"1C0C0C0C" 08039000 + , 4"0C0C0C0C" 08040000 + , 4"0C3C0C2A" 08041000 + , 4"2B202E0C" 08042000 + , 4"2C310C0C" 08043000 + , 4"0C0C0C0C" 08044000 + , 4"0C0F3E3A" 08045000 + , 4"3B0C0E0C" 08046000 + , 4"1B0C0C0C" 08047000 + , 4"0C0C0C0C" 08048000 + , 4"0C0C0D0A" 08049000 + , 4"0B0C3D3F" 08050000 + , 4"0C0C0C0C" 08051000 + , 4"0C0C0C0C" 08052000 + , 4"0C0C0C0C" 08053000 + , 4"0C0C0C0C" 08054000 + , 4"0C0C0C0C" 08055000 + , 4"0C0C0C0C" 08056000 + , 4"0C0C0C0C" 08057000 + , 4"0C0C0C0C" 08058000 + , 4"0C0C0C0C" 08059000 + , 4"0C0C0C0C" 08060000 + , 4"0C0C0C0C" 08061000 + , 4"0C0C0C0C" 08062000 + , 4"0C0C0C0C" 08063000 + , 4"0C0C0C0C" 08064000 + , 4"0C0C0C0C" 08065000 + , 4"0C0C0C0C" 08066000 + , 4"0C111213" 08067000 + , 4"14151617" 08068000 + , 4"18190C0C" 08069000 + , 4"0C0C0C0C" 08070000 + , 4"0C212223" 08071000 + , 4"24252627" 08072000 + , 4"28290C0C" 08073000 + , 4"0C0C0C0C" 08074000 + , 4"0C0C3233" 08075000 + , 4"34353637" 08076000 + , 4"38390C0C" 08077000 + , 4"0C0C0C0C" 08078000 + , 4"00010203" 08079000 + , 4"04050607" 08080000 + , 4"08090C0C" 08081000 + , 4"0C0C0C0C" 08082000 + ); 08083000 + SAVE VALUE ARRAY FOURBITSTUFF = (0,39) ~ ( 08083100 + 4"00010203", 4"04050607", 4"08091112", 4"13141516", 08083200 + 8"0123", 8"4567", 8"89AB", 8"CDEF" ); 08083300 +DEFINE HEXTOBCL = FOURBITSTUFF[0]#, 08083400 + HEXTOEBC = FOURBITSTUFF[4]#; 08083500 + VALUE ARRAY TRUTHSETS = (0,38) ~ ( 08084000 + 6(0) % EBCDIC ALPHA-NUMERIC 08085000 + , 4"7FC07FC0" % EBCDIC ALPHA-NUMERIC 08086000 + , 4"3FC0FFC0" % EBCDIC ALPHA-NUMERIC 08087000 + , 6(0) % EBCDIC ALPHABETIC 08088000 + , 4"7FC07FC0" % EBCDIC ALPHABETIC 08089000 + , 4"3FC00000" % EBCDIC ALPHABETIC 08090000 + , 7(0) % EBCDIC NUMERIC 08091000 + , 4"0000FFC0" % EBCDIC NUMERIC 08092000 + , 4"FFC07FC0" % BCL ALPHA NUMERIC 08093000 + , 4"7FC03FC0" % BCL ALPHA NUMERIC 08094000 + , 4"00007FC0" % BCL ALPHABETIC 08095000 + , 4"7FC03FC0" % BCL ALPHABETIC 08096000 + , 4"FFC00000" % BCL NUMERIC 08097000 + , 0 % BCL NUMERIC 08098000 + , 2(0) % EBCDIC SPECIAL CHARACTERS 08098100 + , 4"803F803F" % EBCDIC SPECIAL CHARACTERS 08098200 + , 4"C03F007F" % EBCDIC SPECIAL CHARACTERS 08098300 + , 0 % EBCDIC SPECIAL CHARACTERS 08098400 + , 4"40000000" % EBCDIC SPECIAL CHARACTERS 08098500 + , 4"80008000" % EBCDIC SPECIAL CHARACTERS 08098600 + , 4"C0000000" % EBCDIC SPECIAL CHARACTERS 08098700 + ); 08099000 +DEFINE EBCDICALPHANUMERIC = TRUTHSETS[00] #, 08100000 + EBCDICALPHABETIC = TRUTHSETS[08] #, 08101000 + EBCDICNUMERIC = TRUTHSETS[16] #, 08102000 + BCLALPHANUMERIC = TRUTHSETS[24] #, 08103000 + BCLALPHABETIC = TRUTHSETS[26] #, 08104000 + BCLNUMERIC = TRUTHSETS[28]#, 08105000 + EBCDICSPECIALS = TRUTHSETS[30]#, 08105100 + ENDTRUTHSETS=0#;% 08105990 + COMMENT THESE ARE THE 6500 POWERS OF TEN TABLES. 08106000 + 10*I=POTL[I.[05:06]]|POTM[I.[11:06])|POTH[I.[14:03]]. 08106500 + THE VALUES ARE ALL DOUBLE PRECISION AND ARE ALL --TRUNCATED--. THE 08107000 + FLAG-BIT OF THE MOST-SIGNIFICANT WORD IS THE FIRST BIT DROPPED 08107500 + (FIRST BIT AFTER THE PERCENT). ALL VALUES WERE CALCULATED TO FULL 08108000 + SIGNIFICANCE (I.E., AS INTEGERS), THEN CHOPPED TO 78 BITS.; 08108500 + 08109000 + DOUBLE VALUE ARRAY POTL 08109500 + 08110000 + ~(3"1141000000000000",3"0000000000000000", % =@0000008110500 + 3"1131200000000000",3"0000000000000000", % =@0000108111000 + 3"1121440000000000",3"0000000000000000", % =@0000208111500 + 3"1111750000000000",3"0000000000000000", % =@0000308112000 + 3"1102342000000000",3"0000000000000000", % =@0000408112500 + 3"1073032400000000",3"0000000000000000", % =@0000508113000 + 3"1063641100000000",3"0000000000000000", % =@0000608113500 + 3"1054611320000000",3"0000000000000000", % =@0000708114000 + 3"1045753604000000",3"0000000000000000", % =@0000808114500 + 3"1037346545000000",3"0000000000000000", % =@0000908115000 + 3"1011124027620000",3"0000000000000000", % =@0001008115500 + 3"0001351035564000",3"0000000000000000", % =@0001108116000 + 3"0011643245121000",3"0000000000000000", % =@0001208116500 + 3"0022214116345200",3"0000000000000000", % =@0001308117000 + 3"0032657142036440",3"0000000000000000", % =@0001408117500 + 3"0043432772446150",3"0000000000000000", % =@0001308118000 + 3"0054341571157602",3"0000000000000000", % =@0001608118500 + 3"0065432127413542",3"0004000000000000", % =@0001708119000 + 3"0076740555316473",3"0001000000000000", % =@0001808119500 + 3"0111053071060221",3"0001720000000000", % =@0001908120000 + 3"0121265707274265",3"0004304000000000", % =@0002008120500 + 3"0131543271153342",3"0007365000000000", % =@0002108121000 + 3"0142074147406233",3"0005262200000000", % =@0002208121500 + 3"0152513201307702",3"0004536640000000", % =@0002308122000 + 3"0163236041571663",3"0001666410000000", %0 =@0002408122500 + 3"0174105452130240",3"0000244112000000", %00 =@0002508123000 + 3"0205126764556310",3"0000315134400000", %000 =@0002608123500 + 3"0216354561711772",3"0000400363500000", %0000 =@0002708124000 + 3"0231004771627437",3"0000450046042000", %000000 =@0002808124500 + 3"0241206170175346",3"0006562057453400", %0000000 =@0002908125000 + 3"0251447626234640",3"0004316473365100", %00000000 =@0003008125500 + 3"0261761573704010",3"0005402212262320", %000000000 =@0003108126000 + 3"0272356132665012",3"0006702654737004", %0000000000 =@0003208126500 + 3"0303051561442215",3"0004463430126605", %00000000000 =@0003308127000 + 3"0313664115752660",3"0007600336154346", %200000000000 =@0003408127500 + 3"4324641141345435",3"0001540425607437", %6400000000000 =@0003508128000 + 3"4336011371636744",3"0004070533151347", %6100000000000 =@0003608128500 + 3"4347413670206535",3"0005106662003641", %5520000000000 =@0003708129000 + 3"0361131664625026",3"0005033043640461", %2104400000000 =@0003808129500 + 3"4371360241772234",3"0002241654610575", %4525500000000 =@0003908130000 + 3"4401654312370703",3"0002712227752734", %7653020000000 =@0004008130500 + 3"0412227375067064",3"0001474675745524", %1625624000000 =@0004108131000 + 3"0422675274304701",3"0002014055337051", %2173171000000 =@0004208131500 + 3"4433454553366061",3"0004417070626663", %4632027200000 =@0004308132000 + 3"4444367706263475",3"0007522706774440", %4000435040000 =@0004408132500 + 3"4455465667740415",3"0003347470573550", %5000544250000 =@0004508133000 + 3"4467003245730520",3"0006361406732502", %6200675322000 =@0004608133500 + 3"0501060411731664",3"0005005571052122", %3364105460640 =@0004708134000 + 3"0511274514320241",3"0006207127264547", %0261126775010 =@0004808134500 + 3"4521553637404312",3"0001650755141700", %6335354574212 =@0004908135000 + 3"0532106607305374",3"0006223150372261", %0024647733254 =@0005008135500 + 3"0542530351166673",3"0007670002470735", %2032021722127 =@0005108136000 + 3"4553256443424452",3"0007646003207124", %4440426306555 =@0005208136500 + 3"4564132154331565",3"0005617404050751", %5550533770310 =@0005308137000 + 3"0575160607420123",3"0001163305063144", %1102662766373 =@0005408137500 + 3"0606414751324147",3"0007420166277775", %1323437564071 =@0005508138000 + 3"4621012014361120",3"0001732422375777", %4361034752111 =@0005608138500 + 3"0631214417455344",3"0002321127075377", %3455244144533 =@0005708139000 + 3"0641457523370635",3"0003005354714677", %2370515175662 =@0005808139500 + 3"0651773450267004",3"0005606650100057", %1066640435236 =@0005908140000 + 3"4662372362344605",3"0007150422120072", %7304410544506 =@0006008140500 + 3"4673071057035747",3"0003002526544111", %5165512675627 =@0006108141000 + 3"0703707272645341",3"0001603254275134", %0423035455175 =@0006208141500 + 3"0714671151416631",3"0004144127354363");%0527644770435 =@0006308142000 + DOUBLE VALUE ARRAY POTM 08142500 + 08143000 + ~(3"1141000000000000",3"0000000000000000", % =@0000008143500 + 3"4726047403722377",3"0007175154247457", %6655616166544 =@0006408144000 + 3"4014473510762300",3"0023514315770633", %6315541553040 =@0012808144500 + 3"0103403417361516",3"0032235253250267", %3704517643661 =@0019208145000 + 3"0172523756577347",3"0043747364335667", %3440156307756 =@0025608145500 + 3"0262014102745174",3"0055463433536324", %1053014006506 =@0032008146000 + 3"0351423057061025",3"0066761250270402", %3777752636047 =@0038408146500 + 3"4441125722256075",3"0073757717235176", %5234420343164 =@0044808147000 + 3"0527061464053523",3"0100164434331431", %2561245705013 =@0051208147500 + 3"4615310177342265",3"0115474537630672", %7473770141554 =@0057608148000 + 3"0704060636744362",3"0125124721622671", %1262127057024 =@0064008148500 + 3"4773070652155207",3"0137074016271665", %5207710607022 =@0070408149000 + 3"4062271771625063",3"0152002464306621", %5177450026246 =@0076808149500 + 3"0151627122640561",3"0165346774161061", %0506313263060 =@0083208150000 + 3"4241272171262634",3"0173653557514160", %5215416216354 =@0089608150500 + 3"0331022323162501",3"0205135477216203", %1245320571711 =@0096008151000 + 3"0416227316541500",3"0215650301354503", %2364507430552 =@0102408151500 + 3"0504620511515514",3"0225724603203653", %0555750424133 =@0108808152000 + 3"0573504063603007",3"0230356777015603", %0655471421103 =@0115208152500 + 3"0662605010657142",3"0245363441540115", %3421137501315 =@0121608153000 + 3"0752061310601672",3"0257025566260413", %3631527002756 =@0128008153500 + 3"0041457313355310",3"0276331702015753", %3773670162764 =@0134408154000 + 3"4131153323315222",3"0306736070051361", %5040437573377 =@0140808154500 + 3"4217264213744524",3"0311675660467444", %4154541753113 =@0147208155000 + 3"4305453406516634",3"0326235176210225", %7260732301656 =@0153608155500 + 3"0374174156441746",3"0333645413752311", %0303470002531 =@0160008156000 + 3"4463162072241271",3"0341737734347416", %7422224407341 =@0166408156500 + 3"0552345400577533",3"0356011231622714", %1525032050036 =@0172808157000 + 3"0641670156730222",3"0362225342141324", %0160746354415 =@0179208157500 + 3"4731323261527331",3"0372522515457463", %6343655705733 =@0185608158000 + 3"4021045371360351",3"0413414001145703", %5702156731116 =@0192008158500 + 3"4106413245605716",3"0426047563137443", %5242020310123 =@0198408159000 + 3"0174750547327342",3"0434752736224723", %2243161451531 =@0204808159500 + 3"4263606774750311",3"0446764211226705", %4547637466166 =@0211208160000 + 3"4352667652055261",3"0454023267541401", %7377467717610 =@0217608160500 + 3"4442127774503364",3"0463742052221706", %4122154367526 =@0224008161000 + 3"0531514561003110",3"0471751001571765", %0310004020172 =@0230408161500 + 3"4621201540275231",3"0506473330776521", %5366506221123 =@0236808162000 + 3"0707473511634104",3"0517004116002775", %1152751023607 =@0243208162500 + 3"4775622261444010",3"0521205705141406", %7655434075660 =@0249608163000 + 3"4064312252460020",3"0542417412313577", %5502311046401 =@0256008163500 + 3"0153255351072377",3"0556751574341722", %1215026472552 =@0262408164000 + 3"4242422450716472",3"0565704017717023", %6360057144043 =@0268808164500 + 3"4331732353517622",3"0577535625522740", %5134162537656 =@0275208165000 + 3"0421355270251523",3"0603662737142310", %0207247354427 =@0281608165500 + 3"0511071176733572",3"0613704412666424", %2133176163115 =@0288008166000 + 3"0576603323156425",3"0623433740626150", %0550153112134 =@0294408166500 + 3"0665103732441040",3"0630015131727227", %3211033421651 =@0300808167000 + 3"0753714225644566",3"0641055324257642", %0430466411545 =@0307208167500 + 3"4042754362757206",3"0667221753325314", %7312430336457 =@0313608168000 + 3"4132177767210373",3"0670275217323337", %7025527435203 =@0320008168500 + 3"0221553062356341",3"0707214653450062", %3447603463570 =@0326408169000 + 3"0311230607367652",3"0716463771052416", %1546004325010 =@0332808169500 + 3"0377707704136465",3"0723164760756106", %3250540305734 =@0339208170000 + 3"4465774701726534",3"0732463541673204", %4732427535727 =@0345608170500 + 3"0554433204752653",3"0746747152676716", %3707123370534 =@0352008171000 + 3"0643352734424257",3"0756237637571265", %2043073016410 =@0358408171500 + 3"0732501217041756",3"0762617070716002", %2726527630323 =@0364808172000 + 3"0021775736715436",3"1005415273205562", %1025012750314 =@0371208172500 + 3"4111410235752271",3"1011076017302041", %6734200515373 =@0377608173000 + 3"0201115560167157",3"1025614475554304", %3513554047640 =@0384008173500 + 3"4266777643636764",3"1030310431025755", %4146654653371 =@0390408174000 + 3"0355242335310112",3"1046512350074012", %0066765167472 =@0396808174500 + 3"4444024052516417",3"1051111675276213");%4500576335227 =@0403208175000 + DOUBLE VALUE ARRAY POTH 08175500 + 08176000 + ~(3"1141000000000000",3"0000000000000000", % =@0000008176500 + 3"4533043005100212",3"1064202274654451", %4052376002244 =@0409608177000 + 3"4431132435035057",3"2157536204320307", %6050444301372 =@0819208177500 + 3"0323470676540576",3"3242655607106551", %3574104722476 =@1228808178000 + 3"0221305102507076",3"4331314016653042", %3341046467066 =@1638408178500 + 3"4114177702444352",3"5423212615565017", %4553563624050 =@2048008179000 + 3"4011502433123006",3"6513114751647704", %4507464541024 =@2457608179500 + 3"4705000563145240",3"7575774067453713");%5601112567747 =@2867208180000 + 08180500 + COMMENT SKELETON PARAMETER QUEUE ENTRIES FOR COMPILER 08247000 + FILES.; 08248000 +SAVE ARRAY COMPILERCODEFILE ~ ( 08249000 + 4"000003000008", 4"010104C3D6C4C500"), 08250000 + COMPILERCARDFILE ~ ( 08251000 + 4"000003000008", 4"010104C3C1D9C400"), 08252000 + COMPILERCARDEXTERNAL ~ ( 08253000 + 4"000005000015", 4"010112000000", 0, 0, 0); 08254000 +QUEUE STANDARDQUEUE (PREVIOUSSTANDARD, NEXTSTANDARD); 09000000 + VALUE PREVIOUSSTANDARD, NEXTSTANDARD; 09001000 + REFERENCE PREVIOUSSTANDARD, NEXTSTANDARD; 09002000 + COMMENT STANDARDQUEUE EXISTS ONLY TO ESTABLISH THE LOCATION OF ITS09003000 + ITEMS FOR USE BY QUEUEING ALGORITHMS THAT DEAL WITH QUEUES09004000 + THAT ARE ORDERED ON A FIRST IN - FIRST OUT BASIS.; 09005000 + USING LOCKED; 09006000 + INTEGER PBLOK %PRESENCE BIT LOCK 10000000 + , GROSSLOK % LOCK ON INTERRUPTS 10001000 + , PROCESSCHANGELOCK 10002000 + ; 10003000 + DEFINE SETOVERFLOWFF = ; # 10004000 + ; 10005000 + REAL MULTIPLEREFERENCELOK %FOR PRESENCE BIT 10006000 + ; 10007000 +REAL MONITORLOCK; % MONITOR 10008000 +REAL MONITORVALUE = (0,8), 10009000 + MONITORMASK = (0,9); 10010000 +FIELD MONMASKF = 19:10, MONVALF =9:10; 10011000 +DEFINE JACKBIT =2# 10012000 + ,RAJBIT =4# 10013000 + ,DONBIT = 8# 10014000 + ,BOBBIT =16# 10015000 + ,STEVEBIT = 32# 10015100 + ,MIKEBIT = 64# 10015200 + ,GLOBALSTOP = STOP (PDR, PIR)# 10015990 + ; 10016000 +COMMENT THE FOLLOWING DEFINES SPECIFY VALUES OF 10017000 + PARAMETERS TO PROCEDURES SUCH AS KILLME, 10018000 + NOTYETCODED AND ARITHMETICFAULT 10019000 + ; 10020000 + DEFINE DZ = 1# )"DIVIDE BY ZERO "(10021000 + EO = 2# )"EXPONENT OVERFLOW "(10022000 + EU = 3# )"EXPONENT UNDERFLOW "(10023000 + II = 4# )"INVALID INDEX "(10024000 + IO = 5# )"INTEGER OVERFLOW "(10025000 + GCAINTERRUPT = 6# )"FIRST UNASSIGNED MPX INT"(10026000 + STACKOVER = 7# )"STACK OVERFLOW "(10027000 + SYLLABLEDEPENDENT2 = 8# )"COMPROMISED SYLLABLE DEP"(10028000 + BLOWUP = 9# )"BASE FOR ALARM INTERRUPT"(10029000 + LOOP = 10# )" "(10030000 + MEMPARITY = 11# )" "(10031000 + MPXPARITY = 12# )" "(10032000 + INVALIDADDRESS = 13# )" "(10033000 + STACKUNDER = 14# )"STACK UNDERFLOW "(10034000 + INVALIDOPCODE = 15# )"CODE NOT VALID OPERATOR "(10035000 + MEMPROTECT = 16# )" "(10036000 + INVALIDOP = 17# )"OPERATION ILLEGAL "(10037000 + SEQERROR = 18# )"SEQUENCE ERROR "(10038000 + ML1 = 19# )"INTERUPT ON MULTI-LINE 1"(10039000 + ML2 = 20# )"INTERUPT ON MULTI-LINE 2"(10040000 + ML3 = 21# )" "(10041000 + ML4 = 22# )" "(10042000 + EXTMPX = 23# )"EXTERNAL MPX "(10043000 + UA2 = 24# )"SECND UNASSIGNED MPX INT"(10044000 + UA3 = 25# )"THIRD UNASSIGNED MPX INT"(10045000 + UA4 = 26# )"FORTH UNASSIGNED MPX INT"(10046000 + MACHINEERROR = 27# )"HOPEFULLY "(10047000 + PRTOPR = 28# )"PROCESSOR TO PROCESSOR "(10048000 + STACKBOTTOM = 29# )"BOTTOM OF STACK INT "(10049000 + EVENTLISTERR = 30 # %ERROR IN EVENTIST 10050000 + , INTERRUPTDEC = 31 # %ERROR IN INTERRUPT DEC 10051000 + 10052000 + , GROSSLOCK = 64 # % TEMPORARY GROSSLOK STOP 10053000 + ; 10054000 +COMMENT FOLLOWING ARE THE VARIOUS VALUES OF THE TAG FIELD; 10055000 + DEFINE SINGL = 0 #, 10056000 + IRW = 1 #, 10057000 + DOUBL = 2 #, 10058000 + MEMLINK = 3 #, 10059000 + CODE = 3 #, 10060000 + SEGDESC = 3 #, 10061000 + MSCW = 3 #, 10062000 + TOS = 3 #, 10063000 + RCW = 3 #, 10064000 + DATADESC = 5 #, 10065000 + STRINGDESC = 5#, 10066000 + UNITAL = 6 #, 10067000 + PCW = 7 # 10068000 + ; 10069000 + 10070000 + DEFINE SINGLE = SINGL# 10071000 + ; 10072000 + FIELD FULLWORD = 47:48 10073000 + ; 10074000 + LAYOUT DATADESCRIPTOR ( TAG ~ DATADESC 10075000 + , PBITF = 47:1 %PRESENCE BIT 10076000 + , CBITF = 46:1 %COPY BIT 10077000 + , IBITF = 45:1 %INDEXED BIT 10078000 + , SBITF = 44:1 %SEGMENT BIT 10079000 + , RBITF = 43:1 %READ ONLY BIT 10080000 + , NUF =42:2:=0 %MUST BE ZERO 10081000 + , DBITF = 40:1 %DOUBLE PREC. BIT 10082000 + , LENTHINDEXF=39:20 %LENGTH/INDEX FLD 10083000 + , ADDRESSF = 19:20 %ADDRESS FIELD 10084000 + ) 10085000 + , REFERENCED ( PBITF 10086000 + , IBITF 10086100 + , LENTHINDEXF 10087000 + , ADDRESSF 10088000 + ) 10089000 + , DESCADDRESS ( ADDRESSF 10090000 + ) 10091000 + , STRINGDESCRIPTOR ( TAG ~ STRINGDESC 10092000 + , PBITF 10093000 + , CBITF 10094000 + , IBITF ~ 0 10095000 + , SBITF 10096000 + , RBITF 10097000 + , SZF = 42:3 %CHARACTER SIZE 10098000 + , LENGTHSTF = 39:20 %LENGTH FIELD 10099000 + , ADDRESSF 10100000 + ) 10101000 + , INDEXEDSTRINGDESCRIPTOR(TAG ~ STRINGDESC 10102000 + , PBITF 10103000 + , CBITF 10104000 + , IBITF ~ 1 10105000 + , SBITF 10106000 + , RBITF 10107000 + , SZF 10108000 + , BYTEF = 39:4 %BYTE FILED 10109000 + , INDEXSTF = 35:16 %INDEX FILED 10110000 + , ADDRESSF 10111000 + ) 10112000 + , SEGMENTDESCRIPTOR( TAG ~ SEGDESC 10113000 + , PBITF 10114000 + , CBITF 10115000 + , DICTIONARYF = 45:1 10116000 + , LOCKBITF = 44:1 10117000 + , LENGTHSEGF 10118000 + , ADDRESSF 10119000 + , SVBITF =19:1 %SAVE BIT FIELD 10120000 + ) 10121000 + , SETTAG ( TAG 10122000 + ) 10123000 + ; 10124000 + DEFINE LENGTHF = LENTHINDEXF #%)CONVENIENT 10125000 + , INDEXF = LENTHINDEXF #%)NOMENCLATUR10126000 + , EBCDIC = 4 # %CHARACTER SIZE AS 10127000 + , BCL = 3 # %PER SZF FIELD IN 10128000 + , DIGIT = 2 # %STRING DESCRIPTOR 10129000 + , TAGZOT(X) = (X) & SETTAG(SINGL) # 10130000 + , DESCRIPTORLOCK =(MOM.DESCRIPTORLOCKF 10130100 + =7 AND KIND = DATADESC) # 10130200 + ; 10131000 + FIELD OLAYTYPEF = 18:1 10132000 + 10133000 + , FILETYPEF = 18:1 10134000 + , MCPF = 19:1 10135000 + , AITINDICATORF = 17:1 10136000 + , ADDRESF = 16:17 10137000 + , DESCRIPTORLOCKF = 19:3 10137100 + , MCPCODEF =19:2 10138000 + ; 10139000 + LAYOUT NOTPRESENTARRAYDESCL( 10139050 + PCBITSF = 47:2 ~0 10139100 + , LENGTHF 10139150 + , MCPCODEF 10139200 + , AITINDICATORF 10139300 + , ADDRESF 10139350 + ), 10139400 + ARRAYDESCL ( 10139430 + PCBITSF ~ 2 10139450 + , LENGTHF 10139500 + , ADDRESSF 10139550 + ); 10139600 +COMMENT FOLLOWING IS THE FORMAT OF THE NORMAL AND STUFFED IRWS; 10140000 + LAYOUT NORMALIRW ( TAG ~ IRW 10141000 + , EBITF = 46:1 ~ 0 % E BIT 10142000 + , ADRCPLF = 13:14 10143000 + ) 10144000 + , STUFFEDIRW ( TAG ~ IRW 10145000 + , EBITF ~ 1 10146000 + , STKNRF = 45:10 10147000 + , DISPF = 33:16 %OF MKST10148000140626PK + , SIRWDELTAF = 12:13 %DELTA 10149000 + ) 10150000 + , MARKSTACKCW( TAG ~ MSCW 10151000 + , DSBITF =47:1 10152000 + , EBITF 10153000 + , STKNRF, 10154000 + , VBITF = 19:1 10155000 + , LLF = 18:5 10156000 + , DFF = 13:14 10157000 + ) 10158000 + , MARKSTACKWD( TAG ~ MSCW 10159000 + , DSBITF 10160000 + , EBITF 10161000 + ,STKNRF 10162000 + , DISPFMS = 35:16 10163000 + , VBITF 10164000 + , LLF 10165000 + , DFF 10166000 + ) 10167000 + , RETURNCONTROLWORD (TAG ~ RCW 10168000 + , STKNRF 10169000 + , PSRF =35:3 10170000 + , PIRF = 32:13 10171000 + , NCSFF= 19:1 10172000 + , LLF 10173000 + , SDIF = 13:14 10174000 + ) 10175000 + , POINTTOIOCB ( LOCKBITF 10176000 + , ADDRESSF 10177000 + ) 10178000 + ; 10179000 +COMMENT FOLLOWING IS FORMAT OF TOS CONTROL WORD; 10180000 + LAYOUT TOSCW ( TAG ~ TOS 10181000 + , SGNFFF = 47:1 10182000 + , OFFFF = 46:1 10183000 + , TFFFF = 45:1 10184000 + , FLTFF = 44:1 10185000 + , DSF = 39:20 10186000 + , NCSFF 10187000 + , LLF 10188000 + , DF = 13:14 10189000 + ) 10190000 + ; 10191000 +COMMENT FOLLOWING IS THE FORMAT OF THE FIRST WORD OF AN EVENT; 10192000 + LAYOUT FIRSTEVENTWORD(TAG~DOUBL 10193000 + ,COUNTF = 47:27 10194000 + , WAITQHEADF= 18:10 % HEAD WAITQ 10195000 + , WAITQTAILF= 22:10 % TAIL WAITQ 10196000 + , AVAILABLEBITF= 2:1 10197000 + , HAPPENEDBITF = 1:1 10198000 + , EVENTLOCKBITF= 0:1 10199000 + ) 10200000 + ; 10201000 + FIELD EVENTLINKSF = 22:20 10202000 + ; 10203000 + LAYOUT LOKMOM(LOCKBITF,DESCRIPTORLOCKF) 10204000 + , FIXDESC(PBITF,LOCKBITF,ADDRESSF) 10205000 + , SETCOPYBIT(CBITF) 10206000 + ; 10207000 + SAVE 10208000 + REAL ARRAY SOFTWAREINTERRUPTMASK[32]%EACH BIT INDICATES WHETHER 10209000 + %THERE ARE ANY SOFTWARE 10210000 + %INTERRUPTS FOR THE CORRES- 10211000 + %PONDING STACK 10212000 + ; 10213000 + 10214000 + FIELD ENABLEBITF = 46:1 10215000 + , MOD32F = 4:5 10216000 + , DIV32F = 9:5 10217000 + , MOD64F = 5:6 10217010 + , DIV64F = 9:4 10217020 + , D0DISPF = 12:13 10217100 + , D2DISPF = 11:12 10217200 + , D4DISPF = 10:11 10217300 + , D8DISPF = 9:10 10217400 + , D16DISPF = 8:9 10217500 + , D0D1SEGBIT= 13:1 10217600 + , REALSDIF = 12:13 10217700 + ; 10218000 + DEFINE MYCOURSEWORD = 20 # 10219000 + , CODEFILEDESC=1# 10220000 + , OLAYFILEDESC=2# 10221000 + ; 10222000 + 10223000 + 10224000 + REAL COUNTFORTIMERINTERRUPTEVENT 10225000 + , NUMBEROFPROCESSORS 10226000 + ; 10227000 + BOOLEAN MORETHANONEPROCESSOR 10228000 + ; 10229000 + DEFINE IFTHEREISASOFTWAREINTERRUPT = 10230000 + IF BOOLEAN (SOFTWAREINTERRUPTMASK 10231000 + [MYSNR.DIV32F].MOD32F)# 10232000 + , MYCOURSE = STACK[MYSNR,MYCOURSEWORD] # 10233000 + , MYDIVIDEBYZERO(X) = KILLME(WHICH) # 10234000 + , MYEXPONENTUNDERFLOW(X) = KILLME(WHICH) # 10235000 + , MYEXPONENTOVERFLOW(X) = KILLME(WHICH) # 10236000 + , MYINVALIDINDEX(X) = KILLME(WHICH) # 10237000 + , MYINTEGEROVERFLOW(X) = KILLME(WHICH) # 10238000 + ; 10239000 + REAL CORESIZE = (0,6) 10240000 + , SOFTWAREINTERRUPTLOCK= (0,17) 10241000 + , INDEPENDENTRUNNERSTACKS 10242000 + ; 10243000 + SAVE REFERENCE ARRAY 10244000 + SHEETVECTOR = (0,16) [* ] 10245000 + ; 10246000 + SAVE WORD ARRAY 10247000 + SHEETARRAY = SHEETVECTOR[*,*] 10248000 + ; 10249000 + SAVE REAL ARRAY 10250000 + SHEETREALS = SHEETVECTOR[*,*] 10250200 + ; 10251000 +COMMENT THE FOLLOWING ILLUSTRATE THE METHOD OF ACCESSIN REGISTERS; 10252000 + DEFINE D = REGISTERS # , 10253000 + D0 = D[0] #, 10254000 + D1 = D[1] #, 10255000 + D2 = D[2] #, 10256000 + D3 = D[3] #, 10257000 + D4 = D[4] #, 10258000 + D5 = D[5] #, 10259000 + D6 = D[6] #, 10260000 + D7 = D[7] #, 10261000 + D8 = D[8] #, 10262000 + D9 = D[9] #, 10263000 + D10 = D[10]#, 10264000 + D11 = D[11]#, 10265000 + D12 = D[12]#, 10266000 + D13 = D[13]#, 10267000 + D14 = D[14]#, 10268000 + D15 = D[15]#, 10269000 + D16 = D[16]#, 10270000 + D17 = D[17]#, 10271000 + D18 = D[18]#, 10272000 + D19 = D[19]#, 10273000 + D20 = D[20]#, 10274000 + D21 = D[21]#, 10275000 + D22 = D[22]#, 10276000 + D23 = D[23]#, 10277000 + D24 = D[24]#, 10278000 + D25 = D[25]#, 10279000 + D26 = D[26]#, 10280000 + D27 = D[27]#, 10281000 + D28 = D[28]#, 10282000 + D29 = D[29]#, 10283000 + D30 = D[30]#, 10284000 + D31 = D[31]#, 10285000 + IRSR(X) = REGISTERS[X+32]#, 10286000 + PIR = REGISTERS[32]#, 10287000 + SIR = REGISTERS[33]#, 10288000 + DIR = REGISTERS[34]#, 10289000 + TIR = REGISTERS[35]#, 10290000 + LOSR = REGISTERS[36]#, 10291000 + BOSR = REGISTERS[37]#, 10292000 + F = REGISTERS[38]#, 10293000 + BRSR(X) = REGISTERS[X+48] #, 10294000 + PBR = REGISTERS[48]#, 10295000 + SBR = REGISTERS[49]#, 10296000 + DBR = REGISTERS[50]#, 10297000 + TBR = REGISTERS[51]#, 10298000 + S = REGISTERS[52]#, 10299000 + SNR = REGISTERS[53]#, 10300000 + PDR = REGISTERS[54]# 10301000 + ; 10302000 + DEFINE OLAYROWLENTH = 180 # 10303000 + , CODEROWLENTH = 180 # 10304000 + ; 10305000 + DEFINE UPTOYOU =0# )"THE MCP DOES AS IT PLEASES "(10306000 + FINISH =1# )"THE MCP MUST D-ES ME "(10307000 + CARRYON =3# )"THE MCP MUST IGNORE INTERRUPT "(10308000 + TELLME =4# )"THE MCP MUST SET SOME FLAGS "(10309000 + SELECT =5# )"ACCESS PCW APPROPRIATE TO INTERUPT"(10310000 + FAULTROUTINE =6# 10311000 + ; 10312000 + DEFINE DISABLEOVERLAY = ;# % DUMMY DECLARATION 10313000 + , ENABLEOVERLAY = ;# % DUMMY DECLARATION 10314000 + ; 10315000 + PROCEDURE HANDLETHESOFTWAREINTERRUPT;; 10316000 +COMMENT THIs IS A DUMMY PROCEDURE; 10317000 + QUEUE SOFTWAREINTERRUPTQ(Y);REAL Y; 10318000 +COMMENT THIS IS A DUMMY DECLARATION; 10319000 + USING 10320000 + TO INSERT,ENTRY ~ENTRY 10321000 + ; 10322000 + DEFINE SETINTERVALTIMER = TIMER(100)#; 10323000 +SAVE PROCEDURE KILLME(KILLVALUE); VALUE KILLVALUE; REAL KILLVALUE; 10324000 + BEGIN 10325000 + MONITOR JACKMONITOR(KILLVALUE); 10326000 + LAYOUT KILLLAYOUT (39:16, 19:20); 10326100 + KILLVALUE~KILLVALUE; 10327000 + STOP (0&KILLLAYOUT (KILLVALUE, PDR), PIR); 10328000 + IF NOT SIMULATING THEN MEMDUMP(0,0); 10328100 + STOP(4"93C838E049E4",4"038038E491C0"); 10328200 + END KILLME; 10329000 + PROCEDURE MYFAULT(W); WORD W;; %DUMMY DEC 10330000 +LAYOUT FIRSTPOINTERWORDL 10982000 + (TOTALINFOWORDSF= 47:16 10983000 + ,INFOINDEXF = 31: 8 10984000 + ,INFOLENGTHF = 23: 8 10985000 + ,INFOTYPEF = 15: 9 10986000 + ,ALFALENGTHF = 6: 7 10987000 + ,KEYFIELDF = 15:16 10988000 + ); 10989000 + COMMENT DEFINES FOR INFOTYPEF AS USED IN PARAMETER QUEUE10990000 + ALGORITHMS. VALUES SHOULD BE GREATER THAN 128 10991000 + AND LESS THAN 511.; 10992000 +DEFINE FILETYPEP = 129#, 10993000 + ENDOFPTYPE= 511#; 10994000 +DEFINE UPDATEWORDCOUNT(NEWWORDS, ENTRY) = 10995000 + REPLACE POINTERTOID@(ENTRY) 10996000 + BY (REAL(POINTERTOID@(ENTRY) , 6) & 10997000 + FIRSTPOINTERWORDL(NEWWORDS)) 10998000 + FOR 6 #, 10999000 + UPDATEINFOINDEX (INFOI, ENTRY) = 10999900 + REPLACE POINTERTOID@(ENTRY) 10999930 + BY (REAL(POINTERTOID@(ENTRY), 6) & 10999960 + FIRSTPOINTERWORDL(*,*,INFOI))FOR 6 ;#;10999990 +COMMENT STORAGE ALLOCATION VARIABLES ***********; 11000000 +INTEGER PREVADDR, COMMENT THE ABSOLUTE ADDRESS FOR AVAILA OF THE 11001000 + LARGEST AVAILABLE AREA NOT FOLLOWING AN OVER- 11002000 + LAYABLE AREA OF MEMORY; 11003000 + AVAILI, COMMENT THE ABSOLUTE ADDRESS OF THE FIRST 11004000 + AVAILABLE LINK.; 11005000 + MINDEX, COMMENT A UTILITY MEMORY INDEX; 11006000 + MLENGTH, COMMENT A UTILITY MEMORY LENGTH; 11007000 + AVAILABLECORE, COMMENT THE AMOUNT OF PRIMARY MEMORY(FRAGMENTED 11007100 + OR OTHERWISE) THAT IS AVAILABLE AT ANY MOMENT; 11007200 + SPACEQHEAD, COMMENT THE STACK THAT CONTAINS THE SUPER 11007300 + SPACE AUTHORITY AND THE LINK TO THE STACK THAT 11007400 + HAS THE SPACE REQUEST WITH THE HIGHEST PRIORITY;11007500 + BACKALLOCATED, COMMENT ABSOLUTE ADDRESS LINKA FOR MOST 11008000 + RECENTLY ALLOCATED AREA.; 11009000 + LEFTOFF, COMMENT ABSOLUTE ADDRESS OF LINKA FOR HEAD OF 11010000 + LEFTOFF LIST.; 11011000 + STOPPER; COMMENT ABSOLUTE ADDRESS OF AVAILA FOR END OF 11012000 + AVAILABLE LIST. BIT 42:1 = 1, I.E. SIZE IS 11013000 + LARGER THAN LARGEST MEMORY POSSIBLE AND THE LINK11014000 + IS ZERO. AVAILB OF STOPPER IS ADDRESS OF LARG- 11015000 + EST AVAILABLE AREA.; 11016000 +REAL SPACELOCK; COMMENT SPACELOCK INSURES THAT ONLY ONE PROC- 11017000 + CESS AT A TIME HAS ACCESS TO MEMORY LINKS. IT 11018000 + IS THEREFORE BUZZED UPON ENTRY TO GETSPACE AND 11019000 + FORGETSPACE AND UNLOCKED BEFORE THESE PROCEDURES11020000 + ARE EXITED.; 11021000 +DEFINE FASTPLACE = BACKWARDLINKF#, 11021100 + SLOWPLACE = FORWARDLINKF #, 11021200 + RETRYCOUNT = SELFIDENTF #, 11021300 + SPACERETRY = 10#; COMMENT THE MAXIMUM NUMBER OF TIMES A 11021400 + SPACE "QUEUE" ENTRY CAN BE IGNORED BECAUSE AN 11021500 + ORDERED SIZE IS NOT ADEQUATE. THE ENTRY MUST BE11021600 + AT THE HEAD OF THE QUEUE BEFORE THE COUNTER IS 11021700 + 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 + 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 + AVAILABLE = 20:1 ~ 0, 11028000 + BACKLINK = 19:20), COMMENT THE LINK TO THE LAST PREVIOUSLY11029000 + ALLOCATED AREA FOR THIS USER; 11030000 + LINKB COMMENT THE SECOND LINK WORD OF AN IN-USE AREA;11031000 + (TAG ~ 3, 11032000 + USAGE = 47:7, COMMENT THE USAGE OF THE AREA; 11033000 + ADDRTYPE = 40:1, COMMENT IS THE ADDRESS OF MOM ABSOLUTE OR11034000 + BOS RELATIVE. 1 IS BOS RELATIVE.; 11035000 + ADDRMOM = 39:20, COMMENT THE ADDRESS OF THE MOM DESCRIPT;11036000 + DISKADDR = 19:20), COMMENT THE DISK ADDRESS OF THE AREA 11037000 + DESCRIBED BY MOM. 19:1 = 1 INDICATES OVERLAY 11038000 + DISK.; 11039000 + LINKC COMMENT THE THIRD LINK WORD OF AN IN-USE AREA; 11040000 + (TAG ~ 3 11041000 + ), COMMENT THIS WORD IS RESERVED FOR EXPANSION; 11042000 + LINKZ COMMENT THE FINAL LINK WORD OF AN IN-USE AREA; 11043000 + (TAG ~ 3, 11044000 + OLAY = 47:1, COMMENT THE PERMANENT OVERLAYABLE STATE OF 11045000 + AN AREA. GETSPACE PLACES THE RESULT OF A 11046000 + LOGICAL AND OF THE OERLAY BIT OF ITS TYPE 11047000 + AND ADDRESS (OF MOM)! 0 IN THIS BIT; 11048000 + DELTAWDS = 46:5, 11049000 +FRONTLINK =43:20, COMMENT - CHECK-OUT * * * * * * * 11050000 + FRONTLINK = 41:20, COMMENT THE LINK TO THE NEXT ALLOCATED11051000 + AREA FOR THIS IN-USE ID.; 11052000 + SPACEOLAYLOCK = 21:1, COMMENT IF BIT IS ON AREA IS OVER-11053000 + LAYABLE. GETSPACE TURNS THE BIT OFF AND THE 11054000 + CALLER HAS THE RESPONSIBILITY OF EXCHANGING THE 11055000 + OLAY BIT AND THIS BIT.; 11056000 + AVAILABLE ~ 0, 11057000 + INUSELENGTHZ = 19:20), COMMENT A SELF-RELATIVE INDEX FOR 11058000 + FINDING LINKA OF THIS AREA.; 11059000 + AVAILA COMMENT THE FIRST LINK WORD OF AN AVAILABLE AREA.; 11060000 + (TAG ~ 3, 11061000 + PREOLAY = 41:1, COMMENT THE OLAY BIT OF THE PREVIOUS 11062000 + AREA; 11063000 + LENGTH = 40:20, COMMENT A SELF-RELATIVE INDEX TO AVAILZ 11064000 + OF THIS AREA. LENGTH = WORDS IN AREA + LINKSIZ;11065000 + AVAILABLE ~ 1, 11066000 + LINK = 19:20), COMMENT THE ABSOLUTE ADDRESS OF THE NEXT 11067000 + AVAILABLE AREA; 11068000 + AVAILB COMMENT THE SECOND LINK WORD OF AN AVAILABLE AREA.; 11069000 + (TAG ~ 0, 11070000 + LINKTOPREVIOUSAVAILABLEAREA = 47:48), 11071000 + AVAILZ COMMENT THE FINAL LINK WORD OF AN AVAILABLE AREA.; 11072000 + (TAG ~ 3, 11073000 + AVAILABLE ~ 1, 11074000 + LENGTHZ = 19:20), COMMENT A SELF-RELATIVE INDEX TO FIND 11075000 + AVAILA FOR THIS AREA.; 11076000 + SPACETYPE 11077000 + ( 11078000 + PRINTNOMEM = 4:1, COMMENT 1 = PRINT NO MEM MESSAGE; 11079000 + MAKEROOM = 3:1, COMMENT 1 = OVERLAY IF REQUIRED; 11080000 + SLEEPY = 2:1, COMMENT 1 = SLEEP IF MEMORY N/A; 11081000 + 11082000 + OERLAY = 0:1), COMMENT 1 = SPACE FOR OVERLAYABLE; 11083000 + LLLUARG 11084000 + (21:1, COMMENT PREVIOUS OVERLAYABILITY; 11085000 + 20:20); COMMENT SIZE; 11086000 +DEFINE INITIALIZETOZERO (ADDRESS, LENGTH) = 11087000 + REPLACE POINTER(M[ADDRESS]) BY 0 FOR LENGTH OVERWRITE#; 11088000 +FIELD AVAILKEY = 47:28; COMMENT AVAILA SORT KEY FIELD.; 11089000 +DEFINE LINKSIZE = COMMENT NUMBER OF WORDS IN MEMORY LINKS -1; 11090000 + 3#, 11091000 + LINKSIZETIMES2PLUS1 = COMMENT SIZE OF TEMPLINKS ARRAY.; 11092000 + 8#; 11093000 +DEFINE PROCSTACKSIZE = 12000000 + 512#, 12001000 + COMMENT ARBITRARY - F AND S ARE SET TO 12002000 + SOME ADDRESS IN THE SECOND HALF OF MOD 0 12003000 + UNTIL MORE PERMANENT STACKS CAN BE GOTTEN.;12004000 + 12005000 + 12006000 + COMMENT THEN NUMBER OF WORDS IN A SHEET ENTRY 12007000 + AND THE NUMBER OF WORDS THAT ARE RESERVED AT THE12008000 + BOTTOM OF A PROCESSES LOWEST LEVEL STACK. ;12009000 + STACKOFLOWSIZE = 12010000 + 64 #, 12011000 + COMMENT THE NUMBER OF WORDS THAT ARE RESERVED 12012000 + ABOVE LOSR TO HANDLE STACK OVERFLOWS. ;12013000 + STACKSPERMODULE = 12014000 + 32#; 12015000140626PK + 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 + INTEGER MAXSTACKS; COMMENT THE MAXIMUM INDEX FOR THE 12019000 + STACK VECTOR.; 12020000 +SAVE WORD ARRAY TEMPLINKS [LINKSIZETIMES2PLUS1]; 12021000 + COMMENT RESERVES SPACE IN LEVEL 0 12022000 + STACK FOR FIRST AVAILABLE 12023000 + AND STOPPER LINKS; 12024000 +ARRAY MEMMODS [64]; COMMENT DURING MEMORY INITIALIZATION EACH12025000 + WORD CONTAINS A ONE IF THE CORRESPONDING 12026000 + MODULE IS PRESENT. AFTER MISSING MODS ARE 12027000 + ACCOUNTED FOR THE ELEMENTS ARE AVAILABLE TO12028000 + BE DEFINED AS VARIOUS LOCAL INITIALIZE 12029000 + VARIABLES. AFTER INITIALIZE THE AREA IS 12030000 + FORGOTTEN AND THE STACK CELL IS AVAILABLE 12031000 + FOR A PERMANENT GLOBAL.; 12032000 +INTEGER PROCSTACKSTART = MEMMODS; 12033000 +WORD PROCSTACKSTARTW= MEMMODS;COMMENT ONLY WAY TO OVERWRITE DESC.;12034000 +REAL SLAVEQUARTERS, COMMENT USED TO LOCK ALL PROCESSORS EX- 12035000 + CEPT THE ONE THAT LOCKS IT UNTIL INITIAL- 12036000 + IZATION HAS THE SITUATION SOMEWHAT UNDER 12037000 + CONTROL; 12038000 + TIMEOUT, COMMENT CONTAINS SOME VALUE OF THE TIME- 12039000 + OF-DAY CLOCK + AN INCREMENT OF TIME THAT IS12040000 + SUFFICIENT TO ALLOW ALL EXPECTED PROCESSORS12041000 + TO GET THEIR STACKS IN TEMPORARY ORDER.; 12042000 + MEMMAX, COMMENT THE MAXIMUM AMOUNT OF AVAILABLE 12043000 + MEMORY.; 12044000 + SAVE1ADDRESS, COMMENT THE ADDRESS OF MEMORY AREA THAT 12045000 + CONTAINS INITIALIZATION CODE AND IS TO BE 12046000 + FORGOTTEN AFTER INITIALIZATION. STACK CELL12047000 + IS AVAILABLE AFTER INITIALIZATION.; 12048000 + PROCMASK = NUMBEROFPROCESSORS; 12049000 + COMMENT A ONE BIT IN THIS WORD IDENTIFIES12050000 + AN AVAILABLE PROCESSOR, THE BITS POSITION 12051000 + IS THE PROCESSOR ID.; 12052000 +BOOLEAN INITSWITCH; COMMENT USED TO CHANGE MPX INTERRUPT TO 12053000 + PTPI INTERRUPT IN INITIALIZE AND 12054000 + TO TELL STORAGE ALLOCATION WHEN A 12054500 + PERMANENT LEFTOFF HEAD IS READY.; 12055000 +LAYOUT SEGTRACEL (STKNRF~1, PIRF, ADDRESSF); 12055500 + SAVE REAL PROCEDURE SEGTRACE(SEGTRACTER);% 12055600 + VALUE SEGTRACTER; REAL SEGTRACTER;% 12055610 + BEGIN 12055620 + IF NOT SIMULATING THEN RETURN(0);% 12055625 + SEGTRACE~REGISTERS[60]; 12055630 + REGISTERS[60]~SEGTRACTER; 12055640 + END SEGTRACE; 12055650 +SAVE INTEGER PROCEDURE TRACE (TRACTER); 12056000 + VALUE TRACTER; 12057000 + INTEGER TRACTER; 12058000 + BEGIN 12059000 + IF NOT SIMULATING THEN RETURN(0);% 12059100 + TRACE ~ REGISTERS [64]; 12060000 + REGISTERS [64] ~ TRACTER; 12061000 + END TRACE; 12062000 + COMMENT THE ARRAYS BETWEEN "UNIT" AND 13000000 + "TRANSACTION" ARE INITIALIZED TO MAXI-13001000 + MUM NUMBER OF UNITS ON A GIVEN SYSTEM 13002000 + BY THE CALL: 13003000 + INITIALIZEARRAY(UNIT,TRANSACTION,MAXU)13004000 + IN THE INITIALIZE PROCEDURE. THIS 13005000 + SERIES OF ARRAY DECLARATIONS SERVES TO13006000 + ILLUSTRATE THE METHOD FOR THE DECLAR- 13007000 + ATION AND INITIALIZATION OF A NUMBER 13008000 + (ONE OR MORE) ARRAYS TO THE SAME SIZE.13009000 + ALL ARRAYS INITIALIZED THIS MANNER 13010000 + ARE PLACED IN HIGH CONTIGUOUS MEMORY 13011000 + AND MARKED AS NON-OVERLAYABLE. TO ADD13012000 + ANOTHER ARRAY THAT IS TO HAVE A LENGTH13013000 + OF MAXU, IT IS ONLY NECESSARY TO DE- 13014000 + CLARE THE ARRAY BETWEEN "UNIT" AND 13015000 + "TRANSACTION". (ALSO SEE DECLARATION &13016000 + PROCEDURE CALL FOR "OLDSTATUSWORD"). 13017000 + 13018000 + FROM THE FOREGOING IT SHOULD BE 13019000 + APPARENT THAT: 13020000 + 1. ARRAYS THAT ARE TO BE INITIALIZED13021000 + TO THE SAME LENGTH SHOULD BE DE- 13022000 + CLARED CONTIGUOUSLY. 13023000 + 2. AT LEAST ONE PROCEDURE CALL IS 13024000 + REQUIRED FOR EACH SERIES (ONE OR 13025000 + MORE) OF ARRAYS THAT ARE TO BE 13026000 + INITIALIZED TO THE SAME LENGTH. 13027000 + 3. ALL STACKCELLS BETWEEN THE FIRST 13028000 + AND LAST ARRAY DECLARATIONS WILL 13029000 + BE INITIALIZED TO ARRAY DESCRIP- 13030000 + TORS. 13031000 + ;13032000 +INTEGER DIAGNOSTICUNIT;COMMENT THE LOGICAL UNIT NO. OF THE 13033000 + DIAGNOSTIC FILE; 13034000 +DEFINE DIAGNOSTICIOCW = 40"04004" #, % IOCW FOR PRINTER-BCL SNG SPACE 13037100 + DIAGNOSTICUNITTYPE = BUFFPRINTER#; %UNIT TYPE FOR MONITOR UNIT 13037200 +SAVE WORD ARRAY DIAGNOSTICARRAY[22]; %BUFFER AND IOCW FOR MONITOR 13037300 +ARRAY MONITER[*]; %DESCRIPTOR TO I/O AREA OF ABOVE 13037400 +EVENT MONITORFINISH; %MONITOR I/O FINISH EVENT 13037500 +REAL DCPSANDGCAS; 13037600 +BOOLEAN MULTIPLEXORMASK; % A ONE BIT "N" MEANS THERE IS AN MPX-N 13037700 +ARRAY UNIT[ * ]; COMMENT CONTAINS INFORMATION OF EACH UNITS CURRENT 13038000 + STATE; 13039000 +REFERENCE ARRAY LASTIO [*]; 13040000 +ARRAY UINFO[*], % DESCRIPTORS FOR NON-DISK UNITS WHICH ARE 13041000 + % READY. THE DESCRIPTORS POINT TO A "LABEL 13042000 + % BLOCK" WHICH HAS THE SAME FORM AS A "LABEL- 13043000 + % EQUATION BLOCK" (LEB) (SEE 24000000 FOR THE 13044000 + % FORMAT OF THE LEB). 13045000 + 13046000 + IOTIME [*], COMMENT ARRAY FOR RECORDING USERS IO TIME; 13047000 + TRANSACTION[*], COMMENT FOR RECORDING RECORD TRANSACTIONS; 13048000 + DUMMYAREA[1]; % FOR MAKING I/O REQUEST 13050000 +WORD ARRAY UINFOW = UINFO[*]; 13050100 +ARRAY UINFOP = UINFO[*,*]; 13050200 +WORD ARRAY UINFOPW=UINFOW[*,*]; 13050210 +BOOLEAN OPTIONS;% OPTIONS BIT WORD 13051000 + DEFINE% OPTIONS 13051100 + RETTOG = OPTIONS.BIT47#,% 13051200 + 13052000 + ENDOPTDEF=0#;% 13054000 +COMMENT 13054990 +SCREEN IS INITIALIZED BY PERIPHERALINITIALIZE--SHOULD BE DYNAMIC;13055000 +ARRAY SCREEN[*];% 13055010 +% GLOBALS FOR OUTPUTMESS AND MESSER 13056000 +LAYOUT WHOCALLSL (WHOF=47:24,WHICHF=11:12,WHATF=23:12);% 13056100 +DEFINE% FOR OUTPUTMESS AMD MESSER 13057000 + BEGFINMSG = 0#,% 13057100 + BEGFOUTMSG = BEGFINMSG + FINSZ#,% 13057200 + BEGMATHERR = BEGFOUTMSG + FOUTSZ#,% 13057300 + BEGSTATMSG = BEGMATHERR + MATHERRSZ#,% 13057400 + BEGMCPID = BEGSTATMSG + STATSZ#,% 13057500 + BEGIOERR = BEGMCPID + MCPIDSZ#, 13057510 + BEGSTDIOERR =BEGIOERR + IOERRSZ#,% 13057520 + BEGMISCMSG= BEGSTDIOERR + STDIOERRSZ#,% 13057530 + FINSZ = 6#,% 13057600 + FOUTSZ = 4#,% 13057700 + MATHERRSZ = 30#,% 13057800 + STATSZ = 11#,% 13057900 + MCPIDSZ = 4#,% 13058000 + IOERRSZ = 5#,% 13058010 + STDIOERRSZ = 18#,% 13058020 + MISCSZ= 2#,% 13058030 + FINMSGSEC= 0#,% 13058100 + FOUTMSGSEC= 1#,% 13058200 + MATHERRMSGSEC= 2#,% 13058300 + STATMSGSEC= 3#,% 13058400 + MCPIDSEC= 4#,% 13058500 + IOERRSEC=5#,% 13058600 + STDIOERRSEC=6#,% 13058700 + MISCMSGSEC= 7#,% 13058710 + OPMINDXR(N) = CASE N OF (% 13059000 + BEGFINMSG,BEGFOUTMSG,BEGMATHERR,% 13059010 + BEGSTATMSG,% 13059020 + BEGMCPID,% 13059030 + BEGIOERR,% 13059040 + BEGSTDIOERR,% 13059050 + 1305905513059050 + BEGMISCMSG,% 13059060 + 0)#,% 13059090 + IOERRMESSL(A,B,C)=MESSER(0&WHOCALLSL(5,A,B),C)#, 13059800 + BOJMESSER(SNR)= MESSER(0&WHOCALLSL(MISCMSGSEC),SNR)#,% 13059810 + EOJMESSER(SNR)= MESSER(1&WHOCALLSL(MISCMSGSEC),SNR)#,% 13059820 + ENDOPMDEF=0#; % 13059990 + ARRAY% **** "SCAN" DOES NOT LIKE READ ONLY ARRAYS 13060000 + OUTPUTMESS~(% ALL MESSAGES USED BY MESSER 13065000 + 8"NO FILE"4"00"% **** FINDINPUT MSG**13066000 + 8"UNMATCHED GENEALOGY"4"00"% * 13066100 + 8"DUP FIL"4"00"% * 13067000 + ,% END FIND-INPUT MSG** 13068000 + 8"REQUIRED"4"00" 8"NEW PBT ON"4"00"% FIND-OUTPUT MSG### 13069000 + ,% END FIND-OUTPUT MSG### 13070000 + 8"ALGAMA"4"00" 8"ALOG"4"00" 8"ALOG10"4"00"%MATH ERRORS*** 13071000 + 8"ARCOS"4"00" 8"ARSIN"4"00" 8"ATAN"4"00" % * 13072000 + 8"ATAN2"4"00" 8"COS"4"00" 8"COSH"4"00" 8"COTAN"4"00"% * 13073000 + 8"ERF"4"00" 8"EXP"4"00" 8"GAMMA"4"00" 8"SIN"4"00"% * 13074000 + 8"SINH"4"00" 8"SQRT"4"00" 8"TAN"4"00" 8"TANH"4"00"% * 13075000 + 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"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 + 8"PARITY RW/L"4"00"% S 13081300 + 8"RET"4"00"% S 13081500 + 8"MCP PBT ON"4"00"% S 13081700 + ,% END STATUS MESSAGES SSSS 13081990 + 8"B6500 MCP"% **** BEGINNING MCP ID ******* 13082000 + 8" LEVEL "% * 13082100 + 8"0"% LEVEL NUMBER * 13082200 + 8"."% * 13082300 + 8"0"% PATCH NUMBER WITHIN LEVEL * 13082400 + 4"00",% **** END MCPID ******* 13082500 + 8"FILE OPEN"4"00" % I/O ERRORS 13082600 + 8"FILE ATTRIBUTE"4"00" 13082700 + , % END I/O ERRORS 13082800 + 8"DESCRIPTOR ERROR"4"00" % STD I/O ERRORS 13082900 + 8"INVALID MEM ADDRESS"4"00"% 13083000 + 8"I/O MEMORY PARITY"4"00"% 13083100 + 8"MEMORY PROTECT ERROR"4"00"% 13083200 + 8"UNIT READ CHECK"4"00"% 13083300 + 8"WRITE LOCK-OUT"4"00"% 13083400 + , % END STD I/O ERRORS 13084000 + 8"BOJ"4"00"% BEGIN MISCELLANEOUS MESSAGES MMM 13085000 + 8"EOJ"4"00"% M 13085100 + ,% 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"JULY"4"000000",8"AUGUST","00",8"SEPTEMBER"4"00", 13120020 + 8"OCTOBER"4"00",8"NOVEMBER"4"00",8"DECEMBER"4"00"), 13120030140626PK + PIE~( 8"3.1415926535897932384626433832795028841971693993751058" 13120100 + 8"209749445923078164062862089986280348253421170679821480" 13120110 + 8"865132823066470938446095505822317253594081284811174502" 13120120 + 8"841027019385211055596446229489549303819644288109756659" 13120130 + 8"334461284756482337867831652712019091456485669234603486" 13120140 + 8"104543266482133936072602491412737245870066063155881748" 13120150 + 8"815209209628292540917153643678925903600113305305488204" 13120160 + 8"665213841469519415116094330572703657595919530921861173" 13120170 + 8"819326117931051185480744623799627495673518857527248912" 13120180 + 8"279381830119491298336733624406566430860213949463952247" 13120190 + 8"371907021798609437027705392171762931767523846748148676" 13120200 + 8"694051320005681271452635608277857713427577896091736371" 13120210 + 8"787214684409012249534301465495853710507922796892589235" 13120220 + 8"420199561121209219608640344181598136297747713099605187" 13120230 + 8"072113499999983729780499510597317328160963185950244594" 13120240 + 8"553469083026425223082533446850352619311881710100031378" 13120250 + 8"387528865875332083814206171776691473035982534904287554" 13120260 + 8"6873115956286388235378759375195778185778 5321712268066"), 13120270 + DICA~(8"MIXSCHJOB PERPCD DIREXP "),% 13124000 + DICB~(% 13125000 + 8"TISTXSES"% PREFIX, NO SUFFIX 13125100 + 8"DSRMOKILFMULOUFROFUSAXPR"% PREFIX, NO SUFFIX--VALID REPLIES 13125200 + 8"OLRYPGPBSVRWCL"% SUFFIX, NO PREFIX 13125300 + 8"TRDRRDSFSOROTC"% SUFFIX, NO PREFIX 13125400 + 8"LORNTO"% NO PREFIX, SUFFIX OPTIONAL 13125500 + 8"TFWTWDWMPIEILE"% NO PREFIX, NO SUFFIX 13125600 + ),% 13125900 + MNEMONIC~(8" DKSCODPRPPLPLP CRCPCP MTMTMT ",% BE SURE THESE13131000 + 8" MT");% ARE CONTIGUOUS 13132000 +ARRAY 13133000 + MNEMTOUNIT [*],% USED TO OBTAIN PHYS. UNIT NO. FROM UNIT MNEM. 13134000 + TYPEINDX[*];% USED TO OBTAIN INDEX INTO MNEMTOUNIT OF LOWEST 13135000 +% NUMBERED UNIT OF TYPE I. 13136000 + COMMENT THE ARRAYS DICA THROUGH TYPEINDX WILL BE CONVERTED TO 13137000 + EBCDIC STRING DESCRIPTORS IN PERIPHERALINITIALIZE. CARE SHOULD BE 13138000 + USED WHEN ADDING DECLARATIONS INBETWEEN AND WHEN USING THE 13139000 + DESCRIPTORS, SINCE ALL INDEXING WILL BE BY CHARACTERS; 13140000 +ARRAY DATE ~(8"1969182TUESDAY, JULY 1, 1969"4"00",0);% 13140100 +REAL TODAYSDATE~69182; 13140110 +DEFINE FORMATTEDDATEPOINTER = POINTER(DATE,8) + 7 #; 13140150 +ARRAY TIME[1];% 13140200 +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 + STATOPM(N)= N&WHOCALLSL(STATMSGSEC)#,% 13143020 + NOTREADYMSG(U)= MESSER(STATOPM(0),U)#,% 13143030 + UFUMSG(U)= MESSER(STATOPM(1),U)#,% 13143040 + PARITYRWLMSG(U)=MESSER(STATOPM(2),U)#,% 13143050 + RETMSG(U)= MESSER(STATOPM(3),U)#,% 13143060 + PBTONMSG(U)= MESSER(STATOPM(4),U)#,% 13143070 +ENDSTATDEF=0#;% 13143990 +FIELD RF = 6:6; % READALABEL CONTROL FIELD (0:1-LOCK)13144000 +REAL PRGT; % PURGIT PROCESS CONTROL WORD 13145000 +FIELD 13146000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13147000 + % UNIT TABLE %13148000 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%13149000 + UNITTYPE = 47:5, 13150000 + UNITTYPECNTRF =42:8,% ORDINAL # OF UNIT WITHIN TYPE 13150100 + UERRORSTATUSBITS = 34:14,COMMENT COMBINED FIELD FOR ERROR 13151000 + AND STATUS BITS; 13152000 + UNITERRORFIELD = 30:5, % UNIT ERROR COUNT (USED BY IOFINISH) 13154000 + UNITSTATUS =25:5 , COMMENT FIELD INDICATING UNIT STATE-AS13155000 + UNITREADY,UNITERROR,UNITBUSY ETC; 13156000 + UNITNOTREADY=25:1, COMMENT 1- NOT READY 13157000 + 0- READY; 13158000 + UNITERROR=24:1 , COMMENT IF SET(=1),ERROR ON UNIT; 13159000 + UCHANWAITORBUSY=23:3, COMMENT UNIT BUSY OR WAITING FOR A 13160000 + CHANNEL; 13161000 + UCHANWAIT=23:1, COMMENT UNIT WAITING FOR A CHANNEL; 13162000 + UNITIOBUSY=22:2, COMMENT I/O IN PROCESS & UNITBUSY; 13163000 + % 01 - AWAITING PRINTER FINISH 13164000 + IOINPROCESS=22:1, COMMENT I/O IN PROCESS; 13165000 + UNITINPROCESS=22:1, COMMENT UNIT IN PROCESS; 13166000 + UNITSTATE = 20:15, % STATE OF UNIT 13167000 + UNITRETRY =20:1, COMMENT UNIT BEING RETRIED; 13168000 + ULOCKED = 19:1, % UNIT LOCKED 13169000 + USAVED = 18:1, % UNIT SAVED 13170000 + DENSITYF = 17:3, % DISK TYPE 13171000 + USCRATCH = 14:1, % UNIT IS SCRATCH 13172000 + UNITASSIGNED = 13:1, % UNIT ASSIGNED TO A USER 13173000 + ULABELLED = 12:1, % UNIT LABELLED 13174000 + UINREWIND = 11:1, % UNIT REWINDING 13175000 + UCLOSEDNOREWIND= 10:1, % UNIT CLOSED WITH NO REWIND 13176000 + UTOBEPURGED = 9:1, % UNIT CLOSED WITH PURGE 13177000 + UWRITERING = 8:1, % WRITE RING 13178000 + UNITMPXD =5:4, COMMENT MPXDESIGNATOR FOR THE UNIT; 13179000 + UNITMPXI =1:1; COMMENT MPXINDICATOR FOR THE UNIT; 13180000 +COMMENT =0:1 RESERVED FOR UNITNOLOCK; 13181000 +LAYOUT UNITL(UNITNOTREADY,19:2,14:3,UINREWIND); 13182000 +REAL 13183000 + MAXUNIT, COMMENT MAXIMUM UNIT NO ON THE SYSTEM. UNIT13187000 + NO ASSIGNED TO PSEUDO CARD READER IS 13188000 + MAXUNIT + 1; 13189000 + MINUNIT ~ - 1; COMMENT MINIMUM UNIT ON SYSTEM; 13190000 +INTEGER MAXPSEUDOUNIT, COMMENT MAXIMUM UNIT FOR PSEUDO 13191000 + CARD READERS - IT IS EQUAL TO 13192000 + MAXUNIT + NO. OF PSEUDO CARD 13193000 + READERS; 13194000 + UBITSTABLESIZE; COMMENT SIZE = HIGHEST WHOLE NO. 13195000 + OF MAXPSEUDOUNITS/48; 13196000 +FIELD RDMEMADDR=47:20, COMMENT MEMORY ADDRESS FIELD OR RESULT DESC;13198000 + RDCHRCNT =27:3 , COMMENT CHARACTER COUNT FIELD OF R.D.; 13199000 + RDUNUMERR=24:25,% BOTH UNIT NUMBER AND ERROR FIELD. 13200000 + RDUNITNO =24:8 , COMMENT UNIT NO. FIELD IN RESULT DESC.; 13201000 + RDERROR =16:17, COMMENT RESULT DESCRIPTOR ERROR FIELD; 13202000 + RDSTNDERROR=6:7, COMMENT STANDARD ERROR FIELD OF R.D.; 13203000 + RDATTNEXCP=1:2, % ATTENTION EXCEPTION BITS 13204000 + RDEXCEPTION=0:1, % HARDWARE EXCEPTN13205000 + RDATTENTION=1:1, % SOFTWARE ATTNTN 13206000 + RDBIT432 =4:3, COMMENT UNITUSABLE BITS; 13207000 + RDBUSY =2:1, COMMENT BUSY; 13208000 + RDNOTREADY =3:1, COMMENT NOT READY; 13209000 + RDERRORBIT =4:1, COMMENT DESCRIPTOR ERROR; 13210000 + RDMEMADDRBIT =5:1, COMMENT MEMORY ADDRESS ERROR; 13211000 + RDMEMPARITY =6:1, COMMENT MEMORY PARITY ERROR; 13212000 + RDUNITERROR=15:9, COMMENT UNIT ERROR FIELD OF R. D. ; 13213000 + RDMEMACCESS =7:1, COMMENT MEMORY ACCESS ERROR; 13214000 + RDENDOFTAPE =8:1, COMMENT END OR BEGINNING OF TAPE; 13215000 + RDLOWPAPER= 8:1, % LOW PAPER 13216000 + RDWLOOREOF =9:1, COMMENT WRITE LOCK-OUT OR END OF FILE;13217000 + RDCNTRLCARD =10:1,COMMENT CONTROL CARD; 13218000 + RDINCREC = 10:1, % INCOMPLETE RECORD 13219000 + RDDENSITY = 11:2, % DENSITY IN RD AFTER TEST 13220000 + RDOVERFLOW =11:1,COMMENT EXCEED WORD COUNT; 13221000 + RDCRCCORRECT =12:1,COMMENT CRC CORRECTION; 13222000 + RDNONPRESENT =13:1,COMMENT NON-PRESENT; 13223000 + RDREWINDING =14:1,COMMENT REWINDING; 13224000 + RDBLANKTAPE =15:1,COMMENT BLANK TAPE; 13225000 + RDMEMPROTECT =16:1;COMMENT MEMORY PROTECT ERROR; 13225500 +FIELD RDDISKFILETYPEF= 11:2; 13226000 + COMMENT 1C-5 = 0 13227000 + 1A-X = 1 13228000 + 1C-3 = 2 13229000 + 1C-4 = 3; 13230000 + COMMENT 1A-X = 0 ALSO, BUT ONLY ON 101, I HOPE; 13231000 +FIELD SLCNTRDY = 15:1; COMMENT SINGLE LINE CONTROL TIMEOUT; 13232000 +FIELD CONSOLEIDF = 14:3; 13232100 +FIELD COMMENT I/O CONTROL WORD FIELDS; 13233000 + IOSTANDARDFIELD =45:10, 13234000 + IOATTENTION =45:1, 13235000 + IOREADBIT =44:1, 13236000 + IOMEMINHIBIT =43:1, 13237000 + IOMODE =42:2, 13238000 + IOTRANSLATE =42:1, 13239000 + IOFRAMESIZE =41:1, 13240000 + IOMEMPROTECT =40:1, 13241000 + IOBACKWARD =39:1, 13242000 + IOTESTBIT =38:1, 13243000 + IOTRANSFERTAG =37:1, 13244000 + IOFORCETAG =36:1, 13245000 + IOUNITFIELD =35:36; 13246000 +FIELD ADDRESS =19:20, 13247000 + USTATUSVECTORNO=11:3, COMMENT EACH VECTOR NO REPRESENTS 13248000 + READY STATUS OF 32 UNITS; 13249000 + MPXDESIGNATOR = 4:4, COMMENT MPXA(=1), MPXB(=2), ETC; 13250000 + MPXINDICATOR = 0:1, COMMENT 0 MEANS INTERROGATE ALL MPXS 13251000 + 1 MEANS INTERROGATE THE ONE 13252000 + SPECIFIED BY MPXDESIGNATOR; 13253000 + UNITNO =16:8, COMMENT NOTE-UNITNO WITH UNIT STATUS 13254000 + VECTOR NO PRECEEDING MAKES UNITNOS 13255000 + FROM 0 TO 255; 13256000 + BUFFERLENGTH =39:20, COMMENT BUFFER LENGTH IN AREA DESC.; 13257000 + SIGNBITF=46:1, 13260000 + DIV4E = 47:46,% 13260100 + MOD4F = 1:2,% 13260200 + DIV2F = 47:47,% 13260300 + MOD2F = 0:1,% 13260400 + FIRSTCHRF =47:6, COMMENT FIELD FOR FIRST CHARACTER; 13261000 + CONTROLFIELD =8:4; COMMENT CONTROL FIELD FOR VARIOUS 13262000 + SCAN IN FUNCTIONS; 13263000 +DEFINE IOCBSIZE =6#, % SIZE OF IOCB 13263100 + % INDICES OF ITEMS IN IOCB 13263200 + USERINDEX =0#, 13263300 + MISCINDEX =1#, 13263400 + AREADESCINDEX =2#, 13263500 + EVENTINDEX =3#; 13263600 +COMMENT FIELDS FOR USER WORD OF IOCB; 13264000 +FIELD IDNO =47:10, COMMENT USER IDENTIFICATION NO.; 13265000 + PRIORITYF =37:5 , COMMENT CONTAINS PRIORITY; 13266000 + UNITNOF =32:9 , COMMENT CONTAINS LOGICAL UNIT NO.; 13267000 + IOERRORRECOVERY= 23:1, % I/O RECOVEIQ09N PROCESS FOR THIS I/O13268000 + USERIOFIELD =22:10, % FIELD FOR USER I/O ACTION 13269000 + USERPARITYBIT =22:1, % PARITY ACTION TO BE TAKEN BY USER 13269200 + USEREOFORTBIT =21:1, % END OF FILE OR END OF TAPE ACTION 13269400 + USERIOFINISH =20:1, % USER I/O FINISHED 13269600 + USERSPECIALID =19:1 , % SPECIAL ACTION TO BE TAKEN 13269800 + USERIOBIT =18:1; % USER I/O 13270000 +COMMENT FIELDS FOR MISC WORD OF IOCB; 13270100 +FIELD 13270200 + WORDCOUNTF =47:20, % WORD COUNT FIELD 13270300 +COMMENT RDCHRCNT =27:3, CHARACTER COUNT FIELD; 13270400 +COMMENT RDUNITNO =24:8, UNIT NUMBER; 13270500 + IOERRORMASKFIELD =16:17; % FOR MASKING I/O ERRORS IN 13270600 + % IOFINISH 13270700 +COMMENT AFTER SUCCESSFUL IOFIMISH , IOERRORMASKFIELD CONTAINS 13270800 + ERROR FIELD (AFTER MASKING) OF RESULT DESCRIPTOR; 13270850 +COMMENT ADDITIONAL FIELDS HAVE BEEN ADDED TO USERL. PRESENT REFERENCES13270880 + TO USERL WILL NOT BE AFFECTED,FOR USING ADDITIONAL FIELDS 13270900 + NEW LAYOUT MAY BE NECESSARY; 13270950 +LAYOUT IOPATHWORD(UNITNO,MPXDESIGNATOR,MPXINDICATOR), 13271000 + COMMENT WORD USED FOR INTERROGATING I/O PATH; 13272000 + USTATUSWORD(USTATUSVECTORNO, 8:4~1,MPXDESIGNATOR,MPXINDICATOR),13273000 + COMMENT WORD USED FOR INTERROGATING PERIPHERAL 13274000 + STATUS; 13275000 + UNITINITIALIZE (UNITTYPE, UNITMPXD, UNITMPXI), 13276000 + COMMENT TO INITIALIZE UNIT TABLE; 13277000 + BINEL (47:8), 13278000 + TYPEINTERROGATE(UNITNO, 13279000 + CONTROLFIELD ~6, 13280000 + MPXDESIGNATOR, 13281000 + MPXINDICATOR), 13282000 + COMMENT TO INTERROGATE TYPE (AND PATH) AT 13283000 + INITIALIZE TIME.; 13284000 + BITL( BIT47=47:1, BIT46=46:1, BIT45=45:1, BIT44=44:1, 13285000 + BIT43=43:1, BIT42=42:1, BIT41=41:1, BIT40=40:1, 13286000 + BIT39=39:1, BIT38=38:1, BIT37=37:1, BIT36=36:1, 13287000 + BIT35=35:1, BIT34=34:1, BIT33=33:1, BIT32=32:1, 13288000 + BIT31=31:1, BIT30=30:1, BIT29=29:1, BIT28=28:1, 13289000 + BIT27=27:1, BIT26=26:1, BIT25=25:1, BIT24=24:1, 13290000 + BIT23=23:1, BIT22=22:1, BIT21=21:1, BIT20=20:1, 13291000 + BIT19=19:1, BIT18=18:1, BIT17=17:1, BIT16=16:1, 13292000 + BIT15=15:1, BIT14=14:1, BIT13=13:1, BIT12=12:1, 13293000 + BIT11=11:1, BIT10=10:1, BIT9 = 9:1, BIT8 = 8:1, 13294000 + BIT7 = 7:1, BIT6 = 6:1, BIT5 = 5:1, BIT4 = 4:1, 13295000 + BIT3 = 3:1, BIT2 = 2:1, BIT1 = 1:1, BIT0 = 0:1), 13296000 + DIVMOML(PCBITSF~0,ADDRESSF~0), 13297010 + IOL(BL=39:20,FL=19:20), 13297020 + IOLINKL(NUMRECSLNK=47:16,BCKWRDLNK=31:16,FRWRDLNK=15:16), 13297030 + SCANINWORD(CONTROLFIELD,MPXDESIGNATOR,MPXINDICATOR), 13298000 + COMMENT CONTROL WORD USED FOR VARIOUS SCAN IN FUNCTIONS; 13299000 + SCANOUTWORD(CONTROLFIELD,MPXDESIGNATOR,MPXINDICATOR), 13299100 + COMMENT SCAN OUT CONTROL WORD; 13299200 + RDLBL(PNO=19:8,PTP=11:4,UNO=7:8), % READALABL LAYOUT13300000 + IOCWDISKL(REPORTF=35:4,DECADDRF=27:28), 13301000 + COMMENT UNIT FIELD OF IOCW FOR DISK; 13302000 + IOCWPRINTERL(SKIPF=35:4,SPACEF=31:2), COMMENT FOR MAKING 13303000 + UNIT FIELD OF IOCW FOR PRINTER; 13304000 + IOCWTAPEL(FUNCTIONF=35:2,BPISPECF=33:1,BPIF=32:2, 13305000 + PARITYF=30:1,CRCSPECF=29:1,CRCTRACK=28:3), 13306000 + COMMENT FOR MAKING UNIT FIELD OF IOCW FOR TAPE; 13307000 + COMMENT TO MAKE UP A DESCRIPTOR; 13308000 + IOCWL(IOSTANDARDFIELD,IOUNITFIELD), COMMENT TO FORM IOCW; 13309000 + IOCWDETAILL(IOATTENTION,IOREADBIT,IOMODE,IOUNITFIELD), 13310000 + COMMENT FOR SETTING UP IOCW FOR DIFF. RECORDING MODE;13311000 + IOCWSPACEL(IOSTANDARDFIELD~@600,39:1,23:16) 13312000 + , COMMENT TO MAKE UP TAPE SPACE ; 13313000 + TAPEIOCWL(IOREADBIT,IOTRANSLATE,IOFRAMESIZE,33:3,PARITYF), 13313010 + PRINTIOCWL(IOREADBIT~0,IOTRANSLATE,IOFRAMESIZE,SKIPF,SPACEF), 13313020 + PPRTIOCWL(IOREADBIT,IOTRANSLATE,IOFRAMESIZE,IOMEMPROTECT, 13313030 + FUNCTIONF), 13313040 + MISCL (SIGNBITF~1,IOERRORMASKFIELD), 13314000 + IOERRORMASKL(BUFFERLENGTH,ADDRESS), 13315000 + COMMENT TO MAKE UP IOERRORMASK FOR WAITIO; 13316000 + USERL(IDNO,PRIORITYF,UNITNOF,IOERRORRECOVERY); 13317000 + COMMENT TO FORM USER WORD FOR IOCB; 13318000 +REAL 13319000 + MAXVECTORNO; COMMENT MAXIMUM VECTOR NO; 13321000 +DEFINE TIMEOFDAYWORD=96 #; COMMENT CONTROL WORD FOR SETTING & 13324000 + READING TIME OF DAY; 13325000 +DEFINE BASICCLOCKUNIT = 2.4 # % BASIC UNIT TOD CLOCK 13326000 + , ONESECOND = 416667 # % NUMBER OF BASIC UNITS13327000 + % IN ONESECOND(ACTUALLY13328000 + % IN 1.0000008 SECONDS)13329000 + 13330000 + , REARRANGETIME = 416667 # % NUMBER OF BASIC UNITS13331000 + % BETWEEN RE-ARRANGING 13332000 + % READYQ 13333000 + ; 13334000 +DEFINE COMMENT DEFINES FOR UNIT TYPES-(REF FIELD UNITTYPE); 13335000 + NOUNIT =0#, 13336000 + DISKFILE =1#, 13337000 + CONN = 2#, 13338000 + SPO = CONN#,% SPO IS HOLD-OVER FROM B5500. 13339000 + PAPERTAPERDR =4#, COMMENT PAPER TAPE READER; 13340000 + PAPERTAPEPNCH =5#, COMMENT PAPER TAPE PUNCH; 13341000 + BUFFPRINTER =6#, COMMENT LINE PRINTER I BUFFERED; 13342000 + UNBUFFPRINTER =7#, COMMENT LINE PRINTER IIUNBUFFERED; 13343000 + CARDREADER =9#, 13344000 + CARDPUNCH1 =10#, COMMENT CARD PUNCH I; 13345000 + CARDPUNCH2 =11#, COMMENT CARD PUNCH II ; 13346000 + MAGTAPE1 =13#, COMMENT MAGNETIC TAPE I(7 TRACK); 13347000 + MAGTAPE2 =14#, COMMENT MAGNETIC TAPE II (9 TRACK); 13348000 + MAGTAPE3 = 15#, COMMENT MAGNETIC TAPE III (9 TRACK); 13349000 + MAGTAPCLUSTER1= 29#,% MAGNETIC TAPE CLUSTER I (7 TRACK) 13350000 + MAGTAPCLUSTER2= 30#,% MAGNETIC TAPE CLUSTER II (9 TRACK) 13351000 + MAGTAPCLUSTER3= 31#,% MAGNETIC TAPE CLUSTER III (9 TRACK) 13352000 + MAGTAPE(TYPE) = (TYPE } 13 AND TYPE { 15 OR TYPE } 29) #; 13353000 +DEFINE MAXUNITTYPE = 31 #; 13353100 + 13354000 +DEFINE% FOR KEYIN AND ASSOCIATED PROCEDURES 13355000 + POINTTOMSGAREA= POINTER(MSGAREA[1],BYTESZ)#, 13356000 + MCP = 0#, 13357000 + KEYINQSZ = 2#, 13358000 + INVKBDSZ = 2#, 13359000 + JFACTOR = INVKBDSZ+3#, 13360000 + TI(X) = REAL(POINTER(TYPEINDX[X], *), 1) #, 13361000 + UNITBL(U1,U2) = REAL(POINTER(MNEMTOUNIT[U1+U2-1],*),1)#, 13362000 + CLEAR(P,B) = REPLACE P BY B" " FOR B WORDS#,% 13363000 + ETX = 48"03"#,% 13364000 + BLANK = 8" "#,% 13366000 + CLEARSCREEN = 48"0C0000" #, 13367000 + LINEERASE = 48"00110000"#,% 13368000 + REVERSELF = 48"00130000"#,% 13369000 + HOME = 48"3C00"#,% 13370000 + CARRETURN = 48"0D0000"#,% 13371000 + LINEFEED = 48"2500"#,% 13372000 + COLON = 8":"#,% 13373000 + EQUAAL = 8"="#,% 13374000 + AT = 8"@"#,% 13375000 + SLASH = 8"/"#,% 13376000 + PERIOD = 8"."#,% 13377000 + COMMA = 8","#,% 13377100 + QUESTION = 48"6F"#,% 13378000 + BACKSPACE = 48"1600"#,% 13379000 + NUL = 48"00"#,% 13379900 + ZERO = 8"0"#,% 13380100 + DISPLAYONMIX = DISPLAYONKEYER#, 13381000 + DISPLAYONPER = DISPLAYONKEYER#, 13382000 + DISPLAYONKEYER= SCREEN[2]#, 13383000 + DISPLAYONCON = DISPLAYONKEYER#, 13384000 + NOOFSCREENSRQD= 4#, 13385000 + MNEMLIM = 14#, 13386000 + MNEMSZ = 2#, 13387000 + BUFFS = 6#, 13388000 + CHRS = 6#, 13389000 + BYTESZ = 8#, 13390000 + RUSER(U) = 0&USERL(,,U,)#, 13391000 + RIOCW = 0&IOCWL(@440)#,% 13392000 + RERRMSK = @116001#, 13393000 + WIOCW = 0%IOCWL(#40)#,% 13394000 + WUSER(U) = 0%USERL(*,*,U,*)#, 13395000 + WERRMSK = @110001#, 13396000 + RDTIMEOUT = RDBLANKTAPE#, 13397000 + DATEIS = 8"DATE IS "#,% 13398100 + TIMEIS = 8"TIME IS "#,% 13398200 + MAXMSGSZ = 1000#, 13399000 + LINESZ = 40#,% 13400000 + SCREENSZ = 960#,% 13400100 + MAXPGS = 2#,% 13400200 + MAXLNS = 20#,% 13401000 + DICASZ = 3#, 13402000 + MAXDICA = 24#, 13403000 + DICBSZ = 2#, 13404000 + MAXDICB = 102#, 13405000 + MIN(A,B) = (IF A{B THEN A ELSE B)#, 13406000 + 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 + 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 + HAVENTSUSPENDED(S)=WORDSTACK[S,REPLYEVENTPLACE].TAG=0 OR% 13410300 + BOOLEAN(M[STACK[S,REPLYEVENTPLACE]])#, 13410302 + JOBREF(S) = WORDSTACK[S,JOBIDPLACE]#,% 13410400 + KFPSCRATCHWORDSZ= 1#,% 13428000 + LEAP(Y) = Y.MOD4F=0 AND(Y MOD 100!0 OR(Y MOD 400=0 AND 13428100 + Y MOD 4000!0))#, 13428102 + DAY = 8"DAY, "#,% 13428200 + JULDATESZ = 7#,% 13428300 + 13428400 + STARTYEARPLACE= 0#,% 13428500 + STARTDAYPLACE = 4#,% 13428600 + YEARSZ = 4#,% 13428700 + DAYSZ = 3#,% 13428800 + BASEYEAR = 1700#,% 13428900 + PERCENTAGE(X) = X DIV 10 FOR 2 DIGITS,PERIOD,% 13431000 + X MOD 10 FOR 1 DIGITS#,% 13432000 + TIMECORRFACT = 2400#,% ::= (2.4|10@6)/10@3 GIVING SECONDS 13433000 + DIV2(X) = REAL(BOOLEAN(X)AND NOT BOOLEAN(3))#,% 13433100 +DEFINEND=0#; 13434000 +DEFINE 13435000 + % FOR READALABEL AND PURGIT 13436000 + USAH = 0&USERL(,,U,)#, 13437000 + SCHANNEL = UNT.UNITTYPE=13#, 13438000 + NCHANNEL = NOT SCHANNEL#, 13439000 + ERAH(M,S) = 0&IOERRORMASKL(M,S)#, 13440000 + UNEXP = 3"377635"#, 13441000 + TAPETEST = 4#, 13442000 + TAPEPARITY=BOOLEAN(RSLT.RDMEMACCESS)AND RSLT.RDDENSITY=3#,13444000 + GETUNT = WHILE BOOLEAN(UNT~READLOCK(1,UNIT[U])) DO#, 13445000 + PUTUNT(A,B,C,D)=GETUNT;UNIT[U]~UNT&UNITL(A,B,C,D)#, 13446000 + GETOLDS = OLDSTATUS~OLDSTATUSWORD[VECTORNO]; 13447000 + % KLUDGE 13448000 + OLDSTATUSWORD[VECTORNO]~OLDSTATUS AND NOT 13449000 + BOOLEAN(BITWORD)#, 13450000 + RD432 = RDBIT432#, 13451000 + PHDR1 = PVOL1#, 13452000 + PHDR2 = PVOL1#, 13453000 + RCRDFRMT = IF TAPETYPE=1 THEN 13454000 + IF URF=6"F"THEN 0 ELSE IF URF=6"D"THEN 1 13455000 + ELSE IF URF=6"V"THEN 2 ELSE 13456000 + IF URF=6"I"THEN 4 ELSE IF URF=6"L"THEN 5 13457000 + ELSE IF URF=6"Z"THEN 6 ELSE 3 13457050 + ELSE 13458000 + IF URF=8"F"THEN 0 ELSE IF URF=8"D"THEN 1 13459000 + ELSE IF URF=8"V"THEN 2 ELSE 13460000 + IF URF=8"I"THEN 4 ELSE IF URF=8"L"THEN 5 13461000 + ELSE IF URF=8"Z"THEN 6 ELSE 3#, 13461050 + WERRORS = BOOLEAN(@260201)#; 13462000 +COMMENT DECLARATIONS FOR QUEUES OF I/O REQUESTS WAITING FOR UNIT 13463000 + ONE QUEUE FOR EACH UNIT; 13464000 +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 + PRVSIO,NEXTIO); 13469000 + VALUE USER,MISC,AREADESC, 13470000 + PRVSIO,NEXTIO; 13471000 + REAL USER,MISC; 13472000 + EVENT EVNT; 13473000 + REFERENCE PRVSIO,NEXTIO,AREADESC; 13474000 + USING 13475000 + ALLOCATE IS REFERENCE(DUMMYIOQUE & 13476000 + ARRAYDESCL(3, 6, GETAREA(6))): 13477000 + NEXT IS NEXTIO @ FIRSTIO[INDEX]: 13478000 + TO INSERT, COMMENT QUEUE IS ARRANGED ON A FIRST COME FIRST 13479000 + BASIS; 13480000 + BEGIN 13481000 + IF LASTIOU=NULL THEN COMMENT QUEUE IS EMPTY; 13482000 + BEGIN 13483000 + LASTIOU~FIRSTIOU~ENTRY; COMMENT ENTRY IS THE ADDRESS OF 13484000 + DESC. POINTING TO DATA OF NEW 13485000 + ENTRY; 13486000 + NEXTIO@(FIRSTIOU)~PRVSIO @(FIRSTIOU)~ NULL; 13487000 + END ELSE 13488000 + BEGIN COMMENT PUT ENTRY AT TAIL OF QUEUE; 13489000 + PRVSIO @(ENTRY)~ LASTIOU; 13490000 + NEXTIO @(LASTIOU)~ENTRY; 13491000 + LASTIOU ~ENTRY; 13492000 + NEXTIO @(ENTRY)~NULL; 13493000 + END; 13494000 + END INSERTION OF ENTRY IN QUEUE: 13495000 + TO DELINK, 13496000 + BEGIN 13497000 + IF ENTRY=FIRSTIOU THEN COMMENT ENTRY IS THE TOP OF QUEUE; 13498000 + 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 + PRVSIO @(FIRSTIOU) ~ NULL; 13503000 + END ELSE 13504000 + IF ENTRY=LASTIOU THEN COMMENT REMOVES LAST ENTRY OF QUEUE; 13505000 + BEGIN 13506000 + LASTIOU~PRVSIO @ ENTRY; 13507000 + NEXTIO @(LASTIOU)~ NULL; 13508000 + END ELSE COMMENT REMOVES ANY OTHER ENTRY; 13509000 + BEGIN 13510000 + COMMENT FIX NEXTIO POINTER IN THE UPPER LINK OF ENTRY; 13511000 + NEXTIO @(PRVSIO @ ENTRY)~ NEXTIO @ ENTRY; 13512000 + COMMENT FIX PRVSIO POINTER IN THE LOWER LINK OF ENTRY; 13513000 + PRVSIO @(NEXTIO @ ENTRY)~ PRVSIO @ ENTRY; 13514000 + END; 13515000 + END DELINKING OF ENTRY FROM OUEUE; 13516000 +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 + WAITCHANNELQUE; 13522000 +DEFINE FIRSTUNITI=FIRSTUNIT[INDEX]#, COMMENT INDEX-QUEUE HEAD INDEX; 13523000 + LASTUNITI=LASTUNIT[INDEX]#; 13524000 +QUEUE ARRAY WAITCHANNELQUE:FIRSTUNIT[1](UNTWORD:PRVSUNIT,NEXTUNIT); 13525000 + VALUE UNTWORD,PRVSUNIT,NEXTUNIT; 13526000 + REAL UNTWORD; 13527000 + REFERENCE PRVSUNIT,NEXTUNIT; 13528000 + USING 13529000 + ALLOCATE IS REFERENCE(DUMMYWAITCHANNELQUE & 13530000 + ARRAYDESCL(,3,GETAREA(3))): 13531000 + NEXT IS NEXTUNIT @ FIRSTUNIT[INDEX]: 13532000 + TO INSERT, COMMENT QUEUE IS ARRANGED ON A FIRST COME FIRST 13533000 + BASIS; 13534000 + BEGIN 13535000 + IF LASTUNITI=NULL THEN COMMENT QUEUE IS EMPTY; 13536000 + BEGIN 13537000 + LASTUNITI~FIRSTUNITI~ENTRY; COMMENT ENTRY IS THE ADDRESS 13538000 + OF DESC. POINTING TO DATA OF 13539000 + NEW ENTRY; 13540000 + NEXTUNIT @(FIRSTUNITI)~PRVSUNIT @(FIRSTUNITI) ~NULL; 13541000 + END ELSE 13542000 +?END 99999999140625PK