RGDF* PROC 0. RGS* NAME 0 . LMSC* EQU 0 JPL* EQU 1 EX2* EQU 0 EX8* EQU 1 B0* EQU 0 B1* EQU 1 B2* EQU 2 B3* EQU 3 B4* EQU 4 B5* EQU 5 B6* EQU 6 B7* EQU 7 B8* EQU 8 B9* EQU 9 B10* EQU 10 B11* EQU 11 A0* EQU 12 A1* EQU 13 A2* EQU 14 A3* EQU 15 A4* EQU 16 A5* EQU 17 A6* EQU 18 A7* EQU 19 A8* EQU 20 A9* EQU 21 A10* EQU 22 A11* EQU 23 A12* EQU 24 A13* EQU 25 A14* EQU 26 A15* EQU 27 R0* EQU 64 R1* EQU 65 R2* EQU 66 R3* EQU 67 R4* EQU 68 R5* EQU 69 R6* EQU 70 R7* EQU 71 R8* EQU 72 R9* EQU 73 R10* EQU 74 R11* EQU 75 R12* EQU 76 R13* EQU 77 R14* EQU 78 R15* EQU 79 H2* EQU 1 H1* EQU 2 XH2* EQU 3 XH1* EQU 4 XT3* EQU 5 T3* EQU 5 T2* EQU 6 T1* EQU 7 S1* EQU 015 S2* EQU 014 S3* EQU 013 S4* EQU 012 S5* EQU 011 S6* EQU 010 M* EQU 016 MX* EQU 66 KX* EQU 65 XM* EQU 017 STAX* EQU 1 . EQM* EQU 01001 . ID AND TYPE FOR EQUALS NSEQN* EQU 7 . NEXT AVAILABLE LOCATION IN F31 CONIM* EQU 0301 . ID AND TYPE FOR IMMEDIATE CONSTANTS OFFM* EQU 01023 . ID AND TYPE FOR OFFSET PLUSM* EQU 01012 . ID AND TYPE FOR + AS ADDRESS SDFM* EQU 01016 . ID AND TYPE FOR SUBSCRIPT DEFINER SCNM* EQU 01017 . ID AND TYPE FOR SUBSCRIPT CONNECTOR TIMESM* EQU 01014 . ID AND TYPE FOR ASTERISK SXLNK* EQUF 4,A3,H1 LINK SXCMP* EQUF 3,A3,T3 COMPLEXITY COUNT SXCNT* EQUF 4,A3,T3 COUNTS NUMBER OF USES SXLNG* EQU 5 . LENGTH OF EXPRESSION ENTRY END GZ PROC 3,3 . JE* NAME 0 . JNE* NAME 1 . L GZ(1,1),GZ(1,2),GZ(1,3),GZ(1,4) . DO GZ(0,0)=0 , TNE GZ(1,1),GZ(2,1),0,M . DO GZ(0,0)=1 , TE GZ(1,1),GZ(2,1),0,M . J GZ(3,1),GZ(3,2) . END /. . THIS PROCEDURE ENTERS THE ERROR ROUTINE 03970 XER* PROC 1,2 . 03980 SLJ ERR . 03990 + XER(1,2),XER(1,1) . 04000 END . 04010 INT* PROC 2,4 . THIS PROCEDURE INTERCHANGES TWO ITEMS L INT(1,1),INT(1,2),INT(1,3),INT(1,4) . L INT(1,1)+1,INT(2,1),INT(2,2),INT(2,3) . S INT(1,1)+1,INT(1,2),INT(1,3),INT(1,4) . S INT(1,1),INT(2,1),INT(2,2),INT(2,3) . END P PROC 2 . SXLOC* NAME . THIS PROC LOADS THE LOCATION OF AN EXPRESSION . THE FIRST LIST IS THE REGISTER NUMBER . THE SECOND LIST IS LOCATION OF NUMBER LA P(1,1),P(2,1),P(2,2),P(2,3) SSC P(1,1),9 ONLY GET EXPRESSION NUMBER SSL P(1,1),27 NEAREST MOD 1000-1 VALUE MSI,M P(1,1),SXLNG . MULTIPLY BY LENGTH OF EXPRESSION A,M P(1,1),SUBEXA . ADD START OF EXPRESSION END . THIS PROCEDURE IS USED TO GENERATE THE INSTRUCTIONS TO ENTER 04120 . A CONSTANT INTO THE SYMBOL TABLE 04130 . PARAMETER, 1 NUMBER OF WORDS TO INSERT 04140 . PARAMETER, 2 NAME OF HEAD LINK 04150 . PARAMETER, 3 OCTAL DIGITS TO GO INTO 23-18 OF SYM THIRD WORD 04160 XSLT* PROC 1,5 04170 DO XSLT(1,1)=1 , LMJ B11,SLT . 04180 DO XSLT(1,1)=2 , LMJ B11,SL2T . 04190 + XSLT(1,2) . 04200 DO XSLT(1,1)=1 , LMJ B11,SLTI . 04210 DO XSLT(1,1)=2 , LMJ B11,SL2TI . 04220 LA,M A4,XSLT(1,3) . 04230 SA,013 A4,2,A1 . TRANSFERS MODE TO SYMBOL TABLE 04240 END . 04250 . THIS PROCEDURE IS USED TO SET BITS IN A GIVEN J FIELD 04260 . PARAMETER 1 A REGISTER 04270 . PARAMETER 2 LOCATION 04280 . PARAMETER 3 INDEX REGISTER 04290 . PARAMETER 4 J DESIGNATOR 04300 . PARAMETER 5 OCTAL NUMBERS REP 04310 SBT* PROC 1,3 . 04320 LA SBT(1,1),SBT(1,5),0,M . 04330 OR SBT(1,1),SBT(1,2),SBT(1,3),SBT(1,4) . 04340 SA SBT(1,1)+1, SBT(1,2),SBT(1,3),SBT(1,4) . 04350 END 04360 . THIS PROCEDURE WILL MOVE AN ITEM FROM ONE LOCATION TO ANOTHER 04370 . PARAMETER 1 LOCATION 1 04380 . PARAMETER 2 LOCATION 2 04390 . PARAMETER 3 INDEX 1 ZERO IF NOT SUPPLIED 04400 . PARAMETER 4 INDEX 2 ZERO IF NOT SUPPLIED 04410 . PARAMETER 5 J FIELD 1 IF USED AN INDEX MUST BE GIVEN 04420 . PARAMETER 6 J FIELD 2 IF USED AN INDEX MUST BE GIVEN 04430 MV* PROC 1,2 . 04440 LR R15,MV(1,1),MV(1,3),MV(1,5) . 04450 SR R15,MV(1,2),MV(1,4),MV(1,6) . 04460 END . 04470 . THIS PROCEDURE GENERATES THE CODE TO FILE AN ERROR MESSAGE 04480 . PARAMETER 1 IS LOCATION OF TWO WORD ENTRY TO BE TRANSFERED 04490 . TO THE ERROR TABLE ERRT 04500 XERF* PROC 1 1,4 . 04510 LR R15,SEQNO . 04520 SR,2 R15,XERF(1,1) . 04530 LMJ B11,ERFP . 04540 + XERF(1,1) . 04550 END . 04560 . THIS PROCEDURE TRANSFERS THE FOUR WORDS ASSOCIATED WITH 04570 . A SUBEXPRESSION FROM ONE PART OF MEMORY TO ANOTHER 04580 . PARAMETER 1 LOCATION TO MOVE FROM 04590 . PARAMETER 2 INDEX TO MOVE FROM WITH 04600 . PARAMETER 3 LOCATION TO MOVE TO 04610 . PARAMETER 4 INDEX TO MOVE TO WITH 04620 MSX1* PROC 0,2 . 04630 LR R15,MSX(1,1)+L-1,MSX(1,2) . 04640 SR R15,MSX(1,3)+L-1,MSX(1,4) . 04650 END . 04660 MSX* PROC 1,10 . L DO 5 , MSX1 END . 04690 . THIS PROCEDURE WILL MOVE AN ITEM FROM ONE LOCATION TO ANOTHER 04700 . LIST 1 M,X,J OF WORD TO BE MOVED 04710 . LIST 2 M,X,J OF LOCATION TO MOVE TO 04720 MVW* PROC 2,2 . 04730 LR R15,MVW(1,1),MVW(1,2),MVW(1,3) . 04740 SR R15,MVW(2,1),MVW(2,2),MVW(2,3) . 04750 END . 04760 . THIS PROCEDURE IS USED TO SEARCH SUBEXPRESSION TABLES 04990 . NAME OF PROCEDURE = NORMAL SEARCH MNENOMIC PREFIXED WITH X 05000 . PARAMETER 1 A REGISTER 05010 . PARAMETER 2 NAME OF TABLE 05020 . PARAMETER 3 LENGTH OF TABLE 05030 . PARAMETER 4 RELATIVE LOCATION IN TABLE 05040 . PARAMETER 5 LOCATION TO JUMP TO AT COMPLETION 05050 XST* PROC . XMSW* NAME 1 . 05070 XMSE* NAME 0 . 05080 L,H1 A3,XST(1,3) . LINK WORD JZ A3,XST(1,5) . NOTHING ON CHAIN L A0,2,A3 AND A0,R2 . APPLY MASK DO XST(0,0)=0 , TE XST(1,1),A1 DO XST(0,0)=1 , TW XST(1,1),A1 J $+4 LMJ B9,DC1 JZ A3,XST(1,5) . ALL FINISHED J $-6 . LOOK AT NEXT EXPRESSION L A3,SXLNK J $-3 END . 05160 . THIS PROCEDURE IS USED TO FIND THE NEXT AVAILABLE LOCATION 05170 . IN A TABLE WHICH DEVELOPS RANDOM OPENINGS 05180 . PARAMETER 1 NAME OF TABLE 05190 . PARAMETER 2 NAME OF LINK 05200 . PARAMETER 3 INDEX REGISTER AVAILABLE LOCATION WILL BE IN 05210 . PARAMETER 4 FLAG TO DETERMINE AMOUNT OF TABLE USED 05220 . THIS PROCEDURE GENERATES A SUBROUTINE WHICH IS 05230 . ENTERED WITH A LMJ B11,NAME 05240 FAL* PROC 1. FIND AVAILABLE LOCATION 05250 LX FAL(1,3),FAL(1,2),0,H1 . 05260 NOP 0,0 . 05270 TNZ,M 0,FAL(1,3) . 05280 J FALX . TABLE IS FULL 05290 LR,H1 R15,FAL(1,1),FAL(1,3) . 05300 SR,H1 R15,FAL(1,2) . 05310 DO FAL(1,4)=1 , LA A15,0,FAL(1,3),M . 05320 DO FAL(1,4)=1 , TG A15,FAL(1,2),0,H2 . 053300 DO FAL(1,4)=1 , SA A15,FAL(1,2),0,H2 . 053400 J $+2 FALX SLJ EMPTY END . 05390 . THIS PROCEDURE IS USED TO ADD A LOCATION TO THE 05400 . EMPTY ONES THAT ARE LINKED TOGETHER IN A TABLE 05410 . WITH RANDOM OPENINGS 05420 . PARAMETER,1 NAME OF TABLE 05430 . PARAMETER 2 NAME OF LINK 05440 . PARAMETER 3 INDEX REGISTER WHICH CONTAINS AVAILABLE LOCATION 05450 AAL* PROC 1,3 . ADD AVAILABLE LOCATION 05460 LR,H1 R15,AAL(1,2) . 05470 SR,H1 R15,AAL(1,1),AAL(1,3) . SAVE LAST LOCATION/ 05480 SX,H1 AAL(1,3), AAL(1,2) . 05490 END . 05500 FXX* PROC 2. . THIS PROCEDURE FILES ONE WORD 05510 . LIST 1 LOCATION OF ITEM 05520 . LIST 2 FILE TO PUT IT IN 05530 LA A0,FXX(1,1),FXX(1,2) . 05540 DO FXX(2,1)-F50=0 , LMJ B11,TF50 . 05550 DO FXX(2,1)-F40=0 , LMJ B11,TF40 . 05560 END . 05570 . THIS PROCEDURE TEST TO SEE IF SPECIFIED BITS ARE SET IN 05580 . A MEMORY LOCATION 05590 . LIST 1 LOCATION TO TEST 05600 . LIST 2 BITS TO TEST (UP TO 16) AN IMMEDIATE LOAD IS USED 05610 . LIST 3 LOCATION TO JUMP TO 05620 XB* PROC 3,3 . 05630 JBL* NAME 1 . 05640 JNBL* NAME 2 . 05650 LA XB(1,1),XB(1,2),XB(1,3),XB(1,4) . 05660 AND XB(1,1),XB(2,1),0,M . 05670 DO XB(0,0)=1 , JNZ XB(1,1)+1,XB(3,1),XB(3,2) . 05680 DO XB(0,0)=2 , JZ XB(1,1)+1,XB(3,1),XB(3,2) . 05690 END . 05700 . THIS PROCEDURE COMBINES AN AND INSTRUCTION WITH A JZ OR JNZ. 05710 . LIST 1 PARAMETERS OF AND INSTRUCTION 05720 . LIST 2 PARAMETERS OF JUMP 05730 XA* PROC 2,2 . 05740 AJZ* NAME 1 . 05750 AJNZ* NAME 2 . 05760 AND XA(1,1),XA(1,2),XA(1,3) . 05770 DO XA(0,0)=1 , JZ XA(1,1)+1,XA(2,1),XA(2,2) . 05780 DO XA(0,0)=2 , JNZ XA(1,1)+1,XA(2,1),XA(2,2) . 05790 END . 05800 . THIS PROCEDURE ADDS AN INCREMENT TO A FIELD 05810 . LIST 1, DEFINES FIELD AND A REGISTER TO USE 05820 . LIST 2, DEFINES INCREMENT 05830 IZ* PROC 2,3 . IFL* NAME 1 . 05850 DFL* NAME 2 . 05860 LA A15,IZ(1,1),IZ(1,2),IZ(1,3) . DO IZ(0,0)=1 , AA A15,IZ(2,1),IZ(2,2),M . DO IZ(0,0)=2 , ANA A15,IZ(2,1),IZ(2,2),M SA A15,IZ(1,1),IZ(1,2),IZ(1,3) . END . 05910 . THIS PROCEDURE IS USED TO LOAD AN INDEX, TEST ITS SIZE 05920 . AGAINST THE LENGTH OF A TRANSFER VECTOR, AND THEN JUMP 05930 . TO THE RIGHT ENTRY 05940 . LIST 1, LOADING INSTRUCTIONS 05950 . LIST 2, LENGTH OF VECTOR 05960 . LIST 3, ERROR NUMBER 05970 . LIST 4, LOCATION OF VECTOR IF NOT IN LINE 05980 . LIST 5, LOCATION TO GO AFTER EXECUTING VECTOR 05990 ET* PROC . 06000 ETV* NAME 1 . 06010 ATV* NAME 2 . 06020 DO ET(0,0)=1 , LX ET(1,1),ET(1,2),ET(1,3),ET(1,4) . 06030 TLEM,M ET(1,1), ET(2,1)+1 . 06040 DO ET=6 , J $+2 . 06050 DO ET=6 , J ETX . 06060 DO ET=6 , EX ET(4,1),ET(1,1) . 06070 DO ET=5 , EX ET(4,1),ET(1,1) . 06080 DO ET=4 , EX $+3,ET(1,1) . 06090 DO ET=6 , J ET(5,1),ET(5,2) . 06100 ETX XER ET(3,1) . 06110 END 06120 . THIS PROCEDURE IS USED TO EXECUTE A TRANSFER VECTOR . LIST 1 LOADING INSTRUCTIONS INDEX MUST BE A0 TO A3 . LIST 2 LENGTH OF VECTOR . LIST 3 LOCATION OF VECTOR . LIST 4 LOCATION TO GO FOR SPECIAL ERRORS ZT PROC . TV* NAME 1 AV* NAME 2 DO ZT(0,0)=1 , L ZT(1,1),ZT(1,2),ZT(1,3),ZT(1,4) . TG,M ZT(1,1),ZT(2,1)+1 . DO ZT(4,1)=0 , SLJ XERV DO ZT(4,1)>0 , J TV(4,1),TV(4,2) . EX ZT(3,1),ZT(1,1) . END . BOPNW* PROC 1,4. . OPEN TO WRITE LA,M A0,BOPNW(1,1) LA,M A1,RFW$ LMJ B11,RFPO$ SLJ F30ERX . ERROR RETURN. END BWRIT* PROC 1,3. . WRITE LA,M A0,BWRIT(1,1) LMJ B11,RFPW$ SLJ F30ERX . ERROR RETURN. END B$OPNB* PROC 1,4. . OPEN TO READ BACKWARD LA,M A0,B$OPNB(1,1) LA,M A1,RFRBD$ . BACKWARD DESTRUCTIVE READ LMJ B11,RFPO$ SLJ F30ERX . ERROR RETURN. END B$OPNF* PROC 1,4. . OPEN TO READ FORWARD LA,M A0,B$OPNF(1,1) LA,M A1,RFRF$ LMJ B11,RFPO$ SLJ F30ERX . ERROR RETURN. END . B$READ MUST BE SUPPLIED WITH ENDFILE ACTION ADDRESS AS SECOND ARG. B$READ* PROC 1,4. LA,M A0,B$READ(1,1) LMJ B11,RFPR$ SLJ F30ERX . ERROR RETURN. J B$READ(1,2) END BC PROC 1. . CLOSE (AND MARK) BLOCK OUTPUT BCLOT* NAME 0 . . CLOSE BCLOTM* NAME 1 . . CLOSE AND MARK BWRIT BC(1,1) BCLOSE* NAME 2 . LA,M A0,BC(1,1). . GET FCT ADDRESS LMJ B11,RFPC$. . CLOSE THE FILE SLJ F30ERX . ERROR RETURN. END . RBF30 -- READ ONE FILE 30 ITEM (BACKWARDS) . . CALLING SEQUENCE: RBF30 EOF . EOF IS THE TRANSFER LOCATION FOR END OF FILE, . ITEM IS LEFT IN A0. . RBF30* PROC 1 . L A1,F30J JGD F30I,$+2 LMJ B11,RBF30E END OF BUFFER (OR FILE) L A0,0,*A1 S A1,F30J SAVE INDEX END OWF40* PROC 1. . OPEN TO WRITE F40 BOPNW F40 SELECT FIRST BUFFER L,H2 A0,F40+6 AH A0,(1,NBCW) . SKIP NBCW WORDS S A0,F40J L,M A0,BUFN S A0,F40I END . WF40 -- WRITE ONE FILE 40 ITEM . . CALLING SEQUENCE: L A0,ITEM . WF40 . WF40* PROC 1,5. L A1,F40J F40 INDEX JGD F40I,$+2 LMJ B11,WF40F BUFFER (OR FILE) IS FULL S A0,0,*A1 S A1,F40J SAVE INDEX END OWF50* PROC 1. . OPEN TO WRITE F50 BOPNW F50 SELECT FIRST BUFFER L,H2 A0,F50+6 AH A0,(1,NBCW) . SKIP NBCW WORDS S A0,F50J L,M A0,BUFN S A0,F50I END . WF50 -- WRITE ONE FILE 50 ITEM . . . CALLING SEQUENCE: L A0,ITEM . WF50 . WF50* PROC 1,5. L A1,F50J F50 INDEX JGD F50I,$+2 LMJ B11,WF50F BUFFER (OR FILE) IS FULL S A0,0,*A1 S A1,F50J SAVE INDEX END OBF40* PROC 1. . OPEN TO READ BACKWARDS F40 L A0,F40J L,H2 A1,F40+6 ANH A0,(2,NBCW) AN,M A0,0,A1 S A0,1,A1 . STORE WORD COUNT OF BUFFER BCLOTM F40 . CLOSE AND MARK BLOCK OUTPUT B$OPNB F40 SZ F40I END . THIS PROCEDURE TESTS A FIELD SPECIFIED BY THE FIRST LIST . FOR EQUALITY WITH THE SECOND LIST, IF THE SECOND LIST HAS 2 OR . MORE ELEMENTS A NON IMMEDIATE TEST IS GENERATED 06150 . THIS PROCEDURE IS USED TO INITIALIZE A TABLE WHICH DEVELOPS 06500 . RANDOM OPENINGS WHICH ARE LINKED TOGETHER 06510 . PARAMETER 1 LENGTH OF TABLE 06520 ILT* PROC 2. . INITIALIZE TABLE 065300 . PARAMETER 2 NAME OF TABLE 06540 . PARAMETER 3 NAME OF LINK TO NEXT ENTRY 06550 . SECOND LIST NUMBER OF ELEMENTS IN GROUP IF NOT ONE 065510 DO ILT(2,1)>0 , LX B10,(-ILT(2,1),ILT(1,1)) . 065610 DO ILT(2,1)=0 , LX B10,(-1,ILT(1,1)) . 065610 DO ILT(2,1)=0 , LA A0,(1,1) . 065700 DO ILT(2,1)>0 , LA A0,(ILT(2,1),1) . 065710 JMGI B10,$+1 . 065800 DO ILT(2,1)=0 , SA A0,ILT(1,2)-1,*A0,H1 , 065900 DO ILT(2,1)>0 , SA A0,ILT(1,2)-ILT(2,1),*A0,H1 , 065910 JMGI B10,$-1 . 066000 SR,H1 R4,ILT(1,3) . NEXT IN H1, TOTAL NU IN H2 06610 SZ ILT(1,2)-2,A0 . 06620 END . 06630 . THIS PROCEDURE WILL CHANGE A FIELD THAT IS J ADDRESSABLE AS 07030 . FOLLOWS:IF THE LOW ORDER BIT IS A ONE IT IS CHANGED TO A ZERO 07040 . AND IF IT WERE A ZERO IT IS CHANGED TO A ONE. 07050 . IT IS USED TO CHANGE AN OPERATOR SUBTYPE IN SIGN MANIPULATION 07060 . PARAMETER 1 IS A REGISTER TO USE NEXT HIGHER IS ALSO USED 07070 . PARAMETER 2 IS LOCATION AND PARAMETER 3 IS FIELD 07080 COP* PROC 1,3 . 07090 LA COP(1,1),COP(1,2),0,COP(1,3) . 07100 XOR COP(1,1),1,0,M . 07110 SA COP(1,1)+1,COP(1,2),0,COP(1,3) . 07120 END . 07130 DIAG* PROC 2 . DO IDX=1 , TZ DIAG(1,1),DIAG(1,2),DIAG(1,3) . DO IDX=1 , SLJ DIAG(2,1),DIAG(2,2) . END . THE FOLLOWING PROCEDURE DEFINES ALL THE CONSTANTS USED . IN MANIPULATING A TRIAD CONTR* PROC 0 . COPER* EQU TRST COPND1* EQU TRST+1 COPND2* EQU TRST+2 CONRD* EQU TRST+3 MA* EQU TRST+4 MB* EQU TRST+5 EMODE* EQU TRST+6 MODET* EQU TRST+7 PEROP* EQU TRST+8 SUBSC* EQU TRST+10 131K END LGFIF* PROC LOGFCP* EQUF LGZZ,B5 LGLFCP* EQUF LGZZ+12,B5 LOGBCP* EQUF LGZZ+24,B5 IFSPI* EQUF LGZZ+36,B5,H2 LOOPIF* EQUF LGZZ+36,B5,S1 LGLBFL* EQUF LGZZ+36,B5,S2 . NON ZERO ON REFERENCED LABEL LGELQQ* EQUF LGZZ+36,B5,S3 . IFELSE FLAG LGDOP* EQUF LGZZ+48,B5,H2 IFELSE* EQUF LGZZ+48,B5,H1 LCF50* EQUF LGZZ+60,B5 LZGFCP* EQUF LGZZ+72,B5 . SAVES FCP WHILE IN IFELSE LZGBCP* EQUF LGZZ+84,B5 . SAVES BCP WHILE IN IFELSE END