comment                                                                       
                    STANFORD ALGOL W COMPILER                                   
                 PHASE A - SCAN AND PARSE PASSES                                
                        MAY 1971 VERSION               ;globalprocedureAWXCMPA2(R14);begin;FUNCTION_DECR(6,#0600),ZONE(8,#96F0);STM(R14,R12,B13(12));R4:=R1;R5:=R13;R0:=4096;R1:=R0;R3:=B4(20);BALR(R2,R3);comment GETMAIN;R13:=R0;comment ESTABLISH 4K INITIAL DATA SEGMENT, BASE R13;begin;dummybaseR13;comment  SHARED DATA SEGMENT;logicalSYSINF,OLDSAVE,NEWSAVE;array15logicalSAVEAREA;array16integerXFERVECTOR;comment SUPV ENTRY ADDRESSES;array2integerCOMMLIMsynXFERVECTOR(0);integerAPUTLINEsynXFERVECTOR(8);comment WRITE ENTRY;byteCARRCONTsynAPUTLINE(0);comment PRINT CONTROL CHAR;integerAGETCARDsynXFERVECTOR(12);comment READ ENTRY;integerAPUTCARDsynXFERVECTOR(16);comment PUNCH ENTRY;integerAGETMAINsynXFERVECTOR(20);comment GETMAIN ENTRY;integerAFREEMAINsynXFERVECTOR(24);comment FREEMAIN ENTRY;integerAGETTIMEsynXFERVECTOR(28);comment GETTIME ENTRY;integerARUNIDsynXFERVECTOR(60);comment ADDRESS OF SYSTEM ID;byteSYSOPTIONSsynXFERVECTOR(60);comment OPTION INHIBIT BITS;array5integerBASESAVE;comment DATA BASES FOR PASS 2;logicalPHASEFLAGS;comment  FLAGS FOR PASS1/PASS2 COMMUNICATION;byteNOGOsynPHASEFLAGS(0);byteNOPASSTWOsynPHASEFLAGS(1);byteSTACKFLAGsynPHASEFLAGS(2);byteDEBUGsynPHASEFLAGS(3);shortintegerLINENO,PAGENO;longrealPKDEC;comment USED WITH CVD;array132byteHEADING;comment PAGE HEADER;array132byteBUFFER;comment PRINT BUFFER;procedurePRINT(R1);comment DETERMINES REQUIRED CONTROL CHARACTER, PRINTS LINE AT (R0);begin;array4logicalSAVE03;STM(R0,R3,SAVE03);R1:=R1-R1;IC(R1,CARRCONT);R2:=LINENO+1;R3:=APUTLINE;ifR1="0"thenbegin;ifR2>=60thenR1:="1"elseR2:=R2+1;;end;ifR1="1"thenbegin;R0:=PAGENO+1;PAGENO:=R0;CVD(R0,PKDEC);MVC(3,HEADING(117),#40202120);ED(3,HEADING(117),PKDEC(6));R0:=@HEADING;BALR(R2,R3);R0:=SAVE03(0);R2:=3;R1:="0";;end;LINENO:=R2;ifR2=60thenMVI("1",CARRCONT)elseMVI("",CARRCONT);BALR(R2,R3);comment LINK TO WRITE;LM(R0,R3,SAVE03);;end;dummybaseR11;comment COMPILER COMMON FORMAT;integerCOMMTIME;shortintegerCOMMLINE,COMMPAGE;array3logicalCOMMFLAGS;byteCHECKFLAGsynCOMMFLAGS(0);comment CODE FOR VALIDITY TESTS;byteDEBUGFLAGsynCOMMFLAGS(1);comment DEBUG SYSTEM OUTPUT;bytePROCCOMPsynCOMMFLAGS(2);comment COMPILING PROC DECL;byteTRACEsynCOMMFLAGS(3);comment COMPILER TRACE OPTION;array2logicalTRACEBITSsynCOMMFLAGS(4);shortintegerBLOCKLISTSIZE,NAMETABLESIZE,NRECCLASS;integerREFRECBASE,IDDIRBASE,IDLISTBASE,INPOINT;integerTREELINK,TREEBASE,TREETOP,EDITBASE;integerTREEORGsynTREETOP;integerXSN;comment  LOWEST ASSIGNED EXTERNAL SEGMENT NUMBER;array8characterESDROOT;comment  MODULE IDENTIFIER ROOT;array256byteESDICT;comment  EXTERNAL PROCEDURE IDENTIFIERS;array512logicalBLOCKLIST;shortintegerBLENGTHsynBLOCKLIST(0);comment LENGTH OF NAMETAB;shortintegerNPOINTsynBLOCKLIST(2);comment POINTER TO NAMETAB;comment  *** SIZE OF OTHER TABLES IS DYNAMIC *** ;array3logicalNAMETABLE;shortintegerIDLOC1synNAMETABLE(0);shortintegerIDLOC2synNAMETABLE(2);byteHIERARCHYsynIDLOC2(0);bytePROGSEGsynIDLOC2(1);shortintegerSIMTYPEINFOsynNAMETABLE(4);shortintegerTYPEINFOsynNAMETABLE(6);byteVRsynTYPEINFO(0);byteDIMENsynTYPEINFO(1);byteRCCLNUMBERsynTYPEINFO(1);shortintegerTYPESsynNAMETABLE(8);byteTYPEsynTYPES(0);byteSIMPLETYPEsynTYPES(1);shortintegerIDNOsynNAMETABLE(10);array1shortintegerREFRECLISTsynB5;array1logicalIDDIRsynB3;shortintegerIDLENGTHsynIDDIR;shortintegerIDPOINTsynIDDIR(2);array1byteIDLISTsynB3;logicalTREEsyn0;comment PASS TWO OUTPUT;byteprogramsyn0;comment PASS ONE OUTPUT;closebase;segmentprocedurePASS1(R10);begin;comment  PASS 1 -- SCANNER;dummybaseR13;comment WORK AREA SHARED WITH PASS 2;array18logicalSAVEINFO;comment REPEAT PRECEDING DECLARATIONS;array16logicalXFERVECTOR;integerNTBASEsynXFERVECTOR(0);comment COMMON BASE ADDRESS;array5logicalBASESAVE;logicalPHASEFLAGS;shortintegerLINENO,PAGENO;longrealPKDEC;array132byteHEADING;comment PAGE HEADER;array132byteINBUF;array132byteOUTPUTsynINBUF;comment USED FOR ERROR LOG ONLY;array4logicalPRINTEMP;comment   * * *  LOCAL VARIABLE DECLARATIONS BEGIN HERE  * * * ;integerSAVE14,RETADDR;comment REGISTER ALLOCATION                                                    
       R0-R4 GENERAL PURPOSE                                                    
          R5 CONSTANT 1                                                         
          R6 INDEX TO PASS TWO OUTPUT                                           
          R7 CURBUF AND NEXTBUF BASE REGISTER                                   
          R8 INDEX TO NEXT CHARACTER                                            
          R9 (COUNT-1) OF CHARACTERS REMAINING IN INPUT BUFFER                  
       RA-RB PROCEDURE LINKAGE                                                  
       RC-RD DATA BASE REGISTERS                                                
          RF PROGRAM BASE REGISTER     ;integerREGISTER_C1synR5;comment  CONSTANT 1;integerREGISTER_PPsynR6;comment  PROGRAM POINTER;integerREGISTER_BBsynR7;comment  CURBUF/NEXTBUF BASE;logicalARUNVARORGsynB13(#120);comment BLOCK OF SYSTEM VARIABLES;integerRFRCLISTBASE,RFRCLISTLIMIT,PRBASE,PROGLIMIT;integerIDDBASE,IDLBASE;logicalSAVERB;array2logicalSTATE;comment  SCANNER STATE FLAGS;byteDECLARFLAGsynSTATE(0),ARRAYFLAGsynSTATE(1),PROCFLAGsynSTATE(4),RECORDFLAGsynSTATE(5),REFERFLAGsynSTATE(6),FARRAYFLAGsynSTATE(7);array2logicalFLAGS;comment  COMPILER FLAGS;byteLISTFLAGsynFLAGS(0),TRACEFLAGsynFLAGS(1),EOFsynFLAGS(2),ENDBLOCKsynFLAGS(3),ENDDOTsynFLAGS(4),EFLAGsynFLAGS(5);byteLINEHOLD,BEGINSET;comment LISTING CONTROL;shortintegerNESTLEVEL;comment BEGIN/END NESTING LEVEL;shortintegerSYMBOLINDEX,IDDIRINDEX,IDLISTINDEX;shortintegerBLLIMIT,SCRATCHINDEX;integerLASTIDPTR,LASTIDNO;logicalTYPE;comment FIELD CONTAINING TYPE INFO OF ID BEING              
                      PROCESSED;shortintegerBLOCKNO;shortintegerDIMCNT;integerFARRAYPNT;shortintegerERRORCOUNT;array50logicalERRORS;array50shortintegerERRORCODEsynERRORS(0);array50shortintegerERRORLOCsynERRORS(2);equateERRORLIMITsyn4*50-4;integerOUTCHAR,SAVEADD;shortintegerSCOORD;comment  SOURCE REFERENCE COORDINATE;shortintegerRECORDNO;shortintegerSIMTYPEINFO;shortintegerRLISTPOINT;array68longrealSYMBUFFERS;integerCURBUFBASE,NEXTBUFBASE;dummybaseBB;comment  CURBUF FORMAT;integerCURBUFTYPE,CURBUFCOUNT;array257byteCURBUF;array2logicalCURBUFIsynCURBUF;longrealCURBUFLsynCURBUF;array256byteCURBUF1synCURBUF(1);closebase;dummybaseBB;comment  NEXTBUF FORMAT;integerNEXTBUFTYPE,NEXTBUFCOUNT;array257byteNEXTBUF;array2logicalNEXTBUFIsynNEXTBUF;longrealNEXTBUFLsynNEXTBUF;array256byteNEXTBUF1synNEXTBUF(1);closebase;array64integerSTACK;shortintegerSTACKLNGsynSTACK(4);comment LENGTH FIELD OF STACK;shortintegerSTACKINDsynSTACK(6);comment INDEX TO SCRATCH TAB;integerSTACKINDEX;comment POINTER TO TOP OF STACK TABLE;integerSTACKMAX;comment MAXIMUM VALUE OF STACKINDEX;equateSTACKLIMITsyn4*64-8;comment   PRIVATE COMMON FIELDS KNOWN TO PASS 1;array6shortintegerSCRATCHNAMETABLEsynNAMETABLE(2);shortintegerSCRNAMETABsynSCRATCHNAMETABLE(0);shortintegerSIMTYPEINsynSCRATCHNAMETABLE(4);integerTYPEINFOsynSCRATCHNAMETABLE(6);shortintegerIDNOSCsynSCRATCHNAMETABLE(10);array1shortintegerREFRCDLISTsynB1;array2shortintegerIDDIRsynB12;shortintegerIDDIRLNGsynIDDIR(0);shortintegerIDDIRINDsynIDDIR(2);bytePROGRAMM4syn0;bytePROGRAMM3syn1;bytePROGRAMM2syn2;bytePROGRAMM1syn3;byteprogramsyn4;FUNCTION_CL(12,#5500);integerHCODE;array512shortintegerHASHID;array2logicalCHAININFO;comment STORAGE CONTROL INFO;integerCHAINsynCHAININFO(0);array0shortintegerCHAINIDsynB11;comment  HASH CHAIN TABLE, DYNAMICALLY ALLOCATED;segmentbaseR14;comment  ***  THIS SEGMENT IS READ-ONLY DATA  *** ;longrealDBLANK="";array306shortintegerRESERVED=comment  MUST BE WORD ALIGNED;((_1,12,#9301,0,"DO"),(_1,_1,#FF01,12,"GO"),(0,36,#7801,24,"IF"),(_1,48,#7D01,36,"IS"),(_1,_1,#7C01,48,"OF"),(24,_1,#8001,60,"OR"),(_1,_1,#8D01,72,"ABS"),(72,96,#8601,84,"AND"),(_1,_1,#8401,96,"DIV"),(84,_1,#6F0D,108,"END"),(108,132,#9B0A,120,"FOR"),(_1,156,#8501,132,"REM"),(_1,_1,#8801,144,"SHL"),(144,_1,#8901,156,"SHR"),(_1,180,#080F,168,"BITS"),(_1,_1,#7B01,180,"CASE"),(168,_1,#7A01,192,"ELSE"),(_1,_1,#0000,204,"...."),(192,228,#9401,216,"GOTO"),(_1,_1,#8C0B,228,"LONG"),(216,276,#8201,240,"NULL"),(_1,264,#020E,252,"REAL"),(_1,_1,#9C01,264,"STEP"),(252,288,#7901,276,"THEN"),(_1,_1,#8A01,288,"TRUE"),(_1,_1,#6B01,300,"ALGOL"),(300,_1,#6E13,316,"ARRAY"),(316,380,#970C,332,"BEGIN"),(_1,364,#8B01,348,"FALSE"),(_1,_1,#9F01,364,"SHORT"),(348,412,#9D01,380,"UNTIL"),(_1,_1,#7211,396,"VALUE"),(396,_1,#9E01,412,"WHILE"),(_1,_1,#9801,428,"ASSERT"),(428,492,#7514,444,"RECORD"),(_1,_1,#0000,460,"......"),(_1,_1,#7312,476,"RESULT"),(476,_1,#0716,492,"STRING"),(_1,524,#040E,508,"COMPLEX"),(_1,_1,#6C01,524,"FORTRAN"),(508,556,#010E,540,"INTEGER"),(_1,_1,#060E,556,"LOGICAL"),(_1,592,#7115,572,"PROCEDURE"),(_1,_1,#6810,592,"REFERENCE"));shortintegerLLINKsynRESERVED(0),GLINKsynRESERVED(2);byteCODE1synRESERVED(4),CODE2synRESERVED(5);logicalRSVTEXTsynRESERVED(8);array9shortintegerRINDEX=(_1,60,120,240,332,444,540,_1,572);equateISYMBOLINDEXsyn4*204;array204integerNAMETFILL=(#00000C01,#00000000,#0300001B,#00000000,#00000100,#0800001C,#00000000,#00000100,#0800001D,#00000000,#00000200,#0800001E,#00000000,#00000200,#0800001F,#00000000,#00000200,#08000020,#00000000,#00000100,#08000021,#00000000,#00000001,#07060022,#00000000,#00000001,#07080023,#00000000,#00000008,#07010024,#00000000,#00000007,#07010025,#00000000,#00000001,#07070026,#00000000,#00000002,#07010027,#00000000,#00000002,#07010028,#00000000,#00000002,#07010029,#00000000,#00000002,#0701002A,#00000000,#00000003,#0702002B,#00000000,#00000004,#0702002C,#00000000,#00000004,#0702002D,#00000000,#00000005,#0703002E,#00000000,#00000005,#0703002F,#00000000,#00000002,#07040030,#00000000,#00000003,#07050031,#00000000,#00000002,#07020032,#00000000,#00000002,#07020033,#00000000,#00000002,#07020034,#00000000,#00000002,#07020035,#00000000,#00000002,#07020036,#00000000,#00000002,#07020037,#00000000,#00000002,#07020038,#00000000,#00000003,#07030039,#00000000,#00000003,#0703003A,#00000000,#00000003,#0703003B,#00000000,#00000003,#0703003C,#00000000,#00000003,#0703003D,#00000000,#00000003,#0703003E,#00000000,#00000003,#0703003F,#00000000,#00000100,#08000040,#00000000,#000B0001,#07070041,#00000000,#000B0001,#07070042,#00000000,#000B0002,#07070043,#00000000,#000B0002,#07070044,#00000000,#00130003,#07070045,#00000000,#00130003,#07070046,#00000000,#00000001,#07010047,#00000000,#00000100,#0800005E,@ARUNVARORG(#20),#00000000,#00010048,@ARUNVARORG(#20),#00000000,#00010049,@ARUNVARORG(#1C),#00000000,#0001004A,@ARUNVARORG(#18),#00000000,#0002004B,@ARUNVARORG(#00),#00000000,#0003004C,@ARUNVARORG(#08),#00000000,#0003004D,@ARUNVARORG(#10),#00000000,#0003004E,@ARUNVARORG(#24),#00010001,#0009004F,@ARUNVARORG(#28),#00010001,#00090050,@ARUNVARORG(#2C),#00010001,#00090051,@ARUNVARORG(#30),#00010001,#00090052,@ARUNVARORG(#38),#00010001,#00090053,@ARUNVARORG(#3C),#00010001,#00090054,@ARUNVARORG(#40),#00010001,#00090055,@ARUNVARORG(#44),#00010001,#00090056,@ARUNVARORG(#48),#00010001,#00090057,#000D0000,#00500501,#04000058,#000D000C,#00000001,#05060059,#000D0004,#00000001,#0501005A,#000D0008,#00000001,#0501005B,#000D000D,#00000001,#0506005C,#000D000E,#003F0001,#0507005D);equateIIDDIRINDEXsyn2*190;array190shortintegerIDDIRFILL=(6,_7,0,_8,0,_9,0,_10,0,_11,0,_12,0,_13,0,_14,0,_15,0,_16,0,_17,0,_18,0,_19,0,_20,0,_21,0,_22,0,_23,0,_24,0,_25,0,_26,0,_27,0,_28,0,_29,0,_30,0,_31,0,_32,0,_33,5,_39,4,_46,6,_46,3,_52,5,_52,7,_60,8,_69,2,_72,8,_81,5,_87,5,_93,3,_91,7,_101,4,_106,5,_112,7,_375,10,_386,7,_120,7,_132,11,_124,11,_136,3,_132,7,_136,3,_143,2,_153,1,_165,2,_163,2,_185,2,_182,5,_202,7,_147,6,_157,5,_169,6,_176,6,_189,6,_196,9,_206,8,_215,8,_224,8,_233,5,_239,5,_249,9,_243,9,_253,3,_257,11,_269,8,_266,9,_279,6,_286,1,_292,6,_299,10,_290,6,_306,9,_320,3,_303,3,_310,6,_317,6,_143,5,_153,7,_165,8,_185,8,_329,7,_337,7,_345,8,_354,6,_361,5,_367,4,_391);equateIIDLISTINDEXsyn392;array392characterIDLISTFILL=("TRACE","ROUNDTOREAL","EXPONENT","XCPMSG","XCPMARK","XCPACTION","XCPLIMIT","XCPNOTED","EXCEPTION","INTDIVZERO","UNFL","INTOVFL","MAXREAL","PI","LONGEPSILON","MAXINTEGER","INTFIELDSIZE","TIME","LONGBASE16","LONGBASE10","INTBASE16","INTBASE10","WRITECARD","LONGARCTAN","LONGCOS","LONGSINCOSERR","LONGLOG","LONGLNLOGERR","LONGEXPERR","LONGSQRTERR","LONGIMAGPART","LONGREALPART","ENTIER","ROUND","TRUNCATE","DECODE","NUMBER","BITSTRING","ODD","IOCONTROL","READCARD","READON","WRITEON","(MAIN)","ZYXWVUTSRQPONMLKJIHGFEDCBA","<BLOCK>");array18bytePSYMBOLS=("?;():=+-*/,<>|#""~.");array18shortintegerPCODE=(#0002,#7009,#6A06,#6707,#9904,#9001,#7E01,#7F01,#7405,#8301,#6908,#8F03,#9103,#7601,#8E00,#8100,#8703,#9217);comment  SPECIAL CODES;equateIDCODEsyn#65,GOCODEsyn#FF;byteIDsyn#65,NUMBERsyn#77,stringsyn#81,BITSsyn#8E,SIMPLETYPEsyn#03,SPECCOMMAsyn#66,SPECCOLONsyn#6D,EXPONENTsyn#A1,ASSIGNsyn#9A,GOTOOsyn#94,ENDFILEsyn#92,NEQsyn#A0,GEQsyn#96,LEQsyn#95;byteVOIDsyn0;comment  REPLACES DELETED SYMBOLS;comment  INSTRUCTIONS TO BE USED WITH EXECUTE INSTRUCTION;array256characterTRTBLANKS=(64(#03),#00,10(#03),#06,18(#03),#07,28(#03),#05,#03,#02,#03,#04,65(#03),9(#01),7(#03),9(#01),8(#03),8(#01),6(#03),10(#02),6(#03));array256characterTRTIDS=(109(#01),#00,83(#01),9(#00),7(#01),9(#00),8(#01),8(#00),6(#01),10(#00),6(#03));comment  THE NEXT TWO TRANSLATE TABLES OVERLAP AND MUST BE CONTIGUOUS;array256characterTRRESERVED=(75(0),34,22,4,12,26,12(0),16,6,2,32,14,18,9(0),20,2(0),24,11(0),8,28,2(0),10,30,128(0));array162characterTRCOMMENT=(#01,161(#00));comment  SCAN FOR SEMICOLON;array256characterTRTCOMMENTsynTRCOMMENT(_94);array48byteLETTERIDNO=(0,1,2,3,4,5,6,7,8,9,7(0),10,11,12,13,14,15,16,17,18,8(0),19,20,21,22,23,24,25,26,6(0));closebase;procedureOUTCODE(R11);begin;comment R1 HAS CODE TO BE OUTPUT AS 1 BYTE;STC(R1,program(PP));PP:=PP+C1;;end;procedureOUTCODE2(R11);begin;comment R1 HAS CODE TO BE OUTPUT AS 2 BYTES;STC(R1,program(PP+1));R1:=R1shrl8;STC(R1,program(PP));PP:=PP+2;;end;procedureOUTCODE4(R11);begin;comment R2 HAS CODE TO BE OUTPUT AS 4 BYTES;OUTCHAR:=R2;MVC(3,program(PP),OUTCHAR);PP:=PP+4;;end;procedureOUTSTRING(R10);comment  MOVE STRING IN CURBUF TO PROGRAM;begin;R1:=CURBUFCOUNT;OUTCODE;EX(R1,MVC(0,program(PP),CURBUF1));PP:=PP+R1+C1;;end;procedureSETTYPE(R10);begin;comment  R1 HAS PARTIAL TYPE CODE;ifPROCFLAGthenR1:=R1or#1000elseifRECORDFLAGthenbegin;R2:=RECORDNOshll16;R1:=R1orR2or#500;;end;;end;procedureERROR(R11);begin;comment R4 HAS ERROR NUMBER;R1:=ERRORCOUNT+4;ifR1=ERRORLIMITthenR4:=11;ifR1<=ERRORLIMITthenbegin;ERRORCODE(R1):=R4;ERRORCOUNT:=R1;R4:=SCOORD;ERRORLOC(R1):=R4;;end;;end;procedureSOFTSTOP(R11);gotoENDPROGRAM;segmentprocedureFETCHCARD(R11);begin;comment  PRINTS LAST LINE, READS NEW CARD, DETECTS OPTIONS,          
                    SETS   R8 = ADDRESS OF NEXT CHARACTER,                      
                           R9 = (NUMBER - 1) CHARACTERS ON CARD;array3logicalSAVE13;STM(R1,R3,SAVE13);ifLISTFLAGandLINEHOLDthenbegin;RESET(LINEHOLD);R0:=@INBUF;PRINT;;end;L:R0:=@INBUF(13);R8:=R0;ifEOFthenbegin;R4:=7;ERROR;SOFTSTOP;;end;R3:=AGETCARD;BALR(R2,R3);comment READ;if~=orR0<0thenbegin;R8:=@INBUF(80);MVI(";",B8);MVI(";",B8(1));R9:=1;SET(EOF);gotoXIT;;end;CLI("@",B8);if=thenbegin;SAVERB:=R11;R11:=NTBASE;CLC(4,"DUMP*",B8(1));if=thenbegin;MVC(0,TRACEFLAG,B8(6));NI(#0F,TRACEFLAG);MVC(0,TRACE,B8(7));NI(#0F,TRACE);CLC(1,B8(9),"");if=thenbegin;R0:=#FFFFFFFF;R1:=R0;;endelsebegin;IC(R1,B8(10));R1:=R1and#F;IC(R2,B8(9));R2:=R2and#F*10S+R1;R0:=#80000000;R1:=R1-R1;SRDL(R0,B2);R0:=R0orTRACEBITS(0);R1:=R1orTRACEBITS(4);;end;STM(R0,R1,TRACEBITS);gotoM;;end;CLC(4,"STACK",B8(1));if=thenbegin;SET(STACKFLAG);gotoM;;end;CLC(3,"LIST",B8(1));if=thenbegin;SET(LISTFLAG);gotoM;;end;CLC(5,"NOLIST",B8(1));if=thenbegin;RESET(LISTFLAG);gotoM;;end;CLC(6,"NOCHECK",B8(1));if=thenbegin;TM(#80,SYSOPTIONS);if=thenRESET(CHECKFLAG);gotoM;;end;CLC(4,"DEBUG",B8(1));if=thenbegin;MVC(0,DEBUGFLAG,B8(7));CLI("0",DEBUGFLAG);if>=thenbegin;NI(#0F,DEBUGFLAG);R2:=@B8(8);;endelsebegin;MVI(4,DEBUGFLAG);R2:=@B8(7);;end;CLI("(",B2);if~=thenR0:=2elsebegin;R0:=R0-R0;R1:=R0;L:R2:=@B2(1);IC(R1,B2(0));ifR1~=")"andR1~=""thenbegin;R1:=R1and#F;R0:=R0*10S+R1;gotoL;;end;;end;XFERVECTOR(40):=R0;gotoM;;end;CLC(5,"SYNTAX",B8(1));if=thenbegin;SET(NOGO);gotoM;;end;CLC(4,"TITLE",B8(1));if=thenbegin;procedureSCAN(R3);begin;ifR1>71orR2>74thengotoM;IC(R0,B8(R1));R1:=@B1(1);;end;MVI("1",CARRCONT);MVC(39,HEADING(40),HEADING(36));R0:="";R1:=6;R2:=43;whileR0~=""""doSCAN;SCAN;S1:STC(R0,HEADING(R2));R2:=@B2(1);SCAN;ifR0~=""""thengotoS1;SCAN;ifR0=""""thengotoS1;gotoM;;end;R11:=SAVERB;gotoN;M:R11:=SAVERB;gotoL;;end;N:SET(LINEHOLD);RESET(BEGINSET);MVC(1,INBUF(5),"--");R9:=71;R1:=SCOORD;CVD(R1,PKDEC);UNPK(3,7,INBUF,PKDEC);OI("0",INBUF(3));MVC(7,INBUF(93),INBUF(85));MVC(7,INBUF(85),"");XIT:LM(R1,R3,SAVE13);;end;procedureSTOP(R1);begin;R4:=12;ERROR;SET(NOPASSTWO);gotoENDPROGRAM;;end;procedureINSERTSYMBOL(R11);begin;comment R2 HAS ID NUMBER AT ENTRANCE;SAVERB:=R11;R11:=NTBASE;R1:=STACKINDEX;R0:=STACKLNG(R1-8)+12;STACKLNG(R1-8):=R0;R0:=TYPE;R1:=SCRATCHINDEX;ifR1<SYMBOLINDEXthenSTOP;comment NT OVERFLOW;R3:=R3-R3;SCRNAMETAB(R1):=R3;SCRNAMETAB(R1+2):=R3;TYPEINFO(R1):=R0;IDNOSC(R1):=R2;R3:=SIMTYPEINFO;SIMTYPEIN(R1):=R3;R1:=R1-12;SCRATCHINDEX:=R1;R11:=SAVERB;;end;procedurePROCESSID(R10);comment  LOOK-UP ID, ENTER IN IDDIR IF NECESSARY.                           
       R2 := ID NUMBER, ID OUTPUT TO PROGRAM;begin;LASTIDPTR:=PP;R4:=CURBUFCOUNT;ifR4=0thenbegin;R1:=R1-R1;R2:=R1;IC(R1,CURBUF(0));IC(R2,LETTERIDNO(R1-192));OUTCODE;;endelsebegin;IC(R3,CURBUF(0));R3:=R3and#3F;IC(R1,CURBUF(R4));R1:=R1and#3Fshll3XOR_R3;R1:=R1++R1;HCODE:=R1;R1:=HASHID(R1);R11:=CHAIN;whileR1~=0dobegin;R3:=R1++R1;ifR4=IDDIRLNG(R3)thenbegin;R2:=IDDIRIND(R3)+IDLBASE;EX(R4,CLC(0,B2,CURBUF));if=thengotoFOUND;;end;R1:=CHAINID(R1);;end;comment  NOT IN TABLE;R1:=IDDIRINDEX;R2:=IDLISTINDEX-R4-C1;IDDIRIND(R1):=R2;IDDIRLNG(R1):=R4;R0:=R1+4;IDDIRINDEX:=R0;IDLISTINDEX:=R2;R2:=R2+IDLBASE;R0:=R0+IDDBASE;ifR0>R2thenSTOP;EX(R4,MVC(0,B2,CURBUF));R1:=R1shrl1;R4:=HCODE;R2:=HASHID(R4);CHAINID(R1):=R2;HASHID(R4):=R1;FOUND:R2:=R1shrl1;R1:=@ID;OUTCODE;R1:=R2;OUTCODE2;;end;LASTIDNO:=R2;ifDECLARFLAGthenbegin;if~REFERFLAGthenINSERTSYMBOLelsebegin;R1:=RLISTPOINT+2;RLISTPOINT:=R1;R1:=R1+RFRCLISTBASE;REFRCDLIST:=R2;;end;;end;;end;procedureOPENBLOCK(R10);begin;R1:=BLOCKNO+C1;BLOCKNO:=R1;R2:=STACKINDEX;ifR1>BLLIMITorR2>=STACKLIMITthenSTOP;comment TOO MANY BLOCKS OR NESTING TOO DEEP;STACK(R2):=R1;R1:=SCRATCHINDEX;STACK(R2+4):=R1;R2:=R2+8;STACKINDEX:=R2;ifR2>STACKMAXthenSTACKMAX:=R2;;end;procedureCLOSEBLOCK(R10);begin;logicalSAVERB;SAVERB:=R11;R1:=STACKINDEX-8;if<=and~ENDDOTthenbegin;R2:=STACKMAX;L:R2:=R2-8;if<=thenbegin;R4:=4;ERROR;ifENDBLOCKthenPP:=PP-C1;;endelsebegin;R0:=STACK(R2);ifR0=0thengotoL;R3:=SCOORD;SCOORD:=R0;R4:=4;ERROR;SCOORD:=R3;R1:=STACK(R2+4);R0:=@VOID;STC(R0,program(R1-1));R0:=R0-R0;STACK(R2):=R0;;end;gotoXIT;;end;STACKINDEX:=R1;R11:=NTBASE;R3:=STACK(R1)shla2;R0:=STACKLNG(R1);comment   R0 = #ID'S*12, R3 = BLOCKLIST INDEX;R2:=SYMBOLINDEX;ifENDBLOCKthenbegin;comment  MAKE ENTRY FOR POSSIBLE PROCEDURE;NPOINT(R3):=R2;R4:=R4-R4;NAMETABLE(R2):=R4;NAMETABLE(R2+4):=R4;R4:=#0F000000;NAMETABLE(R2+8):=R4;R2:=R2+12;R4:=R0+12;BLENGTH(R3):=R4;R4:=SCOORD;;endelsebegin;R4:=R4-R4;ifR0=0thenBLOCKLIST(R3):=R0elsebegin;NPOINT(R3):=R2;BLENGTH(R3):=R0;;end;;end;STACK(R1):=R4;R4:=R2+R0;SYMBOLINDEX:=R4;R4:=STACKIND(R1);STACK(R1+4):=PP;SCRATCHINDEX:=R4;R2:=@NAMETABLE(R2);R4:=@SCRATCHNAMETABLE(R4);forR0:=R0-12step_12until0dobegin;R3:=@B2(12);ifR3>=R4thenSTOP;MVC(11,B2,B4);R2:=R3;R4:=R4-12;;end;XIT:R11:=SAVERB;;end;segmentprocedureADVANCESYMBOL(R10);comment  CYCLES BUFFERS, FILLS NEXTBUF WITH NEXT TOKEN ATTRIBUTES;begin;procedureNEXTCHAR(R3);comment  R0 := NEXT INPUT CHARACTER;begin;R9:=R9-C1;if<thenbegin;logicalSAVERB;SAVERB:=R11;FETCHCARD;R0:=R0-R0;R11:=SAVERB;;endelseR8:=R8+C1;IC(R0,B8);;end;procedureNUMBERSCAN(R11);comment  PUT EBCDIC FOR NUMBER IN NEXTBUF;begin;logicalSAVERB;procedureADVANCE(R4);begin;logicalSAVER4;R2:=R2+C1;ifR2<256thenSTC(R0,NEXTBUF1(R2))elseifR2=256thenbegin;SAVER4:=R4;SAVERB:=R11;R4:=2;ERROR;R4:=SAVER4;R11:=SAVERB;;end;NEXTCHAR;;end;R2:=NEG_C1;MVI("0",NEXTBUF);whileR0>="0"doADVANCE;ifR0="."thenbegin;ADVANCE;whileR0>="0"doADVANCE;;end;ifR0="@"thenbegin;ADVANCE;ifR0="+"orR0="-"thenADVANCE;ifR0<"0"thenbegin;SAVERB:=R11;R4:=2;ERROR;R11:=SAVERB;;end;whileR0>="0"doADVANCE;;end;ifR0="I"thenADVANCE;ifR0="L"thenADVANCE;ifR2>255thenR2:=255;NEXTBUFCOUNT:=R2;;end;BB:=CURBUFBASE;comment  CURBUF IS RELEASED AND REFILLED;R1:=R1-R1;R2:=R1;L1:EX(R9,TRT(0,B8,TRTBLANKS));if=thenbegin;FETCHCARD;gotoL1;;end;R8:=R1;R9:=@INBUF(84)-R8;NEXTBUFTYPE:=R2;caseR2ofbegin;begin;comment  1 => LETTER ;NEXTBUFL:=F01;R2:=R2-R2;R3:=R2;L2:EX(R9,TRT(0,B8,TRTIDS));if=thenbegin;R4:=@NEXTBUF(R3);R3:=R3+R9+C1;ifR3>256thenbegin;R2:=@NEXTBUF(255)-R4;ifR2>=0thenEX(R2,MVC(0,B4,B8));R3:=257;;endelseEX(R9,MVC(0,B4,B8));FETCHCARD;gotoL2;;endelseifR1~=R8thenbegin;R4:=@NEXTBUF(R3);R2:=R1-R8;R3:=R3+R2;R2:=R2-C1;ifR3>256thenbegin;R2:=@NEXTBUF(255)-R4;ifR2>=0thenEX(R2,MVC(0,B4,B8));R3:=256;R2:=R1;R4:=13;ERROR;R1:=R2;;endelseEX(R2,MVC(0,B4,B8));;end;R3:=R3-C1;R8:=R1;R9:=@INBUF(84)-R8;NEXTBUFCOUNT:=R3;ifR3=4thenbegin;CLC(4,NEXTBUF,"BEGIN");if=thenbegin;R1:=NESTLEVEL+C1;NESTLEVEL:=R1;if~BEGINSETthenbegin;SET(BEGINSET);R0:=0;R1:=absR1/10;STC(R0,INBUF(5));OI("0",INBUF(5));;end;R1:=SCOORD+C1;SCOORD:=R1;;end;;endelseifR3=2thenbegin;CLC(2,NEXTBUF,"END");if=thenbegin;R0:=0;R1:=absNESTLEVEL/10;STC(R0,INBUF(6));OI("0",INBUF(6));R1:=NESTLEVEL-C1;NESTLEVEL:=R1;;end;;endelseifR3=6thenbegin;CLC(6,NEXTBUF,"COMMENT");if=thenbegin;L3:EX(R9,TRT(0,B8,TRTCOMMENT));if=thenbegin;FETCHCARD;gotoL3;;endelseifEOFthengotoL1elsebegin;R8:=R1+C1;R9:=@INBUF(84)-R8;ifR9<0thenFETCHCARD;gotoL1;;end;;end;;end;;end;begin;comment  2 => DIGIT OR "'" ;R0:=R0-R0;IC(R0,B8);NUMBERSCAN;;end;begin;comment  3 => PUNCTUATION ;R0:=R0-R0;NEXTBUFCOUNT:=R0;IC(R0,B8);STC(R0,NEXTBUF(0));R9:=R9-C1;if<thenFETCHCARDelseR8:=R8+C1;;end;begin;comment  4 => """ ;R2:=NEG_C1;MVI("""",NEXTBUF);R0:=R0-R0;NEXTCHAR;QUOTE:whileR0~=""""and~EOFdobegin;R2:=R2+C1;ifR2<256thenSTC(R0,NEXTBUF1(R2))elseifR2=256thenbegin;SAVERB:=R11;R4:=8;ERROR;R11:=SAVERB;;end;NEXTCHAR;;end;NEXTCHAR;ifR0=""""thenbegin;ifR2<255thenbegin;R2:=R2+C1;STC(R0,NEXTBUF1(R2));;end;NEXTCHAR;gotoQUOTE;;end;ifR2>255thenR2:=255;NEXTBUFCOUNT:=R2;;end;begin;comment  5 => "#" ;MVI("#",NEXTBUF(0));R0:=R0-R0;R1:=R0;L4:NEXTCHAR;ifR0>="A"andR0<="F"thenR0:=R0-#B7elseifR0>="0"andR0<="9"thenR0:=R0and#Felsebegin;NEXTBUFCOUNT:=R1;gotoL5;;end;R1:=R1+C1;ifR1<256thenSTC(R0,NEXTBUF(R1));gotoL4;L5:;end;begin;comment  6 => "." ;R9:=R9-C1;if<thenFETCHCARDelseR8:=R8+C1;CLI("0",B8);if>=thenbegin;R0:=".";R8:=R8-C1;R9:=R9+C1;NUMBERSCAN;R1:=2;;endelsebegin;R1:=0;NEXTBUFCOUNT:=R1;MVI(".",NEXTBUF);R1:=3;;end;NEXTBUFTYPE:=R1;;end;begin;comment  7 => SEMICOLON ;R1:=SCOORD+C1;SCOORD:=R1;MVI(";",NEXTBUF(0));R0:=0;NEXTBUFCOUNT:=R0;R1:=3;NEXTBUFTYPE:=R1;R9:=R9-C1;if<thenFETCHCARDelseR8:=R8+C1;;end;;end;R1:=NEXTBUFBASE;NEXTBUFBASE:=BB;BB:=R1;CURBUFBASE:=BB;;end;procedureMATCHRESERVED(R10);comment  MATCH EBCDIC IN CURBUF WITH RESERVED WORD TABLE.                   
        R3 := 0 IF SUCCESSFUL ELSE 1. R1 := CODE, R2 := CASE INDEX;begin;logicalRASAVE;R2:=CURBUFCOUNT;R2:=R2+R2;if>thenbegin;R0:=CURBUFI(0);R4:=RINDEX(R2);ifR2<8thenbegin;whileR4>=0dobegin;CL(R0,RSVTEXT(R4));if=thengotoL;if<thenR4:=LLINK(R4)elseR4:=GLINK(R4);;end;;endelseifR2<16thenbegin;R1:=CURBUFI(4);whileR4>=0dobegin;CL(R0,RSVTEXT(R4));if=thenbegin;CL(R1,RSVTEXT(R4+4));if=thengotoL;;end;if<thenR4:=LLINK(R4)elseR4:=GLINK(R4);;end;;endelseif=thenbegin;whileR4>=0dobegin;R3:=@RSVTEXT(R4);CLC(8,CURBUF,B3);if=thengotoL;if<thenR4:=LLINK(R4)elseR4:=GLINK(R4);;end;;end;;end;R3:=C1;gotoD;L:R1:=R1-R1;R2:=R1;R3:=R1;IC(R1,CODE1(R4));IC(R2,CODE2(R4));ifR1=GOCODEthenbegin;BB:=NEXTBUFBASE;ifC1~=NEXTBUFCOUNTthenbegin;R3:=C1;BB:=CURBUFBASE;;endelsebegin;CLC(1,NEXTBUF,"TO");if=thenbegin;RASAVE:=R10;ADVANCESYMBOL;R10:=RASAVE;R1:=@GOTOO;R2:=1;R3:=R3-R3;;endelsebegin;R3:=C1;BB:=CURBUFBASE;;end;;end;;end;D:;end;procedureDECODELENGTH(R10);comment  DECODE AND CONVERT STRING OR BITS LENGTH SPECIFICATION.            
       R1 := LENGTH (-1 FOR SYNTAX ERROR);begin;logicalSAVERA;integerLENGTH;SAVERA:=R10;ADVANCESYMBOL;R7:=NEXTBUFBASE;R3:=NEXTBUFTYPE;ifR3~=2thenbegin;R4:=1;ERROR;R1:=NEG_C1;gotoY;;end;ADVANCESYMBOL;R0:=R0-R0;R1:=R0;forR2:=0step1untilCURBUFCOUNTdobegin;IC(R0,CURBUF1(R2));ifR0<"0"thenbegin;R4:=1;ERROR;R1:=NEG_C1;gotoX;;end;R0:=R0and#F;R1:=R1*10S+R0;;end;X:LENGTH:=R1;R7:=NEXTBUFBASE;CLI(")",NEXTBUF);if=thenbegin;ADVANCESYMBOL;R1:=LENGTH;;endelsebegin;R4:=5;ERROR;R1:=NEG_C1;;end;Y:R10:=SAVERA;;end;procedureMOVETABLE(R10);begin;R0:=256;whileR3>=R0dobegin;MVC(255,B1,B2);R1:=R1+R0;R2:=R2+R0;R3:=R3-R0;;end;ifR3~=0thenbegin;DECR(R3);EX(R3,MVC(0,B1,B2));R1:=@B1(R3+1);;end;;end;segmentprocedureINITIALIZE(R9);begin;R7:=@SYMBUFFERS(0);CURBUFBASE:=R7;R7:=@SYMBUFFERS(272);NEXTBUFBASE:=R7;LM(R0,R1,COMMLIM);R11:=R0;comment OBTAIN COMMON LIMITS;R6:=R1-R0;comment COMMON SIZE;R0:=ISYMBOLINDEX-12shll16or12;BLOCKLIST(0):=R0;R3:=511;BLLIMIT:=R3;R7:=@NAMETABLE;R2:=@NAMETFILL;R1:=R7;R3:=ISYMBOLINDEX;SYMBOLINDEX:=R3;MOVETABLE;forR5:=552step12until732dobegin;R0:=NAMETABLE(R5)and#FFFor#D0000;NAMETABLE(R5):=R0;;end;comment  SET R6 TO SIZE OF DYNAMICALLY ALLOCATED COMMON;R6:=@B11(R6)-R7;ifR6>#2AAA8thenR6:=#2AAA8;R5:=R6shra4*3Sand#FFFFF8;R0:=R5-16;SCRATCHINDEX:=R0;R7:=R7+R5;REFRECBASE:=R7;RFRCLISTBASE:=R7;XC(1,B7,B7);R4:=R6shra5and#FFFFF8;R7:=R7+R4;RFRCLISTLIMIT:=R7;R7:=R7+1020;PRBASE:=R7;R1:=R6shra4and#FFFFF8;ifR1<#2000thenR0:=R1elseR0:=#2000;R3:=AGETMAIN;BALR(R2,R3);comment  GETMAIN;STM(R0,R1,CHAININFO);R5:=R1*3Sand#FFFFF8;R8:=COMMLIM(4)and#FFFFF8;IDLISTBASE:=R8;IDLBASE:=R8;R3:=IIDLISTINDEX;R0:=NEG_R3;IDLISTINDEX:=R0;R1:=R8-R3;R2:=@IDLISTFILL;MOVETABLE;R8:=R8-R5;IDDIRBASE:=R8;IDDBASE:=R8;R3:=IIDDIRINDEX;IDDIRINDEX:=R3;R1:=R8;R2:=@IDDIRFILL;MOVETABLE;R7:=@B7(4);INPOINT:=R7;PROGLIMIT:=R8;XC(7,STATE,STATE);XC(7,FLAGS,FLAGS);SET(LISTFLAG);RESET(NOGO);MVI(0,TRACE);SET(CHECKFLAG);TM(#20,SYSOPTIONS);if=thenMVI(1,DEBUGFLAG)elseMVI(2,DEBUGFLAG);RESET(DEBUG);RESET(PROCCOMP);MVC(7,ESDROOT,"AWXSC001");XC(7,TRACEBITS,TRACEBITS);RESET(STACKFLAG);RESET(NOPASSTWO);R0:=_4;ERRORCOUNT:=R0;R0:=0;STACKINDEX:=R0;BLOCKNO:=R0;SCOORD:=R0;RLISTPOINT:=R0;DIMCNT:=R0;TYPE:=R0;SIMTYPEINFO:=R0;STACKMAX:=R0;NESTLEVEL:=R0;RESET(LINEHOLD);R0:=1;RECORDNO:=R0;F01:=DBLANK;MVI("",INBUF);MVC(130,INBUF(1),INBUF);XC(255,HASHID,HASHID);MVC(255,HASHID(256),HASHID);MVC(255,HASHID(512),HASHID);MVC(255,HASHID(768),HASHID);R12:=IDDBASE;R11:=CHAIN;R2:=IDDIRINDEX-4;R3:=R2shra1;forR2:=R2step_4until108dobegin;R4:=IDDIRLNG(R2);R1:=IDDIRIND(R2)+IDLBASE;IC(R0,B1(0));R0:=R0and#3F;IC(R1,B1(R4));R1:=R1and#3Fshll3XOR_R0;R1:=R1++R1;R4:=HASHID(R1);CHAINID(R3):=R4;HASHID(R1):=R3;R3:=R3-2;;end;BB:=CURBUFBASE;PP:=PRBASE+1;C1:=1;OPENBLOCK;;end;segmentprocedureCLEANUP(R9);begin;ifLISTFLAGandLINEHOLDthenbegin;RESET(LINEHOLD);R0:=@INBUF;PRINT;;end;SET(ENDDOT);SET(ENDBLOCK);CLOSEBLOCK;R1:=STACKINDEX;whileR1>0dobegin;CLOSEBLOCK;R4:=3;ERROR;comment   ERROR NO  3;R1:=STACKINDEX;;end;R0:=31;forR1:=IDDIRINDEX-4step_4untilIIDDIRINDEXdoifR0<IDDIRLNG(R1)thenIDDIRLNG(R1):=R0;MVI("",OUTPUT);MVC(130,OUTPUT(1),OUTPUT);R11:=NTBASE;MVC(39,HEADING(40),HEADING(36));TM(#40,SYSOPTIONS);ifOVERFLOWthenMVI(0,DEBUGFLAG);CLI(2,DEBUGFLAG);if>thenSET(DEBUG);MVC(25,OUTPUT,"EXECUTION_OPTIONS:DEBUG,0");OC(0,OUTPUT(25),DEBUGFLAG);OI("0",CARRCONT);if~CHECKFLAGthenMVC(6,OUTPUT(27),"NOCHECK");R0:=@OUTPUT;PRINT;MVC(39,OUTPUT,OUTPUT(40));MVC(22,HEADING(46),"COMPILATION_DIAGNOSTICS");MVI("1",CARRCONT);R3:=ERRORCOUNT;ifR3>=0thenbegin;SET(NOGO);MVC(25,OUTPUT(1),"ERROR_1XXX_NEAR_COORDINATE");forR3:=0step4untilERRORCOUNTdobegin;R1:=ERRORCODE(R3);CVD(R1,PKDEC);UNPK(2,1,OUTPUT(8),PKDEC(6));OI("0",OUTPUT(10));caseR1ofbegin;MVC(29,OUTPUT(35),"INCORRECTLY_FORMED_DECLARATION");MVC(17,OUTPUT(35),"INCORRECT_CONSTANT");MVC(12,OUTPUT(35),"MISSING""END""");MVC(24,OUTPUT(35),"UNMATCHED""END""(DELETED)");MVC(10,OUTPUT(35),"MISSING"")""");MVC(16,OUTPUT(35),"ILLEGAL_CHARACTER");MVC(16,OUTPUT(35),"MISSING_FINAL"".""");MVC(20,OUTPUT(35),"INVALID_STRING_LENGTH");MVC(18,OUTPUT(35),"INVALID_BITS_LENGTH");MVC(10,OUTPUT(35),"MISSING""(""");MVC(19,OUTPUT(35),"ERROR_TABLE_OVERFLOW");MVC(22,OUTPUT(35),"COMPILER_TABLE_OVERFLOW");MVC(14,OUTPUT(35),"ID_LENGTH>256");MVC(13,OUTPUT(35),"UNEXPECTED"".""");MVC(22,OUTPUT(35),"TOO_MANY_RECORD_CLASSES");;end;R1:=ERRORLOC(R3);CVD(R1,PKDEC);UNPK(3,7,OUTPUT(28),PKDEC);OI("0",OUTPUT(31));MVI("-",OUTPUT(33));OI("0",CARRCONT);R0:=@OUTPUT;PRINT;MVC(40,OUTPUT(35),OUTPUT(75));;end;;end;R3:=RECORDNO;NRECCLASS:=R3;R3:=BLOCKNOshll2;BLOCKLISTSIZE:=R3;R3:=SYMBOLINDEX-12;NAMETABLESIZE:=R3;R1:=@NAMETABLE+SYMBOLINDEX+19and#FFFFF8;R2:=REFRECBASE;R3:=RLISTPOINT+2;REFRECBASE:=R1;MOVETABLE;R1:=R1+7and#FFFFF8+1024;comment ALLOW LIT TABLE SPACE;R2:=INPOINT;R3:=R6+11and#FFFFF8-INPOINT;INPOINT:=R1;MOVETABLE;R1:=R1+7and#FFFFF8;TREEBASE:=R1;R1:=IDDIRINDEX+255and#FFFF00;R1:=@IDDIR(R1);R2:=IDLISTBASE+IDLISTINDEXand#FFFFF8;R0:=R2-256;ifR0>R1thenforR1:=R1-256step_256untilIDDIRBASEdobegin;R2:=R2-256;MVC(255,B2,B1);;end;IDDIRBASE:=R2;LM(R0,R1,CHAININFO);R3:=AFREEMAIN;BALR(R2,R3);;end;SAVE14:=R14;RETADDR:=R10;INITIALIZE;FETCHCARD;ADVANCESYMBOL;comment  PRIME SCANNER;comment   * * *  MAIN PASS1 ROUTINE BEGINS HERE  * * * ;L:ADVANCESYMBOL;R3:=CURBUFTYPE;ifPP>=PROGLIMITthenSTOP;comment  MEMORY OVERFLOW;caseR3ofbegin;begin;comment  1 => IDENTIFIER, RESERVED WORD ;MATCHRESERVED;ifR3~=0thenbegin;PROCESSID;gotoL;;end;;end;begin;comment  2 => NUMBER ;R2:=CURBUFCOUNT;ifR2=0thenbegin;CLI("@",CURBUF1(0));if~=thenbegin;IC(R1,CURBUF1(0));OUTCODE;;end;;endelsebegin;R1:=@NUMBER;OUTCODE;OUTSTRING;;end;gotoL;;end;begin;comment  3 => PUNCTUATION ;R1:=R1-R1;R2:=R1;IC(R2,CURBUF(0));IC(R1,TRRESERVED(R2));IC(R2,PCODE(R1+1));IC(R1,PCODE(R1));;end;begin;comment  4 => STRING LITERAL (") ;R1:=@string;OUTCODE;R1:=CURBUFCOUNT;ifR1<0thenbegin;R4:=8;ERROR;R1:=R1-R1;CURBUFCOUNT:=R1;;end;OUTSTRING;gotoL;;end;begin;comment  5 => BITS LITERAL (#) ;R1:=@BITS;OUTCODE;R1:=CURBUFCOUNT;R0:=0;R2:=R0;ifR1=0orR1>8thenbegin;R4:=9;ERROR;;endelseforR3:=1step1untilR1dobegin;IC(R0,CURBUF(R3));R2:=R2shll4orR0;;end;OUTCODE4;gotoL;;end;;end;comment  HERE R1 = OUTPUT CODE, R2 = PROCESSING CODE;L1:caseR2ofbegin;OUTCODE;comment  SYMBOLS NEEDING NO PROCESSING;1begin;comment  INVALID CHARACTERS  ;2R4:=6;ERROR;;end;begin;comment  ~, >, < ;3R2:=R2-R2;IC(R2,CURBUF(0));BB:=NEXTBUFBASE;CLI("=",NEXTBUF);if~=thenOUTCODEelsebegin;ifR2="~"thenR1:=@NEQelseifR2=">"thenR1:=@GEQelseR1:=@LEQ;OUTCODE;ADVANCESYMBOL;;end;;end;begin;comment  :  ;4BB:=NEXTBUFBASE;CLI("=",NEXTBUF);if=thenbegin;R1:=@ASSIGN;OUTCODE;ADVANCESYMBOL;;endelsebegin;CLI(":",NEXTBUF);if=thenbegin;R1:=@SPECCOLON;OUTCODE;ADVANCESYMBOL;;endelsebegin;OUTCODE;R1:=PP-LASTIDPTR;ifR1=2orR1=4thenbegin;R1:=#100;TYPE:=R1;R1:=0;SIMTYPEINFO:=R1;R2:=LASTIDNO;INSERTSYMBOL;;end;;end;;end;;end;begin;comment  *  ;5BB:=NEXTBUFBASE;CLI("*",NEXTBUF);if=thenbegin;R1:=@EXPONENT;OUTCODE;ADVANCESYMBOL;;endelsebegin;OUTCODE;ifFARRAYFLAGthenbegin;R1:=DIMCNT+C1;DIMCNT:=R1;;end;;end;;end;begin;comment  (  ;6ifARRAYFLAGthenbegin;RESET(ARRAYFLAG);RESET(DECLARFLAG);ifPROCFLAGthenSET(FARRAYFLAG);;end;OUTCODE;;end;begin;comment  ) ;7OUTCODE;R1:=STATE(4);ifR1~=0thenbegin;ifREFERFLAGthenbegin;RESET(REFERFLAG);R1:=RLISTPOINT+2;RLISTPOINT:=R1;R2:=R2-R2;R1:=R1+RFRCLISTBASE;REFRCDLIST:=R2;ifR1>=RFRCLISTLIMITthenSTOP;;endelseifRECORDFLAGthenbegin;RESET(RECORDFLAG);RESET(DECLARFLAG);;endelseifPROCFLAGthenbegin;ifFARRAYFLAGthenbegin;RESET(FARRAYFLAG);R1:=DIMCNT;R11:=NTBASE;forR2:=SCRATCHINDEX+12step12untilFARRAYPNTdoSTC(R1,TYPEINFO(R2+1));R1:=R1-R1;DIMCNT:=R1;;endelsebegin;CLOSEBLOCK;RESET(PROCFLAG);RESET(DECLARFLAG);;end;;end;;end;;end;begin;comment  ,  ;8ifDECLARFLAGthenR1:=@SPECCOMMA;OUTCODE;;end;begin;comment  SEMICOLON;9OUTCODE;RESET(DECLARFLAG);RESET(REFERFLAG);RESET(ARRAYFLAG);RESET(FARRAYFLAG);R1:=0;SIMTYPEINFO:=R1;SETTYPE;TYPE:=R1;;end;begin;comment  FOR;10OUTCODE;OPENBLOCK;BB:=NEXTBUFBASE;ifC1=NEXTBUFTYPEthenbegin;ADVANCESYMBOL;MATCHRESERVED;ifR3=0thenbegin;comment  RESERVED WORD - SAVE CODES & CLOSE BLOCK;array2integerCODESAVE;STM(R1,R2,CODESAVE);CLOSEBLOCK;LM(R1,R2,CODESAVE);gotoL1;;end;PROCESSID;R3:=#0601;TYPE:=R3;INSERTSYMBOL;R3:=R3-R3;TYPE:=R3;;end;CLOSEBLOCK;;end;begin;comment  LONG  ;11BB:=NEXTBUFBASE;ifC1=NEXTBUFTYPEthenbegin;R4:=NEXTBUFCOUNT;ifR4=3thenbegin;CLC(3,NEXTBUF,"REAL");if~=thengotoX;R1:=3;;endelseifR4=6thenbegin;CLC(6,NEXTBUF,"COMPLEX");if~=thengotoX;R1:=5;;endelsegotoX;SET(DECLARFLAG);SETTYPE;TYPE:=R1;ADVANCESYMBOL;R1:=@SIMPLETYPE;OUTCODE;R1:=TYPEand#F;;end;X:OUTCODE;;end;begin;comment  BEGIN ;12OUTCODE;OPENBLOCK;;end;begin;comment  END;13OUTCODE;SET(ENDBLOCK);CLOSEBLOCK;RESET(ENDBLOCK);BB:=NEXTBUFBASE;ifC1=NEXTBUFTYPEthenbegin;ADVANCESYMBOL;MATCHRESERVED;ifR3=0thengotoL1;;end;;end;begin;comment  INTEGER, REAL, COMPLEX, LOGICAL (R1 = TYPE)  ;14SET(DECLARFLAG);SETTYPE;TYPE:=R1;R0:=R0-R0;SIMTYPEINFO:=R0;R1:=@SIMPLETYPE;OUTCODE;R1:=TYPEand#F;OUTCODE;;end;begin;comment  BITS;15SET(DECLARFLAG);SETTYPE;TYPE:=R1;R1:=@SIMPLETYPE;OUTCODE;R1:=8;OUTCODE;BB:=NEXTBUFBASE;CLI("(",NEXTBUF);if=thenbegin;DECODELENGTH;ifR1>=0andR1~=32thenbegin;R4:=1;ERROR;;end;;end;;end;begin;comment  REFERENCE;16OUTCODE;R1:=RLISTPOINT+2;SIMTYPEINFO:=R1;R1:=9;SETTYPE;TYPE:=R1;SET(DECLARFLAG);BB:=NEXTBUFBASE;CLI("(",NEXTBUF);if=thenbegin;ADVANCESYMBOL;SET(REFERFLAG);;endelsebegin;R4:=10;ERROR;;end;;end;begin;comment  VALUE;17OUTCODE;R1:=#1000000orTYPE;TYPE:=R1;;end;begin;comment  RESULT;18OUTCODE;R1:=#2000000orTYPE;TYPE:=R1;;end;begin;comment  ARRAY;19OUTCODE;SET(ARRAYFLAG);ifPROCFLAGthenbegin;R2:=SCRATCHINDEX;FARRAYPNT:=R2;;end;R1:=#000200orTYPE;TYPE:=R1;;end;begin;comment  RECORD;20OUTCODE;R1:=RECORDNO+1;RECORDNO:=R1;ifR1>15thenbegin;R4:=15;ERROR;;end;R1:=R1shll16or#0400;TYPE:=R1;SET(RECORDFLAG);SET(DECLARFLAG);;end;begin;comment PROCEDURE;21OUTCODE;SET(DECLARFLAG);ifPROCFLAGthenbegin;R1:=TYPEor#1300;TYPE:=R1;;endelsebegin;R1:=TYPEor#0300;TYPE:=R1;BB:=NEXTBUFBASE;ifC1=NEXTBUFTYPEthenbegin;ADVANCESYMBOL;MATCHRESERVED;ifR3=0thengotoL1;BB:=NEXTBUFBASE;CLI("(",NEXTBUF);BB:=CURBUFBASE;if~=thenbegin;PROCESSID;OPENBLOCK;CLOSEBLOCK;;endelsebegin;R1:=BLOCKNO+1shll16orTYPE;TYPE:=R1;PROCESSID;R1:=R1-R1;TYPE:=R1;OPENBLOCK;SET(PROCFLAG);;end;R1:=BLOCKNO;ifR1=2thenbegin;R11:=NTBASE;SET(PROCCOMP);MVC(7,ESDROOT,"#####001");R1:=CURBUFCOUNT;ifR1>4thenR1:=4;EX(R1,MVC(0,ESDROOT,CURBUF));;end;;end;;end;;end;begin;comment  STRING;22SET(DECLARFLAG);SETTYPE;TYPE:=R1;R1:=@SIMPLETYPE;OUTCODE;R1:=7;OUTCODE;BB:=NEXTBUFBASE;CLI("(",NEXTBUF);if~=thenR1:=16elsebegin;DECODELENGTH;ifR1<0thenR1:=C1elseifR1=0orR1>256thenbegin;R4:=1;ERROR;R1:=C1;;end;;end;OUTCODE;R1:=R1-C1;SIMTYPEINFO:=R1;;end;begin;comment  .  ;23ifEOFthengotoENDPROGRAMelsebegin;R4:=14;ERROR;;end;;end;;end;gotoL;ENDPROGRAM:R1:=@ENDFILE;OUTCODE;CLEANUP;R10:=RETADDR;;end;comment  END OF PASS 1;segmentprocedurePASS2(R10);begin;integerREGISTER_IsynR7,JsynR8;comment STACK POINTERS;logicalRASAVE;integerSAVE14,METABASE;integerCOMMONBASEsynXFERVECTOR(0);integerSCOORD;comment SOURCE TEXT COORDINATE;byteFLAG,ERRFLAG;byteUNDECLFLAG,COMMONFLAG;byteSIMTYPE,STRINGLENGTH;integervalue;array0byteEDITCODEsyn0;comment  COMPILED EDITING STRING;integerEDITINDEX,NODEINDEX,OLDINPOINT,OLDEDIT;integerNODECHAIN;comment  PTR TO LAST COUNT IN EDITCODE;integerCHARTLEVEL;comment GRAPHIC NESTING LEVEL;byteSIGN;integerSCALE;longrealFCONV;comment FOR CONVERSION;array2longrealNUMBUFFER;longrealNUMVALUEsynNUMBUFFER(8);integerINUMVALUEsynNUMVALUE(4),NUMVALHIGHsynNUMVALUE(0);longrealDECsynPKDEC;integerHEXsynPKDEC;dummybaseR12;comment  ALLOCATED FROM WORK SPACE;array8logicalPARSEREG;comment  PARSE LOOP REGISTER IMAGE;integerR3SAVEsynPARSEREG(8);integerRULENUMBERsynPARSEREG(16);integerR6SAVEsynPARSEREG(20);integerISAVEsynPARSEREG(24),JSAVEsynPARSEREG(28);integerOUTBASE;comment  BASE OF CURRENT TREE SEGMENT;integerPLIMIT;comment MAXIMUM P INDEX;array0longrealPALIGN;comment ALIGN P;array0logicalP;comment OUTPUT WORK AREA, SIZE IS DYNAMIC;byteOPsynP;byteCONVsynP(1);shortintegerPOINTERsynP(2);shortintegerPSTACKsynP;closebase;array32shortintegerDISPLAY;comment  STATIC LINK CHAIN;integerBN,BLC;comment  BLOCK NO., NESTING LEVEL;integerHN;comment  HIERARCHY NUMBER;integerIHN;comment  IMPLICIT SUBROUTINE HN;integerDISPLAYORG;comment  SEGMENT DISPLAY ORIGIN;integerDRELAD;comment  LOCAL VARIABLE BASE;integerSN,SNC;comment  MAXIMUM, CURRENT SEGMENT NO.;shortintegerCTPNT;comment  CONSTANTTABLE POINTER;shortintegerLITPNT;comment  LITERALTABLE POINTER;shortintegerCTORG,LITORG;array0logicalLITERALTABLEsynB3;comment  LITERALS (DYNAMIC);integerLITBASE;array96byteS;comment  PARSER SYMBOL STACK;array96byteS2;comment  STACK OF RELATIONS;array96longrealV;comment  INTERPRETATION STACK;logicalV12synV(0);shortintegerV1synV(0);shortintegerV2synV(2);comment  BOTH TYPE FIELDS;byteV21synV2(0);comment  TYPE;byteV22synV2(1);comment  SIMPLE TYPE;shortintegerV34synV(4);comment  REGISTER FIELDS;byteV3synV34(0);comment  GENERAL REGISTER COUNT;byteV4synV34(1);comment  FLOATING REGISTER COUNT;shortintegerV5synV(6);comment  OUTPUT POINTER FIELD;array96longrealT;comment  EDITCODE INTERPRETATION STACK;logicalVAsynT(0);comment  ATTRIBUTE BITS;shortintegerT0synVA(0);integerVXsynT(4);comment  EDITCODE POINTER;integerLABELADDR;array256integerCONSTANTTABLE;shortintegerCINFOsynCONSTANTTABLE;byteCLENGTHsynCONSTANTTABLE;byteCTYPEsynCONSTANTTABLE(1);shortintegerCADDRsynCONSTANTTABLE(2);integerTREELENGTH,INPOINTSAVE;segmentbaseR14;comment  ***  READ ONLY CONSTANTS  *** ;array7longrealPOWER10=(#41A0000000000000L,#4264000000000000L,#4427100000000000L,#475F5E1000000000L,#4E2386F26FC10000L,#5B4EE2D6D415B85BL,#76184F03E93FF9F5L);equateLSSsyn#1,GTRsyn#2,EQLsyn#3;equateDPDORGsyn40;comment STACK MARK LENGTH;array8byteMASK=("",5(#20),2("")),MASK2=("",3(#20),2(#21),2(""));array256byteINPUTSW=(10,2(0),8,97(0),3,10(1),9,6(1),5,9(1),6,12(1),7,8(1),9,11(1),30(0),9(2),7(0),9(2),8(0),8(2),6(0),10(4),6(0));array16characterTRANSTABLE=("0123456789ABCDEF");array48byteLETTERIDNO=(0,1,2,3,4,5,6,7,8,9,7(0),10,11,12,13,14,15,16,17,18,8(0),19,20,21,22,23,24,25,26,6(0));array10byteLENGTHTABLE=(0,2(4),2(8),16,1,0,2(4));array17shortintegerBITTABLE=(#0,#1,#2,#4,#8,#10,#20,#40,#80,#100,#200,#400,#800,#1000,#2000,#4000,#8000);array10shortintegerINCREASE=(0,1,#100,#100,#200,#200,1,2,1,1);equateIDCODEsyn#65,NUMBERCODEsyn#77,STRINGCODEsyn#81,ENDFILEsyn#92,APARHEADsyn#1C,TPROCHDsyn#0A;byteCOLON1syn#99;equatecomment  SYMBOLS DISTINGUISHED IN ERROR RECOVERY;BEGINCODEsyn#97,ENDCODEsyn#6F,SCOLCODEsyn#70,BHCODEsyn#29,BBCODEsyn#28,BBEXPCODEsyn#21,CASESEQCODEsyn#2D,PROCNTsyn#0C,PROCDCLsyn#08,GOTOCODEsyn#94,LPARCODEsyn#6A,FORCODEsyn#9B,FORCLCODEsyn#2E,FORLISTCODEsyn#30,FORHDsyn#2F,BNDLSTHDsyn#07;equateTRACEINDEXsyn540;comment  TRACE NT INDEX;array3shortintegerMOVE=(#D200S,@BUFFER(75),@B1),ERRMOVE=(#D200S,@BUFFER(65),@B1),ERRMOVE1=(#D200S,@BUFFER(36),@B1),MOVE31=(#D200S,@B3,@B1),MOVE14=(#D200S,@B1,@B4),COMPARE24=(#D500S,@B2,@B4),TREEMOVE=(#D200S,@B2(4),@B4),MOVE24=(#D200S,@B2,@B4),MOVENUMBER=(#D200S,@NUMVALUE,@B5);bytePLUSsyn1;byteMINUSsyn2;byteTIMESsyn3;byteDIVIDEsyn4;byteEXPONsyn5;byteLCOLONEQsyn6;shortintegerLASSIGN=@LCOLONEQ;byteACOLONEQsyn7;shortintegerAASSIGN=@ACOLONEQ;byteSCOLONEQsyn8;shortintegerSASSIGN=@SCOLONEQ;byteRCOLONEQsyn9;shortintegerRASSIGN=@RCOLONEQ;byteSTEPUNTILsyn12;byteDIVsyn13;byteREMsyn14;byteLESSsyn15;byteLESSEQsyn16;byteGREATERsyn17;byteGTEQsyn18;byteEQUALsyn19;byteUNEQsyn20;byteLCOLONEQ2syn22;byteACOLONEQ2syn23;byteSCOLONEQ2syn24;byteRCOLONEQ2syn25;byteAPPARENsyn29;byteINDXsyn30;byteREFXsyn31;byteIFEXPsyn32;byteCOMMAsyn33;byteLCOMMAsyn34;byteSHLsyn35;byteSHRsyn36;byteBBBsyn37;byteENDDsyn38;bytePCLsyn39;byteSUBSTRINGsyn40;byteBARsyn41;byteAPCOMMAsyn42;byteRCOMMAsyn43;byteARCOMMAsyn44;byteARPARENsyn45;byteRPARENsyn46;byteLOGORsyn47;byteBITORsyn48;byteLOGANDsyn49;byteBITANDsyn50;byteITERSTsyn51;byteITERST2syn52;byteFORLISTsyn53;byteFORCLsyn54;byteENDFORLISTsyn55;byteUJIFEXPsyn56;byteUJsyn57;byteCLLsyn58;byteIFSTsyn59;byteCOLONsyn60;byteISsyn61;byteIFST2syn62;byteWHILEOPsyn64;byteWHILESTsyn65;byteIFJsyn66;comment  UNARY OPERATORS;byteUMINUSsyn67;byteABSSsyn68;byteLOGNOTsyn71;byteBITNOTsyn72;byteASSERTsyn73;byteEXITsyn74;byteGOTOOsyn75;byteCARDsyn79;shortintegerCARDD=@CARD;byteCASEIDXsyn80;shortintegerCASEIDXX=@CASEIDX;byteUCOUNTsyn81;comment  TERMINAL NODES;byteBEGINNsyn83;byteINUMBERsyn85;byteNUMBERsyn86;byteIDsyn87;byteLABELIDsyn88;byteARRAYIDsyn89;byteFUNCIDsyn90;shortintegerFUNCIDD=@FUNCID;byteRCCLIDsyn91;byteFIELDIDsyn92;byteCONIDsyn93;byteFTNsyn94;bytePROCDCsyn95;byteCONTROLsyn97;byteBITTsyn98;byteSTRINGGsyn99;byteTRUEsyn100;byteFALSEsyn101;byteWHILEEsyn102;byteNULsyn103;byteNULLSTsyn104;byteARRAYDCsyn105;byteARSTARsyn106;byteSTFUNCIDsyn107;byteSTPROCIDsyn108;byteIFFsyn109;bytecomment  EDIT CODE CONTROL OPERATORS;JBsyn#00,JCsyn#01,PVsyn#02,SEMI1syn#A3,UPOSsyn#A4,UNEGsyn#A5,SPACECODEsyn#A6,NTABsyn#DA,LTAB0syn#DB,RTAB0syn#DC,JDsyn#EA,JADsyn#EB,JPDsyn#EC,FDsyn#ED,VRSTOPsyn#EE,JLOOPsyn#EF,LTABsyn#FA,LTAB1syn#FB,COUNTCODEsyn#FC,COUNTCODE1syn#FD,RTABsyn#FE,RTAB1syn#FF;array163shortintegerMTB=(0,1,2,13,31,43,44,56,73,74,75,102,108,119,120,136,185,195,208,220,221,238,245,253,261,262,269,294,303,338,365,366,379,390,396,403,426,427,428,433,443,483,512,513,518,519,542,552,570,583,590,591,601,626,632,633,634,635,696,697,728,729,748,749,762,768,769,770,780,790,800,806,811,817,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,892,893,894,900,901,954,955,956,957,958,959,960,966,967,968,969,975,981,986,993,994,999,1006,1007,1008,1014,1020,1021,1026,1031,1032,1033,1034,1035,1041,1042,1043,1048,1053,1059,1065,1070,1071,1072,1073,1080,1081,1087,1088,1089,1094,1100,1101,1102,1108,1115,1120,1127,1133,1134,1135);array163shortintegerRMAP=(0,61,122,183,244,61,305,366,427,0,488,61,549,610,671,732,793,854,305,61,915,976,1037,366,610,366,1098,1159,1220,1281,1342,366,1403,1464,366,1525,0,1586,1647,1708,1769,1830,1891,1952,2013,2074,2013,2135,366,2196,366,2013,2257,2318,2379,0,2379,2440,2501,2562,2623,2684,1159,2196,1037,0,1952,2745,2806,2867,1037,1159,2(1037),27(0),2928,2989,3050,2989,3111,3172,2(3233),366,2989,1159,3294,2989,3355,2989,3416,2989,3477,1159,366,3538,3599,366,3660,3721,3(3782),2(2501),5(3843),2(3904),2(1159),2(3904),1159,3(3965),4026,4087,4148,2(3965),4209,1342,1891,4270,2989,366,4331,366,3904,3965,3904,4392);array163byteCMAP=(0,1,2,3,4,1,2,2,5,0,3(6),7,5(8),1,3(2),9,10,4(9),11,12,13,11,14,14,15,0,16,17,18,9,9,19,20,12,5(18),21,18,18,22,23,0,24,15,25,26,27,28,29,30,9,0,31,9,9,32,9,14,14,18,27(0),33,34,35,4,36,37,38,38,10,39,40,41,42,39,43,44,2,45,46,11,10,47,11,10,48,49,49,48,50,15,4(51),28,52,52,5(14),3(48),53,54,18,48,48,55,18,56,57,18,58,59,18,14,48,52,60);array163byteBBCONTEXT=comment  BASIC BLOCK DELIMITERS;(10(2),1,18(2),3(0),12(2),3(0),4(2),0,111(2));array167byteATTRTB=(14(0),5,1,2(0),5,32(0),6,0,1,2,4,2(0),4,2(0),2(4),2(0),2(4),0,6,4,2,2(0),4,2,6(3),0,2(2),3(3),0,4,0,2(1),5(3),2,3(3),0,4,0,2,2(1),3(2),2(1),3(0),4,0,2,0,4,0,4,0,2(4),6,0,4,2(0),2,4,0,2,0,2(4),0,4,2(0),1,0,4,3(0),2(3),0,1,0,4,0,6,0,4,3,0,4,1,2,1,2,0,4,0);array163byteLCTYPE=comment LEFT CONTEXT TYPE HINTS;(7(0),#11,2(0),4,12(0),#11,0,#19,#11,0,3,0,2(1),3(0),4,12(0),#11,0,#11,0,#11,48(0),8(0),#11,6(0),#11,0,#11,4(0),#11,2(0),2(#11),#16,2(0),3(#11),2(#16),2(#11),2(0),2(#11),0,3(2),#10,2(0),2(2),3(0),2,0,2(#11),0,#13,2,#11,0);equateOPSsyn109;comment  FIRST INFORMATIVE OPERATOR (::);array54byteRCTYPE=comment RIGHT CONTEXT TYPE HINTS;(#11,6(0),#11,0,#11,5(0),#11,#19,2(#11),#16,2(0),3(#11),#16,0,2(#18),5(0),3(#11),3(0),2(#11),3(0),#15,0,2(#11),2(0),2(#11),0);array163byteLC1=(7(0),53,0,0,54,12(0),53,0,53,53,0,53,0,54,53,0,0,53,53,4(0),53,7(0),53,0,53,0,53,56(0),53,6(0),60,3(0),53,0,0,53,0,0,3(58),0,0,5(60),62,62,0,0,62,62,0,3(56),3(0),56,56,0,54,0,54,0,53,0,53,62,56,62,0);array163byteRC1=(103(0),53,0,53,64,0,0,53,0,53,53,3(0),59,0,53,0,0,53,53,0,53,4(57),0,0,4(59),0,61,61,5(0),3(57),0,53,0,57,57,3(0),63,0,0,53,0,0,57,61,0);array1136bytePRTB=(2(255),0,2,1,0,2,2,102,101,2,11,255,1,3,101,2,10,2,3,110,101,6,16,2,3,113,101,12,28,255,1,4,103,3,12,2,4,102,101,4,14,2(255),2,6,102,101,6,17,1,6,106,7,18,255,4,7,53,109,53,103,5,15,4,7,53,109,53,105,7,19,3(255),1,10,38,8,20,0,10,8,21,1,10,54,8,22,2,10,107,129,8,23,2,10,108,129,8,24,255,1,11,112,10,25,255,0,12,11,0,2,12,13,103,11,26,2(255),0,14,13,0,2,14,102,101,14,41,1,14,112,15,0,255,2,15,3,101,14,35,3,15,3,114,101,14,36,3,15,3,115,101,14,37,3,15,3,113,101,14,38,4,15,3,114,115,101,14,39,2,15,113,101,14,40,3,15,3,110,101,18,44,255,0,16,13,0,1,16,112,15,0,255,2,17,116,103,16,42,2,17,116,105,17,0,255,1,18,106,17,0,2,18,102,101,18,45,2(255),1,20,103,19,46,2,20,102,101,20,48,1,20,112,21,0,255,2,21,3,101,20,49,255,3,22,106,3,101,20,47,255,3,23,53,24,103,191,52,2(255),2,25,53,103,192,55,255,2,26,53,103,192,56,2,26,116,103,192,57,2,26,53,105,26,59,2,26,116,105,26,60,255,0,27,190,102,0,27,39,130,255,2,28,53,103,27,62,2,28,37,103,27,63,1,28,103,27,64,2,28,53,105,28,66,2,28,37,105,28,67,1,28,105,28,68,255,2,29,30,54,182,69,0,29,38,123,1,29,38,38,124,1,29,44,38,125,2,29,44,38,38,126,2(255),2,31,53,103,182,70,2,31,53,105,31,74,255,1,32,106,31,73,1,32,151,45,152,255,1,33,111,190,104,255,2,34,53,103,190,105,255,2,35,53,103,185,89,1,35,103,185,90,2,35,53,105,35,116,1,35,105,35,117,3(255),0,38,37,0,255,0,39,38,0,1,39,122,44,150,255,2,40,53,111,190,103,1,40,111,39,135,2,40,37,111,39,136,2,40,53,112,33,137,2,40,37,112,40,139,1,40,42,40,140,1,40,112,40,141,255,0,41,40,138,2,41,1,112,41,143,2,41,5,112,41,144,2,41,8,112,41,145,2,41,19,112,41,146,2(255),0,43,39,129,2(255),1,45,111,38,127,2,45,37,111,38,128,2,45,37,112,45,153,1,45,112,45,154,255,0,46,38,119,1,46,38,38,120,255,3,47,50,53,147,46,155,1,47,147,46,156,1,47,105,48,159,255,2,48,53,147,46,157,2,48,53,105,48,160,255,2,49,154,54,47,158,2(255),0,51,38,121,1,51,38,38,122,255,2,52,53,103,39,132,2,52,162,103,39,133,2,52,53,105,52,166,2,52,162,105,52,167,255,1,53,122,30,72,4(255),2,57,144,56,183,76,2,57,160,56,183,77,2,57,143,56,183,78,2,57,149,56,183,79,2,57,150,56,183,80,2,57,145,56,183,81,2,57,125,69,183,82,2,57,126,58,185,85,2,57,127,58,185,86,2,57,128,58,185,87,2(255),2,59,116,60,187,93,2,59,131,60,187,94,2,59,132,60,187,95,2,59,133,60,187,96,2,59,134,60,187,97,2(255),2,61,161,62,189,99,2,61,136,62,189,100,2,61,137,62,189,101,2(255),2,63,154,54,43,148,2,63,154,43,43,149,255,1,64,106,23,53,3(255),0,67,191,51,1,67,106,26,58,255,0,68,27,61,1,68,106,28,65,255,0,69,185,88,1,69,106,35,115,255,1,70,106,25,0,255,0,71,190,0,255,1,72,106,34,114,255,1,73,106,52,165,28(255),0,101,193,1,0,101,66,2,0,101,67,3,0,101,68,4,0,101,69,5,0,101,70,6,0,101,71,7,0,101,72,8,0,101,73,9,1,101,153,42,147,3(255),1,104,101,4,13,2(255),2,106,3,101,14,29,3,106,3,114,101,14,30,3,106,3,115,101,14,31,4,106,3,114,115,101,14,32,3,106,3,113,101,14,33,2,106,113,101,14,34,3,106,3,110,101,18,43,0,106,34,113,7(255),1,113,101,12,27,4(255),1,117,101,22,50,255,1,118,119,24,54,255,0,119,190,111,255,2,120,53,121,29,71,2(255),0,122,44,151,255,2,123,53,124,32,75,3(255),1,126,58,185,83,255,1,127,58,185,84,2(255),0,129,185,91,255,0,130,185,92,5(255),1,135,60,188,98,3(255),0,138,190,106,255,0,139,190,107,255,1,140,62,190,108,255,1,141,62,190,110,255,0,142,190,112,4(255),2,146,8,146,36,118,2(255),1,148,66,39,131,3(255),0,151,41,142,255,1,152,54,39,134,3(255),1,155,101,49,161,255,2,156,53,157,50,162,255,0,157,50,163,255,2,158,53,147,51,164,255,1,159,62,190,109,4(255));array4453byteMATRIX=(102(0),3,53(0),3,6(0),2,52(0),3,5(0),3,0,0,3,3,51(0),3,3,59(0),3,0,0,3,32(0),1,0,1,0,3(1),6(0),3,3(0),1,0,1,3(0),1,1,3(0),1,8(0),1,0,0,1,1,4(0),1,46(0),3,11(0),3,16(0),1,0,1,0,3(1),0,3,1,0,1,0,0,3,0,0,1,0,1,0,1,0,1,1,3(0),1,3,0,0,2,4(0),1,0,0,1,1,0,0,2,0,1,12(0),3,1,28(0),1,3(0),2,54(0),3,59(0),3,2,5(0),3,22(0),3,1,37(0),3,53(0),2,5(0),3,63(0),3,50(0),3,3,5(0),3,22(0),3,1,93(0),3,32(0),1,0,1,0,3(1),6(0),3,3(0),1,0,1,3(0),1,1,3(0),1,6(0),3,0,1,0,0,1,1,4(0),1,15(0),2,10(0),2,13(0),2,2,3(0),2,2,0,0,2,2,0,3(2),0,4(2),3(0),2,2,10(0),1,0,1,0,3(1),3,1,1,0,1,0,3,3(0),1,0,1,0,1,0,1,1,0,3,3,1,8(0),1,0,0,1,1,4(0),1,14(0),1,0,1,3,3(1),0,3,1,0,1,0,1,3(0),1,0,1,0,1,0,1,1,0,2,2,1,0,0,2,2,4(0),1,1,0,1,1,0,0,2,0,1,14(0),1,0,1,0,3(1),7(0),3,0,0,1,0,1,3(0),1,1,3(0),1,8(0),1,0,0,1,1,4(0),1,42(0),3,17(0),3,45(0),3,29(0),1,0,1,0,3(1),6(0),3,3(0),1,0,1,3(0),1,1,0,3,3,1,8(0),1,0,0,1,1,4(0),1,40(0),3,3,3(0),3,3,54(0),2,2,3(0),2,2,11(0),2,42(0),2,2,3(0),2,2,5(0),3,5(0),2,16(0),1,0,1,0,3(1),3,1,1,3,1,0,3,3(0),1,0,1,0,1,0,1,1,3(0),1,0,0,3,3,4(0),1,0,0,1,1,4(0),1,6(0),3,3(1),3,1,0,0,2,0,2,0,8(2),0,2,3(0),2,0,2,0,2,0,2,2,3(0),2,0,0,2,2,1,3(0),2,0,0,2,2,4(0),2,14(0),2,0,2,0,8(2),0,2,3(0),2,0,2,0,2,0,2,2,3(0),2,0,0,2,2,4(0),2,0,0,2,2,4(0),2,40(0),2,2,3(0),2,2,5(0),2,5(0),2,16(0),1,0,1,5(0),3,1,0,1,9(0),1,0,0,1,0,2,2,3(0),2,2,11(0),2,0,1,14(0),1,0,1,4(0),3,1,1,0,1,9(0),1,0,0,1,6(0),3,3,13(0),1,26(0),3,14(0),3,17(0),3,3(0),1,1,58(0),3,12(0),1,0,1,0,3(1),6(0),3,3(0),1,0,1,3(0),1,1,3(0),1,8(0),1,0,0,1,1,4(0),1,4(0),3,10(0),3,24(0),3,3,3(0),3,3,3(0),1,0,3,6(0),3,4(0),3,11(0),2,10(0),2,13(0),2,2,3(0),2,2,3(0),2,0,2,5(0),2,2,3(0),2,2,49(0),3,3,21(0),2,10(0),2,13(0),2,2,3(0),2,2,3(0),2,0,3(2),3(0),2,2,3(0),2,2,45(0),3,6(0),3,19(0),2,10(0),2,13(0),2,2,3(0),2,2,0,0,2,2,0,3(2),0,2,0,2,2,3(0),2,2,53(0),3,18(0),2,10(0),2,13(0),2,2,3,0,0,2,2,0,0,2,2,0,3(2),0,4(2),0,0,3(2),11(0),2,10(0),2,13(0),2,2,3,0,0,2,2,0,0,2,2,0,3(2),0,4(2),3(0),2,2,11(0),2,10(0),2,13(0),2,2,3,0,0,2,2,3(0),2,0,3(2),3(0),2,2,3(0),2,2,8(0),2,2,0,2,10(0),2,12(0),4(2),0,0,2,2,0,0,2,2,0,3(2),0,4(2),0,3,3(2),34(0),3,37(0),2,10(0),2,11(0),2,0,3(2),0,7(2),0,3(2),0,4(2),0,0,3(2),10(0),2,0,2,0,6(2),0,2,0,2,3(0),2,0,2,0,2,0,2,2,0,3(2),6(0),2,0,2,0,0,2,2,4(0),2,4(0),2,3(0),3,1,4(0),2,0,2,0,6(2),0,2,0,2,3(0),2,0,2,0,2,0,2,2,0,3(2),4(0),3,0,2,0,2,0,0,2,2,4(0),2,4(0),2,50(0),3,11(0),6(2),0,0,2,0,2,0,8(2),0,2,2,0,0,2,0,2,0,2,0,2,2,3(0),2,2,0,3(2),3(0),2,0,0,2,2,0,0,2,0,2,38(0),3,9(0),3,26(0),1,4(0),1,12(0),3,1,4(0),1,0,3,3,1,8(0),1,8(0),1,51(0),3,23(0),2,0,5(2),0,2,2,0,2,0,2,3(0),2,0,2,0,2,0,2,2,0,3(2),0,0,2,2,4(0),2,2,0,2,2,0,0,2,0,2,14(0),2,0,2,0,3(2),0,2,2,0,2,0,0,2,0,0,2,0,2,0,2,0,2,2,0,3(2),0,0,2,2,4(0),2,0,0,2,2,0,0,2,0,2,42(0),2,17(0),2,37(0),3,1,36(0),1,4(0),1,10(0),3,1,0,1,4(0),1,3(0),1,8(0),1,8(0),1,14(0),1,4(0),1,12(0),3,1,4(0),1,3(0),1,8(0),1,8(0),1,14(0),1,4(0),1,14(0),3,3(0),1,3(0),1,8(0),1,8(0),1,14(0),1,4(0),1,1,8(0),3,0,1,0,1,3(0),1,1,3(0),1,8(0),1,0,0,1,1,4(0),1,8(0),1,1,3,1,35(0),1,27(0),2,0,2,5(0),2,2,0,2,9(0),2,0,0,2,0,2,2,3(0),2,2,11(0),2,0,2,36(0),3,0,1,28(0),6(2),0,0,2,0,2,0,8(2),0,2,3(0),2,0,2,0,2,0,2,2,3(0),2,0,0,3(2),3(0),2,0,0,2,2,4(0),2,14(0),1,0,1,0,3(1),4(0),3,0,0,3,0,0,1,0,1,0,1,0,1,1,3(0),1,8(0),1,0,0,1,1,4(0),1,14(0),2,0,2,0,3(2),6(0),2,3(0),2,0,2,3(0),2,2,3(0),2,8(0),2,0,0,2,2,4(0),2,40(0),3,3,24(0));closebase;segmentbaseR6;comment  SYMBOLS OF GRAMMAR;array1992characterMETATABLE=("","<SI_VAR_DCL><SI_VAR_DC*><TYPE_SPEC><REF_TYPE><ARRAY_DCL>","<ARRAY_HD><BND_LST_HD><PROC_DCL><PROC_HEAD>","<PROC_HEAD*><PROCEDURE><FPAR_HEAD><FPAR_HEAD*><FPAR_HEAD->","<FBND_LIST><FBND_HEAD><F_ARRAY_HD><RC_CL_DCL><RC_HEAD>","<RC_HEAD*><RECORD><STR_SEL_HD><LENGTH><FIELD_HEAD>","<ARRAY_HEAD><FUNC_DESIG><APAR_HEAD><IF_CLAUSE><TRUE_EXPR>","<CASE_HEAD><CASE_CL><BB_EXPR;><LEFT_PAREN><RC_DES_HD>","<PROGRAM><STATEMENT><STATEMENT*><SIMP_STMT><BLOCK_BODY>","<BLOCK_HEAD><LABEL_DEF><ASSIGNMENT><TRUE_PART><CASE_SEQ>","<FOR_CLAUSE><FOR_HEAD><FOR_LIST><FOR><STEP_UNTIL>","<WHILE_CL><ST_PROC_HD><EXPRESSION><EXPR*><SIMP_EXPR>","<SUM><SUM*><TERM><TERM*><FACTOR>","<SECONDARY><PRIMARY><VARIABLE><SIMP_VAR><VAR_ID>","<LABEL_ID><ARRAY_ID><FUNC_ID><RC_CL_ID><FIELD_ID>","<CON_ID><ST_FUNC_ID><ST_PROC_ID>","","","","","","<ID>,)REFERENCE(,","(ALGOL_______FORTRAN::ARRAY","END;PROCEDURE___VALUE_______RESULT","*RECORD|<NUMBER>IF","THEN________ELSE________CASE________OF__________IS","+-OR<STRING>NULL","/DIV_________REM_________AND~","SHL_________SHR_________TRUE________FALSE_______LONG","ABS<BIT_SEQ><=>",".DO__________GOTO<=>=","BEGIN_______ASSERT::=FOR","STEP________UNTIL_______WHILE_______SHORT~=","**<CONTROL>;+-");closebase;byteMULTDEFsyn1;byteUNDECLsyn2;byteSYNTAXERRORsyn3;byteRCCLERRORsyn4;byteTYPE3ERRORsyn5;byteAPARERRORsyn6;byteARRAYERRORsyn7;byteDATAERRORsyn8;byteFIELDERRORsyn9;byteLENGTHERRORsyn10;byteREFERRORsyn11;byteHIERARCHYERRORsyn12;byteBLOCKEXPERRORsyn13;byteREFRECERRORsyn14;bytePROCERRORsyn15;byteTYPEERRORsyn16;byteRESULTERRORsyn17;bytePPROCERRORsyn18;byteRELATIONERRORsyn19;byteARRAY2ERRORsyn20;byteCONSTANTERRORsyn21;byteSTRINGERRORsyn22;byteTABLEERRORsyn23;byteNPROCERRORsyn24;byteCONVERRsyn25;byteINDEXERRORsyn26;byteTYPE1ERRORsyn27;byteTYPE2ERRORsyn28;bytePRECERRORsyn29;byteASSIGNERRORsyn30;byteNAMEWARNsyn31;byteVAR2ERRORsyn32;segmentprocedureERROR(R10);begin;array6logicalREGSAVE;longrealDEC;byteSTACKDUMP;procedureIDWRITE(R5);begin;R3:=IDDIRBASE;R1:=R1shla2;R2:=IDLENGTH(R1);R1:=IDPOINT(R1)+IDLISTBASE;;end;procedureMETAWRITE(R5);begin;R1:=R1*12S+METABASE;R2:=@B1(12);L:DECR(R2);CLI("",B2);if=thengotoL;R2:=R2-R1;;end;procedureOPERANDERROR(R3);begin;MVC(28,BUFFER(35),"INCORRECT_OPERAND_TYPE(S)FOR");METAWRITE;EX(R2,ERRMOVE);;end;STM(R1,R6,REGSAVE);MVC(130,BUFFER(1),BUFFER);ifR0>=0thenSET(NOGO);R0:=absR0;RESET(STACKDUMP);R3:=R0;CVD(R0,PKDEC);MVC(25,BUFFER(1),"ERROR_2XXX_NEAR_COORDINATE");UNPK(2,1,BUFFER(8),PKDEC(6));OI("0",BUFFER(10));caseR3ofbegin;begin;MVC(29,BUFFER(35),"MORE_THAN_ONE_DECLARATION_OF""");IDWRITE;EX(R2,ERRMOVE);R4:=@BUFFER(R2+66);MVC(14,B4,"""IN_THIS_BLOCK");;end;ifR1=0thengotoLelsebegin;MVI("""",BUFFER(35));IDWRITE;EX(R2,ERRMOVE1);R4:=@BUFFER(R2+37);MVC(13,B4,"""IS_UNDEFINED");;end;begin;MVC(12,BUFFER(35),"SYNTAX_ERROR");SET(STACKDUMP);R6SAVE:=R6;;end;MVC(34,BUFFER(35),"IDENTIFIER_MUST_BE_RECORD_CLASS_ID");MVC(20,BUFFER(35),"MISMATCHED_PARAMETER");MVC(37,BUFFER(35),"INCORRECT_NUMBER_OF_ACTUAL_PARAMETERS");MVC(19,BUFFER(35),"INCORRECT_DIMENSION");MVC(18,BUFFER(35),"DATA_AREA_EXCEEDED");MVC(26,BUFFER(35),"INCORRECT_NUMBER_OF_FIELDS");MVC(27,BUFFER(35),"INCOMPATIBLE_STRING_LENGTHS");MVC(23,BUFFER(35),"INCOMPATIBLE_REFERENCES");MVC(23,BUFFER(35),"BLOCKS_NESTED_TOO_DEEPLY");MVC(41,BUFFER(35),""";""SHOULD_NOT_FOLLOW_EXPRESSION(WARNING)");MVC(36,BUFFER(35),"REFERENCE_MUST_REFER_TO_RECORD_CLASS");MVC(36,BUFFER(35),"EXPRESSION_MISSING_IN_PROCEDURE_BODY");MVC(28,BUFFER(35),"IMPROPER_COMBINATION_OF_TYPES");MVC(34,BUFFER(35),"RESULT_PARAMETER_MUST_BE_A_VARIABLE");MVC(39,BUFFER(35),"PROPER_PROCEDURE_ENDS_WITH_AN_EXPRESSION");begin;R6SAVE:=R6;MVI("""",BUFFER(35));R1:=R6;METAWRITE;EX(R2,ERRMOVE1);R4:=@BUFFER(R2+37);MVC(16,B4,"""CANNOT_FOLLOW""");R4:=@B4(17);R1:=R1-R1;IC(R1,S(I));METAWRITE;EX(R2,MVC(0,B4,B1));R4:=@B4(R2+1);MVC(5,B4,"""HERE");;end;MVC(24,BUFFER(35),"ARRAY_ID_USED_INCORRECTLY");MVC(31,BUFFER(35),"TOO_MANY_CONSTANTS_IN_PROCEDURE");MVC(23,BUFFER(35),"INCORRECT_STRING_LENGTH");MVC(23,BUFFER(35),"COMPILER_TABLE_OVERFLOW");MVC(18,BUFFER(35),"TOO_MANY_PROCEDURES");begin;MVC(20,BUFFER(35),"CONSTANT_OUT_OF_RANGE");R6SAVE:=R6;;end;MVC(39,BUFFER(35),"INDEX_OF_ARRAY_OR_STRING_MUST_BE_INTEGER");begin;R1:=R1-R1;R2:=JSAVE;IC(R1,S(R2));OPERANDERROR;;end;begin;R1:=R1-R1;R2:=ISAVE+JSAVEshra1;IC(R1,S(R2));OPERANDERROR;;end;MVC(39,BUFFER(35),"INCORRECT_PARENTHESIZATION_OF_EXPRESSION");MVC(25,BUFFER(35),"ASSIGNMENT_INCOMPATIBILITY");begin;MVC(4,BUFFER(1),".NOTE");MVC(33,BUFFER(35),"NAME_PARAMETER_SPECIFIED(WARNING)");;end;MVC(34,BUFFER(35),"SIMPLE_VARIABLE_ID_USED_INCORRECTLY");;end;R6:=R6SAVE;R2:=SCOORD;ifR6=SCOLCODEorR6=BEGINCODEthenDECR(R2);CVD(R2,DEC);UNPK(3,7,BUFFER(28),DEC);OI("0",BUFFER(31));MVI("-",BUFFER(33));OI("0",CARRCONT);R0:=@BUFFER;PRINT;MVC(130,BUFFER(1),BUFFER);MVC(12,BUFFER(3),"(FOUND_NEAR""");R2:=R2-R2;R0:=R2;R3:=OLDEDIT-1;if<thenbegin;MVC(2,BUFFER(17),"...");R4:=@BUFFER(21);;endelsebegin;IC(R2,B3(0));IC(R0,INPUTSW(R2));ifR0=2orR0=4thenbegin;R1:=R3;R2:=0;;endelseifR0=3thenbegin;R3:=R3-2;R1:=R1-R1;IC(R1,B3(0));R1:=R1shll8;IC(R1,B3(1));IDWRITE;;endelsebegin;R1:=R2;METAWRITE;;end;EX(R2,MVC(0,BUFFER(17),B1));R4:=@BUFFER(R2+19);;end;R1:=R6;ifR1~=IDCODEthenMETAWRITEelsebegin;R1:=value;IDWRITE;;end;EX(R2,MVC(0,B4,B1));R4:=@B4(R2+2);MVC(1,B4,""")");R0:=@BUFFER;PRINT;ifSTACKFLAGandSTACKDUMPthenbegin;MVC(130,BUFFER(1),BUFFER);MVC(14,BUFFER(1),"STACK_CONTAINS:");PRINT;MVC(14,BUFFER(1),BUFFER);forR3:=0step1untilIdobegin;R2:=0;IC(R2,S(R3));R2:=R2*12S+METABASE;MVC(11,BUFFER(3),B2);PRINT;;end;;end;L:R0:=R0-R0;LM(R1,R6,REGSAVE);;end;procedureREFCOMPATIBLE(R10);comment  COMPARES REFERENCE INFO IN R1 TO REFERENCE INFO IN R4;ifR1~=0thenbegin;integerRASAVE;R1:=R1andR4;if=thenbegin;RASAVE:=R10;R0:=@REFERROR;ERROR;R10:=RASAVE;;end;;end;procedureCNVRTASSN(R10);comment   LEFT SIMPLE TYPE IN R0, ITS SIMTYPEINFO IN R4, RIGHT                  
   SIMPLE TYPE IN V(J+1);begin;integerRASAVE;RASAVE:=R10;R1:=0;IC(R1,V22(R8+8));ifR0~=R1thenbegin;ifR0>5thenbegin;R0:=@ASSIGNERROR;ERROR;;endelseifR0=1thenbegin;R0:=@ASSIGNERROR;ERROR;;endelseifR0=0thenbegin;R0:=@PPROCERROR;ERROR;;endelseifR0<=3thenbegin;ifR1>3thenbegin;R0:=@ASSIGNERROR;ERROR;;endelseSTC(R0,CONV(R9));;endelseifR1>5thenbegin;R0:=@ASSIGNERROR;ERROR;;endelseSTC(R0,CONV(R9));R0:=@ACOLONEQ;;endelseifR1=7thenbegin;R1:=V1(J+8);ifR1>R4thenbegin;R0:=@LENGTHERROR;ERROR;;endelseifR1<R4thenSTC(R4,CONV(R9));R0:=@SCOLONEQ;;endelseifR1=9thenbegin;R1:=V1(R8+8);REFCOMPATIBLE;R0:=@RCOLONEQ;;endelseifR1=6thenR0:=@LCOLONEQelseR0:=@ACOLONEQ;R10:=RASAVE;;end;procedureSAMETYPE(R10);comment  CHECKS THAT R0 AND V22(J+1) ARE SAME TYPE AND ARE STRING OR            
         REFERENCE COMPATIBLE.   R4 CONTAINS SIMTYPEINFO FOR R0;begin;integerRASAVE;RASAVE:=R10;R1:=R1-R1;IC(R1,V22(R8+8));ifR0~=R1thenbegin;R0:=@TYPE3ERROR;ERROR;;endelseifR1=7thenbegin;R1:=V1(R8+8);ifR1~=R4thenbegin;R0:=@LENGTHERROR;ERROR;;end;;endelseifR1=9thenbegin;R1:=V1(R8+8);REFCOMPATIBLE;;end;R10:=RASAVE;;end;procedureREGPATH(R10);begin;R2:=V34(R8);R3:=V34(R7);ifR2<R3thenbegin;V34(R8):=R3;R0:=R0or#80;;endelseifR2=R3thenbegin;R1:=0;IC(R1,V22(R8));R1:=R1shll1;R2:=R2+INCREASE(R1);V34(R8):=R2;ifR0=AASSIGNorR0=LASSIGNorR0=SASSIGNorR0=RASSIGNthenR0:=R0or#80;comment RESOLVE ASSIGNMENT TO RIGHT;;end;;end;procedureLITERAL(R10);comment  UPON ENTRY, POINTER TO LITERAL IS IN R4, SIMPLE TYPE IS IN R0,         
      LENGTH-1 OF STRING IS IN R5.  UPON RETURN, POINTER TO CONSTANT-           
      TABLE IS IN R5;begin;integerR1SAVE,R2SAVE,R3SAVE;STM(R1,R3,R1SAVE);R1:=R0;R3:=LITBASE;ifR1=7thenR0:=R5shll8orR1elsebegin;R5:=R5-R5;IC(R5,LENGTHTABLE(R1));DECR(R5);ifR1<=5thencaseR1ofbegin;R4:=@INUMVALUE;R4:=@NUMVALUE;R4:=@NUMVALUE;R4:=@NUMBUFFER(4);R4:=@NUMBUFFER(0);;end;;end;R1:=CTORG;whileR1<CTPNTdobegin;ifR0~=CINFO(R1)thenR1:=R1+4elsebegin;R2:=CADDR(R1);R2:=@LITERALTABLE(R2);R2:=R2+LITORG;EX(R5,COMPARE24);if=thenbegin;R5:=R1-CTORG;gotoL;;endelseR1:=R1+4;;end;;end;R1:=CTPNT;ifR1>=1024thenbegin;R0:=@CONSTANTERROR;ERROR;;endelsebegin;CINFO(R1):=R0;R0:=R0and#FF;R2:=LITPNT;ifR0=3orR0=5thenR2:=R2+7shrl3shll3elseifR0~=7thenR2:=R2+3shrl2shll2;R0:=R2-LITORG;CADDR(R1):=R0;R0:=R1;R1:=@LITERALTABLE(R2);EX(R5,MOVE14);R2:=@B2(R5+1);LITPNT:=R2;R5:=R0-CTORG;R0:=R0+4;CTPNT:=R0;;end;L:R0:=0;LM(R1,R3,R1SAVE);;end;procedureNULLSTATEMENT(R10);comment  PLACE "NULLST" IN TREE AND EDITCODE;begin;R9:=@B9(4);R0:=@NULLST;STC(R0,OP(R9));R3:=EDITINDEX-1;EDITINDEX:=R3;R0:=@SPACECODE;STC(R0,B3(0));;end;procedureDECLARETEST(R10);comment   FINDS NAMETABLE ENTRY FOR ID IN V1(I).                              
            INSERTS NAMETABLE INDEX IN V1(J), TYPES IN V2(J);begin;logicalRASAVE;array4logicalSAVEREGS;STM(R1,R4,SAVEREGS);R1:=V1(I);R2:=BLC;whileR2>=0dobegin;R4:=DISPLAY(R2);R3:=NPOINT(R4);R4:=BLENGTH(R4)+R3;whileR3<R4doifR1~=IDNO(R3)thenR3:=R3+12elsebegin;comment  ENTRY FOUND;R4:=TYPES(R3)and#EFFF;comment ZERO FORMAL BIT;gotoX;;end;R2:=R2-2;;end;R0:=@UNDECL;RASAVE:=R10;ERROR;R1:=ISAVE;R3:=R3-R3;IC(R3,S(R1-1));ifR3=GOTOCODEthenR4:=#0100elsebegin;R10:=R6SAVE;IC(R3,LCTYPE(R3));ifR3<#10thenbegin;ifR10>=OPSthenIC(R0,RCTYPE(R10-OPS));ifR0>R3thenR3:=R0;whileR3=0dobegin;DECR(R1);IC(R3,S(R1-1));IC(R3,LCTYPE(R3));;end;;end;ifR3>=#10thenR4:=R3and#Felsebegin;R4:=R4-R4;R1:=R1shla3;caseR3ofbegin;IC(R4,V22(R1-8));IC(R4,V22(R1-16));begin;R1:=V34(R1-8);comment APAR HEAD;ifR1~=0thenIC(R4,SIMPLETYPE(R1));;end;begin;R1:=V1(R1-8);IC(R4,SIMPLETYPE(R1));;end;;end;;end;ifR10=LPARCODEorR4=0thenR4:=R4or#0300;;end;R10:=RASAVE;R3:=R3-R3;X:T0(J):=R2;V1(J):=R3;V2(J):=R4;LM(R1,R4,SAVEREGS);;end;procedureDECLAREID(R10);comment  FINDS NAMETABLE ENTRY IN CURRENT BLOCK FOR ID IN V1(I).              
           INSERTS NAMETABLE INDEX IN V1(J);begin;logicalRASAVE;R1:=V1(I);R2:=BLC;whileR2>=2dobegin;R4:=DISPLAY(R2);R3:=NPOINT(R4);R4:=BLENGTH(R4)+R3;whileR3<R4doifR1=IDNO(R3)thengotoXelseR3:=R3+12;R2:=R2-2;;end;X:V1(J):=R3;R3:=R3+12;whileR3<R4doifR1~=IDNO(R3)thenR3:=R3+12elsebegin;RASAVE:=R10;R0:=@MULTDEF;ERROR;R10:=RASAVE;R3:=R4;;end;;end;procedureBLOCKSTEP(R10);comment  STEP BN, BLC.  UPDATE DISPLAY;begin;R1:=BN+4;BN:=R1;R2:=BLC+2;if<=thenR2:=2;DISPLAY(R2):=R1;BLC:=R2;;end;procedureRESETDISPLAY(R10);comment   RESTORE TOP DISPLAY ENTRY FROM V2(J) (ARRAY DC, FOR CL);begin;R2:=V2(J);R1:=BLC+2;DISPLAY(R1):=R2;BLC:=R1;;end;procedureFORCEINTEGER(R10);ifR0~=1thenbegin;logicalRASAVE;RASAVE:=R10;R0:=@TYPE1ERROR;ERROR;R10:=RASAVE;;end;procedureFORCELOGICAL(R10);ifR0~=6thenbegin;logicalRASAVE;RASAVE:=R10;R0:=@TYPE1ERROR;ERROR;R10:=RASAVE;;end;procedureTYPEINTEGER(R5);comment  TYPEINTEGER CHECKS THAT R0 AND R1 ARE BOTH TYPE INTEGER;ifR0~=1orR1~=1thenbegin;R0:=@TYPE2ERROR;ERROR;;end;procedureOUTID(R10);comment  OUTID PUTS TERMINAL NODE AND POINTER TO NAME TABLE IN OUTPUT           
   STRING.  TAKES TERMINAL NODE FROM R0.  LEAVES POINTER TO NAMETABLE           
   IN R1;begin;R9:=@B9(4);comment STEP OUTPUT POINTER;STC(R0,OP(R9));R1:=V1(R8);POINTER(R9):=R1;V5(R8):=R9;comment SAVE OUTPUT POINTER;;end;procedureOUTOP(R10);comment  OUTOP PUTS OPERATOR AND POINTER TO FIRST ARGUMENT IN OUTPUT            
   STRING.  TAKES  OPERATOR FROM R0;begin;R9:=@B9(4);comment STEP OUTPUT POINTER;ifR9>=PLIMITthenbegin;R0:=@TABLEERROR;ERROR;gotoEXIT;;end;STC(R0,OP(R9));R1:=V5(R8)-OUTBASE;POINTER(R9):=R1;V5(R8):=R9;comment SAVE OUTPUT POINTER;;end;procedureCARDOUT(R10);begin;R9:=@B9(4);R0:=@CARD;STC(R0,OP(R9));V5(R8):=R9;R2:=SCOORD;POINTER(R9):=R2;;end;procedureEDITCOUNT(R4);comment  STEP NODEINDEX, PLACE COUNT IN EDITCODE;begin;R1:=NODEINDEX+4;NODEINDEX:=R1;R3:=EDITINDEX-4;R1:=EDITBASE-R3;EDITINDEX:=R3;MVC(1,EDITCODE(R3),NODECHAIN(2));NODECHAIN:=R1;STC(R0,EDITCODE(R3+3));R1:=CHARTLEVEL;STC(R1,EDITCODE(R3+2));;end;procedureTREECOUNT(R4);comment  PLACE UNARY COUNT OPERATOR IN TREE, SET V5(J);begin;R9:=@B9(4);R0:=@UCOUNT;R1:=NODEINDEX;STC(R0,OP(R9));POINTER(R9):=R1;V5(J):=R9;;end;procedureOUTCOUNT(R10);comment  PLACE 'COUNT' IN EDITCODE AND TREE;begin;R0:=@COUNTCODE;EDITCOUNT;TREECOUNT;;end;procedureOUTRTAB(R10);comment  PLACE 'COUNT & RTAB' IN EDITCODE AND TREE;begin;R1:=CHARTLEVEL+3;CHARTLEVEL:=R1;R0:=@RTAB;EDITCOUNT;TREECOUNT;;end;procedureOUTLTAB(R10);comment  PLACE LTAB IN EDITCODE, COUNT IN TREE;begin;R1:=CHARTLEVEL-3;CHARTLEVEL:=R1;ifDEBUGthenbegin;R0:=@LTAB;EDITCOUNT;R0:=@UCOUNT;R1:=NODEINDEX;R9:=@B9(4);STC(R0,OP(R9));POINTER(R9):=R1;;endelsebegin;R3:=EDITINDEX-1;EDITINDEX:=R3;MVI(LTAB0,EDITCODE(R3));;end;;end;procedureOUTLTABX(R10);comment  PLACE LTAB1 IN EDITCODE, COUNT IN TREE;begin;logicalSAVERA;SAVERA:=R10;OUTLTAB;ifDEBUGthenbegin;R3:=EDITINDEX;MVI(LTAB1,EDITCODE(R3+3));;end;R10:=SAVERA;;end;procedureBOOLVALUE(R10);comment  VALUE IN R0, POINTER IN R1;begin;R9:=@B9(4);STC(R0,OP(R9));comment OUTPUT OPERATOR;POINTER(R9):=R1;R0:=6;V2(R8):=R0;comment SET VALUE STACK;R0:=0;V34(R8):=R0;V5(R8):=R9;;end;procedureREFBIND(R10);begin;integerRASAVE,R4SAVE,R5SAVE;shortintegerB5syn#5000;R3:=SIMTYPEINFO(R1);RASAVE:=R10;ifR3=0thenbegin;R0:=@REFRECERROR;ERROR;;endelsebegin;STM(R4,R5,R4SAVE);F01:=V(R8);R4:=0;R5:=REFRECBASE;R5:=@REFRECLIST(R3);R3:=B5;whileR3~=0dobegin;V1(R7):=R3;DECLARETEST;R3:=V1(R8);IC(R0,RCCLNUMBER(R3));R3:=R0shll1;R3:=BITTABLE(R3);R4:=R4orR3;R5:=R5+2;R3:=B5;;end;SIMTYPEINFO(R1):=R4;V(R8):=F01;LM(R4,R5,R4SAVE);;end;R10:=RASAVE;;end;procedureALIGNSIMPVAR(R10);comment  ALIGNSIMPVAR ADJUSTS R4 TO THE APPROPRIATE HALF-WORD,WORD,OR           
         DOUBLE-WORD  BOUNDARY - AS DETERMINED BY THE SIMPLE TYPE IN            
         R3.       R3  IS NOT DESTROYED  ;ifR3=3orR3=5thenR4:=R4+7and#FFFFFFF8elseifR3~=7andR3~=6thenR4:=R4+3and#FFFFFFFC;procedureMAXREG(R10);comment  SETS REGISTER COUNTS TO MAXIMUM OF V(R8) AND V(8)(R8);begin;IC(R0,V3(R8+8));R1:=0;IC(R1,V3(R8));ifR1<R0thenSTC(R0,V3(R8));IC(R0,V4(R8+8));IC(R1,V4(R8));ifR1<R0thenSTC(R0,V4(R8));;end;procedureSTRINGOP(R10);comment  FORCES SELECTION AND CONVERSION OF SHORTER OPERAND.                  
           R0 = OPERATOR;begin;R1:=V1(J);ifR1<V1(I)thenbegin;R0:=R0and#7F;R1:=V1(I);R2:=V5(J);STC(R1,CONV(R2));;endelsebegin;R0:=R0or#80;ifR1>V1(I)thenSTC(R1,CONV(R9));;end;;end;procedureCASECOUNT(R10);comment  COUNT CASES, SET CONV(R1) AND SIMPLE TYPE(R2), R0 = OP;begin;R3:=0;R4:=R9;R5:=0;whileR0~=CASEIDXXdobegin;R3:=R3+1;IC(R0,CONV(R4-4));ifR0~=R1thenSTC(R1,CONV(R4-4))elseSTC(R5,CONV(R4-4));R4:=POINTER(R4)-4+OUTBASE;IC(R0,OP(R4));ifR0=CARDDthenbegin;R4:=R4-4;IC(R0,OP(R4));;end;;end;STC(R2,CONV(R4));POINTER(R4):=R3;;end;procedureCASEJUMP(R10);comment  FIXES EDITCODE JUMP FOR CONDITIONALS;ifDEBUGthenbegin;R3:=VX(J);R1:=EDITBASE-EDITINDEX;STC(R1,EDITCODE(R3+1));R1:=R1shrl8;STC(R1,EDITCODE(R3));;end;procedureOPENSEGMENT(R5);begin;R9:=@B9(12);comment  TREE ORIGIN FOR NEW SEGMENT;comment   STACK AND INCREMENT COMPILER VARIABLES;R1:=CTPNT;PSTACK(R9-8):=R1;R2:=LABELADDR;CONSTANTTABLE(R1):=R2;R1:=R1+4;CTORG:=R1;R4:=@CONSTANTTABLE(R1);MVC(11,B4,CONSTANTTABLE(4));R1:=R1+12;CTPNT:=R1;R1:=32;LABELADDR:=R1;R1:=LITPNT;PSTACK(R9-6):=R1;R3:=LITBASE;R1:=R1+7and#FFF8;LITORG:=R1;R2:=LITERALTABLE(0);LITERALTABLE(R1):=R2;R1:=R1+4;LITPNT:=R1;R2:=IHN;STC(R2,PSTACK(R9-4));R3:=SNC;STC(R3,PSTACK(R9-3));R2:=HN-1;HN:=R2;IHN:=R2;ifR2<5thenbegin;R0:=@HIERARCHYERROR;ERROR;;end;R3:=SN+1;SN:=R3;SNC:=R3;ifR3>=XSNthenbegin;R0:=@NPROCERROR;ERROR;;end;R1:=V1(J);STC(R2,HIERARCHY(R1));STC(R3,PROGSEG(R1));R4:=DRELAD;PSTACK(R9-2):=R4;R4:=DISPLAYORG;PSTACK(R9):=R4;comment TREE HEADER INFO;R0:=0;R1:=TYPEINFO(R1)shla2;if~=thenR1:=BLENGTH(R1)/12;R1:=R1shla3+DPDORG;DISPLAYORG:=R1;R4:=12-R2shla2+7and#FFF8+R1;DRELAD:=R4;R4:=OUTBASE;V34(J):=R4;OUTBASE:=R9;R0:=@PROCDC;OUTID;;end;segmentprocedureCLOSESEGMENT(R5);begin;procedureWRITETREE(R10);comment  WRITES TREE, CONSTANT POINTER TABLE, AND CONSTANT TABLE;begin;array3logicalSAVE;integerTEMP;integerOPBASEsynSAVE(0);segmentbaseR2;array880byteOPTABL=("+-*/**L:=A:=","S:=R:=F:=STEPUNTIDIV_____REM<","<=>>==~=L:=2A:=2","S:=2R:=2AP)INDX____REFX","IFEXP,L,SHL_____SHR_____BB______END_____PCL","SUBSTRIN|AP,R,AR,AR)R)LOGOR","BITOR___LOGAND__BITAND__FORST___FORST2__FORLIST_FORCL___ENDFORLI","UJIFEXP_UJ______CL______IFST::IS______IFST2,","WHILEOP_WHILEST_IFJ_____U-ABS_____________________LOG~","BIT~ASSERT__EXIT____GOTO:STACKADD________CARD","CASE____COUNT___________BEGIN___________INUMBER_NUMBER__ID","LABELID_ARRAYID_FUNCID__RCCLID__FIELDID_CONID___FTN_____PROCDC","RCCLDC__CONTROL_BIT_____STRING__TRUE____FALSE___ITERN___NULL","NULLST__ARRAYDC_AR*STFUNCIDSTPROCIDIF");STM(R2,R4,SAVE);MVC(130,BUFFER(1),BUFFER);R3:=R3+R4;TEMP:=R3;R0:=@BUFFER;OI("0",CARRCONT);MVC(16,BUFFER(1),"PROGRAM_SEGMENT");MVC(5,BUFFER(18),MASK2);R3:=SNC;CVD(R3,DEC);ED(5,BUFFER(18),DEC(5));PRINT;MVC(36,BUFFER(1),"LOC__FLAG__OPCODE__CONV__POINTER");PRINT;MVC(130,BUFFER(1),BUFFER);MVC(3,BUFFER(4),"0000");R1:=@P(R4);UNPK(4,2,BUFFER(16),B1(0));TR(3,BUFFER(16),TRANSTABLE(_240));UNPK(4,2,BUFFER(34),B1(2));TR(3,BUFFER(34),TRANSTABLE(_240));MVI("",BUFFER(20));MVI("",BUFFER(38));PRINT;R1:=0;R3:=0;forR4:=R4+4step4untilTEMPdobegin;R3:=R3+4;HEX:=R3;UNPK(4,2,BUFFER(4),HEX(2));MVI("",BUFFER(8));TR(3,BUFFER(4),TRANSTABLE(_240));IC(R1,OP(R4));ifR1>#7Fthenbegin;R2:=1;R1:=R1and#7F;;endelseR2:=0;R2:=R2or#F0;STC(R2,BUFFER(13));R2:=R1shll3;R2:=R2+OPBASE;MVC(7,BUFFER(16),B2);MVI("",BUFFER(25));MVC(4,BUFFER(26),BUFFER(25));begin;IC(R1,CONV(R4));ifR1~=0thenbegin;CVD(R1,DEC);MVC(5,BUFFER(25),MASK);ED(5,BUFFER(25),DEC(5));;end;R2:=POINTER(R4);;end;HEX:=R2;UNPK(4,2,BUFFER(34),HEX(2));MVI("",BUFFER(38));TR(3,BUFFER(34),TRANSTABLE(_240));PRINT;R1:=0;;end;MVC(38,BUFFER(1),BUFFER);OI("0",CARRCONT);MVC(15,BUFFER(1),"LITERAL_ORIGIN-");UNPK(4,2,BUFFER(18),LABELADDR(2));TR(3,BUFFER(18),TRANSTABLE(_240));MVI("",BUFFER(22));PRINT;MVC(20,BUFFER(1),"LITERAL_POINTER_TABLE");PRINT;MVC(28,BUFFER(1),"LOC__LENGTH__TYPE__POINTER");PRINT;MVC(28,BUFFER(1),BUFFER);R4:=CTORG;R1:=0;R2:=R4+CTPNT-CTORG-4;TEMP:=R2;R3:=0;forR4:=R4step4untilTEMPdobegin;HEX:=R3;UNPK(4,2,BUFFER(3),HEX(2));MVI("",BUFFER(7));TR(3,BUFFER(3),TRANSTABLE(_240));R2:=CADDR(R4);HEX:=R2;UNPK(4,2,BUFFER(26),HEX(2));TR(3,BUFFER(26),TRANSTABLE(_240));MVI("",BUFFER(30));MVC(5,BUFFER(15),MASK2);IC(R1,CTYPE(R4));CVD(R1,DEC);ED(5,BUFFER(15),DEC(5));ifR1=7thenMVC(5,BUFFER(9),MASK2)elseMVC(5,BUFFER(9),MASK);IC(R1,CLENGTH(R4));CVD(R1,DEC);ED(5,BUFFER(9),DEC(5));PRINT;R1:=0;R3:=R3+4;;end;MVC(30,BUFFER(1),BUFFER);R0:=R0-R0;R14:=SAVE14;LM(R3,R4,SAVE(4));;end;procedureCHECKSPACE(R10);comment  INPUT AS MOVETREE. CHECKS FOR SPACE, COMPACTS IF POSSIBLE;if~COMMONFLAGthenbegin;logicalSAVERA;SAVERA:=R10;R10:=@B2(R1+3)-EDITINDEX;if>thenbegin;comment  R10 = ADDITIONAL SPACE REQUIRED;R10:=NEG_R10+INPOINT-INPOINTSAVE-LITPNT;if<orR2>EDITINDEXthenbegin;comment SPACE NOT AVAILABLE;SET(COMMONFLAG);R0:=@TABLEERROR;ERROR;;endelsebegin;array4logicalSAVE03;STM(R0,R3,SAVE03);R3:=INPOINTSAVE+LITPNT;R1:=INPOINT;R0:=R1-R3and#3;R3:=R3+R0;comment ALIGN DELTA;INPOINT:=R3;comment R1, R3 = SOURCE, DEST;R0:=R1-R3;R10:=R2-R1;comment R0,R10=DELTA,BYTE CNT;whileR10>256dobegin;MVC(255,B3,B1);R10:=R10-256;R1:=@B1(256);R3:=@B3(256);;end;ifR10>0thenbegin;R10:=R10-1;EX(R10,MOVE31);;end;R2:=R2-R0;R1:=TREEBASE-R0;TREEBASE:=R1;R1:=@TREELINK;comment ADJUST TREE POINTERS;whileR1>0dobegin;R3:=MEM(R1)-R0;MEM(R1):=R3;R1:=R3;;end;LM(R0,R1,SAVE03);R3:=SAVE03(12);;end;;end;R10:=SAVERA;;end;procedureMOVETREE(R10);comment  HEADER WORD IN R1, R1(16:31) = BYTE COUNT,                         
             R2 = DESTINATION,  R4 = SOURCE;begin;integerR1SAVE,R4SAVE,RASAVE;RASAVE:=R10;R1SAVE:=R1;R1:=R1and#FFFF;R4SAVE:=R4;CHECKSPACE;R10:=RASAVE;ifNOGOthenR2:=@B2(R1+4)elsebegin;R4:=R1SAVE;TREE(R2):=R4;R4:=R4SAVE;whileR1>256dobegin;MVC(255,B2(4),B4);R2:=@B2(256);R4:=@B4(256);R1:=R1-256;;end;ifR1~=0thenbegin;R1:=R1-1;EX(R1,TREEMOVE);R2:=@B2(R1+1);;end;R2:=@B2(4);comment  SET TO NEXT FREE WORD;;end;;end;comment   COMPLETE AND OUTPUT TREE;R2:=DRELAD;ifR2>=4096thenbegin;R0:=@DATAERROR;ERROR;;end;R1:=V1(J);R3:=IDLOC1(R1)and#F000orR2;IDLOC1(R1):=R3;R0:=@PCL;OUTOP;R4:=OUTBASE;R3:=R9-R4;R1:=TREELENGTH+R3+4;TREELENGTH:=R1;R9:=R4;POINTER(R9):=R3;IC(R0,TRACE);ifR0>5thenWRITETREE;R1:=8;R2:=TREEORG;CHECKSPACE;if~NOGOthenbegin;array2integerSAVE45;STM(R4,R5,SAVE45);R5:=TREELINK;B2(0):=R5;TREELINK:=R2;MVC(7,B2(4),"");R4:=V1(J);R4:=IDNO(R4)shll2;R3:=IDDIRBASE;R5:=IDLENGTH(R4);ifR5>7thenR5:=7;R4:=IDPOINT(R4);R3:=IDLISTBASE;R4:=@IDLIST(R4);EX(R5,TREEMOVE);LM(R4,R5,SAVE45);;end;R1:=P(R9);R2:=@B2(12);R4:=@P(R9+4);MOVETREE;R4:=CTORG-4;R1:=LABELADDR;R3:=CONSTANTTABLE(R4);CONSTANTTABLE(R4):=R1;LABELADDR:=R3;R1:=CTPNT-R4;CTPNT:=R4;R4:=@CONSTANTTABLE(R4);MOVETREE;R3:=LITBASE;R4:=LITORG;R1:=LITPNT-R4;R4:=@LITERALTABLE(R4);MOVETREE;R2:=R2+3and#FFFFFC;TREEORG:=R2;comment  RESTORE COMPILER VARIABLES;R4:=PSTACK(R9);DISPLAYORG:=R4;R4:=PSTACK(R9-2);DRELAD:=R4;IC(R0,PSTACK(R9-3));SNC:=R0;R2:=HN+1;HN:=R2;IC(R0,PSTACK(R9-4));IHN:=R0;R1:=V34(J);OUTBASE:=R1;R2:=PSTACK(R9-6);LITPNT:=R2;R2:=PSTACK(R1-8)+4;CTORG:=R2;R2:=PSTACK(R1-6)+7and#FFF8;LITORG:=R2;comment  CLEAR TREE AND STACK AREA;R0:=R0-R0;R1:=R0;R2:=R9-8;R3:=R9+POINTER(R9);P(R2):=R0;R2:=R2+7and#FFF8;R2:=@P(R2);R3:=@P(R3);whileR2<=R3dobegin;STM(R0,R1,B2);R2:=@B2(8);;end;R9:=R9-12;;end;segmentprocedureEXECUTE1(R6);begin;procedureBNDPR(R10);comment  BNDPR CHECKS THAT BOTH BOUNDS ARE INTEGER, INCREASES THE               
         DIMENSION COUNT, AND OUTPUTS COLON;begin;integerRASAVE;RASAVE:=R10;IC(R0,V22(R8+8));comment GET SIMPLE TYPE OF LOWER BOUND;IC(R1,V22(R8+24));comment  GET SIMPLE TYPE OF UPPER BOUND;TYPEINTEGER;R9:=@B9(4);comment  STEP OUTPUT POINTER;R0:=@COLON;STC(R0,OP(R9));R1:=V5(R8+8)-OUTBASE;POINTER(R9):=R1;IC(R0,V4(R8));R0:=R0+1;STC(R0,V4(R8));R10:=RASAVE;;end;procedurePROCEDOPEN(R5);comment  STEPS BN, OPENS NEW PROGRAM SEGMENT, ALLOCATES SPACE FOR DPDS,         
   ASSIGNS RELATIVE ADDRESSES TO FORMAL NAME PARAMETERS;begin;integerR5SAVE,TEMP;R5SAVE:=R5;DECLAREID;BLOCKSTEP;OPENSEGMENT;R4:=0;R1:=V1(J);R2:=TYPEINFO(R1)shla2;comment BN OF FPARS;if~=thenbegin;R1:=NPOINT(R2);R3:=BLENGTH(R2);R2:=R1+R3;TEMP:=R2;R2:=0;R3:=R3/3+LABELADDR;LABELADDR:=R3;R2:=DPDORG;R3:=0;R5:=HN;whileR1<TEMPdobegin;IDLOC1(R1):=R5;IC(R0,VR(R1));ifR0~=0thenbegin;STC(R3,TYPE(R1));R4:=R4orR0;;endelsebegin;IC(R0,TYPE(R1));ifR0=#12thenR4:=R4or#1elseIDLOC2(R1):=R2;;end;R1:=R1+12;R2:=R2+8;;end;;end;VA(J):=R4;R5:=R5SAVE;;end;procedurePROCEDCLOSE(R5);begin;integerR5SAVE;R5SAVE:=R5;R2:=T0(J+8);ifR2>=BLCthenR2:=#FE;R2:=R2shll3;R1:=V1(J);ifR2>#F0thenR2:=#F0;IC(R0,HIERARCHY(R1));R2:=R2orR0;STC(R2,HIERARCHY(R1));R1:=BLC-2;BLC:=R1;CLOSESEGMENT;R3:=EDITINDEX-1;R1:=VA(J)and#2;if~=thenbegin;R3:=R3-2;MVI(VRSTOP,EDITCODE(R3+2));MVI(PV,EDITCODE(R3+1));;end;R1:=CHARTLEVEL-3;CHARTLEVEL:=R1;EDITINDEX:=R3;MVI(LTAB0,EDITCODE(R3));R5:=R5SAVE;;end;procedureEXTERNALESDINDEX(R5);comment  V(I) -> SEGMENT NAME, R2 := EXTERNAL SEGMENT NUMBER;begin;MVC(130,BUFFER(1),BUFFER);R2:=V1(I)+CTORG;R1:=LITBASE+LITORG+CADDR(R2);IC(R2,CLENGTH(R2));R2:=R2and#FF;ifR2>7thenR2:=7;EX(R2,MOVE);R3:=@ESDICT(0);forR2:=255step_1untilXSNdobegin;CLC(7,B3,BUFFER(75));if=thengotoX;R3:=@B3(8);;end;R2:=XSN-1;ifR2<224thenbegin;R0:=@NPROCERROR;ERROR;R2:=224;R3:=@ESDICT(248);;end;XSN:=R2;MVC(7,B3,BUFFER(75));X:R1:=CTORG+12;CTPNT:=R1;R1:=LITORG+4;LITPNT:=R1;R1:=#FF;T0(J+8):=R1;;end;procedureNAMEP(R5);begin;DECLAREID;R0:=R0-R0;V34(J):=R0;;end;procedureVALUEP(R5);begin;DECLAREID;R1:=V1(R8);R3:=TYPES(R1);ifR3~=9thenbegin;R4:=DRELAD;ALIGNSIMPVAR;IDLOC2(R1):=R4;ifR3~=7thenIC(R3,LENGTHTABLE(R3))elseR3:=SIMTYPEINFO(R1)+1;R4:=R4+R3;DRELAD:=R4;;end;R0:=1;V34(R8):=R0;;end;procedureRELADDRESS(R5);ifR1~=0thencomment ROUTINE EXECUTED ONLY IF ID DEFINED;begin;R4:=HN;IDLOC1(R1):=R4;R4:=DRELAD;R3:=TYPES(R1);ifR3~=9thenbegin;R0:=R3;ALIGNSIMPVAR;IDLOC2(R1):=R4;ifR3~=7thenIC(R3,LENGTHTABLE(R3))elseR3:=SIMTYPEINFO(R1)+1;R3:=R3+R4;DRELAD:=R3;;end;;end;procedureFIELDDC(R5);begin;DECLAREID;R1:=V1(J);R3:=0;IC(R3,SIMPLETYPE(R1));ifR3=3orR3=5thenbegin;R4:=V34(J)+7and#FF8;IDLOC2(R1):=R4;IC(R3,LENGTHTABLE(R3));R4:=R4+R3;V34(J):=R4;;end;;end;caseR5ofbegin;comment   <T VAR ID> ::= <ID> ,  ALSO RULE SELECTION ;begin;DECLARETEST;IC(R0,V21(J));ifR0~=0thenbegin;R0:=R0-1shla2;comment  MTB POINTER INCREMENT;R3:=R3SAVE+R0;R3SAVE:=R3;SET(FLAG);;endelsebegin;R0:=@ID;OUTID;IC(R0,TYPE(R1));ifR0>#FthenR2:=#0A04elsebegin;R2:=#FF;T0(J):=R2;R2:=R2-R2;;end;V34(J):=R2;R1:=SIMTYPEINFO(R1);V1(J):=R1;;end;;end;comment   <LABEL ID> ::= <ID> ;begin;R0:=@LABELID;OUTID;;end;comment   <T ARRAY ID> ::= <ID> ;begin;R0:=@ARRAYID;OUTID;R2:=#0100;V34(J):=R2;R1:=#FF;T0(J):=R1;;end;comment   <T FUNC ID> ::= <ID> ;begin;R0:=@FUNCID;OUTID;R1:=V1(J);IC(R0,HIERARCHY(R1));R0:=R0shrl4shll1;T0(J):=R0;;end;comment   <RC CL ID> ::= <ID> ;begin;R0:=@RCCLID;OUTID;R2:=#0100;V34(J):=R2;IC(R0,RCCLNUMBER(R1));STC(R0,V22(J));R1:=#FF;T0(J):=R1;;end;comment   <T FLD ID> ::= <ID> ;begin;R0:=@FIELDID;OUTID;R2:=#0100;V34(J):=R2;IC(R0,RCCLNUMBER(R1));STC(R0,V21(J));R1:=SIMTYPEINFO(R1);V1(J):=R1;;end;comment   <CON ID> ::= <ID> ;begin;R0:=@CONID;OUTID;R2:=R2-R2;V34(J):=R2;STC(R2,V21(J));comment  RESET TYPE TO ZERO;R1:=#FF;T0(J):=R1;;end;comment   <ST FUNC ID> ::= <ID> ;begin;R0:=@STFUNCID;OUTID;R2:=#0A04;V34(J):=R2;R1:=#FF;T0(J):=R1;;end;comment   <ST PROC ID> ::= <ID> ;begin;R0:=@STPROCID;OUTID;IC(R0,VR(R1));V34(J):=R0;ifR1=TRACEINDEXthenR1:=0elseR1:=#FF;T0(J):=R1;;end;comment   <SI VAR DC> ::= <SI VAR DC*> ;comment    <SI VAR DC*> ::= <SI TYPE>  <ID>;begin;DECLAREID;R1:=V1(J);RELADDRESS;;end;comment    <SI VAR DC*> ::= <SI VAR DC*> ,, <ID> ;begin;DECLAREID;R1:=V1(J);RELADDRESS;;end;comment    <SI TYPE>   ::=   <REF TYPE>    );begin;R3:=EDITINDEX-1;EDITINDEX:=R3;R0:=@SPACECODE;STC(R0,B3(0));;end;comment    <REF TYPE>    ::=  REFERENCE   <ID>;begin;DECLARETEST;IC(R0,V21(J));ifR0~=4thenbegin;R0:=@RCCLERROR;ERROR;;end;;end;comment    <REF TYPE>   ::=   <REF TYPE>   ,,   <ID>;begin;DECLARETEST;IC(R0,V21(J));ifR0~=4thenbegin;R0:=@RCCLERROR;ERROR;;end;;end;comment    <ARRAY DC> ::= <BND LST HD> <T EXP> :: <T EXP>   ) ;begin;byteSIMTYPE;BNDPR;R0:=@ARPAREN;OUTOP;RESETDISPLAY;R4:=R4-R4;IC(R4,V3(J));V2(J):=R4;R2:=R4-1*12S;R2:=NEG_R2+V1(J);IC(R0,SIMPLETYPE(R2));STC(R0,SIMTYPE);ifR0~=9thenR5:=DRELAD+3and#FFFFFFFC;IC(R4,V4(J));R1:=R4*12S+4;forR3:=1step1untilV2(J)dobegin;IC(R0,DIMEN(R2));ifR0=0thenSTC(R4,DIMEN(R2))elseifR0~=R4thenbegin;R0:=@ARRAYERROR;ERROR;;end;CLI(#09,SIMTYPE);if~=thenbegin;IDLOC2(R2):=R5;R5:=R5+R1;DRELAD:=R5;;endelseIDLOC2(R2):=R1;R5:=HN;IDLOC1(R2):=R5;R5:=DRELAD;R2:=R2+12;;end;;end;comment    <ARRAY HD>   ::=  <SI TYPE>  ARRAY  <ID>  ;begin;DECLAREID;R0:=@ARRAYDC;OUTID;CARDOUT;R0:=1;STC(R0,V3(R8));comment  ID COUNT;;end;comment    <ARRAY HD>   ::=  <ARRAY HD>   ,,  <ID>  ;begin;DECLAREID;IC(R0,V3(J));R0:=R0+1;STC(R0,V3(J));;end;comment    <BND LST HD> ::= <ARRAY HD>  (  ;begin;R0:=0;STC(R0,V4(R8));comment  INITIALIZE DIMEN COUNT;R1:=BLC;R2:=DISPLAY(R1);V2(J):=R2;R1:=R1-2;BLC:=R1;IC(R0,V3(R8));STC(R0,CONV(R9-4));;end;comment  <BND LST HD> ::= <BND LST HD> <T EXP> :: <T EXP>  ,  ;begin;BNDPR;R0:=@ARCOMMA;OUTOP;;end;comment    <PROC DECL>  ::=  <T PR HEAD> <STATEMENT*>  ;begin;R1:=V1(R8);IC(R0,SIMPLETYPE(R1));ifR0~=0thenbegin;R0:=@PROCERROR;ERROR;;end;PROCEDCLOSE;;end;comment    <PROC DECL>  ::=  <T PR HEAD> ;begin;NULLSTATEMENT;R1:=#FF;T0(J+8):=R1;R1:=V1(R8);IC(R0,SIMPLETYPE(R1));ifR0~=0thenbegin;R0:=@PROCERROR;ERROR;;end;PROCEDCLOSE;;end;comment    <PROC DECL>  ::= <T PR HEAD>  <T EXP*>  ;begin;R4:=V1(R8);IC(R0,SIMPLETYPE(R4));R4:=SIMTYPEINFO(R4);CNVRTASSN;PROCEDCLOSE;;end;comment    <PROC DECL>  ::=  <T PR HD>  ALGOL  <STRING> ;begin;EXTERNALESDINDEX;R1:=V1(J);STC(R2,PROGSEG(R1));R2:=#8000;IDLOC1(R1):=R2;comment EXTERNAL, FORMAL;R0:=11;STC(R0,HIERARCHY(R1));R9:=@B9(4);R0:=@NULLST;STC(R0,OP(R9));PROCEDCLOSE;if~NOGOthenbegin;comment  DELETE SEGMENT IN COMMON;R1:=TREELINK;TREEORG:=R1;R1:=B1;TREELINK:=R1;;end;;end;comment    <PROC DECL>  ::=  <T PR HD>  FORTRAN  <STRING> ;begin;EXTERNALESDINDEX;R0:=@FTN;R1:=V1(J);R9:=@B9(4);STC(R0,OP(R9));STC(R2,CONV(R9));POINTER(R9):=R1;PROCEDCLOSE;;end;comment   <T PR HEAD> ::= <T PR HEAD*> ., ;begin;CARDOUT;OUTRTAB;R1:=VA(J)and#1;if~=thenbegin;R3:=EDITINDEX-2;EDITINDEX:=R3;MVI(PV,EDITCODE(R3+1));MVI(VRSTOP,EDITCODE(R3));;end;;end;comment   <T PR HEAD*> ::= <PROCEDURE> ;comment    <T PR HEAD*> ::= <PROCEDURE>   <FPAR HEAD>  )   ;begin;R1:=V1(R8);R2:=TYPEINFO(R1)shla2;R4:=DRELAD;R1:=NPOINT(R2);R3:=BLENGTH(R2)+R1;whileR1<R3dobegin;R2:=TYPES(R1);ifR2=9thenbegin;R4:=R4+3and#FFFFFFFC;IDLOC2(R1):=R4;R4:=R4+4;;end;R1:=R1+12;;end;DRELAD:=R4;;end;comment   <PROCEDURE> ::= PROCEDURE <ID> ;PROCEDOPEN;comment   <PROCEDURE> ::= <SI TYPE> PROCEDURE <ID> ;PROCEDOPEN;comment   <FPAR HEAD> ::= <FPAR HEAD*> ;comment   <FPAR HEAD> ::= <FBND LIST> ;comment    <FPAR HEAD*> ::=  (   <SI TYPE>   <ID>   ;begin;NAMEP;R0:=@NAMEWARN;R0:=NEG_R0;ERROR;;end;comment    <FPAR HEAD*> ::=  (   <SI TYPE>   VALUE  <ID> ;VALUEP;comment    <FPAR HEAD*> ::=  (   <SI TYPE>   RESULT    <ID>  ;VALUEP;comment    <FPAR HEAD*> ::=  (   <SI TYPE>  VALUE  RESULT <ID> ;VALUEP;comment    <FPAR HEAD*> ::=  (   <SI TYPE>   PROCEDURE  <ID> ;NAMEP;comment    <FPAR HEAD*> ::=  (   PROCEDURE  <ID>  ;NAMEP;comment    <FPAR HEAD*> ::= <FPAR HEAD-> <SI TYPE>  <ID>  ;begin;NAMEP;R0:=@NAMEWARN;R0:=NEG_R0;ERROR;;end;comment    <FPAR HEAD*> ::= <FPAR HEAD-> <SI TYPE>   VALUE  <ID>;VALUEP;comment    <FPAR HEAD*> ::= <FPAR HEAD-> <SI TYPE>  RESULT  <ID>;VALUEP;comment    <FPAR HEAD*>  ::= <FPAR HEAD-><SI TYPE> PROCEDURE<ID>;NAMEP;comment    <FPAR HEAD*> ::=<FPAR HEAD-><SI TYPE>VALUE RESULT<ID>;VALUEP;comment    <FPAR HEAD*> ::= <FPAR HEAD->  PROCEDURE  <ID>;NAMEP;comment    <FPAR HEAD*> ::= <FPAR HEAD*> ,, <ID>;begin;R1:=V34(J);ifR1=0thenNAMEPelseVALUEP;;end;comment   <FPAR HEAD-> ::= <FPAR HEAD*> ., ;comment   <FPAR HEAD-> ::= <FBND LIST> ., ;comment    <FBND LIST>  ::= <FBND HEAD>  *  )  ;begin;R4:=DRELAD+3and#FFFFFFFC;R2:=V1(R8);IC(R0,DIMEN(R2));R1:=R0*12S+4;forR3:=1step1untilV2(R8)dobegin;IDLOC2(R2):=R4;R2:=R2-12;R4:=R4+R1;;end;DRELAD:=R4;;end;comment    <FBND HEAD>  ::= <F ARRAY HD>   (     ;comment    <FBND HEAD>  ::= <FBND HEAD>  *     , ;comment    <F ARRAY HD> ::= (  <SI TYPE>   ARRAY   <ID>    ;begin;DECLAREID;R1:=1;V2(R8):=R1;;end;comment    <F ARRAY HD> ::= <FPAR HEAD-> <SI TYPE>  ARRAY <ID> ;begin;DECLAREID;R1:=1;V2(R8):=R1;;end;comment    <F ARRAY HD> ::= <F ARRAY HD>  ,,  <ID>  ;begin;DECLAREID;R1:=V2(J)+1;V2(J):=R1;;end;comment    <RC CL DC>   ::=   <RC HEAD>     );begin;R1:=V5(R8);R4:=V34(R8);SIMTYPEINFO(R1):=R4;comment INSERT RECORD LENGTH;;end;comment    <RC HEAD>   ::=  <RECORD>  (  <SI TYPE>  <ID>  ;FIELDDC;comment    <RC HEAD>   ::=  <RC HEAD>  ,,  <ID>  ;FIELDDC;comment    <RC HEAD>  ::=  <RC HEAD*>  <SI TYPE>  <ID>  ;FIELDDC;comment    <RC HEAD*>   ::=  <RC HEAD>  .,   ;comment    <RECORD>   ::=  RECORD  <ID>  ;begin;DECLAREID;R1:=V1(J);R3:=HN;IDLOC1(R1):=R3;V5(R8):=R1;comment  POINTER TO NAMETABLE IN V5(J);R4:=4;R1:=R1+12;IC(R0,TYPE(R1));R2:=0;whileR0=5dobegin;IC(R0,SIMPLETYPE(R1));ifR0=9thenbegin;IDLOC2(R1):=R4;R4:=R4+4;;end;IDLOC1(R1):=R3;R2:=R2+1;R1:=R1+12;IC(R0,TYPE(R1));;end;R3:=R1-12;R1:=V5(R8);STC(R2,VR(R1));forR1:=R1+12step12untilR3dobegin;IC(R0,SIMPLETYPE(R1));ifR0=1orR0=2orR0=4orR0=8thenbegin;IDLOC2(R1):=R4;R4:=R4+4;;end;ifR0=4thenR4:=R4+4;;end;forR1:=V5(R8)+12step12untilR3dobegin;IC(R0,SIMPLETYPE(R1));ifR0=6thenbegin;IDLOC2(R1):=R4;R4:=R4+1;;endelseifR0=7thenbegin;IDLOC2(R1):=R4;R4:=R4+SIMTYPEINFO(R1)+1;;end;;end;R4:=R4+3and#FFC;V34(R8):=R4;;end;comment    <T VAR>    ::=  <SI T VAR>    ;comment    <T VAR>  ::=    <T ARRAY ID>  ;begin;R1:=V1(R8);R2:=SIMTYPEINFO(R1);V1(R8):=R2;IC(R0,DIMEN(R1));V34(R8):=R0;R8:=R8shra3;IC(R0,S(R8-1));R8:=R8shla3;ifR0~=APARHEADthenbegin;R0:=@ARRAY2ERROR;ERROR;;end;;end;comment    <T VAR>  ::= <STR SEL HD>  <T EXP>  <LENGTH>   )  ;begin;IC(R0,V22(R8+8));ifR0~=1thenbegin;R0:=@INDEXERROR;ERROR;;end;R1:=V1(R8+16);ifR1>V1(R8)thenbegin;R0:=@LENGTHERROR;ERROR;;endelseV1(R8):=R1;R0:=@BAR;R9:=@B9(4);STC(R0,OP(R9));R1:=V5(R8+8)-OUTBASE;POINTER(R9):=R1;R0:=@SUBSTRING;R0:=R0or#80;OUTOP;;end;comment    <STR SEL HD>    ::=     <SI T VAR>   (  ;begin;IC(R0,V22(R8));ifR0~=7thenbegin;R0:=@VAR2ERROR;ERROR;;end;IC(R0,V21(R8));ifR0=2thenbegin;R0:=@ARRAYERROR;ERROR;;end;;end;comment    <LENGTH>  ::=   |   <T NUMBER>  ;begin;IC(R0,V22(I));FORCEINTEGER;R5:=INUMVALUE;ifR5<=0orR5>256thenbegin;R0:=@STRINGERROR;ERROR;;end;R5:=R5-1;V1(R8):=R5;R0:=@INUMBER;OUTID;;end;;end;;end;segmentprocedureEXECUTE2(R6);begin;procedureARITHCHECK(R5);comment  FIRST ARGUMENT IS IN R1, SECOND IS IN V(I);begin;IC(R0,V22(R7));ifR0>5thenbegin;R0:=@TYPEERROR;ERROR;R0:=R1;;endelseifR1>5thenbegin;R0:=@TYPEERROR;ERROR;R1:=R0;;end;;end;procedureBINARYOPCHECK(R5);begin;IC(R0,V22(I));ifR0>5orR1>5thenbegin;R0:=@TYPE2ERROR;ERROR;ifR1>5thenR1:=1;R0:=R1;;end;;end;procedureCASETYPE(R10);begin;integerRASAVE;IC(R1,V22(R8));IC(R0,V22(R8+8));STC(R0,V22(R7));ifR1~=0thenbegin;RASAVE:=R10;ifR0~=R1thenbegin;ARITHCHECK;R5:=R0andR1and#1;comment RECOVER LONG BIT;ifR0>R1thenbegin;ifR5=0thenR0:=R0and#FE;STC(R0,V22(R8));;endelsebegin;ifR5=0thenR1:=R1and#FE;STC(R1,V22(R8));;end;;endelseifR1=7thenbegin;R5:=V1(R8);ifR5<V1(R8+8)thenR5:=V1(R8+8);V1(R8):=R5;;endelseifR1=9thenbegin;R5:=V1(R8+8);R1:=V1(R8)orR5;V1(R8):=R1;;end;R10:=RASAVE;;endelsebegin;STC(R1,V21(R8+8));R1:=V12(R8+8);V12(R8):=R1;;end;IC(R0,V22(R8));ifR0=7thenR0:=V1(R8);STC(R0,CONV(R9));;end;procedureCONVERT1(R5);comment  FIRST ARGUMENT IS IN R1,  SECOND IS IN R0,  POINTER FOR                
              FIRST IS IN R2;ifR0~=R1thenbegin;ifR0=1thenSTC(R1,CONV(R9))elsecaseR1ofbegin;begin;STC(R0,V22(R8));STC(R0,CONV(R2));;end;ifR0=3thenbegin;R0:=2;STC(R0,CONV(R9));;endelseifR0=4thenbegin;STC(R0,V22(R8));STC(R0,CONV(R2));;endelsebegin;R0:=4;STC(R0,V22(R8));STC(R0,CONV(R9));STC(R0,CONV(R2));;end;begin;STC(R0,CONV(R2));STC(R0,V22(R8));;end;begin;R0:=4;STC(R0,CONV(R9));;end;ifR0=2thenbegin;R0:=4;STC(R0,V22(R8));STC(R0,CONV(R9));STC(R0,CONV(R2));;endelseifR0=4thenbegin;STC(R0,V22(R8));STC(R0,CONV(R2));;endelsebegin;R0:=5;STC(R0,CONV(R9));;end;;end;;end;segmentprocedureAPAREXPCHECK(R5);comment  POINTER TO NAMETABLE IN R2;begin;IC(R0,SIMPLETYPE(R2));R3:=0;IC(R3,VR(R2));R4:=SIMTYPEINFO(R2);ifR3~=0thenbegin;caseR3ofbegin;CNVRTASSN;begin;comment RESULT;IC(R3,OP(R9));R3:=R3and#7F;ifR3~=30andR3~=31andR3~=40andR3~=87andR3~=89thenbegin;R0:=@RESULTERROR;ERROR;;endelsebegin;R3:=R0;IC(R0,V22(R8+8));STC(R3,V22(R8+8));R3:=R4;R4:=V1(R8+8);V1(R8+8):=R3;CNVRTASSN;R0:=0;STC(R0,CONV(R9));;end;;end;begin;comment  VALUE-RESULT;IC(R3,OP(R9));R3:=R3and#7F;ifR3~=30andR3~=31andR3~=40andR3~=87andR3~=89thenbegin;R0:=@RESULTERROR;ERROR;;end;IC(R1,V22(R8+8));ifR0=2andR1=3thennullelseifR0=3andR1=2thennullelseifR0=4andR1=5thennullelseifR0=5andR1=4thennullelseSAMETYPE;;end;;end;IC(R3,V21(J+8));R3:=R3and#FF;if~=thenbegin;R3:=POINTER(R9);R3:=TYPEINFO(R3);ifR3~=0thenbegin;R0:=@TYPE3ERROR;ERROR;;end;;end;;endelsebegin;IC(R3,TYPE(R2));SAMETYPE;R1:=0;IC(R1,V21(R8+8));R1:=R1or#10;ifR1~=R3thenbegin;ifR3=#10andR1=#13thenbegin;R1:=POINTER(R9);R1:=TYPEINFO(R1);ifR1~=0thenbegin;R0:=@TYPE3ERROR;ERROR;;end;;endelseifR3~=#13orR1~=#10thenbegin;R0:=@TYPE3ERROR;ERROR;;end;;endelseifR1=#12thenbegin;IC(R0,DIMEN(R2));R1:=V34(R8+8);ifR1=0thenbegin;comment INSERT DIMEN IN NAMETABLE;R1:=POINTER(R9);STC(R0,DIMEN(R1));;endelseifR0~=R1thenbegin;R0:=@ARRAYERROR;ERROR;;end;;end;;end;;end;procedureAPARCHECK(R5);comment  CHECKS FORMAL PROCEDURE USE, RESETS DRELAD;begin;IC(R0,OP(R9));ifR0=FUNCIDDthenbegin;R2:=POINTER(R9);R1:=IDLOC1(R2)or#8000;IC(R0,TYPE(R2));ifR0<#10thenIDLOC1(R2):=R1;;end;;end;procedureAPAREND(R5);comment  CHECKS NUMBER OF APARS, TYPE OF LAST.  OUTPUTS " )" ;begin;IC(R0,V21(R8));comment  CHECK NUMBER OF APARS;ifR0~=1andR0~=#FFthenbegin;R0:=@APARERROR;ERROR;;end;IC(R0,V22(R8));ifR0=0thenR0:=3elseR0:=0;STC(R0,V21(R8));comment  SET TYPE;R0:=@APPAREN;comment  PREPARE TO OUTPUT;;end;procedureAPARLIST(R5);comment  CHECKS NUMBER OF APARS, INCREASES FPAR POINTER ,                       
         OUTPUTS  ","   .  POINTER TO FPAR IS IN R2;begin;IC(R0,V21(R8));comment  GET NUMBER OF APARS LEFT;ifR0=1thenbegin;R0:=@APARERROR;ERROR;R0:=#FF;STC(R0,V21(R8));;endelsebegin;R0:=R0-1;STC(R0,V21(R8));;end;R2:=R2+12;V34(R8):=R2;comment  STEP FPAR POINTER;R0:=@APCOMMA;comment  PREPARE TO OUTPUT;;end;procedureSUBSCRIPT(R5);comment  SUBSCRIPT CHECKS THAT SUBSCRIPT IS INTEGER AND THAT DIMENSION          
         IS NOT TOO SMALL FOR IT  ;begin;IC(R0,V22(R8+8));ifR0~=1thenbegin;R0:=@INDEXERROR;ERROR;;end;R2:=0;IC(R2,V22(R8));ifR2=#FFthenbegin;R2:=V1(R8);IC(R0,DIMEN(R2));R0:=R0+1;STC(R0,DIMEN(R2));;endelsebegin;R2:=R2-1;STC(R2,V22(R8));ifR2<0thenbegin;R0:=@ARRAYERROR;ERROR;;end;;end;MAXREG;comment  ADJUST REGISTER COUNTS;R0:=@INDX;OUTOP;;end;procedureARRAYDES(R5);comment  R0 CONTAINS NUMBER OF *"S;begin;R1:=V1(R8);R2:=0;IC(R2,V22(R8));ifR2=#FFthenbegin;IC(R2,DIMEN(R1));R2:=R2+R0;STC(R2,DIMEN(R1));;endelseifR0~=R2thenbegin;R3:=R0;R0:=@ARRAYERROR;ERROR;R0:=R3;;end;ifR0=0thenbegin;IC(R0,SIMPLETYPE(R1));V2(R8):=R0;;endelsebegin;R2:=TYPES(R1);V2(R8):=R2;V34(R8):=R0;R8:=R8shra3;IC(R0,S(R8-1));R8:=R8shla3;ifR0~=APARHEADthenbegin;R0:=@ARRAY2ERROR;ERROR;;end;;end;R2:=SIMTYPEINFO(R1);V1(R8):=R2;;end;procedureAPSTATEND(R4);begin;APARCHECK;R2:=V34(R8);IC(R0,V21(R8));ifR2=0thenR0:=@APPARENelseifR0=#FFthenAPARENDelsebegin;R1:=TYPES(R2);ifR1~=#1300thenbegin;R0:=@TYPE3ERROR;ERROR;;end;APAREND;;end;R1:=#0404;V34(R8):=R1;OUTOP;R1:=IHN+1;IHN:=R1;;end;procedureAPSTATLIST(R4);begin;APARCHECK;R2:=V34(R8);IC(R0,V21(R8));ifR2=0orR0=#FFthenR0:=@APCOMMAelsebegin;R1:=TYPES(R2);ifR1~=#1300thenbegin;R0:=@TYPE3ERROR;ERROR;;end;APARLIST;;end;OUTOP;;end;procedureEQUALOP(R5);begin;logicalR5SAVE;R5SAVE:=R5;V1(J+8):=R0;IC(R0,V22(I));IC(R1,V22(J));ifR0~=R1thenbegin;BINARYOPCHECK;ifR0<R1thenbegin;ifR0=3andR1=4thenbegin;R1:=5;R2:=V5(R8);STC(R1,CONV(R2));;end;STC(R1,CONV(R9));;endelsebegin;ifR1=3andR0=4thenbegin;R0:=5;STC(R0,CONV(R9));;end;R2:=V5(R8);STC(R0,CONV(R2));;end;;end;R0:=V1(J+8);REGPATH;R1:=R1-R1;IC(R1,V22(J));ifR1=7thenSTRINGOP;OUTOP;R0:=6;V2(J):=R0;R5:=R5SAVE;;end;procedureRELOP(R5);begin;logicalR5SAVE;R5SAVE:=R5;V1(J+8):=R0;IC(R0,V22(J));IC(R1,V22(I));ifR0<=3andR1<=3thenbegin;ifR1<R0thenSTC(R0,CONV(R9))elseifR0<R1thenbegin;R2:=V5(J);STC(R1,CONV(R2));;end;;endelseifR0~=7orR1~=7thenbegin;R0:=@TYPE2ERROR;ERROR;;end;R0:=V1(J+8);REGPATH;R1:=R1-R1;IC(R1,V22(J));ifR1=7thenSTRINGOP;OUTOP;R0:=6;V2(J):=R0;R5:=R5SAVE;;end;procedureSHIFT(R5);comment  OUTPUT NODE IN R2;begin;IC(R0,V22(J));IC(R1,V22(I));ifR0~=8orR1~=1thenbegin;R0:=@TYPE2ERROR;ERROR;;end;R0:=R2;REGPATH;OUTOP;IC(R0,V3(J));ifR0<2thenR0:=2;STC(R0,V3(J));;end;segmentprocedureLEVELTWO(R10);begin;integerRASAVE;RASAVE:=R10;caseR5ofbegin;comment    <SI T VAR>     ::=   <T VAR ID>  ;comment    <SI T VAR>     ::=  <T FLD HD>  <T EXP>  )   ;begin;IC(R0,V22(R8+8));ifR0~=9thenbegin;R0:=@TYPE1ERROR;ERROR;;endelsebegin;IC(R1,V21(R8));R2:=1shllR1shrl1;R3:=V1(R8+8);ifR3~=R2andR3~=0thenbegin;R3:=R3andR2;if=thenbegin;R0:=@REFERROR;ERROR;;endelsebegin;R3:=V5(R8);STC(R1,CONV(R3));;end;;end;;end;R0:=@REFX;OUTOP;R0:=0;STC(R0,V21(R8));MAXREG;;end;comment    <SI T VAR>     ::=  <T ARRAY HD>  <T EXP>  )  ;begin;SUBSCRIPT;IC(R0,V21(R8));ARRAYDES;;end;comment    <SI T VAR>     ::=  <T ARRAY HD>   *   )   ;begin;R9:=@B9(4);R0:=@ARSTAR;STC(R0,OP(R9));R0:=@INDX;OUTOP;IC(R0,V21(R8));R0:=R0+1;ARRAYDES;;end;comment    <T FLD HD>   ::=  <T FLD ID>   (    ;comment    <T ARRAY HD> ::=  <T ARRAY ID>  (    ;begin;R1:=V1(R8);IC(R0,DIMEN(R1));ifR0=0thenR0:=#00FF;V2(R8):=R0;;end;comment    <T ARRAY HD> ::= <T ARRAY HD> <T EXP>  ,  ;SUBSCRIPT;comment    <T ARRAY HD> ::= <T ARRAY HD>   *   ,    ;begin;R9:=@B9(4);R0:=@ARSTAR;STC(R0,OP(R9));IC(R0,V21(R8));R0:=R0+1;STC(R0,V21(R8));R0:=@INDX;OUTOP;;end;comment  <T FUNC DES> ::= <T FUNC ID> ;begin;R2:=V1(J);R1:=TYPEINFO(R2);ifR1=0thenSTC(R1,V21(J))elsebegin;R3:=JSAVE;IC(R0,S(R3-1));ifR0~=APARHEADthenbegin;R0:=@APARERROR;ERROR;;end;;end;R1:=SIMTYPEINFO(R2);V1(J):=R1;;end;comment    <T FUNC DES> ::= <APAR HEAD> <T EXP>   ) ;begin;APARCHECK;R2:=V34(R8);IC(R0,V21(R8));ifR2=0thenR0:=@APPARENelseifR0=#FFthenAPARENDelsebegin;APAREXPCHECK;APAREND;;end;OUTOP;R1:=IHN+1;IHN:=R1;;end;comment    <T FUNC DES> ::= <APAR HEAD>  <STATEMENT>   )  ;APSTATEND;comment    <T FUNC DES>   ::=  <APAR HEAD>  )  ;begin;R0:=@NULLST;R9:=R9+4;STC(R0,OP(R9));APSTATEND;;end;comment    <APAR HEAD>  ::= <T FUNC ID>   (   ;begin;R2:=V1(R8);IC(R0,TYPE(R2));ifR0=#13thenR1:=0elsebegin;R2:=TYPEINFO(R2)shla2;if=thenbegin;R0:=@APARERROR;ERROR;R1:=0;;endelsebegin;R0:=0;R1:=BLENGTH(R2)/12;STC(R1,V21(R8));R1:=NPOINT(R2);;end;R2:=V1(R8);;end;V34(R8):=R1;R1:=SIMTYPEINFO(R2);V1(R8):=R1;R1:=IHN-1;IHN:=R1;ifR1<5thenbegin;R0:=@HIERARCHYERROR;ERROR;;end;;end;comment    <APAR HEAD>  ::= <APAR HEAD> <T EXP>  ,  ;begin;APARCHECK;R2:=V34(R8);IC(R0,V21(R8));ifR2=0orR0=#FFthenR0:=@APCOMMAelsebegin;APAREXPCHECK;APARLIST;;end;OUTOP;;end;comment    <APAR HEAD>  ::=  <APAR HEAD>  <STATEMENT>   ,   ;APSTATLIST;comment    <APAR HEAD>  ::=  <APAR HEAD> ,   ;begin;R0:=@NULLST;R9:=R9+4;STC(R0,OP(R9));APSTATLIST;;end;comment    <T EXP> ::=  <T EXP*> ;comment    <T EXP*>  ::= <SI T EXP>;comment    <T EXP*> ::= <IF CL>  <TRUE EXP>   <T EXP*>   ;begin;IC(R1,V22(R8+8));R2:=V5(R8+8)-8;IC(R0,V22(R7));R5:=V12(R8+8);V12(R8):=R5;ifR0~=R1thenbegin;ARITHCHECK;CONVERT1;;endelsebegin;ifR1=7thenbegin;R5:=V1(I);ifR5>V1(J+8)thenSTC(R5,CONV(R2))elseifR5<V1(J+8)thenbegin;R5:=V1(J+8);STC(R5,CONV(R9));;end;V1(J):=R5;;endelseifR1=9thenbegin;R5:=V1(R8+8);R1:=V1(R7)orR5;V1(R8):=R1;;end;;end;R3:=VX(J);MVI(RTAB1,EDITCODE(R3+3));OUTLTABX;R0:=@IFEXP;R1:=V5(J+8)-OUTBASE;R9:=@B9(4);STC(R0,OP(R9));POINTER(R9):=R1;R1:=V5(J+8);R2:=V5(J)-OUTBASE;POINTER(R1-4):=R2;comment  PATCH  UJ POINTER;V5(R8):=R9;R1:=#0A04;V34(J):=R1;;end;comment    <T EXP*> ::= <CASE HEAD>  <T EXP>   )   ;begin;CASETYPE;R0:=@CLL;OUTOP;R2:=V2(J);R1:=R2;ifR1=7thenR1:=V1(R8);CASECOUNT;R2:=P(R9);R9:=R9-4;OUTLTABX;R9:=@B9(4);P(R9):=R2;R1:=#0A04;V34(J):=R1;CASEJUMP;;end;comment    <IF CL>   ::=  IF  <T EXP>    THEN  ;begin;IC(R0,V22(R8+8));FORCELOGICAL;R0:=@IFF;STC(R0,OP(R9+4));R9:=R9+8;R0:=@IFJ;R0:=R0or#80;STC(R0,OP(R9));R1:=V5(R8+8)-OUTBASE;POINTER(R9):=R1;OUTRTAB;R3:=EDITINDEX;VX(J):=R3;;end;comment    <TRUE EXP>   ::= <T EXP>  ELSE  ;begin;R9:=@B9(4);R0:=@UJIFEXP;STC(R0,OP(R9));R0:=@COUNTCODE1;EDITCOUNT;TREECOUNT;;end;comment    <CASE HEAD>  ::= <CASE CL>   (  ;begin;R0:=@RTAB1;EDITCOUNT;TREECOUNT;R0:=0;V2(J):=R0;comment CLEAR COUNT FIELDS;;end;comment    <CASE HEAD>  :=  <CASE HEAD>  <T EXP>  ,  ;begin;CASETYPE;comment  CHECK TYPES,  SET TYPE BYTE;R0:=@UJ;OUTOP;comment OUTPUT UJ;R0:=@COUNTCODE1;EDITCOUNT;TREECOUNT;;end;comment    <CASE CL> ::= CASE  <T EXP>  OF  ;begin;IC(R0,V22(R8+8));FORCEINTEGER;R9:=@B9(4);R0:=@CASEIDX;STC(R0,OP(R9));V5(J):=R9;ifDEBUGthenbegin;R3:=EDITINDEX-3;EDITINDEX:=R3;VX(J):=R3;MVI(JC,EDITCODE(R3+2));;end;R1:=CHARTLEVEL+3;CHARTLEVEL:=R1;R0:=0;V1(J):=R0;;end;comment    <SI T EXP>  ::= <SI T EXP**>;comment   <SI T EXP> ::= <SI T EXP*> = <SI T EXP**> ;begin;R0:=@EQUAL;EQUALOP;;end;comment   <SI T EXP> ::= <SI T EXP*> ~= <SI T EXP**> ;begin;R0:=@UNEQ;EQUALOP;;end;comment   <SI T EXP> ::= <SI T EXP*> < <SI T EXP**> ;begin;R0:=@LESS;RELOP;;end;comment   <SI T EXP> ::= <SI T EXP*> <= <SI T EXP**> ;begin;R0:=@LESSEQ;RELOP;;end;comment   <SI T EXP> ::= <SI T EXP*> >= <SI T EXP**> ;begin;R0:=@GTEQ;RELOP;;end;comment   <SI T EXP> ::= <SI T EXP*> > <SI T EXP**> ;begin;R0:=@GREATER;RELOP;;end;comment    <SI T EXP>   ::= <SI T EXP*>  IS   <RC CL ID> ;begin;IC(R0,V22(R8));ifR0~=9thenbegin;R0:=@TYPE2ERROR;ERROR;;end;R0:=@ISor#80;OUTOP;R0:=6;STC(R0,V22(R8));comment  SIMPLE TYPE  IS LOG;;end;comment    <SI T EXP**>  ::= <SI T EXP*>;comment    <SI T EXP*>  ::= <T TERM>  ;comment    <SI T EXP*>  := +  <T TERM> ;begin;IC(R0,V22(R7));ifR0>5thenbegin;R0:=@TYPE1ERROR;ERROR;;end;F01:=V(R7);V(R8):=F01;comment SAVE STACK INFO;R3:=VX(J);MVI(UPOS,EDITCODE(R3));;end;comment    <SI T EXP*>  ::= -  <T TERM>  ;begin;IC(R0,V22(R7));ifR0>5thenbegin;R0:=@TYPE1ERROR;ERROR;;end;F01:=V(R7);V(R8):=F01;R0:=@UMINUS;R9:=@B9(4);STC(R0,OP(R9));V5(R8):=R9;R3:=VX(J);MVI(UNEG,EDITCODE(R3));;end;comment    <SI T EXP*>  ::= <SI T EXP*> + <T TERM>;begin;IC(R1,V22(R8));R2:=V5(R8);BINARYOPCHECK;CONVERT1;R0:=@PLUS;REGPATH;OUTOP;;end;comment    <SI T EXP*>  ::= <SI T EXP*> - <T TERM>;begin;IC(R1,V22(R8));R2:=V5(R8);BINARYOPCHECK;CONVERT1;R0:=@MINUS;REGPATH;OUTOP;;end;comment    <SI T EXP*>  ::= <SI T EXP*> OR   <T TERM>;begin;IC(R0,V22(R8));IC(R1,V22(R7));ifR0=6andR1=6thenbegin;F01:=V(R7);V(R8+8):=F01;MAXREG;R0:=@LOGOR;;endelseifR0=8andR1=8thenbegin;R0:=@BITOR;REGPATH;;endelsebegin;R0:=@TYPE2ERROR;ERROR;R0:=0;;end;OUTOP;;end;comment    <SI T EXP*>  ::=  <RC CL ID> ;begin;IC(R1,V22(R8));R2:=#1shllR1shrl1;V1(R8):=R2;R0:=9;V2(R8):=R0;comment  SIMPLE TYPE := REF;;end;comment    <SI T EXP*>  ::=  <RC DES HD>   <T EXP>  );begin;IC(R0,V21(R8));comment  GET NUMBER OF FIELDS LEFT;ifR0~=1thenbegin;R0:=@FIELDERROR;ERROR;;end;R2:=V1(R8);comment  POINTER TO FIELDS;IC(R0,SIMPLETYPE(R2));R4:=SIMTYPEINFO(R2);CNVRTASSN;comment  TYPE CHECK AND CONVERSION;IC(R0,V22(J+8));ifR0=7thenbegin;R1:=R1-R1;STC(R1,CONV(R9));;end;R0:=@RPAREN;OUTOP;R1:=0;IC(R1,V22(R8));comment  MOVE RCCLNO;R2:=#1shllR1shrl1;V1(R8):=R2;MAXREG;R0:=9;V2(R8):=R0;comment  SIMPLE TYPE := REF;;end;comment    <SI T EXP*>  ::=  <RC DES HD>  )  ;begin;IC(R0,V21(R8));ifR0~=1thenbegin;R0:=@FIELDERROR;ERROR;;end;R9:=@B9(4);R0:=@NULLST;STC(R0,OP(R9));R0:=@RPAREN;OUTOP;R1:=0;IC(R1,V22(R8));R2:=#1shllR1shrl1;V1(R8):=R2;R0:=9;V2(R8):=R0;comment REFERENCE;;end;comment    <SI T EXP*>  ::=  <STRING>   ;begin;R0:=@STRINGG;OUTID;R0:=0;V34(R8):=R0;IC(R0,STRINGLENGTH);V1(R8):=R0;;end;comment    <SI T EXP*>  ::= NULL;begin;R9:=@B9(4);R0:=@NUL;STC(R0,OP(R9));R0:=9;STC(R0,V22(R8));comment   SIMPLE TYPE := REF;V5(R8):=R9;R0:=0;V34(R8):=R0;R1:=0;V1(R8):=R1;comment  SET RC CL MASK;;end;comment    <T TERM>  ::= <T TERM*>;comment    <T TERM*> ::= <T FACT>;comment    <T TERM*> ::= <T TERM*>   *  <T FACT> ;begin;IC(R1,V22(R8));BINARYOPCHECK;comment  CHECK TYPES.  FIRST ARG IN R1, SECOND IN R0;ifR0~=R1thenbegin;R2:=V5(R8);caseR1ofbegin;begin;STC(R0,CONV(R2));ifR0=2thenR0:=3elseifR0=4thenR0:=5;STC(R0,V22(R8));;end;begin;ifR0>1thenSTC(R0,CONV(R2))elsebegin;R1:=2;STC(R1,CONV(R9));;end;ifR0>3thenR0:=5elseR0:=3;STC(R0,V22(R8));;end;ifR0<3thenbegin;R0:=3;STC(R0,CONV(R9));;endelseifR0=4thenbegin;R0:=5;STC(R0,CONV(R2));STC(R0,CONV(R9));STC(R0,V22(R8));;endelsebegin;STC(R0,CONV(R2));STC(R0,V22(R8));;end;begin;ifR0=3thenbegin;R0:=5;STC(R0,CONV(R9));STC(R0,CONV(R2));;endelseifR0=5thenSTC(R0,CONV(R2))elsebegin;R0:=4;STC(R0,CONV(R9));R0:=5;;end;STC(R0,V22(R8));;end;begin;R0:=5;STC(R0,CONV(R9));;end;;end;;endelseifR0=2thenbegin;R0:=3;STC(R0,V22(R8));;endelseifR0=4thenbegin;R0:=5;STC(R0,V22(R8));;end;R0:=@TIMES;REGPATH;OUTOP;;end;comment    <T TERM*> ::= <T TERM*>  /   <T FACT> ;begin;IC(R1,V22(R8));R2:=V5(R8);BINARYOPCHECK;CONVERT1;ifR0=1thenifR1=1thenbegin;R0:=3;STC(R0,V22(R8));STC(R0,CONV(R9));STC(R0,CONV(R2));;end;R0:=@DIVIDE;REGPATH;OUTOP;;end;comment    <T TERM*> ::= <T TERM*>  DIV  <T FACT> ;begin;IC(R0,V22(R8));IC(R1,V22(R7));TYPEINTEGER;R0:=@DIV;REGPATH;OUTOP;R0:=1;V2(J):=R0;R2:=V34(R8);ifR2<3andR3~=0thenR2:=3elseifR2<2andR3=0thenR2:=2;V34(R8):=R2;;end;comment    <T TERM*> ::= <T TERM*> REM   <T FACT> ;begin;IC(R0,V22(R8));IC(R1,V22(R7));TYPEINTEGER;R0:=@REM;REGPATH;OUTOP;R0:=1;V2(J):=R0;R2:=V34(R8);ifR2<3andR3~=0thenR2:=3elseifR2<2andR3=0thenR2:=2;V34(R8):=R2;;end;comment    <T TERM*> ::= <T TERM*>  AND  <T FACT>  ;begin;IC(R0,V22(R8));IC(R1,V22(R7));ifR0=6andR1=6thenbegin;F01:=V(R7);V(R8+8):=F01;MAXREG;R0:=@LOGAND;;endelseifR0=8andR1=8thenbegin;R0:=@BITAND;REGPATH;;endelsebegin;R0:=@TYPE2ERROR;ERROR;R0:=0;;end;OUTOP;;end;comment    <T FACT>   ::=  <T SECON>     ;comment    <T FACT>   ::=    ~   <T FACT>;begin;IC(R0,V22(R7));ifR0=6thenR0:=@LOGNOTelseifR0=8thenR0:=@BITNOTelsebegin;R0:=@TYPE1ERROR;ERROR;;end;R9:=@B9(4);STC(R0,OP(R9));F01:=V(R7);V(R8):=F01;V5(R8):=R9;;end;comment    <T SECON>   ::=   <T PRIM>   ;comment   <T SECON> ::= <T SECON> ** <T PRIM> ;begin;IC(R0,V22(J));IC(R1,V22(I));ifR0>5orR1~=1thenbegin;R0:=@TYPE2ERROR;ERROR;;end;ifR0=1orR0=2thenbegin;R2:=V5(J);R0:=3;STC(R0,CONV(R2));STC(R0,V22(J));;end;REGPATH;R0:=@EXPON;OUTOP;comment  FORCE LEFT;;end;comment   <T SECON> ::= <T SECON> SHL <T PRIM> ;begin;R2:=@SHL;SHIFT;;end;comment    <T SECON>   ::=  <T SECON>  SHR  <T PRIM>    ;begin;R2:=@SHR;SHIFT;;end;;end;comment END OF CASE STATEMENT;R10:=RASAVE;;end;comment END OF LEVELTWO;LEVELTWO;;end;comment END OF EXECUTE2;segmentprocedureEXECUTE3(R6);begin;procedureDECLEDIT(R10);comment  FIX-UP EDITCODE DECLARATION JUMP (R0=TYPE);begin;R3:=VX(J+8);STC(R0,EDITCODE(R3+3));R1:=EDITBASE-EDITINDEX;STC(R1,EDITCODE(R3+2));R1:=R1shrl8;STC(R1,EDITCODE(R3+1));R3:=EDITINDEX-3;EDITINDEX:=R3;;end;procedureCLOSEBLOCK(R5);begin;R1:=BLC-2;BLC:=R1;R9:=@B9(4);R0:=@ENDD;R1:=V2(J)-OUTBASE;STC(R0,OP(R9));POINTER(R9):=R1;R2:=V1(J);ifR2>0thenbegin;logicalR5SAVE;R5SAVE:=R5;R1:=OUTBASE+12;V5(J):=R1;CLOSESEGMENT;R0:=@FUNCID;OUTID;R5:=R5SAVE;R3:=VX(J);R1:=EDITBASE-EDITINDEX;STC(R1,EDITCODE(R3+6));R1:=R1shrl8;STC(R1,EDITCODE(R3+5));;end;V5(J):=R9;;end;procedureLABELCHECK(R5);comment  CHECKS FOR LABEL DEF AS NEXT PAIR OF INPUT TOKENS;begin;R2:=INPOINT;CLI(COLON1,B2(1));if=thenbegin;R0:=@COUNTCODE;EDITCOUNT;;end;;end;procedureIFTHENSTATEMENT(R5);begin;R1:=V5(R8+8);R2:=V5(R8)-OUTBASE;POINTER(R1-4):=R2;comment  PATCH UJ;OUTLTAB;R9:=@B9(4);R0:=@IFST;STC(R0,OP(R9));R1:=V5(J+8)-OUTBASE;POINTER(R9):=R1;V5(J):=R9;R0:=0;V34(J):=R0;;end;procedureIFSTATEMENT(R5);begin;OUTLTAB;R0:=@IFST2;OUTOP;R0:=R0-R0;V34(J):=R0;;end;procedureLOOPCLOSE(R10);comment  EMITS EDITCODE JUMP TO CLOSE LOOP;ifDEBUGthenbegin;R3:=EDITINDEX-3;EDITINDEX:=R3;R1:=EDITBASE-VX(J)-1;R0:=@JLOOP;STC(R0,EDITCODE(R3+2));STC(R1,EDITCODE(R3+1));R1:=R1shrl8;STC(R1,EDITCODE(R3));;end;procedureWHILESTATEMENT(R5);begin;LOOPCLOSE;OUTLTAB;R0:=@WHILEST;OUTOP;R0:=0;V34(J):=R0;;end;procedureFORSTATEMENT(R5);begin;R1:=V1(J);ifR1~=1thenbegin;LOOPCLOSE;OUTLTAB;;end;R1:=V1(J);ifR1=0thenR0:=@ITERSTelseR0:=@ITERST2;OUTOP;R0:=0;V34(J):=R0;R1:=BLC-2;BLC:=R1;;end;procedureASSIGNMENT(R5);begin;R0:=V2(R8);ifR0>#FFthenbegin;R0:=@ARRAYERROR;ERROR;R0:=V2(R8)and#FF;;end;F01:=V(R7);V(R8+8):=F01;R4:=V1(R8);CNVRTASSN;REGPATH;R1:=0;IC(R1,V22(R7));ifR1=7thenSTRINGOP;OUTOP;;end;procedureCASESEQEND(R5);begin;logicalR5SAVE;R5SAVE:=R5;R1:=BLC-2;BLC:=R1;OUTLTAB;CASEJUMP;R0:=@CLL;OUTOP;R1:=0;R2:=R1;CASECOUNT;R0:=0;V34(J):=R0;R5:=R5SAVE;;end;procedureresult(R5);begin;R1:=V34(R8);ifR1=2thenbegin;IC(R0,OP(R9));R0:=R0and#7F;ifR0~=30andR0~=31andR0~=40andR0~=62andR0~=87andR0~=89thenbegin;R0:=@RESULTERROR;ERROR;;end;;end;;end;segmentprocedureLEVELTWO(R10);begin;integerRASAVE;RASAVE:=R10;caseR5ofbegin;comment    <T PRIM>  ::=  <T VAR>;comment    <T PRIM>  ::= <T FUNC DES> ;begin;IC(R0,V22(J));ifR0=0thenSET(FLAG)elsebegin;R1:=#0A04;V34(J):=R1;IC(R0,OP(R9));R4:=@FUNCID;ifR0~=R4thenbegin;R1:=0;STC(R1,V21(J));;end;;end;;end;comment    <T PRIM>  ::=  <BLOCKBODY>  <T EXP>  END  ;begin;R0:=@COMMA;OUTOP;R2:=V1(J);ifR2>0thenbegin;R1:=V1(J+8);SIMTYPEINFO(R2):=R1;IC(R0,V22(J+8));STC(R0,SIMPLETYPE(R2));;end;CLOSEBLOCK;R1:=V12(J+8);V12(J):=R1;R1:=#0A04;V34(J):=R1;;end;comment   <T PRIM> ::= <BB EXP .,> END ;begin;R0:=@BLOCKEXPERROR;R0:=NEG_R0;ERROR;R1:=#0A04;V34(J):=R1;;end;comment    <T PRIM>  ::=   <LEFT PAR>  <T EXP>   )  ;begin;R1:=V1(R8);ifR1=0thenbegin;F01:=V(R8+8);V(R8):=F01;;endelsebegin;R0:=TYPEINFO(R1);comment  GET SIMPLE TYPE OF FPAR;R4:=IDLOC1(R1);comment  GET SIMTYPEINFO OF FPAR;CNVRTASSN;R0:=@APPAREN;OUTOP;R1:=V1(R8);R1:=SIMTYPEINFO(R1);V1(R8):=R1;;end;;end;comment    <T PRIM>  ::=  TRUE;begin;R0:=@TRUE;R1:=8;BOOLVALUE;;end;comment    <T PRIM>  ::= FALSE ;begin;R0:=@FALSE;R1:=4;BOOLVALUE;;end;comment    <T PRIM>  ::=  <CON ID>;comment    <T PRIM>  ::=  LONG <T PRIM> ;begin;F01:=V(R8+8);V(R8):=F01;comment SAVE VALUE INFO;IC(R0,V22(R8));ifR0=1orR0=2thenR0:=3elseifR0=4thenR0:=5elsebegin;R0:=@TYPE1ERROR;ERROR;;end;STC(R0,CONV(R9));STC(R0,V22(R8));;end;comment    <T PRIM>  ::= SHORT <T PRIM>;begin;F01:=V(R8+8);V(R8):=F01;comment SAVE VALUE INFO;IC(R0,V22(R8));ifR0=3thenR0:=2elseifR0=5thenR0:=4elsebegin;R0:=@TYPE1ERROR;ERROR;;end;STC(R0,CONV(R9));STC(R0,V22(R8));;end;comment    <T PRIM>  ::=  ABS <T PRIM> ;begin;IC(R0,V22(R7));ifR0=1thenbegin;IC(R1,V3(R8));ifR1=0thenSTC(R0,V3(R8));;endelseifR0<4thenbegin;IC(R1,V4(R8));ifR1=0thenR1:=1;STC(R1,V4(R8));;endelsebegin;IC(R1,V3(R8));ifR1<4thenR1:=4;STC(R1,V3(R8));IC(R1,V4(R8));ifR1<4thenR1:=4;STC(R1,V4(R8));;end;ifR0>5thenbegin;R0:=@TYPE1ERROR;ERROR;;endelseifR0=4thenbegin;R0:=2;STC(R0,V22(R7));;endelseifR0=5thenbegin;R0:=3;STC(R0,V22(R7));;end;R9:=@B9(4);R0:=@ABSS;STC(R0,OP(R9));F01:=V(R7);V(R8):=F01;V5(R8):=R9;;end;comment    <T PRIM>  ::=  <T NUMBER> ;begin;IC(R0,V22(R8));LITERAL;V1(R8):=R5;R0:=@NUMBER;OUTID;R0:=0;V34(R8):=R0;;end;comment    <T PRIM>  ::=  <BIT SEQ> ;begin;R0:=@BITT;OUTID;R0:=0;V34(R8):=R0;;end;comment    <LEFT PAR>   ::=    (;begin;R0:=0;V1(R8):=R0;;end;comment    <LEFT PAR>  ::=   <ST FUNC ID>  (  ;begin;R0:=0;STC(R0,V21(R8));comment  TYPE SET TO ZERO;;end;comment    <RC DES HD>  ::=  <RC CL ID>  (;begin;R2:=V1(R8);IC(R1,VR(R2));comment GET NUMBER OF FIELDS;ifR1=0thenbegin;R2:=R2+12;IC(R0,TYPE(R2));whileR0=5dobegin;R2:=R2+12;R1:=R1+1;IC(R0,TYPE(R2));;end;R2:=V1(R8);STC(R1,VR(R2));;end;STC(R1,V21(R8));R2:=R2+12;V1(R8):=R2;comment POINTER TO FIELDS IN V1(J);;end;comment    <RC DES HD>  ::=  <RC DES HD>  <T EXP>  ,   ;begin;IC(R0,V21(R8));comment  GET NUMBER OF FIELDS LEFT;ifR0=1thenbegin;R0:=@FIELDERROR;ERROR;;end;R0:=R0-1;STC(R0,V21(R8));comment DECREASE FIELD CNT;R2:=V1(R8);comment  POINTER TO FIELDS;R4:=SIMTYPEINFO(R2);IC(R0,SIMPLETYPE(R2));R2:=R2+12;V1(R8):=R2;comment  STEP FIELD POINTER;CNVRTASSN;comment  TYPE CHECK AND CONVERSION;IC(R0,V22(J+8));ifR0=7thenbegin;R1:=R1-R1;STC(R1,CONV(R9));;end;R0:=@RCOMMA;OUTOP;MAXREG;comment  ADJUST REGISTER COUNTS;;end;comment    <RC DES HD>  ::=  <RC DES HD>  ,  ;begin;IC(R0,V21(R8));ifR0=1thenbegin;R0:=@FIELDERROR;ERROR;;end;R0:=R0-1;STC(R0,V21(R8));comment DECREMENT FIELD COUNT;R2:=V1(R8)+12;V1(R8):=R2;comment STEP FIELD POINTER;R9:=@B9(4);R0:=@NULLST;STC(R0,OP(R9));R0:=@RCOMMA;OUTOP;;end;comment    <PROGRAM>   ::=   .   <PROC DECL>   .     ;null;comment   NEVER ENTERED.  SEE END OF PROGRAM;comment    <STATEMENT>  ::= <STATEMENT*>  ;comment    <STATEMENT*> ::=<SI ST>  ;comment    <STATEMENT*> ::= <FOR CL> ;begin;NULLSTATEMENT;FORSTATEMENT;;end;comment    <STATEMENT*> ::= <FOR CL>  <STATEMENT*>  ;FORSTATEMENT;comment    <STATEMENT*> ::= <WHILE CL> ;begin;NULLSTATEMENT;WHILESTATEMENT;;end;comment    <STATEMENT*> ::= <WHILE CL>  <STATEMENT*>   ;WHILESTATEMENT;comment    <STATEMENT*> ::= <IF CL> ;begin;NULLSTATEMENT;IFSTATEMENT;;end;comment    <STATEMENT*> ::= <IF CL>  <STATEMENT*>  ;IFSTATEMENT;comment    <STATEMENT*> ::=  <IF CL>  <TRUE PART>  ;begin;NULLSTATEMENT;IFTHENSTATEMENT;;end;comment    <STATEMENT*> ::= <IF CL>  <TRUE PART> <STATEMENT*>;IFTHENSTATEMENT;comment    <STATEMENT*> ::= <CASE SEQ>   END    ;begin;R3:=EDITINDEX+1;EDITINDEX:=R3;NULLSTATEMENT;R3:=EDITINDEX-1;EDITINDEX:=R3;R0:=ENDCODE;STC(R0,EDITCODE(R3));CASESEQEND;;end;comment    <STATEMENT*> ::= <CASE SEQ>  <STATEMENT>    END ;CASESEQEND;comment    <SI ST>   ::=  <T ASS ST>;begin;R0:=0;V34(R8):=R0;;end;comment    <SI ST>   ::=  <T FUNC DES>;begin;R0:=0;V34(R8):=R0;;end;comment    <SI ST>   ::=  GOTO  <LABEL ID>  ;begin;R9:=@B9(4);R0:=@GOTOO;STC(R0,OP(R9));V5(R8):=R9;R0:=0;V34(R8):=R0;;end;comment    <SI ST>  ::=  <ST PROC HD>  <T EXP>  );begin;result;R0:=@APPAREN;OUTOP;R0:=0;V34(R8):=R0;;end;comment   <SI ST> ::= <ST PROC HD> <CONTROL> ) ;begin;R0:=@CONTROL;R1:=V1(J+8);R9:=@B9(4);STC(R0,OP(R9));POINTER(R9):=R1;R0:=@APPAREN;OUTOP;R0:=R0-R0;V34(J):=R0;;end;comment    <SI ST>  ::=  ASSERT  <T EXP*>  ;begin;IC(R0,V22(R8+8));FORCELOGICAL;R0:=@ASSERT;R9:=@B9(4);STC(R0,OP(R9));V5(R8):=R9;;end;comment    <SI ST>  ::=  <BLOCKBODY>  END  ;begin;R1:=EDITINDEX;IC(R0,EDITCODE(R1+1));ifR0=SCOLCODEthenMVI(SEMI1,EDITCODE(R1+1));CLOSEBLOCK;;end;comment    <SI ST>  ::=  <BLOCKBODY>  <STATEMENT>  END  ;begin;R0:=@COMMA;OUTOP;CLOSEBLOCK;;end;comment   <BB EXP .,> ::= <BLOCKBODY> <T EXP> ., ;begin;R2:=R6SAVE;ifR2=ENDCODEthenbegin;R0:=@COMMA;OUTOP;R2:=V1(J);ifR2>0thenbegin;R1:=V1(J+8);SIMTYPEINFO(R2):=R1;IC(R0,V22(J+8));STC(R0,SIMPLETYPE(R2));;end;CLOSEBLOCK;R1:=V12(J+8);V12(J):=R1;;end;;end;comment    <BLOCKBODY>  ::=  <BLOCKHEAD>  ;begin;R3:=V1(R8);ifR3~=0thenbegin;R9:=@B9(4);R0:=@BBB;R1:=V2(J)-OUTBASE;STC(R0,OP(R9));POINTER(R9):=R1;V2(J):=R9;R9:=@B9(4);R0:=@NULLST;STC(R0,OP(R9));CARDOUT;R2:=BLC;R3:=DISPLAY(R2);R2:=BLENGTH(R3);R3:=NPOINT(R3);R4:=DRELAD+3and#FFFFFFFC;R2:=R2+R3-12;forR3:=R3step12untilR2dobegin;R5:=TYPES(R3);ifR5=#209thenbegin;R5:=IDLOC2(R3)+R4+8;IDLOC2(R3):=R4;R4:=R5;;end;;end;DRELAD:=R4;R3:=EDITINDEX+2;MVI(FD,EDITCODE(R3));;endelseR3:=EDITINDEX+3;EDITINDEX:=R3;LABELCHECK;;end;comment    <BLOCKBODY> ::= <BLOCKBODY> <STATEMENT>  .,      ;begin;R1:=T0(J+8);ifR1<=BLCthenbegin;R0:=@COUNTCODE;EDITCOUNT;R0:=@UCOUNT;R1:=NODEINDEX;R9:=@B9(4);STC(R0,OP(R9));POINTER(R9):=R1;;end;R0:=@COMMA;OUTOP;CARDOUT;LABELCHECK;;end;comment    <BLOCKBODY>  ::= <BLOCKBODY>  <LABEL DEF>   ;begin;R0:=@LCOMMA;OUTOP;LABELCHECK;;end;comment    <BLOCKBODY>  ::=  <BLOCKBODY>   .,     ;begin;R9:=@B9(4);R0:=@NULLST;STC(R0,OP(R9));R0:=@COMMA;OUTOP;LABELCHECK;;end;comment  <BLOCKHEAD> ::= BEGIN  ;begin;BLOCKSTEP;comment  R1 := 4*BN;R2:=BLENGTH(R1);R4:=R4-R4;R3:=JSAVE;IC(R4,S(R3-1));IC(R4,BBCONTEXT(R4));comment  BB CONTEXT CODES:                                             
           0 = BASIC BLOCK BRACKET, 1 = PROC HEAD, 2 = OTHER;ifR4=0thenbegin;ifR2=12thenBLOCKLIST(R1):=R4elsebegin;comment  CHECK FOR LABELS ONLY;R3:=NPOINT(R1);IC(R0,TYPE(R3+12));ifR0~=1thenR4:=2;comment FORCE SEGMENT;;end;;end;ifR4=0thenV1(J):=R4elsebegin;R1:=NPOINT(R1);ifR4=1thenbegin;R4:=NEG_R4;V1(J):=R4;;endelsebegin;comment  MAKE BLOCK INTO PROCEDURE;R0:=3;STC(R0,TYPE(R1));V1(J):=R1;V2(J):=R2;OPENSEGMENT;CARDOUT;R3:=EDITINDEX-2;EDITINDEX:=R3;MVI(JB,EDITCODE(R3+2));R0:=@NTAB;EDITCOUNT;TREECOUNT;R0:=BEGINCODE;R3:=EDITINDEX-1;STC(R0,EDITCODE(R3));VX(J):=R3;EDITINDEX:=R3;R1:=V1(J)+12;R2:=V2(J)-12;;end;R4:=DRELAD;whileR2>0dobegin;IC(R0,SIMPLETYPE(R1));ifR0=9thenbegin;REFBIND;IC(R0,TYPE(R1));ifR0=0thenbegin;R4:=R4+3and#FFFC;IDLOC2(R1):=R4;R4:=R4+4;;end;;end;IC(R0,TYPE(R1));ifR0=3thenbegin;R5:=TYPEINFO(R1)shll2;ifR5~=0thenbegin;integerR1SAVE;R1SAVE:=R1;R1:=NPOINT(R5);R5:=BLENGTH(R5);whileR5>0dobegin;IC(R0,SIMPLETYPE(R1));ifR0=9thenREFBIND;R1:=R1+12;R5:=R5-12;;end;R1:=R1SAVE;;end;;end;R1:=R1+12;R2:=R2-12;;end;comment  END OF WHILE STATEMENT;DRELAD:=R4;;end;R9:=@B9(4);R0:=@BEGINN;R1:=BN;STC(R0,OP(R9));POINTER(R9):=R1;CARDOUT;V2(J):=R9;R9:=@B9(4);R0:=@NULLST;STC(R0,OP(R9));V5(J):=R9;R3:=EDITINDEX-3;EDITINDEX:=R3;;end;comment    <BLOCKHEAD>  ::= <BLOCKHEAD> <SI VAR DC>  .,      ;begin;R0:=@JD;DECLEDIT;;end;comment    <BLOCKHEAD>  ::=<BLOCKHEAD>  <ARRAY DC>   .,      ;begin;R1:=T0(J+8);ifR1<=BLCthenbegin;R0:=@COUNTCODE;EDITCOUNT;R9:=@B9(4);R0:=@UCOUNT;R1:=NODEINDEX;STC(R0,OP(R9));POINTER(R9):=R1;;end;R0:=@COMMA;OUTOP;R0:=@JAD;DECLEDIT;;end;comment    <BLOCKHEAD>  ::=<BLOCKHEAD>  <PROC DECL>  .,      ;begin;R0:=@JPD;DECLEDIT;;end;comment    <BLOCKHEAD>  ::=<BLOCKHEAD>  <RC CL DC>   .,      ;begin;R0:=@JD;DECLEDIT;;end;comment    <LABEL DEF>  :=  <ID>   :   ;begin;R1:=V1(R8);V1(R7):=R1;DECLAREID;R0:=@ID;OUTID;R2:=LABELADDR;IDLOC2(R1):=R2;R2:=R2+4;LABELADDR:=R2;R2:=SNC;IDLOC1(R1):=R2;R2:=HN;TYPEINFO(R1):=R2;TREECOUNT;;end;comment  <T ASS ST>  ::= <T VAR> :=  <T EXP*>    ;ASSIGNMENT;comment  <T ASS ST>  ::= <T VAR> :=  <T ASS ST> ;begin;comment  MULTIPLE ASSIGNMENTS FORCED TO RIGHT;IC(R0,OP(R9));R0:=R0or#90;STC(R0,OP(R9));ASSIGNMENT;IC(R0,OP(R9));R0:=R0or#80;STC(R0,OP(R9));;end;comment    <TRUE PART>  ::= <SI ST>  ELSE  ;begin;R0:=@UJ;R9:=@B9(4);STC(R0,OP(R9));OUTCOUNT;;end;comment    <TRUE PART>  ::=    ELSE  ;begin;NULLSTATEMENT;R0:=@UJ;R9:=@B9(4);STC(R0,OP(R9));OUTCOUNT;;end;comment    <CASE SEQ>  ::= <CASE CL>  BEGIN    ;begin;R3:=EDITINDEX-1;MVI(RTAB0,EDITCODE(R3+1));R0:=BEGINCODE;STC(R0,EDITCODE(R3));EDITINDEX:=R3;CARDOUT;OUTCOUNT;BLOCKSTEP;;end;comment    <CASE SEQ>  ::= <CASE SEQ> <STATEMENT>  .,    ;begin;R0:=@UJ;OUTOP;CARDOUT;OUTCOUNT;;end;comment    <CASE SEQ>  ::= <CASE SEQ>  .,     ;begin;NULLSTATEMENT;R0:=@UJ;OUTOP;CARDOUT;OUTCOUNT;;end;comment   <FOR CL> ::= <FOR HEAD> <STEPUNTIL> <T EXP> DO ;begin;IC(R0,V22(J+16));ifR0~=1thenbegin;R0:=@TYPE2ERROR;ERROR;;end;R0:=@STEPUNTIL;R1:=V5(J+8)-OUTBASE;R9:=@B9(4);STC(R0,OP(R9));POINTER(R9):=R1;R0:=@FORCLor#80;OUTOP;OUTRTAB;RESETDISPLAY;R1:=R1-R1;V1(J):=R1;;end;comment   <FOR CL> ::= <FOR HEAD> DO ;begin;R0:=@ENDFORLIST;STC(R0,OP(R9));RESETDISPLAY;R1:=1;V1(J):=R1;R0:=@NTAB;EDITCOUNT;TREECOUNT;;end;comment   <FOR CL> ::= <FOR LIST> <T EXP> DO ;begin;IC(R0,V22(J+8));FORCEINTEGER;R0:=@ENDFORLIST;OUTOP;OUTRTAB;RESETDISPLAY;R1:=2;V1(J):=R1;;end;comment   <FOR HEAD> ::= <FOR> := <T EXP*> ;begin;IC(R0,V22(I));FORCEINTEGER;R0:=@ACOLONEQor#80;OUTOP;;end;comment   <FOR LIST> ::= <FOR HEAD> , ;begin;R0:=@FORLIST;STC(R0,OP(R9));;end;comment   <FOR LIST> ::= <FOR LIST> <T EXP> , ;begin;IC(R0,V22(J+8));FORCEINTEGER;R0:=@FORLIST;OUTOP;;end;comment   <FOR> ::= FOR <ID> ;begin;BLOCKSTEP;DECLAREID;R1:=V1(J);R4:=DRELAD+3and#FFFFFFFFC;IDLOC2(R1):=R4;R4:=R4+4;DRELAD:=R4;R4:=HN;IDLOC1(R1):=R4;R0:=@CONID;OUTID;R1:=BLC;R2:=DISPLAY(R1);V2(J):=R2;R1:=R1-2;BLC:=R1;;end;comment   <STEPUNTIL> ::= STEP <T EXP> UNTIL ;begin;IC(R0,V22(J+8));FORCEINTEGER;F01:=V(J+8);V(J):=F01;;end;comment   <STEPUNTIL> := UNTIL ;begin;R9:=@B9(4);R0:=@NUMBER;STC(R0,OP(R9));V5(J):=R9;;end;comment   <WHILE CL> ::= WHILE <T EXP> DO ;begin;IC(R0,V22(J+8));FORCELOGICAL;R9:=@B9(4);R0:=@WHILEE;STC(R0,OP(R9));R0:=@WHILEOPor#80;R1:=V5(J+8)-OUTBASE;R9:=@B9(4);STC(R0,OP(R9));POINTER(R9):=R1;OUTRTAB;;end;comment    <ST PROC HD> ::=  <ST PROC ID>  (    ;null;comment    <ST PROC HD> ::=  <ST PROC HD>  <T EXP>    ,      ;begin;result;R0:=@APCOMMA;OUTOP;;end;comment   <ST PROC HD> ::= <ST PROC HD> <CONTROL> , ;begin;R0:=@CONTROL;R1:=V1(J+8);R9:=@B9(4);STC(R0,OP(R9));POINTER(R9):=R1;R0:=@APCOMMA;OUTOP;;end;;end;comment END OF CASE ST;R10:=RASAVE;;end;comment END OF LEVELTWO;LEVELTWO;;end;comment END OF EXECUTE3;segmentprocedurePARSE(R10);begin;logicalRASAVE;TprocedureINSYMBOL(R3);comment  INSYMBOL PUTS NEXT SYMBOL IN R6, BIT STRING OR STRING                
  IN LITERAL TABLE, NUMBER IN NUMVAL, ID NO. IN VALUE;begin;R2:=INPOINT;L:R2:=@B2(1);OLDINPOINT:=R2;IC(R6,program(R2));MVI(0,SIMTYPE);R4:=R4-R4;R5:=R4;IC(R4,INPUTSW(R6));caseR4ofbegin;null;comment  1 => SYMBOLS NOT REQUIRING SPECIAL PROCESSING;begin;comment  2 => LETTER ;IC(R5,LETTERIDNO(R6-192));R6:=IDCODE;;end;begin;comment  3 => ID ;IC(R5,program(R2+1));R5:=R5shll8;IC(R5,program(R2+2));R2:=@B2(2);;end;begin;comment  4 => DIGIT ;R5:=R6and#F;INUMVALUE:=R5;MVI(1,SIMTYPE);R6:=NUMBERCODE;;end;begin;comment  5 => NUMBER ;R4:=1;comment  R4 = TYPE, F01 = VALUE;CLI("@",B2(2));if=thenF01:=1LelseF01:=0L;IC(R5,B2(1));R1:=@B2(2);R2:=@B2(R5+2);R5:=R5-R5;whileR1<=R2dobegin;IC(R0,B1);ifR0>="0"thenbegin;R0:=R0and#F;STC(R0,FCONV(1));F01:=F01*10L+FCONV;ifR4>1thenR5:=R5-1;;endelseifR0="."thenR4:=2elseifR0="@"thenbegin;R4:=2;SCALE:=R5;RESET(SIGN);R5:=R5-R5;R1:=@B1(1);IC(R0,B1);ifR0="+"thenR1:=@B1(1)elseifR0="-"thenbegin;R1:=@B1(1);SET(SIGN);;end;whileR1<=R2dobegin;IC(R0,B1);ifR0<"0"thengotoX;R0:=R0and#F;R5:=R5*10S+R0;R1:=@B1(1);;end;X:ifSIGNthenR5:=NEG_R5;R5:=R5+SCALE;DECR(R1);;endelseifR0="I"thenR4:=4elseifR0="L"thenbegin;ifR4=1thenR4:=2;R4:=R4+1;;end;R1:=@B1(1);;end;ifF01=0LthenNUMVALUE:=F01elseifR4=1thenbegin;comment  INTEGER;F01:=F01++#4E00000000000000L;NUMVALUE:=F01;R1:=NUMVALHIGH;ifR1~=#4E000000thenbegin;R0:=@CONVERR;ERROR;;end;;endelsebegin;comment  REAL, IMAGINARY WITH SCALING;ifR5<0thenSET(SIGN)elseRESET(SIGN);R0:=absR5;F23:=1L;R5:=0;ifR0>75thenbegin;R0:=@CONVERR;ERROR;;endelsewhileR0~=0dobegin;SRDL(R0,1);LTR(R1,R1);if<thenF23:=F23*POWER10(R5);R5:=R5+8;;end;NUMVALUE:=F23;R1:=R1-R1;IC(R1,NUMVALUE(0));R1:=R1-#40;MVI(#40,NUMVALUE(0));if~SIGNthenF01:=F01*NUMVALUEelsebegin;R1:=NEG_R1;F01:=F01/NUMVALUE;;end;NUMVALUE:=F01;IC(R0,NUMVALUE(0));R1:=R1+R0;STC(R1,NUMVALUE(0));if<orR1>#7Fthenbegin;R0:=@CONVERR;ERROR;;end;ifR4=2orR4=4thenbegin;F01:=NUMVALUE;MVC(2,NUMVALUE(1),#000000);F01:=F01+NUMVALUE;NUMVALUE:=F01;;end;;end;STC(R4,SIMTYPE);R1:=R1-R1;;end;begin;comment  6 => STRING ;R0:=7;STC(R0,SIMTYPE);R4:=@program(R2+2);IC(R5,program(R2+1));STC(R5,STRINGLENGTH);R2:=@B2(R5+2);LITERAL;;end;begin;comment  7 => BITS ;R0:=8;STC(R0,SIMTYPE);R4:=@program(R2+1);R2:=@B2(4);LITERAL;;end;begin;comment  8 => SITYPE ;CLI(#07,B2(1));if=thenR2:=@B2(2)elseR2:=@B2(1);;end;begin;comment  9 => BEGIN, SEMICOLON ;R4:=SCOORD+1;SCOORD:=R4;;end;begin;comment 10 => VOID ;gotoL;;end;;end;INPOINT:=R2;value:=R5;;end;procedureFETCH(R10);comment   R4 := RELATION(R1,R2).                                              
    R1-R4 ARE ALTERED,  R1 AND R2 ARE CLEARED;begin;R1:=R1+R1;IC(R2,CMAP(R2));R2:=R2+RMAP(R1);R4:=R4-R4;R1:=R4;IC(R4,MATRIX(R2));R2:=R1;;end;procedureBACKUP(R10);comment   RESTORE INPUT STREAM BY 1 SYMBOL (ADVANCES BETWEEN CALLS);begin;R2:=OLDINPOINT-1;INPOINT:=R2;;end;procedureRECOVER(R10);comment  ADJUSTS STACK AND INPUT AFTER SYNTAX ERRORS;begin;logicalRASAVE;RASAVE:=R10;RESET(FLAG);RESET(ERRFLAG);R0:=R0-R0;OLDEDIT:=R0;comment  DELETE BRACKETED ERROR;IC(R0,S(I));ifR0=ENDCODEthenbegin;R1:=R0;R2:=R6;FETCH;ifR4~=0thenbegin;whileR0~=BHCODEandR0~=BBCODEandR0~=BBEXPCODEandR0~=CASESEQCODEdobegin;DECR(I);IC(R0,S(I));ifR0=ENDFILEthengotoADVANCE;;end;DECR(I);;end;;end;comment  ADVANCE INPUT TO ".,", "BEGIN", "END", OR ".";ADVANCE:whileR6~=BEGINCODEandR6~=ENDCODEdobegin;ifR6=FORCODEthenbegin;R4:=BN+4;BN:=R4;;end;ifR6=ENDFILEthengotoQ;ifR6=SCOLCODEthenbegin;INSYMBOL;gotoUNSTACK;;end;INSYMBOL;;end;comment  UNSTACK TO <BLOCK HD>, <BLOCK BDY>, OR <CASE SEQ>;UNSTACK:IC(R0,S(I));ifR0~=BHCODEandR0~=BBCODEandR0~=BBEXPCODEandR0~=CASESEQCODEandR0~=ENDCODEandR0~=ENDFILEthenbegin;ifR0=BNDLSTHDorR0=FORHDorR0=FORLISTCODEthenbegin;J:=Ishla3;RESETDISPLAY;;endelseifR0=PROCNTthenbegin;R4:=BLC-2;BLC:=R4;R4:=HN+1;HN:=R4;;endelseifR0=FORCLCODEthenbegin;R4:=BLC-2;BLC:=R4;;end;ifI~=1thenDECR(I)elsebegin;comment  OUTER BLOCK CLOSED PREMATURELY;R0:=BHCODE;STC(R0,S(1));MVI(#01,S2(0));;end;gotoUNSTACK;;end;ifR0=ENDCODEthenbegin;BACKUP;R6:=SCOLCODE;;end;R3:=Ishla3;R9:=V5(R3);R1:=0;ifR0=BBCODEorR0=BBEXPCODEthenbegin;R0:=BHCODE;STC(R0,S(I));V1(R3):=R1;;end;J:=I;R10:=RASAVE;;end;RASAVE:=R10;comment  INITIALIZE TREE AND PARSE VARIABLES;MVI(#13,TYPE(0));comment  USED IN ERROR RECOVERY;R0:=ENDFILE;STC(R0,S(0));MVI(#01,S2(0));ifPROCCOMPthenbegin;comment  PARSE PROCEDURE;R1:=0;I:=0;RESET(DEBUGFLAG);;endelsebegin;comment  COMPILE STATEMENT;R0:=@PROCDC;STC(R0,OP(R9+4));R0:=@CARD;R1:=1;STC(R0,OP(R9+8));POINTER(R9+8):=R1;R0:=@UCOUNT;STC(R0,OP(R9+12));R9:=@B9(12);R1:=0;V12(8):=R1;R1:=8;V34(8):=R1;V5(8):=R9;R1:=DPDORG;DRELAD:=R1;R0:=TPROCHD;STC(R0,S(1));MVI(#01,S2(1));R1:=1;I:=1;;end;SN:=R1;SNC:=R1;R0:=0;R1:=R0;R6:=R0;SCOORD:=R0;INSYMBOL;whileR6~=ENDFILEdobegin;I:=I+1;R2:=Ishla3;STC(R6,S(I));comment NEW SYMBOL TO STACK;R5:=value;V1(R2):=R5;IC(R0,SIMTYPE);V2(R2):=R0;comment  MOVE SYMBOL TO OUTPUT STRING;DR3:=EDITINDEX;OLDEDIT:=R3;DECR(R3);VX(R2):=R3;R5:=OLDINPOINT;IC(R0,B5(0));STC(R0,EDITCODE(R3));R10:=INPOINT-R5;if>thenbegin;ifR6=NUMBERCODEorR6=STRINGCODEthenbegin;DECR(R3);R5:=@B5(1);IC(R0,B5(0));STC(R0,EDITCODE(R3));DECR(R10);;end;R3:=R3-R10;DECR(R10);EX(R10,MVC(0,EDITCODE(R3),B5(1)));;end;EDITINDEX:=R3;J:=I;INSYMBOL;IC(R1,S(J));RESET(ERRFLAG);R2:=R6;FETCH;Z0:whileR4=GTRdobegin;IC(R4,S2(J-1));whileR4=EQLdobegin;DECR(J);IC(R4,S2(J-1));;end;R3:=R3-R3;IC(R3,S(J));comment FIND RULE;R3:=R3++R3;R3:=MTB(R3);R3:=@PRTB(R3);R2:=I-J;Z1:ifR2=0thenbegin;L:IC(R1,B3);ifR1=0thengotoZ2;ifR1~=#FFthenbegin;R3:=@B3(R1+4);gotoL;;end;;endelsebegin;R4:=@S(J);L:IC(R1,B3);ifR1=R2thenbegin;EX(R2,CLC(0,B3(1),B4));if=thengotoZ2;;end;ifR1~=#FFthenbegin;R3:=@B3(R1+4);gotoL;;end;;end;SET(FLAG);gotoZ3;Z2:RESET(FLAG);R5:=R5-R5;IC(R5,B3(R2+3));ifR5~=0thenbegin;STM(R1,J,PARSEREG);I:=Ishla3;J:=Jshla3;ifR5<=54thenEXECUTE1elseifR5<=101thenbegin;R5:=R5-54;EXECUTE2;;endelsebegin;R5:=R5-101;EXECUTE3;;end;if~FLAGthenbegin;R5:=RULENUMBER;IC(R5,ATTRTB(R5-1));ifR5~=0thenbegin;caseR5ofbegin;begin;comment  1 => NON-ID TERMINALS;R1:=#FF;comment  INFINITY;;end;begin;comment  2 => UNARY PREFIX OPERATOR;R1:=T0(J+8);;end;begin;comment  3 => BINARY INFIX OPERATOR;R1:=T0(J);ifR1>T0(J+16)thenR1:=T0(J+16);;end;begin;comment  4 => BINARY POSTFIX OPERATOR;R1:=T0(J);ifR1>T0(J+8)thenR1:=T0(J+8);;end;begin;comment  5 => TERNARY INFIX OPERATOR;R1:=T0(J);ifR1>T0(J+8)thenR1:=T0(J+8);ifR1>T0(J+24)thenR1:=T0(J+24);;end;begin;comment  6 => TERNARY POSTFIX OPERATOR;R1:=T0(J);ifR1>T0(J+8)thenR1:=T0(J+8);ifR1>T0(J+16)thenR1:=T0(J+16);;end;;end;T0(J):=R1;;end;;end;LM(R1,J,PARSEREG);ifFLAGthenbegin;R3:=@B3(R1+4);gotoZ1;;end;;end;Z3:if~FLAGthenbegin;comment  RIGHT PART REPLACEMENT;I:=J;IC(R2,B3(R2+2));IC(R1,S(J-1));R3:=R2-#80;if>thenbegin;IC(R2,LC1(R1));IC(R0,RC1(R6));ifR2<R0thenR2:=R0;ifR2>R3thenbegin;R0:=@PRECERROR;ERROR;;end;;end;STC(R2,S(J));FETCH;STC(R4,S2(J-1));;endelsebegin;comment  NO APPLICABLE RULE;R0:=@SYNTAXERROR;ERROR;RECOVER;;end;IC(R1,S(J));R2:=R6;FETCH;;end;comment  END OF GTR LOOP;ifR4=0thenbegin;comment   NO RELATION BETWEEN SYMBOLS;R0:=@RELATIONERROR;ERROR;RECOVER;IC(R1,S(J));R2:=R6;FETCH;gotoZ0;;end;STC(R4,S2(J));;end;R3:=EDITINDEX-1;EDITINDEX:=R3;STC(R6,B3(0));IC(R0,S(1));ifR0~=PROCDCLorI~=1thenbegin;R0:=@SYNTAXERROR;ERROR;;end;R1:=V1(8);R2:=IDLOC1(R1)or#8000;IDLOC1(R1):=R2;MVI(#03,TYPE(0));comment RESTORE TYPE OF (MAIN);Q:R2:=EDITBASE-EDITINDEX;R3:=NODEINDEX;ifR2>#FFFForR3>1788thenbegin;CLI(1,DEBUGFLAG);if>thenbegin;MVI(1,DEBUGFLAG);MVC(130,BUFFER(1),BUFFER);MVC(32,BUFFER(1),"ERROR_2999-DEBUG_TABLE_OVERFLOW");OI("0",CARRCONT);R0:=@BUFFER;PRINT;;end;;end;R10:=RASAVE;;end;segmentprocedureNTPRINT(R10);comment  PRINTS NAME TABLE, BLOCK LIST;begin;integerHEXsynPKDEC;longrealDECsynPKDEC;logicalRASAVE;RASAVE:=R10;MVI("1",CARRCONT);MVC(130,BUFFER(1),BUFFER);R0:=@BUFFER;MVC(9,BUFFER(1),"NAME_TABLE");PRINT;MVC(9,BUFFER(1),BUFFER);MVC(61,BUFFER(12),"IDLOC1____IDLOC2___SIMTYPEINFO________TYPEINFO___TYPE__SIMTYPE");OI("0",CARRCONT);PRINT;MVC(130,BUFFER(1),BUFFER);MVC(15,BUFFER(12),"(HEX)A/H_SEG");MVC(19,BUFFER(45),"VR____RCCLNO(HEX)");PRINT;OI("0",CARRCONT);MVC(130,BUFFER(1),BUFFER);R0:=R0-R0;forR2:=0step12untilNAMETABLESIZEdobegin;IC(R0,TYPE(R2));ifR0~=#Fthenbegin;HEX:=R2;UNPK(4,2,BUFFER(4),HEX(2));TR(3,BUFFER(4),TRANSTABLE(_240));MVI("",BUFFER(8));comment  IDLOC1 TO BUFFER;R1:=IDLOC1(R2);HEX:=R1;UNPK(4,2,BUFFER(14),HEX(2));MVI("",BUFFER(18));TR(3,BUFFER(14),TRANSTABLE(_240));comment  IDLOC2 TO BUFFER;ifR0=3thenbegin;R1:=R1-R1;IC(R1,PROGSEG(R2));CVD(R1,DEC);MVC(5,BUFFER(23),MASK2);ED(5,BUFFER(23),DEC(5));IC(R1,HIERARCHY(R2));R1:=R1and#F;STC(R1,BUFFER(23));IC(R1,HIERARCHY(R2));R1:=R1shrl4;STC(R1,BUFFER(21));TR(2,BUFFER(21),TRANSTABLE(0));MVI("",BUFFER(22));;endelsebegin;R1:=IDLOC2(R2);HEX:=R1;UNPK(4,2,BUFFER(25),HEX(2));MVI("",BUFFER(29));TR(3,BUFFER(25),TRANSTABLE(_240));MVC(2,BUFFER(21),BUFFER(90));;end;comment  TYPEINFO TO BUFFER;ifR0=0orR0=8thenbegin;IC(R0,VR(R2));CVD(R0,DEC);R0:=0;MVC(5,BUFFER(40),MASK);ED(5,BUFFER(40),DEC(5));MVC(5,BUFFER(50),BUFFER(90));;endelseifR0=4thenbegin;IC(R0,VR(R2));HEX:=R0;UNPK(2,1,BUFFER(43),HEX(3));TR(1,BUFFER(43),TRANSTABLE(_240));MVI("",BUFFER(45));IC(R0,RCCLNUMBER(R2));CVD(R0,DEC);MVC(5,BUFFER(50),MASK);ED(5,BUFFER(50),DEC(5));R0:=4;;endelsebegin;ifR0=3thenMVC(5,BUFFER(50),MASK2)elseMVC(5,BUFFER(50),MASK);R1:=TYPEINFO(R2);CVD(R1,DEC);ED(5,BUFFER(50),DEC(5));MVC(5,BUFFER(40),BUFFER(90));;end;comment  TYPE TO BUFFER;HEX:=R0;UNPK(2,1,BUFFER(62),HEX(3));MVI("",BUFFER(64));TR(1,BUFFER(62),TRANSTABLE(_240));comment  SIMTYPEINFO TO BUFFER;IC(R0,SIMPLETYPE(R2));ifR0=9thenbegin;IC(R0,SIMTYPEINFO(R2));CVD(R0,DEC);MVC(5,BUFFER(29),MASK);ED(5,BUFFER(29),DEC(5));IC(R0,SIMTYPEINFO(R2+1));CVD(R0,DEC);MVC(5,BUFFER(35),MASK);ED(5,BUFFER(35),DEC(5));R0:=9;;endelsebegin;R1:=SIMTYPEINFO(R2);ifR0=7thenMVC(5,BUFFER(35),MASK2)elseMVC(5,BUFFER(35),MASK);CVD(R1,DEC);ED(5,BUFFER(35),DEC(5));MVC(5,BUFFER(29),BUFFER(90));;end;CVD(R0,DEC);MVC(5,BUFFER(67),MASK);ED(5,BUFFER(67),DEC(5));R3:=IDDIRBASE;R1:=IDNO(R2)shll2;R10:=IDLENGTH(R1);R1:=IDPOINT(R1);R3:=IDLISTBASE;R1:=@IDLIST(R1);EX(R10,MOVE);R0:=@BUFFER;PRINT;R0:=0;MVI("",BUFFER(75));MVC(54,BUFFER(76),BUFFER(75));;end;;end;comment  BLOCKLIST OUTPUT;MVI("1",CARRCONT);R0:=@BUFFER;MVC(81,BUFFER(1),BUFFER);MVC(8,BUFFER(1),"BLOCKLIST");PRINT;OI("0",CARRCONT);MVC(29,BUFFER(1),"BLOCKNO____LENGTH____POINTER");PRINT;MVC(29,BUFFER(1),BUFFER);OI("0",CARRCONT);forR2:=0step4untilBLOCKLISTSIZEdobegin;CVD(R2,DEC);MVC(5,BUFFER(3),MASK2);ED(5,BUFFER(3),DEC(5));R1:=BLENGTH(R2);HEX:=R1;UNPK(4,2,BUFFER(15),HEX(2));TR(3,BUFFER(15),TRANSTABLE(_240));MVI("",BUFFER(19));R1:=NPOINT(R2);HEX:=R1;UNPK(4,2,BUFFER(26),HEX(2));TR(3,BUFFER(26),TRANSTABLE(_240));MVI("",BUFFER(30));PRINT;;end;R10:=RASAVE;;end;comment  END OF OUTPUT PROCEDURE;RASAVE:=R10;R11:=COMMONBASE;SAVE14:=R14;METABASE:=R6;R0:=#2000;R1:=#4B00;R3:=AGETMAIN;BALR(R2,R3);R12:=R0;BASESAVE(8):=R1;R0:=@P-R12;R0:=NEG_R0+R1-8and#FFFF00;comment (R0) = SIZE OF P - 8;PLIMIT:=R0;R1:=@P(0);R2:=R1+R0-256;R0:=#FF000000;P(0):=R0;P(4):=R0;forR1:=R1step256untilR2doMVC(255,B1(8),B1);F01:=#4200000000000000L;FCONV:=F01;F01:=0L;NUMBUFFER(0):=F01;RESET(COMMONFLAG);R1:=_4;TREELINK:=R1;R1:=TREEBASE;TREEORG:=R1;R1:=INPOINT;INPOINTSAVE:=R1;R1:=R1-1024;LITBASE:=R1;R1:=256;XSN:=R1;R1:=IDDIRBASE;EDITBASE:=R1;R0:=4;NODECHAIN:=R0;R1:=R1-R0;MVI(COUNTCODE,EDITCODE(R1+3));R0:=0;CHARTLEVEL:=R0;STC(R0,EDITCODE(R1+2));MVC(1,EDITCODE(R1),0S);EDITINDEX:=R1;R1:=0;NODEINDEX:=R1;OLDEDIT:=R1;LITORG:=R1;R1:=12;HN:=R1;IHN:=R1;R3:=LITBASE;R1:=4;CTORG:=R1;LITPNT:=R1;R1:=16;CTPNT:=R1;R1:=1;LITERALTABLE(0):=R1;CINFO(4):=R1;R1:=6;CINFO(8):=R1;CINFO(12):=R1;R1:=0;CADDR(4):=R1;CADDR(8):=R1;R1:=3;CADDR(12):=R1;R2:=4;R3:=2;BN:=R2;BLC:=R3;R0:=0;DISPLAY(0):=R0;DISPLAY(2):=R2;R1:=32;LABELADDR:=R1;MVI("",BUFFER);R1:=0;PSTACK(0):=R1;PSTACK(2):=R1;R1:=#0D00;PSTACK(4):=R1;R1:=DPDORG;PSTACK(6):=R1;PSTACK(8):=R1;DISPLAYORG:=R1;R9:=8;OUTBASE:=R9;PARSE;EXIT:CLI(3,TRACE);if>=thenNTPRINT;R0:=R12;R1:=BASESAVE(8);R3:=AFREEMAIN;BALR(R2,R3);comment  SET XFERVECTOR;R0:=R0-R0;IC(R0,DEBUGFLAG);ifR0=0thenR10:=COMMLIM(4)elseifR0=1thenR10:=IDDIRBASEelsebegin;comment  BUILD EDITCODE DIRECTORY;array0shortintegerNODETABLEsynB5;R1:=EDITBASE;XFERVECTOR(56):=R1;R1:=NODEINDEXshra1;R2:=NODECHAIN;R10:=EDITINDEX;R5:=R10-R1-2and#FFFFFE;whileR2~=0dobegin;R3:=EDITBASE-R2;NODETABLE(R1):=R2;R2:=R1+R1;MVC(1,NODECHAIN(2),EDITCODE(R3));STC(R2,EDITCODE(R3+1));R2:=R2shrl8;STC(R2,EDITCODE(R3));R2:=NODECHAIN;R1:=R1-2;;end;ifR0>2thenR10:=R5;XFERVECTOR(44):=R5;;end;STC(R0,XFERVECTOR(56));R10:=R10and#FFFFF8;COMMLIM(4):=R10;R1:=IDLISTBASE;XFERVECTOR(52):=R1;R1:=IDDIRBASE;XFERVECTOR(48):=R1;CLI(7,TRACE);if>=andR0>1thenbegin;comment  DUMP EDITCODE;MVI("1",CARRCONT);MVC(130,BUFFER(1),BUFFER);R0:=@BUFFER;R4:=EDITBASE;R5:=COMMLIM(4);whileR4>R5dobegin;R4:=R4-32;R1:=EDITBASE-R4;HEX:=R1;UNPK(4,2,BUFFER(4),HEX(2));UNPK(8,4,BUFFER(10),B4(0));UNPK(8,4,BUFFER(18),B4(4));UNPK(8,4,BUFFER(26),B4(8));UNPK(8,4,BUFFER(34),B4(12));UNPK(8,4,BUFFER(44),B4(16));UNPK(8,4,BUFFER(52),B4(20));UNPK(8,4,BUFFER(60),B4(24));UNPK(8,4,BUFFER(68),B4(28));TR(71,BUFFER(4),TRANSTABLE(_240));MVI("",BUFFER(76));MVC(1,BUFFER(8),"");MVC(1,BUFFER(42),"");PRINT;;end;;end;R10:=INPOINTSAVE;INPOINT:=R10;R10:=RASAVE;;end;OLDSAVE:=R5;BASESAVE(0):=R4;MVC(63,XFERVECTOR,B4);R3:=AGETTIME;BALR(R2,R3);R11:=COMMLIM(0);COMMTIME:=R0;R0:=60;LINENO:=R0;R0:=0;PAGENO:=R0;MVI("1",CARRCONT);MVC(36,HEADING,"NUMAC__ALGOL_W(31MAY71)");MVC(94,HEADING(37),HEADING(36));MVC(3,HEADING(113),"PAGE");R1:=ARUNID;MVC(31,HEADING(80),B1);PASS1;if~NOPASSTWOthenPASS2;ifNOGOthenbegin;OI("0",CARRCONT);MVC(42,BUFFER(6),"SECONDS_IN_COMPILATION,NO_CODE_GENERATED");MVC(82,BUFFER(49),BUFFER(48));R3:=AGETTIME;BALR(R2,R3);R1:=R0--COMMTIME;R1:=R1*5/1920;CVD(R1,PKDEC);UNPK(4,2,BUFFER(1),PKDEC(5));MVC(2,BUFFER(0),BUFFER(1));MVI(".",BUFFER(3));OI("0",BUFFER(5));R0:=@BUFFER;PRINT;R6:=16;;endelsebegin;R0:=LINENO;COMMLINE:=R0;R0:=PAGENO;COMMPAGE:=R0;begin;comment  RETURN MODIFIED XFERVECTOR;R4:=BASESAVE(0);MVC(63,B4,XFERVECTOR);;end;R6:=0;;end;R5:=OLDSAVE;R0:=R13;R1:=4096;R3:=AFREEMAIN;BALR(R2,R3);;end;R13:=R5;R14:=B13(12);R15:=R6;LM(R0,R12,B13(20));;end.                                                                             