. THIS SECTION CONTAINS THE ENTRANCE, EXIT AND ALL ROUTINES IN PHASE 111 . CONCERNRED WITH IN/ OUT OR REFERENCES TO THE MONITOR SYSTRM RGS . REGISTER DEFINITION LGFIF . NESTED LOGICAL IF DEFINITIONS IDX EQU 1 $(2) . REENT N3ERRL* +0333333,0 J N3MA $(1) . N3M N3MA LR R15,N3ERRL N3M TZ,H2 ERR . ONLY DUMP IF NO DUMP ALREADY J $+3 XER 40,-1 J FINISH . GO SET FILES FOR NEXT PHASE ERRXL SR R4,DTEST J N3ERRL . THIS SECTION INITIALIZES THE VARIOUS TABLES USED BY PHASE III 07280 N3MN* . L A0,BUGERR ER IALL$ LR,M R4,1 07330 LR,M R5,077777 07340 L,M R6,2 L,H2 A1,CRISYM S,H2 A1,ARYITM ILT LOCC,OCC,USEL ILT LXF51,XF51,CXF51 2 . SZ NEXD,0,H2 . SET TO ACCUMULATE TOTAL NUMBER OF ENTRIES L,M A0,76 N3M SZ N3SBTA,A0 N3M JGD A0,$-1 N3M L,M R15,3 L,M A0,0177777 SZ B5 S A0,LOGFCP S A0,LGLFCP S A0,LOGBCP SZ IFSPI SZ LOOPIF SZ LGDOP SZ LCF50 L,M A0,LFX SZ FNX,A0 JGD A0,$-1 SZ NSEQN . INITIALIZE THESE LOCATIONS TO ZERO 07450 SZ INDVAR SZ INSERT-1 SZ F31-1 SZ F31-2 SZ NEXA SZ NEXA+1 SZ NEXA+2 SZ NEXA+3 DO JPL , L,M A0,SZQ DO JPL , LXI,M A0,-1 DO JPL , L,M A1,0 DO JPL , ER LOAD$ ILT 0776,SUBEXD,NEXD S,H1 R15,NEXD . NUMBERS 1 AND 2 ARE USED IN PHASE 5 OWF40 . OPEN TO WRITE F40 OWF50 . OPEN TO WRITE F50 L,M R1,12 L A0,(1,0) THIS SECTION COUNTS R REGISTERS TZ,S6 N0RGTB+5,*A0 JGD R1,$-1 AN,M A0,1 S,H2 A0,N3MXRG J GET 07600 STRT1 NOP L R3,0,A0 . LOAD OFFENDING LOCATION SLJ XERV . THIS SECTION OBTAINS THE NEXT ITEM TO PROCESS. DEPENDING ON GETF IT 07620 . EITHER GETS THE NEXT ITEM FROM F30, F31 OR POL. IT HAS TWO 07630 . ENTRANCES. THE FIRST, GET, WILL ALWAYS BRANCH TO ITV AFTER GETTING 07640 . PROGRAM. BOTH PUT THE NEXT ITEM BOTH IN A0 AND FL30. 07650 . THE ITEM, WHILE THE SECOND, GET1, RETURNS TO THE NEXT STEP IN THE 07660 GET* LMJ B11,GET1 J ITV GET1* SX,1 B11,GETX ETV A0,GETF 6 33 . BRANCH ON ITEM SOURCE J GET3 GETF=0 07690 J GET2 GETF=1 07700 J GET5 . GETF=2 . SUBSCRIPT TERMS J GET6 . GETF=3 . IN LINE EXPONENTS J GET7 . GETF=4 . STATEMENT FUNCTIONS GET5 LA A1,POLG NOP LA A0,POL,*A1 07720 SA A1,POLG 07730 J GET4 GET2 LA A1,GSUB 07790 NOP LA A0,F31,*A1 07800 SA A1,GSUB 07810 J GET4 07820 GET6 LA A1,ILGT NOP L A0,0,*A1 SA A1,ILGT J GET4 GET7 LA A1,SFGT NOP L A0,0,*A1 S A1,SFGT J GET4 GET3 RBF30 SER GET4 S A0,FL30 TZ GETF TNZ,H2 CRCRFT . TEST FOR INSERTING INTO CROSS REFERENCE FILE J GET4X SLJ CRSVE . SAVE REGISTERS SZ SLCRX+1 GET4A L,M A2,4 TE A2,GETF . TEST FOR EXPANDING DEFINE J GET4Z L A2,DEFNAM S,H2 A2,SLCRX+1 . SYM TABLE POINTER TO NAME OF DEFINE L,M A2,2 TE,S1 A2,FL30 . TEST VARIABLE REFERENCE J GET4Z S,H1 A0,SLCRX . SYM OF VARIABLE L A2,SEQNO S,H2 A2,SLCRX L,M A2,4 S,S1 A2,SLCRX+1 . FLAG FOR DEFINE GET4Y LMJ B11,TRCF GET4Z SLJ CRRSV GET4X . DO IDX=1 , TNZ DX1 DO IDX=1 , J *GETX DO IDX=1 , SLJ N3DGST J *GETX SER XER 32 . FILE ROUTINES NOT WORKING FINISH* DO IDX=1 , DIAG DX0 XD40 . F40 DIAGNOSTIC L,H2 A0,CRSYM TLE,H2 A0,CRSFNX CHECK FOR PHASE 3 SYMBOL TABLE OVERFLOW J $+5 XERF ERRAX+30 TZ,H2 CTF51 SLJ XERV . ERROR SOME EXPRESSIONS UNDEFINED FINX OBF40 . CLOSE F40 AND OPEN TO READ BACKWARDS DO IDX=1 , DIAG DX0 XD50 . F50 DIAGNOSTIC TNZ CRFL J N4MN J N4XT . THIS SUBROUTINE STORES THE CONTENTS OF A0 AND A1 IN XF51 SO THAT 43860 . THEY WILL BE INSERTED IN F40 AT THE SEQUENCE NUMBER IN A2 43870 AILF* FAL XF51, CXF51,A3,STAX . FIND NEXT LOCATION IN XF51 AILFB SSC A2,15 43960 SA A0,XF51+1,A3 43970 SA A1,XF51,A3 43980 SSL A1,3 . MOVE SIGN BIT LA A0,(0400000) AND A0,A1 LA A0,A1 OR A0,XF51,A3 SA A1,XF51,A3 . MAKE COMPATIBLE WITH PHASE 4 AND 5 TNZ,S2 XF51,A3 J AILFD . WAS NOT AN IMMEDIATE CONSTANT TN,XH2 XF51,A3 J AILFD LN,T3 A0,XF51,A3 SA,H2 A0,XF51,A3 . COMPLEMENT IMMEDIATE CONSTANT AILFD AA,M A2,0,A3 LA A3,CTF51 44020 AA,016 A3,1 CTF51 = CTF51+1 44030 SA A3,CTF51 AA A2,(02020000) TNE A5,('F50 ') L A2,(03020000) SA A2,TF51-1,A3 440500 LA,M A15,0,A3 440510 TG,M A15,LTF51 440600 SLJ EMPTY CLAEAN OUT TABLES 44070 AILFX J 0,B11 . THIS SECTION OF CODE IS ENTERED WHENEVER AN INTERNAL . ERROR IS DETECTED IN PHASE III. IF DTEST HAD BEEN . SET BY A DIAGNOSTIC STATEMENT PRINTING OF THE PHASE . THREE TABLES TAKES PLACE OTHERWISE AN INTERNAL PHASE III . ERROR NOTICE IS GENERATED AND CONTROL IS GIVEN TO PHASE 0 FORMG FORM 5,7,6,1,1,16 $(2) . REENT XERPKT +0,0423031 . CONTINGENCY DIAG WITH NEXT WORD AS OCTAL PARAM. EXEC 8 XERV* +0 NOP 0 J N3MB REENT $(1) . REENT N3MB . TNZ,S3 XERV . S3 OF XERV IS SET BY EXEC J ERIXX SA A0,R15 SAVE TEMPORARILY L A0,(NOP 0) S A0,XERV+1 ER CEND$ . CONTINGENCY STATE HAS EXPIRED L,S3 A0,XERV TEST FOR TYPE OF EXEC RETURNS TG,M A0,3 IGDM(2) AND IOPR(1) PROCEED TG,M A0,6 . IFOF(3) IFUF(4) AND IDOF(5) TO ROTOV J $+2 J ROTOV RESTORE FOR DUMMIES L A0,R15 SLJ N0RGSV . SAVE EXEC 8 XERF XERPKT . FILE CONTINGENCY EXEC 8 SLJ N0RGRS . RESTORE. EXEC 8 ERIXX XER 60 J FINISH ERRR* TZ DFLX . FATAL ERROR FLAG REENT J FINX SLJ N0RGSV LX B1,ERR SX,H2 B1,ERRAX+11 LX B1,0,B1 SX B1,DUMPN L R15,XERV SR,H1 R15,ERRAX+11 TP DUMPN J ERRCX1 TZ DTEST TEST FOR MODE DIAGNOSTIC J $+3 TZ CUSFL J ERRCX . DO NO PRINTING UNLESS DIAGNOS FLAG IS SET ERRS . DO IDX=1 , SLJ N3DGX1 . PRINT TABLES ERRCX TN DUMPN J ERRC . SET UP ERROR MESSAGE 45430 LA A0,ERR 45440 AA,M A0,1 45450 SA A0,ERR 45460 TZ CUSFL J *ERR TNZ DTEST J *ERR SLJ N0RGRS RESTORE REGISTERS J *ERR RETURN TO PROGRAM 45590 ERRC XERF ERRAX+10 . FILE IRRECOVERABLE ERROR 45620 LMJ B11,CONTTT +006300,XERV SR R4,DFLX . SET FLAG THAT FATAL ERROR HAS OCCURRED J FINISH ERRCX1 TNZ DTEST J ERRCX J ERRS N3SRT1* LN,M A4,2 A,H2 A4,*1,B11 NUMBER OF ITEMS TO SORT JN A4,2,B11 EXIT IF ONLY 1 S A4,A5 L A2,(1,0) SRT10 LXM A2,0,B11 FIRST LOCATION L A4,A5 SZ A3 SRT11 L A1,0,A2 TG A1,1,*A2 J SRT12 EXCHANGE ITEMS JGD A4,SRT11 JZ A3,2,B11 ANY EXCHANGES J SRT10 -YES, LOOK FOR MORE SRT12 L,M A3,1 L A0,0,A2 EXCHANGE ITEMS ANA,M A2,1 . AVOID NEGATIVE IN U-FIELD S A0,0,*A2 S A1,0,A2 JGD A4,SRT11+1 J SRT10 RBF30E S,H2 B11,RF30E B$READ F30,ITVA L,H2 A1,F30+6 A,M A1,1 L,H2 A0,0,A1 S A0,F30I A A1,0,A1 L B11,RF30E DO IDX=0 , J GET3+1 DO IDX=1 , TNZ DX0 DO IDX=1 , J GET3+1 DO IDX=1 , SA A1,F30J DO IDX=1 , SLJ XD30 DO IDX=1 , J GET3+1 J *RF30E REENT $(2) . REENT RF30E J $ RES 4 $(1) . REENT WF40F S B11,WF40F1 S A0,WF40F1+1 DS A2,WF40F1+2 DS A4,WF40F1+4 DO IDX=1 , TZ DX0 DO IDX=1 , SLJ XD40 L,H2 A0,F40+6 L,M A1,BUFN S A1,F40I A A1,(-1,0) S A1,1,A0 BWRIT F40 WRITE A BLOCK L,H2 A1,F40+6 . LOC OF CURRENT BUFFER A A1,(1,NBCW) . SKIP NBCW WORDS L B11,WF40F1 L A0,WF40F1+1 DL A2,WF40F1+2 DL A4,WF40F1+4 ANX,M B11,2 J 0,B11 $(2) . REENT WF40F1 RES 6 $(1) . REENT WF50F S B11,WF50F1 S A0,WF50F1+1 DS A2,WF50F1+2 DS A4,WF50F1+4 DO IDX=1 , TZ DX0 DO IDX=1 , SLJ XD50 L,H2 A0,F50+6 . LOC OF CURRENT BUFFER L,M A1,BUFN S A1,F50I A A1,(-1,0) S A1,1,A0 BWRIT F50 WRITE A BLOCK L,H2 A1,F50+6 A A1,(1,NBCW) L B11,WF50F1 L A0,WF50F1+1 DL A2,WF50F1+2 DL A4,WF50F1+4 ANX,M B11,2 . AVOID -2,B11 J 0,B11 $(2) . REENT WF50F1 RES 6 $(1) . REENT . IN F31, INCREASES THE COUNT IN NSEQN, AND TESTS NSEQN AGAINST 57160 . THE MAXIMUM LENGTH OF F31. 57170 TF31* SA A0,F31,NSEQN . STORE ENTRY IN F31 57180 MVW 03600,0,M F31+1,NSEQN,T1 . MARK EOF AX,M NSEQN,1 57190 TLEM,M NSEQN,LF31 . TEST TO SEE IF F31 IS FULL 57200 J 0,B11 EXIT 57210 SLJ EMPTY 57220 TF50* SX,H2 B11,TF50X WF50 LR R15,CF50 JGD R15,$+1 SR R15,CF50 J *TF50X REENT TF40* SX,H2 B11,TF40X WF40 LR R15,CF40 JGD R15,$+1 SR R15,CF40 J *TF40X REENT . THE NEXT SECTION EITHER INCREMENTS OR DECREMENTS THE COUNTS OF ALL . EXPRESSIONS THAT ARE LINKED OGETHER . ON ENTRY A15 HAS THE VALUE PLUS OR MINUS TO BE ADDED TO ALL EXPRESSIONS ON . THE CHAIN . A3 POINTS AT TE FIRST EXPRESSION IN CHAIN CNTJR S B2,('SVB2 ') REENT LX B2,STNO S A3,('SVA3 ') CNTH L A1,SXCNT LNKSBX A A1,A15 LNKSBX S A1,SXCNT LNKSBX CNTH2 . L,S1 A4,2,A3 OR A4,DELJZ PRPOGATE REFERED TO FORM DEL EXPRESSION S,S1 A5,2,A3 L,S4 A4,4,A3 OR,H1 A4,DELJZ . PROPAGATE BITS WHICH SHOW USE IN IF S,S4 A5,4,A3 CNTE L,S5 A4,0,A3 AND,M A4,070 TE,M A5,020 J CNTA L,T1 A0,0,A3 EXPRESSION NUMBER S,T1 A0,N3STCK+30,B2 AX,M B2,2 TLEM,M B2,LTNO J CNTA XER 6 STACK LENGTH EXCEEDED CNTA AND,M A4,7 TE,M A5,2 J CNTB L,T2 A0,0,A3 EXPRESSION NUMBER S,T1 A0,N3STCK+30,B2 AX,M B2,2 TLEM,M B2,LTNO-30 J CNTB XER 6 CNTB JMGI B2,CNTC L B2,('SVB2 ') L A3,('SVA3 ') J *CNTJ CNTC SXLOC A3 N3STCK+30,B2,T1 LNKSBX J CNTH SAVR TZ,H1 EMPZZZ . THIS SAVES REGISTERS REENT J EMPTA SX B1,ERRA LX B1,SEQNO SX,H1 B1,EMPZZZ LX,M B1,27 SAVE REGISTER DURING FORCE EMPTYING LR R15,2,B1 SR R15,ERRA+2,B1 JGD B1,$-2 MVW SENDX ERRA+30 MVW EX1X ERRA+31 MVW EXS ERRA+32 MVW FLST ERRA+33 MVW SEQNX ERRA+34 MVW NSTRS ERRA+35 MVW SXDF ERRA+36 J *SAV RESTR SZ,H1 EMPZZZ . RESTORE REGISTERS REENT LX,M B1,27 LR R15,ERRA+2,B1 RSTORE REGISTERS SR R15,2,B1 JGD B1,$-2 MVW ERRA+30 SENDX MVW ERRA+31 EX1X MVW ERRA+32 EXS MVW ERRA+33 FLST MVW ERRA+34 SEQNX MVW ERRA+35 NSTRS MVW ERRA+36 SXDF J *REST EMPTA XER 200 TRYING TO EMPTY WHILE EMPTYING . OCCASSIONALLY IT IS FOUND AFTER A TRIAD HAS BEEN CONVERTED TO A 57430 . A SUBEXPRESSION AND STORED IN THE SUBEXPRESSION TABLES THAT THE 57440 . TRIAD WILL COMBINE WITH THE NEXT TRIAD. IN THIS EVENT THE TRIAD 57450 . THAT WAS JUST FORMED HAS TO BE DELETED FROM THE TABLES 57460 DEL* LA A0,SUBNO LOADS EXPRESSION NUMBER TO BE DELTED 57470 SLJ SAV SXLOC A3 A0 LNKSBX S,1 B11,DELXT S,1 A3,DELF FLAG FOR DELTE MODE TZ SXCNT LNKSBX J DELK DELP L,M A15,040 S A15,DELJZ SZ A15 SLJ CNTJ PROPAGATE REF FROM DEL EXPRESSION SZ DELJZ L A15,GETF . WHEN READING DEFINES ANOTHER ARG MAY B TNE,M A15,4 . BE THE SAME EXPRESSION SO WAIT A BIT J DELQ LMJ B9,DC1 LINK EXPRESSIONS SZ,1 SEQNX SEQUENCE NUMBER FOR DELEATED EXPRESSIONS LMJ B11,EXX LMJ B11,EXX DELQ SZ DELF SLJ REST J *DELXT REENT DELJ* DSL A0,30 TE,M A0,5 TEST FOR EXPRESSION J 0,B11 NO EXPRESSION TO DELETE DSC A0,42 MOVE EXP NUMBER TO A0 J DEL+1 DELK LN,M A15,1 SLJ CNTJ TZ SXCNT LNKSBX J DELQ J DELP DELZ* . REMOVE TOP EXPRESSION ONLY SXLOC A1 A0 LNKSBX SBT A14,2,A1,S1,040 REFERENCED FROM DELETED EXPRESSION DFL 4,A1,T3 1 . REDUCE USES BY ONE DELZJ . S A0,TA L A0,A1 JNZ A15,0,B11 L A15,GETF JNZ A15,DELCA L A3,A1 LNKSBX SLJ DLINK LNKSBX L,H2 A0,TA TE,H2 A0,SUBNO J DELG DELF1 AAL SUBEXD,NEXD,A0 . ADD THIS LOCATION IFL CSUBXD 1 INCREASE NUMBER OF AVAILABLE SUBEXD ENTRIES J 0,B11 EXIT OF ROUTINE 57640 DELG . NKSBX J DELF1 DELCA SBT A14,2,A0,S1,040 MARK REF FROM DELETED SBT A14,3,A0,S1,020 MARK AS SINGLE DELETE J 0,B11 EMPR LR R14,EMPTY REENT XERF ERR25 . INTERNAL TABLE OVERFLOW XER 20 57740 . THIS ROUTINE REMOVES AN EXPRESSION FROM A CHAIN NKSBX . WHEN ITS USES ARE EXHAUSTED NKSBX . WHEN ENTERED A3 IS POINTING AT THE EXPRESSION AND THE LOWER HALF NKSBX . OF WORD 4 HAS A POINTER TO THE HEAD LINK ON THE CHAIN THAT THE EXPRNKSBX . SHOULD BE REMOVED FROM NKSBX DLNKR L,M A4,0,A3 REENT L,S4 A0,3,A3 NKSBX AND,M A0,7 NKSBX L A0,A1 NKSBX L,H1 A1,NEXA,A0 GET START OF CHAIN NKSBX L A2,A1 NKSBX TNE A2,A4 NKSBX J DLKD NKSBX DLKA TNZ A2 NKSBX SLJ XERV FATAL ERROR IF EXPRESSION NOT ON CHAIN NKSBX TNE A4,A2 NKSBX J DLKB CORRECT POINTER HAS BEEN FOUND NKSBX L A1,A2 NKSBX L,H1 A2,4,A1 NKSBX J DLKA NKSBX DLKB L,H1 A2,4,A3 NKSBX JZ A2,DLKC EXPRESSION TO REMOVE ON END OF LINK NKSBX S,H1 A2,4,A1 NKSBX J *DLINK NKSBX DLKC SZ,H1 4,A1 NKSBX S,H2 A1,NEXA,A0 UPDATE POINTER TO LAST OF CHAIN NKSBX J *DLINK NKSBX DLKD L,H1 A2,4,A3 NKSBX S,H1 A2,NEXA,A0 RESET POINTER TO START OF CHAIN NKSBX JNZ A2,DLKB NKSBX SZ,H2 NEXA,A0 REMOVE ONLY ENTRY FROM CHAIN NKSBX J *DLINK NKSBX . THIS ROUTINE WILL ADD AN EXPRESSION ON TO A HEADLINK NKSBX . WHEN ENTERED A3 CONTAINS THE LOCATION OF THE EXPRESSION. NKSBX . THE LOWER HALF OF S4 IN WORD 4 WILL CONTAIN A NUMBER FROM 1 TO 8 NKSBX . TELLS WHICH HEADLINK . TO USE POSSIBLE HEADLINKS ARE NEXA,NEXB,NEXNKSBX SLNKR L,S4 A0,3,A3 REENT AND,M A0,7 NKSBX L,H2 A0,NEXA,A1 NKSBX . A HEAD LINK HAS A POINTER TO FIRST ON CHAIN IN H1 NAD LAST IN CHAINNKSBX JZ A0,SLKA NON PRESENTLY ON CHAIN NKSBX S,H1 A3,4,A0 MAKE LAST POINT TO NEW ADDITION NKSBX SZ,H1 4,A3 SHOW END OF CHAIN NKSBX S,H2 A3,NEXA,A1 NKSBX J *SLINK NKSBX SLKA S,H1 A3,NEXA,A1 NKSBX S,H2 A3,NEXA,A1 NKSBX SZ,H1 4,A3 SHOW LAST IN CHAIN NKSBX J *SLINK NKSBX $(2) . GETXXX* . GETX J $-$ DLINK* J $-$ REENT J DLNKR REENT SLINK* J $-$ REENT J SLNKR REENT DELXT J $-$ REENT EMPTY* J $-$ REENT J EMPR REENT ERR* J $-$ REENT J ERRR REENT TF50X J $-$ REENT TF40X J $-$ REENT CNTJ* J $-$ REENT J CNTJR REENT SAV J $-$ REENT J SAVR REENT REST J $-$ REENT J RESTR REENT BUGERR +0123700,XERV LIT END