60000 (*  COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER  *)
60010  (**)
60020  (**)
60030            (*$T-*)
60040  (*+23()
60050  PROCEDURE OCODE(OPCOD:POP;ROUTINE:ALFA);
60060      BEGIN
60070      CODETABLE[OPCOD].ROUTINE:=ROUTINE;
60080      END;
60090  PROCEDURE INITCODES;
60100    VAR I:  INTEGER;
60110      BEGIN
60120      FOR I := PNONE TO PLAST DO
60130        BEGIN CODETABLE[I].ROUTINE := '          '; CODETABLE[I].PR := SBTSTK END;
60140      OCODE (PNONE     , 'PNONE     ');
60150      OCODE (PIM       , 'PIM       ');
60160      OCODE (PRE       , 'PRE       ');
60170      OCODE (PBIN      , 'PBIN      ');
60180      OCODE (PREPR     , 'PREPR     ');
60190      OCODE (PSGNI     , 'PSGNI     ');
60200      OCODE (PSHRTC    , 'PSHRTC    ');
60210      OCODE (PSHRTR    , 'PSHRTR    ');
60220      OCODE (PSHRTI    , 'PSHRTI    ');
60230      OCODE (PLENGC    , 'PLENGC    ');
60240      OCODE (PLENGR    , 'PLENGR    ');
60250      OCODE (PLENGI    , 'PLENGI    ');
60260      OCODE (PODD      , 'PODD      ');
60270      OCODE (PROUNL    , 'PROUNL    ');
60280      OCODE (PROUN     , 'PROUN     ');
60290      OCODE (PENTIL    , 'PENTIL    ');
60300      OCODE (PENTI     , 'PENTI     ');
60310      OCODE (PCONJ     , 'PCONJ     ');
60320      OCODE (PARGL     , 'PARGL     ');
60330      OCODE (PARG      , 'PARG      ');
60340      OCODE (PNOTB     , 'PNOTB     ');
60350      OCODE (PABSCH    , 'PABSCH    ');
60360      OCODE (PABSB     , 'PABSB     ');
60370      OCODE (PABSC     , 'PABSC     ');
60380      OCODE (PABSI     , 'PABSI     ');
60390      OCODE (PNEGI     , 'PNEGI     ');
60400      OCODE (PPLITM    , 'PPLITM    ');
60410      OCODE (PMULIC    , 'PMULIC    ');
60420      OCODE (PMULCI    , 'PMULCI    ');
60430      OCODE (PELMBY    , 'PELMBY    ');
60440      OCODE (PELMBT    , 'PELMBT    ');
60450      OCODE (PSHR      , 'PSHR      ');
60460      OCODE (PSHL      , 'PSHL      ');
60470      OCODE (PLWBMSTR  , 'PLWBMSTR  ');
60480      OCODE (PLWBM     , 'PLWBM     ');
60490      OCODE (PLWB      , 'PLWB      ');
60500      OCODE (PUPBMSTR  , 'PUPBMSTR  ');
60510      OCODE (PUPBM     , 'PUPBM     ');
60520      OCODE (PUPB      , 'PUPB      ');
60530      OCODE (PORB      , 'PORB      ');
60540      OCODE (PANDB     , 'PANDB     ');
60550      OCODE (PMODAB    , 'PMODAB    ');
60560      OCODE (POVERAB   , 'POVERAB   ');
60570      OCODE (PDIVAB    , 'PDIVAB    ');
60580      OCODE (PTIMSABS  , 'PTIMSABS  ');
60590      OCODE (PTIMSAB   , 'PTIMSAB   ');
60600      OCODE (PMINUSAB  , 'PMINUSAB  ');
60610      OCODE (PPLSTOCS  , 'PPLSTOCS  ');
60620      OCODE (PPLSABCH  , 'PPLSABCH  ');
60630      OCODE (PPLSABS   , 'PPLSABS   ');
60640      OCODE (PPLSAB    , 'PPLSAB    ');
60650      OCODE (PCAT      , 'PCAT      ');
60660      OCODE (PGEBT     , 'PGEBT     ');
60670      OCODE (PGECS     , 'PGECS     ');
60680      OCODE (PGE       , 'PGE       ');
60690      OCODE (PGTBY     , 'PGTBY     ');
60700      OCODE (PGTCS     , 'PGTCS     ');
60710      OCODE (PGT       , 'PGT       ');
60720      OCODE (PLEBT     , 'PLABT     ');
60730      OCODE (PLECS     , 'PLECS     ');
60740      OCODE (PLE       , 'PLE       ');
60750      OCODE (PLTBY     , 'PLTBY     ');
60760      OCODE (PLTCS     , 'PLTCS     ');
60770      OCODE (PLT       , 'PLT       ');
60780      OCODE (PNEB      , 'PNEB      ');
60790      OCODE (PNECS     , 'PNECS     ');
60800      OCODE (PNE       , 'PNE       ');
60810      OCODE (PEQB      , 'PEQB      ');
60820      OCODE (PEQCS     , 'PEQCS     ');
60830      OCODE (PEQ       , 'PEQ       ');
60840      OCODE (PEXP      , 'PEXP      ');
60850      OCODE (PMOD      , 'PMOD      ');
60860      OCODE (POVER     , 'POVER     ');
60870      OCODE (PDIV      , 'PDIV      ');
60880      OCODE (PMUL      , 'PMUL      ');
60890      OCODE (PSUB      , 'PSUB      ');
60900      OCODE (PADD      , 'PADD      ');
60910      OCODE (PNOOP     , 'PNOOP     ');
60920      OCODE (PASP      , 'PASP      ');
60930      OCODE (PHOIST    , 'PHOIST    ');
60940      OCODE (PSELECT   , 'PSELECT   ');
60950      OCODE (PSELECTROW, 'PSELECTROW');
60960      OCODE (PSTRNGSLICE , 'PSTRNGSLIC');
60970      OCODE (PSTARTSLICE , 'PSTARTSLIC');
60980      OCODE (PSLICE1   , 'PSLICE1   ');
60990      OCODE (PSLICE2   , 'PSLICE2   ');
61000      OCODE (PSLICEN   , 'PSLICEN   ');
61010      OCODE (PCASE     , 'PCASE     ');
61020      OCODE (PJMPF     , 'PJMPF     ');
61030      OCODE (PLPINIT   , 'PLPINIT   ');
61040      OCODE (PRANGENT  , 'PRANGENT  ');
61050      OCODE (PRANGEXT  , 'PRANGEXT  ');
61060      OCODE (PROUTNENT , 'PROUTNENT ');
61070      OCODE (PACTDRMULT, 'PACTDRMULT');
61080      OCODE (PACTDRSTRUCT, 'PACTDRSTRU');
61090      OCODE (PVARLISTEND , 'PVARLISTEN');
61100      OCODE (PDCLINIT  , 'PDCLINIT  ');
61110      OCODE (PCREATEREF, 'PCREATEREF');
61120      OCODE (PCHECKDESC, 'PCHECKDESC');
61130      OCODE (PDCLSP    , 'PDCLSP    ');
61140      OCODE (PDECM     , 'PDECM     ');
61150      OCODE (PBOUNDS   , 'PBOUNDS   ');
61160      OCODE (PLOADRT   , 'PLOADRT   ');
61170      OCODE (PLOADRTP  , 'PLOADRTP  ');
61180      OCODE (PSCOPETT  , 'PSCOPETT  ');
61190      OCODE (PASSIGTT  , 'PASSIGTT  ');
61200      OCODE (PSCOPETN  , 'PSCOPETN  ');
61210      OCODE (PASSIGTN  , 'PASSIGTN  ');
61220      OCODE (PSCOPENT  , 'PSCOPENT  ');
61230      OCODE (PASSIGNT  , 'PASSIGNT  ');
61240      OCODE (PSCOPENN  , 'PSCOPENN  ');
61250      OCODE (PASSIGNN  , 'PASSIGNN  ');
61260      OCODE (PSCOPEVAR , 'PSCOPEVAR ');
61270      OCODE (PSCOPEEXT , 'PSCOPEEXT ');
61280      OCODE (PLOADVAR  , 'PLOADVAR  ');
61290      OCODE (PASGVART  , 'PASGVART  ');
61300      OCODE (PGETPROC  , 'PGETPROC  ');
61310      OCODE (PIDTYREL  , 'PIDTYREL  ');
61320      OCODE (PDEREF    , 'PDEREF    ');
61330      OCODE (PGETTOTAL , 'PGETTOTAL ');
61332      OCODE (PGETMULT  , 'PGETMULT  ');
61340      OCODE (PGETTOTCMN, 'PGETTOTCMN');
61350      OCODE (PVOIDNAKED, 'PVOIDNAKED');
61360      OCODE (PSKIP     , 'PSKIP     ');
61370      OCODE (PSKIPSTRUCT , 'PSKIPSTRUC');
61380      OCODE (PNIL      , 'PNIL      ');
61390      OCODE (PVOIDNORMAL , 'PVOIDNORMA');
61400      OCODE (PVOIDSPECIAL, 'PVOIDSPECI');
61410      OCODE (PWIDEN    , 'PWIDEN    ');
61420      OCODE (PROWNONMULT , 'PROWNONMUL');
61430      OCODE (PROWMULT  , 'PROWMULT  ');
61440      OCODE (PCALL     , 'PCALL     ');
61450      OCODE (PRETURN   , 'PRETURN   ');
61460      OCODE (PPARBEGIN , 'PPARBEGIN ');
61470      OCODE (PLPINCR   , 'PLPINCR   ');
61480      OCODE (PLPTEST   , 'PLPTEST   ');
61490      OCODE (PGBSTK    , 'PGBSTK    ');
61500      OCODE (PLEAPGEN  , 'PLEAPGEN  ');
61510      OCODE (PSWAP     , 'PSWAP     ');
61520      OCODE (PPREPSTRDISP, 'PPREPSTRDI');
61530      OCODE (PPREPROWDISP, 'PPREPROWDI');
61540      OCODE (PCOLLTOTAL, 'PCOLLTOTAL');
61550      OCODE (PCOLLNAKED, 'PCOLLNAKED');
61560      OCODE (PCOLLCHECK, 'PCOLLCHECK');
61570      OCODE (PLINE     , 'PLINE     ');
61580      OCODE (PENDSLICE , 'PENDSLICE ');
61590      OCODE (PTRIM     , 'PTRIM     ');
61600      OCODE (PJMP      , 'PJMP      ');
61610      OCODE (PPUSH     , 'PPUSH     ');
61620      OCODE (PPUSHIM   , 'PPUSHIM   ');
61630      OCODE (PGETOUT   , 'PGETOUT   ');
61640      OCODE (PSETIB    , 'PSETIB    ');
61650      OCODE (PRNSTART  , 'PRNSTART  ');
61660      OCODE (PPARM     , 'PPARM     ');
61670      OCODE (PNAKEDPTR , 'PNAKEDPTR ');
61680      OCODE (PPBEGIN   , 'PPBEGIN   ');
61690      OCODE (PPEND     , 'PPEND     ');
61710      OCODE (PLAST     , 'PLAST     ');
61720      OCODE (PPASC     , 'PPASC     ');
61730      OCODE (PENVCHAIN , 'PENVCHAIN ');
61740      OCODE (PDUP1ST   , 'PDUP1ST   ');
61750      OCODE (PDUP2ND   , 'PDUP2ND   ');
61760      OCODE (PDATALIST , 'PDATALIST ');
61770      END;
61780  ()+23*)
61790            (************************************)
61800            (*        CYBER  VERSION            *)
61810            (************************************)
61820  PROCEDURE INITCODES;
61830  (*INITIALIZES CODETABLE*)
61840    CONST
61850  (*+61() X12 = SBTX12; X45 = SBTX45; ST2 = SBTSTK2; ()+61*)
61860        X5 = SBTX5; X5S = SBTX5; ST = SBTSTK; O = SBTVOID;
61870        SN = SBTSTKN; SNS = SBTSTKN; SNP = SBTSTKN; SDL = SBTDL; XN = SBTXN;
61880        X5P = SBTX5; STP = SBTSTK; X0S = SBTX0; STS = SBTSTK; X6 = SBTX6;
61890        X0 = SBTX0; X0P = SBTX0; X1 = SBTX1; X1S = SBTX1; X1P = SBTX1;
61910        PPOPTOX0(*2*)=203; PPOPTOX1(*2*)=205; PPUSHX6=207;
61920        PLOADX5IM(*2*)=208; PX5TOX0=210; PX5TOX1=211;
61930        PX6TOX5=212; PX6TOX0=213; PX6TOX1=214; PX1TOX0=215; PLOADX6(*3*)=216;
61940        QELMBT=219; QNORM=220; QNEGI=221; QABSB=222; QABSB1=223;
61950        QNAKEDPTR=224; QDIV=225; QDIV1=226; QDIV2=227; QSWAP=228; QSWAP1=229; QCFSTRNG=230;
61960        QGEBT=231; QRANGENT=232; QWIDEN=233; QLPINIT(*4*)=234; QDCLINIT(*1*)=238;
61970        PPUSHX0=239; QGETPROC=240; QPARAM1A=241;
61980        QPBEGIN(*5*)=242;
61990        QLOADRTA=247; QCHECKDESC=248; QABSI=249; QABSI1=250; QLOADX6=251; QPOPTOX6=252;
62000        QMUL=253; QMUL1=254; QCAS=255; QVOIDNM=256; QVOIDNM1=257; QVOIDNM2=258; QVOIDNM3=259;
62010        QASSIGNT(*2*)=260;QCOLLTOTAL(*5*)=262;QSCOPEVAR(*3*)=267;QLOADVAR(*4*)=270;
62020        QLOADX0=274;QPOPX0=275;QPOPX1=276;
62030        QDCLSP(*4*)=277; QLOOPINCR(*6*)=281;
62040        QSETIB(*2*)=287; QPOP1=289; QPASC(*2*)=290;
62050        QPUSH(*3*)=292; QVASSTX(*4*)=295;
62060        QRANGEXT(*3*)=299; QLINK=302; QENTER=303; QLINE=304;
62070        QNOTB=305; QEQ=306; QEQ1=307; QNE=308; QNE1=309; QCALL(*5*)=310; PPOPTOX5=315; QRNSTART(*3*)=316;
62080        PPUSHX5=319; PLOADX6IM(*2*)=320;PPOPTOX6=322;PX5TOX6=323;
62090        PLOADX5(*3*)=324;
62100        PLOADX0(*4*)=327; PLOADX1(*3*)=331;
62110        QGETTOTCMN(*2*)=334; QGETTOTAL(*6*)=336; QPARM(*5*)=342; QCALLA(*4*)=347;
62120        QSELECT(*5*)=351; QDECM(*5*)=356; PLOADRTA(*3*)=361;
62124        PPUSHX1=364; PX1TOX5=365; PX1TOX6=366;
62130  (*+61()
62140          QASGVART(*5+)=367; PPUSH2(*3+)=372; QPUSH2(*6+)=375;
62150          PLOADX12(*3+)=381; QLOADX12=384; PLOADX45(*3+)=385; QLOADX45=388;
62160          PPUSHX12=389; QPUSHX12(*2+)=390; PPUSHX45=392; QPUSHX45(*2+)=393;
62170          PPOPTOX12=395; QPOPTOX12(*2+)=396; PPOPTOX45=398; QPOPTOX45(*2+)=399;
62180          PX12TOX45=401; QX12TOX45=402; PX45TOX12=400;5QX45TOX12=401; 6               3
62190          QLENGR=402; QMULL(*7+)=403; QADD(*10+)=410;
62200  ()+61*)
62210    VAR I: INTEGER;
62220    PROCEDURE ICODE(OPCOD: POP; COMPASS: ALFA; PNEXT: POP;VP1,VP2,VPR:SBTTYP);
62230    (*WARNING: THIS PROCEDURE WILL NOT COPE WITH ERRONEOUS COMPASS*)
62240        LABEL 99;
62250        CONST SHIFT1=100000B;
62260        VAR CHA: CHAR;
62270            II: INTEGER;
62280            L: PACKED RECORD
62290                CASE INTEGER OF
62300                  1: (FM: PACKED ARRAY [1..2] OF CHAR;
62310                      LJT, LKT: (B, A, X, KK, STAR);
62320                      LI, LJ, LK: 0..7;
62330                      LOP1, LOP2: (PLUS, MINUS, TIMES, OVER, COMMA, MISSING);
62340                      LKP: BOOLEAN;
62350                      LKK: -400000B..377777B);
62360                  2: (LW: INTEGER)
62370                      (*NOTE THAT LW:=0 SETS LI,LJ,LK TO 0, LOP1,LOP2 TO PLUS AND LJT,LKT TO B*)
62380                END;
62390            M: PACKED RECORD
62400                CASE INTEGER OF
62410                  1: (F: 0..7; M: 0..7; I: 0..7; J: 0..7; K: 0..7);
62420                  2: (MW: 0..77777B)
62430                END;
62440          BEGIN WITH L, M DO
62450            BEGIN
62460            LW := 0; MW := 0; LKP := FALSE; LKK := 0;
62470            FM[1] := COMPASS[1]; FM[2] := COMPASS[2];
62480            CHA := COMPASS[3];
62490            IF CHA IN ['0'..'9'] THEN BEGIN LI := ORD(CHA)-ORD('0'); II := 4 END
62500            ELSE II := 3;
62510            WHILE COMPASS[II]=' ' DO
62520              IF II=10 THEN GOTO 99 ELSE II := II+1;
62530            CHA := COMPASS[II];
62540            IF (CHA='-') AND NOT(COMPASS[II+1] IN ['0'..'9']) THEN
62550              BEGIN LOP1 := MINUS; II := II+1; CHA := COMPASS[II] END;
62560            IF CHA IN ['B', 'A', 'X'] THEN
62570              BEGIN
62580              IF CHA='B' THEN LJT := B
62590              ELSE IF CHA='A' THEN LJT := A
62600              ELSE IF CHA='X' THEN LJT := X;
62610              LJ := ORD(COMPASS[II+1])-ORD('0');
62620              II := II+2; CHA := COMPASS[II]
62630              END
62640            ELSE LJT := KK;
62650            LKT := KK;
62660            IF CHA='+' THEN LOP2 := PLUS
62670            ELSE IF CHA='-' THEN LOP2 := MINUS
62680            ELSE IF CHA='*' THEN LOP2 := TIMES
62690            ELSE IF CHA='/' THEN LOP2 := OVER
62700            ELSE IF CHA=',' THEN LOP2 := COMMA
62710            ELSE IF CHA IN ['0'..'9'] THEN
62720              BEGIN LKK := ORD(CHA)-ORD('0'); LKP := TRUE END
62730            ELSE BEGIN LKT := B; LOP2 := MISSING END;
62740              II := II+1; CHA := COMPASS[II];
62750            IF CHA IN ['B', 'A', 'X'] THEN
62760              BEGIN
62770              IF CHA='B' THEN LKT := B
62780              ELSE IF CHA='A' THEN LKT := A
62790              ELSE IF CHA='X' THEN LKT := X;
62800              LK := ORD(COMPASS[II+1])-ORD('0');
62810              II := II+2
62820              END
62830            ELSE LK := 0;
62840            (*READ K*)
62850            WHILE II<=10 DO
62860              BEGIN CHA := COMPASS[II];
62870              IF CHA IN ['0'..'9'] THEN
62880                BEGIN LKK := LKK*10+ORD(CHA)-ORD('0'); LKP := TRUE END
62890              ELSE IF CHA='*' THEN LKT := STAR;
62900              II := II+1
62910              END;
62920            IF LOP2=MINUS THEN
62930              IF LKP THEN
62940              BEGIN LKK := -LKK; LOP2 := PLUS END
62950            ELSE LKK := 1; (*OR ANY ODD NUMBER*)
62960        99: WITH CODETABLE[OPCOD] DO
62970              BEGIN
62980              P1 := VP1;
62990              P2 := VP2;
63000              PR := VPR;
63010              IF (P1=O)AND(P2<>O) THEN WRITELN(OUTPUT,'FAILED ICODE-A');
63020              IF (P2=ST) THEN WRITELN(OUTPUT,'FAILED ICODE-B');
63030              IF FM='LB' THEN
63040                LEN := F0
63050              ELSE IF FM[1]='S' THEN
63060                BEGIN
63070                CASE FM[2] OF
63080                  'A': F := 5;
63090                  'B': F := 6;
63100                  'X': F := 7
63110                  END;
63120                I := LI; J := LJ;
63130                CASE LKT OF
63140             STAR,KK: BEGIN
63150                      LEN := F30;
63160                      CASE LJT OF
63170                        A: M := 0;
63180                     KK,B: M := 1;
63190                        X: M := 2
63200                        END
63210                      END;
63220                  B:  BEGIN
63230                      LEN := F15;
63240                      CASE LJT OF
63250                        X: M := 3;
63260                        A: M := 4;
63270                        B: M := 6;
63280                        END;
63290                      IF LOP2=MINUS THEN M := M+1;
63300                      K := LK
63310                      END
63320                  END
63330                END
63340              ELSE IF FM='BX' THEN
63350                BEGIN
63360                F := 1; LEN := F15;
63370                I := LI; K := LJ;
63380                IF LKT=B (*I.E. ABSENT*) THEN
63390                  BEGIN M := 0; J := LJ END
63400                ELSE
63410                  BEGIN
63420                  CASE LOP2 OF
63430                    TIMES: M := 1;
63440                    PLUS: M := 2;
63450                    MINUS: M := 3
63460                    END;
63470                  J := LK
63480                  END;
63490                IF LOP1=MINUS THEN M := M+4
63500                END
63510              ELSE IF (FM[1] IN ['F', 'D', 'R', 'I', 'C']) AND (FM[2]='X') THEN
63520                BEGIN
63530                LEN := F15;
63540                I := LI; J := LJ; K := LK;
63550                IF LOP2 IN [PLUS, MINUS] THEN
63560                  BEGIN
63570                  F := 3;
63580                  CASE FM[1] OF
63590                    'F': M := 0;
63600                    'D': M := 2;
63610                    'R': M := 4;
63620                    'I': M := 6
63630                    END;
63640                  IF LOP2=MINUS THEN M := M+1
63650                  END
63660                ELSE
63670                  BEGIN F := 4;
63680                  CASE FM[1] OF
63690                    'F': M := 0;
63700                    'R': M := 1;
63710                    'D': M := 2;
63720                    'C': BEGIN M := 7; K := LJ END
63730                    END;
63740                  IF LOP2=OVER THEN M := M+4
63750                  END
63760                END
63770              ELSE IF (FM[1] IN ['M','L','A','N','Z','U','P']) AND (FM[2]='X') THEN
63780                BEGIN
63790              IF LKP THEN
63800                  BEGIN
63810                  MW := LKK; (*SET JK*)
63820                  CASE FM[1] OF
63830                    'M': BEGIN F := 4; M := 3 END;
63840                    'L': BEGIN F := 2; M := 0 END;
63850                    'A': BEGIN F := 2; M := 1 END
63860                    END
63870                  END
63880                ELSE
63890                  BEGIN F := 2;
63900                IF LKT=X THEN BEGIN J := LJ; K := LK END
63910                ELSE BEGIN J := LK; K := LJ END;
63920                  CASE FM[1] OF
63930                    'L': M := 2;
63940                    'A': M := 3;
63950                    'N': M := 4;
63960                    'Z': M := 5;
63970                    'U': M := 6;
63980                    'P': M := 7
63990                    END
64000                  END;
64010                LEN := F15; I := LI
64020                END
64030              ELSE (*JUMP*)
64040                BEGIN F := 0;
64050                LEN := F30;
64060                IF LJT=X THEN
64070                  BEGIN M := 3; J := LJ;
64080                  IF FM='ZR' THEN I := 0
64090                  ELSE IF FM='NZ' THEN I := 1
64100                  ELSE IF FM='PL' THEN I := 2
64110                  ELSE IF FM='NG' THEN I := 3
64120                  ELSE IF FM='IR' THEN I := 4
64130                  ELSE IF FM='OR' THEN I := 5
64140                  ELSE IF FM='DF' THEN I := 6
64150                  ELSE IF FM='ID' THEN I := 7
64160                  ELSE HALT
64170                  END
64180                ELSE
64190                  BEGIN I := LJ; J := LK;
64200                  IF FM='PS' THEN M := 0
64210                  ELSE IF FM='RJ' THEN M := 1
64220                  ELSE IF FM='JP' THEN M := 2
64230                  ELSE IF FM='EQ' THEN M := 4
64240                  ELSE IF FM='NE' THEN M := 5
64250                  ELSE IF FM='GE' THEN M := 6
64260                  ELSE IF FM='LE' THEN BEGIN M := 6; I := LJ; J := LI END
64270                  ELSE IF FM='LT' THEN M := 7
64280                  ELSE IF FM='GT' THEN BEGIN M := 7; I := LJ; J := LI END
64290                  ELSE IF FM='NO' THEN BEGIN F := 4; M := 6; LEN := F15 END
64300                  ELSE HALT
64310                  END
64320                END;
64330              REL := 0;
64340              IF LEN=F15 THEN FMIJK := MW
64350              ELSE IF (LKP) AND (LKT<>STAR) THEN
64360                IF LKK>=0 THEN FMIJK := MW*SHIFT1+LKK
64370                ELSE FMIJK := MW*SHIFT1+LKK+1000000B
64380              ELSE IF LEN=F30 THEN
64390                IF (LKT <> STAR) AND (LOP2<>MISSING) THEN
64400                  BEGIN LEN := F30K; FMIJK := MW*SHIFT1+LKK END
64410                ELSE BEGIN FMIJK := MW*SHIFT1; REL := LKK END;
64420              INLINE := TRUE;
64430              NEXT := PNEXT
64440              END
64450            END
64460          END;
64470    PROCEDURE OCODE(OPCOD: POP; PROUTINE: ALFA;VP1,VP2,VPR:SBTTYP);
64480        VAR I: INTEGER;
64490          BEGIN
64500          WITH CODETABLE[OPCOD] DO
64510            BEGIN
64520            P1 := VP1;
64530            P2 := VP2;
64540            PR := VPR;
64550            IF (P1=O)AND(P2<>O) THEN WRITELN(OUTPUT,'FAILED OCODE-A');
64560            IF P2=ST THEN WRITELN(OUTPUT,'FAILED OCODE-B');
64570            INLINE := FALSE;
64580            LINKINS := NIL;
64590            FOR I := 1 TO 7 DO ROUTINE[I] := PROUTINE[I]
64600            END
64610          END;
64620  (**)
64630    PROCEDURE QCODE (OPCOD:POP; COMPASS:ALFA; PNEXT:POP );
64640        BEGIN ICODE(OPCOD, COMPASS, PNEXT, O, O ,O )  END;
64650  (**)
64660    PROCEDURE FIRSTPART;
64670      VAR I: INTEGER;
64680        BEGIN FOR I := PNONE TO PLAST DO OCODE(I, 'DUMMY     ', O , O , O );
64690  (**)
64700        ICODE(PPBEGIN     , 'SB7 2     ', QPBEGIN      ,O  ,O  ,O  );
64710        QCODE(QPBEGIN     , 'RJ  B0+   ', 0);
64720        ICODE(PPBEGIN+1   , 'SB6 B2+   ', QPBEGIN+1    ,O  ,O  ,O  );
64730        QCODE(QPBEGIN+1   , 'SB7 B6+100', QPBEGIN+2);
64740        QCODE(QPBEGIN+2   , 'SA0 5     ', QPBEGIN+3);
64750        QCODE(QPBEGIN+3   , 'GEB7,B4,41', QPBEGIN+4);
64760        OCODE(QPBEGIN+4   , 'START68   '               ,O  ,O  ,O  );
64770        OCODE(PPEND       , 'STOP68    '               ,O  ,O  ,O  );
64780        OCODE(PPOP        , '          '               ,O  ,O  ,O  );
64790        ICODE(PABSI       , 'BX3 X1    ', QABSI        ,X1 ,O  ,X1 );
64800        QCODE(QABSI       , 'AX3 59    ', QABSI1);
64810        QCODE(QABSI1      , 'BX1 X1-X3 ', 0);
64820        ICODE(PABSI-2     , 'BX3 X1    ', QABSI        ,X1 ,O  ,X1 );
64830        OCODE(PABSI-4     , 'CABSI     '               ,X0 ,O  ,X6 );
64840        ICODE(PABSB       , 'MX3 1     ', QABSB        ,X1 ,O  ,X1 );
64850        QCODE(QABSB       , 'BX1 X1*X3 ', QABSB1);
64860        QCODE(QABSB1      , 'LX1 1     ', 0);
64870        ICODE(PABSB-1     , 'NO        ', 0            ,X1 ,O  ,X1 );
64880        ICODE(PABSCH      , 'NO        ', 0            ,X1 ,O  ,X1 );
64890        ICODE(PADD        , 'IX1 X5+X1 ', 0            ,X5 ,X1 ,X1 );
64900        ICODE(PADD-2      , 'RX1 X5+X1 ', QNORM        ,X5 ,X1 ,X1 );
64910  (*+61()
64920        ICODE(PADD-3      , 'FX3 X1+X4 ', QADD         ,X45,X12,X12);
64930        QCODE(QADD        , 'DX4 X1+X4 ', QADD+1);
64940        QCODE(QADD+1      , 'NX3 X3    ', QADD+2);
64950        QCODE(QADD+2      , 'RX5 X2+X5 ', QADD+3);
64960        QCODE(QADD+3      , 'RX5 X4+X5 ', QADD+4);
64970        QCODE(QADD+4      , 'FX4 X3+X5 ', QADD+5);
64980        QCODE(QADD+5      , 'NX4 X4    ', QADD+6);
64990        QCODE(QADD+6      , 'DX5 X3+X5 ', QADD+7);
65000        QCODE(QADD+7      , 'NX5 X5    ', QADD+8);
65010        QCODE(QADD+8      , 'FX1 X4+X5 ', QADD+9);
65020        QCODE(QADD+9      , 'DX2 X4+X5 ', 0);
65030  ()+61*)
65040        OCODE(PADD-4      , 'CPLUS     '               ,X0 ,X1 ,X6 );
65050        ICODE(PANDB       , 'BX1 X1*X5 ', 0            ,X5 ,X1 ,X1 );
65060        ICODE(PANDB-1     , 'BX1 X1*X5 ', 0            ,X5 ,X1 ,X1 );
65070        OCODE(PARG        , 'CARG      '               ,X0 ,O  ,X6 );
65080        ICODE(PBIN        , 'NO        ', 0            ,X1 ,O  ,X1 );
65090        OCODE(PCAT        , 'CATCC     '               ,X0 ,X1 ,X6 );
65100        OCODE(PCAT-1      , 'CATSS     '               ,X0 ,X1 ,X6 );
65110        OCODE(PCONJ       , 'CCONJ     '               ,X0 ,O  ,X6 );
65120        ICODE(PDIV        , 'PX5 X5    ', QDIV         ,X5 ,X1 ,X1 );
65130        QCODE(QDIV        , 'NX5 X5    ', QDIV1);
65140        QCODE(QDIV1       , 'PX1 X1    ', QDIV2);
65150        QCODE(QDIV2       , 'NX1 X1    ', PDIV-2);
65160        ICODE(PDIV-2      , 'RX1 X5/X1 ', 0            ,X5 ,X1 ,X1 );
65170        OCODE(PDIV-4      , 'CDIV      '               ,X0 ,X1 ,X6 );
65180        ICODE(PDIVAB      , 'RX1 X5/X1 ', 0            ,X5 ,X1 ,X1 );
65190        OCODE(PDIVAB-2    , 'CDIVAB    '               ,X0 ,X1 ,X6 );
65200        ICODE(PELMBT      , 'SB3 X5-1  ', QELMBT       ,X5 ,X1 ,X1 );
65210        QCODE(QELMBT      , 'LX1 B3,X1 ', 0);
65220        OCODE(PELMBY      , 'ELEMBY    '               ,X5 ,X1 ,X1 );
65230        OCODE(PENTI       , 'ENTIER    '               ,X1 ,O  ,X1 );
65240        ICODE(PEQ         , 'IX3 X1-X5 ', QEQ          ,X5 ,X1 ,X1 );
65250        QCODE(QEQ         , 'IX1 X5-X1 ', QEQ1);
65260        QCODE(QEQ1        , 'BX1 -X1-X3', 0);
65270        ICODE(PEQ-2       , 'IX3 X1-X5 ', QEQ          ,X5 ,X1 ,X1 );
65280        OCODE(PEQ-4       , 'CEQ       '               ,X0 ,X1 ,X6 );
65290        ICODE(PEQB        , 'BX1 -X1-X5', 0            ,X5 ,X1 ,X1 );
65300        ICODE(PEQB-1      , 'IX3 X1-X5 ', QEQ          ,X5 ,X1 ,X1 );
65310        ICODE(PEQB-2      , 'IX3 X1-X5 ', QEQ          ,X5 ,X1 ,X1 );
65320        ICODE(PEQCS       , 'IX3 X1-X5 ', QEQ          ,X5 ,X1 ,X1 );
65330        ICODE(PEQCS-1     , 'SX2 2     ', QCFSTRNG     ,X0 ,X1 ,X6 );
65340        OCODE(PEXP        , 'POWI      '               ,X5 ,X1 ,X1 );
65350        OCODE(PEXP-2      , 'POWR      '               ,X5 ,X1 ,X1 );
65360        OCODE(PEXP-4      , 'CPOW      '               ,X0 ,X1 ,X6 );
65370        ICODE(PPASC       , 'SX6 B5    ', QPASC        ,SDL,O  ,X6 );
65380        ICODE(PPASC+1     , 'SX6 B5    ', QPASC        ,X0S,O  ,X6 );
65390        ICODE(PPASC+2     , 'SX6 B5    ', QPASC        ,X0S,X1 ,X6 );
65400        OCODE(PPASC+3     , 'PASC      '               ,STS,O  ,X6 );
65410        QCODE(QPASC       , 'SX7 2*    ', QPASC+1);
65420        QCODE(QPASC+1     , 'EQ  B0+   ', 0);
65430        ICODE(PENVCHAIN   , 'SA3 B5    ', 0            ,O  ,O  ,O  );
65440        ICODE(PENVCHAIN+1 , 'SA3 X3    ', 0            ,O  ,O  ,O  );
65450        ICODE(PGE         , 'IX1 X5-X1 ', PNOTB        ,X5 ,X1 ,X1 );
65460        ICODE(PGE-2       , 'IX1 X5-X1 ', PNOTB        ,X5 ,X1 ,X1 );
65470        ICODE(PGEBT       , 'BX1 -X5*X1', QGEBT        ,X5 ,X1 ,X1 );
65480        QCODE(QGEBT       , 'BX5 X5-X5 ', PEQ);
65490        ICODE(PGEBT-1     , 'IX1 X5-X1 ', PNOTB        ,X5 ,X1 ,X1 );
65500        ICODE(PGECS       , 'IX1 X5-X1 ', PNOTB        ,X5 ,X1 ,X1 );
65510        ICODE(PGECS-1     , 'SX2 4     ', QCFSTRNG     ,X0 ,X1 ,X6 );
65520        ICODE(PGT         , 'IX1 X1-X5 ', 0            ,X5 ,X1 ,X1 );
65530        ICODE(PGT-2       , 'IX1 X1-X5 ', 0            ,X5 ,X1 ,X1 );
65540        ICODE(PGTBY       , 'IX1 X1-X5 ', 0            ,X5 ,X1 ,X1 );
65550        ICODE(PGTCS       , 'IX1 X1-X5 ', 0            ,X5 ,X1 ,X1 );
65560        ICODE(PGTCS-1     , 'SX2 5     ', QCFSTRNG     ,X0 ,X1 ,X6 );
65570        OCODE(PIM         , 'CIM       '               ,X0 ,O  ,X6 );
65580        ICODE(PLE         , 'IX1 X1-X5 ', PNOTB        ,X5 ,X1 ,X1 );
65590        ICODE(PLE-2       , 'IX1 X1-X5 ', PNOTB        ,X5 ,X1 ,X1 );
65600        ICODE(PLEBT       , 'BX1 -X1*X5', QGEBT        ,X5 ,X1 ,X1 );
65610        ICODE(PLEBT-1     , 'IX1 X1-X5 ', PNOTB        ,X5 ,X1 ,X1 );
65620        ICODE(PLECS       , 'IX1 X1-X5 ', PNOTB        ,X5 ,X1 ,X1 );
65630        ICODE(PLECS-1     , 'SX2 B1    ', QCFSTRNG     ,X0 ,X1 ,X6 );
65640  (*+61()
65650        ICODE(PLENGR      , 'BX2 X2-X2 ', QLENGR       ,X1 ,O  ,X12);
65660        QCODE(QLENGR      , 'DX2 X1+X2 ', 0);
65670  ()+61*)
65680        ICODE(PLT         , 'IX1 X5-X1 ', 0            ,X5 ,X1 ,X1 );
65690        ICODE(PLT-2       , 'IX1 X5-X1 ', 0            ,X5 ,X1 ,X1 );
65700        ICODE(PLTBY       , 'IX1 X5-X1 ', 0            ,X5 ,X1 ,X1 );
65710        ICODE(PLTCS       , 'IX1 X5-X1 ', 0            ,X5 ,X1 ,X1 );
65720        ICODE(PLTCS-1     , 'SX2 B0    ', QCFSTRNG     ,X0 ,X1 ,X6 );
65730        OCODE(PLWBMSTR    , 'LWBMSTR   '               ,X0 ,O  ,X6 );
65740        OCODE(PLWBM       , 'LWBM      '               ,X0 ,O  ,X6 );
65750        OCODE(PLWB        , 'LWB       '               ,X0 ,X1 ,X6 );
65760        ICODE(PMINUSAB    , 'IX1 X5-X1 ', 0            ,X5 ,X1 ,X1 );
65770        ICODE(PMINUSAB-2  , 'RX1 X5-X1 ', QNORM        ,X5 ,X1 ,X1 );
65780        OCODE(PMINUSAB-4  , 'CMINAB    '               ,X0 ,X1 ,X6 );
65790        OCODE(PMOD        , 'MOD       '               ,X5 ,X1 ,X1 );
65800        OCODE(PMODAB      , 'MOD       '               ,X5 ,X1 ,X1 );
65810        ICODE(PMUL        , 'DX1 X1*X5 ', QMUL         ,X5 ,X1 ,X1 );
65820        QCODE(QMUL        , 'BX3 X3-X3 ', QMUL1);
65830        QCODE(QMUL1       , 'IX1 X1+X3 ', 0);
65840        ICODE(PMUL-2      , 'RX1 X1*X5 ', 0            ,X5 ,X1 ,X1 );
65850  (*+61()
65860        ICODE(PMUL-3      , 'RX2 X2*X4 ', QMULL        ,X45,X12,X12);
65870        QCODE(QMULL       , 'RX5 X1*X5 ', QMULL+1);
65880        QCODE(QMULL+1     , 'RX2 X2+X5 ', QMULL+2);
65890        QCODE(QMULL+2     , 'FX3 X1*X4 ', QMULL+3);
65900        QCODE(QMULL+3     , 'DX4 X1*X4 ', QMULL+4);
65910        QCODE(QMULL+4     , 'RX4 X4+X2 ', QMULL+5);
65920        QCODE(QMULL+5     , 'FX1 X3+X4 ', QMULL+6);
65930        QCODE(QMULL+6     , 'DX2 X3+X4 ', 0);
65940  ()+61*)
65950        OCODE(PMUL-4      , 'CTIMS     '               ,X0 ,X1 ,X6 );
65960        OCODE(PMULCI      , 'MULCI     '               ,X0 ,X1 ,X6 );
65970        OCODE(PMULCI-1    , 'MULSI     '               ,X0 ,X1 ,X6 );
65980        OCODE(PMULIC      , 'MULIC     '               ,X0 ,X1 ,X6 );
65990        OCODE(PMULIC-1    , 'MULIS     '               ,X0 ,X1 ,X6 );
66000        ICODE(PNE         , 'IX3 X1-X5 ', QNE          ,X5 ,X1 ,X1 );
66010        QCODE(QNE         , 'IX1 X5-X1 ', QNE1);
66020        QCODE(QNE1        , 'BX1 X1-X3 ', 0);
66030        ICODE(PNE-2       , 'IX3 X1-X5 ', QNE          ,X5 ,X1 ,X1 );
66040        OCODE(PNE-4       , 'CNE       '               ,X0 ,X1 ,X6 );
66050        ICODE(PNEB        , 'BX1 X1-X5 ', 0            ,X5 ,X1 ,X1 );
66060        ICODE(PNEB-1      , 'IX3 X1-X5 ', QNE          ,X5 ,X1 ,X1 );
66070        ICODE(PNEB-2      , 'IX3 X1-X5 ', QNE          ,X5 ,X1 ,X1 );
66080        ICODE(PNECS       , 'IX3 X1-X5 ', QNE          ,X5 ,X1 ,X1 );
66090        ICODE(PNECS-1     , 'SX2 3     ', QCFSTRNG     ,X0 ,X1 ,X6 );
66100        ICODE(PNEGI       , 'BX3 X3-X3 ', QNEGI        ,X1 ,O  ,X1 );
66110        QCODE(QNEGI       , 'IX1 X3-X1 ', 0);
66120        ICODE(PNEGI-2     , 'BX3 X3-X3 ', QNEGI        ,X1 ,O  ,X1 );
66130        OCODE(PNEGI-4     , 'CNEGI     '               ,X0 ,O  ,X6 );
66140        ICODE(PNOTB       , 'MX3   1   ', QNOTB        ,X1 ,O  ,X1 );
66150        QCODE(QNOTB       , 'BX1 X3-X1 ', 0);
66160        ICODE(PNOTB-1     , 'BX3 X3-X3 ', QEQ1         ,X1 ,O  ,X1 );
66170        ICODE(PNOOP       , 'NO        ', 0            ,X1 ,O  ,X1 );
66180        ICODE(PNOOP-2     , 'NO        ', 0            ,X1 ,O  ,X1 );
66190        ICODE(PNOOP-4     , 'NO        ', 0            ,X1 ,O  ,X1 );
66200        ICODE(PODD        , 'LX1   59  ', 0            ,X1 ,O  ,X1 );
66210        ICODE(PORB        , 'BX1 X1+X5 ', 0            ,X5 ,X1 ,X1 );
66220        ICODE(PORB-1      , 'BX1 X1+X5 ', 0            ,X5 ,X1 ,X1 );
66230        OCODE(POVER       , 'OVER      '               ,X5 ,X1 ,X1 );
66240        OCODE(POVERAB     , 'OVER      '               ,X5 ,X1 ,X1 );
66250        OCODE(PPLITM      , 'CRCOMPLEX '               ,X0 ,X1 ,X6 );
66260        ICODE(PPLSAB      , 'IX1 X5+X1 ', 0            ,X5 ,X1 ,X1 );
66270        ICODE(PPLSAB-2    , 'RX1 X5+X1 ', QNORM        ,X5 ,X1 ,X1 );
66280  (*+61()
66290        ICODE(PPLSAB-3    , 'FX3 X1+X4 ', QADD         ,X45,X12,X12);
66300  ()+61*)
66310        OCODE(PPLSAB-4    , 'CPLUSAB   '               ,X0 ,X1 ,X6 );
66320        OCODE(PPLSABS     , 'PLABSS    '               ,X0 ,X1 ,X6 );
66330        OCODE(PPLSABS-1   , 'PLABSS    '               ,X0 ,X1 ,X6 );
66340        OCODE(PPLSTOCS    , 'PLTOSS    '               ,X0 ,X1 ,X6 );
66350        OCODE(PPLSTOCS-1  , 'PLTOSS    '               ,X0 ,X1 ,X6 );
66360        OCODE(PRE         , 'CRE       '               ,X0 ,O  ,X6 );
66370        ICODE(PREPR       , 'NO        ', 0            ,X1 ,O  ,X1 );
66380        OCODE(PROUN       , 'ROUN      '               ,X1 ,O  ,X1 );
66390        OCODE(PSGNI       , 'SIGN      '               ,X1 ,O  ,X1 );
66400        OCODE(PSGNI-2     , 'SIGN      '               ,X1 ,O  ,X1 );
66410        OCODE(PSHL        , 'SHL       '               ,X5 ,X1 ,X1 );
66420  (*+61()
66430        ICODE(PSHRTR      , 'RX1 X1+X2 ', QNORM        ,X12,O  ,X1 );
66440  ()+61*)
66450        OCODE(PSHR        , 'SHR       '               ,X5 ,X1 ,X1 );
66460        ICODE(PSUB        , 'IX1 X5-X1 ', 0            ,X5 ,X1 ,X1 );
66470        ICODE(PSUB-2      , 'RX1 X5-X1 ', QNORM        ,X5 ,X1 ,X1 );
66480        OCODE(PSUB-4      , 'CMINUS    '               ,X0 ,X1 ,X6 );
66490        ICODE(PTIMSAB     , 'DX1 X5*X1 ', 0            ,X5 ,X1 ,X1 );
66500        ICODE(PTIMSAB-2   , 'RX1 X1*X5 ', 0            ,X5 ,X1 ,X1 );
66510  (*+61()
66520        ICODE(PTIMSAB-3   , 'RX2 X2*X4 ', QMULL        ,X45,X12,X12);
66530  ()+61*)
66540        OCODE(PTIMSAB-4   , 'CTIMSAB   '               ,X0 ,X1 ,X6 );
66550        OCODE(PTIMSABS    , 'MULABSI   '               ,X0 ,X1 ,X6 );
66560        OCODE(PUPBMSTR    , 'UPBMSTR   '               ,X0 ,O  ,X6 );
66570        OCODE(PUPBM       , 'UPBM      '               ,X0 ,O  ,X6 );
66580        OCODE(PUPB        , 'UPB       '               ,X0 ,X1 ,X6 );
66590        OCODE(QCFSTRNG    , 'CFSTR     '               ,O  ,O  ,O  );
66600        QCODE(QNORM       , 'NX1 B0,X1 ', 0);
66610        END;
66620    PROCEDURE SECONDPART;
66630        BEGIN
66640        ICODE(PGETPROC    , 'SA3 B6+   ', QGETPROC     ,O  ,O  ,O  );
66650        QCODE(QGETPROC    , 'BX0 X3    ', PGETPROC+1);
66660        OCODE(PGETPROC+1  , 'GETPROC   '               ,X0 ,O  ,O  );
66670        ICODE(PSELECT     , 'SA3 X1+B1 ', QSELECT+1    ,X1 ,O  ,X1 );
66672        QCODE(QSELECT+1   , 'AX3 25    ', QSELECT+2);
66673        QCODE(QSELECT+2   , 'SX3 X3+   ', QSELECT+3);
66674        QCODE(QSELECT+3   , 'LX1 42    ', QSELECT+4);
66676        QCODE(QSELECT+4   , 'BX1 X1+X3 ', 0);
66678        ICODE(PSELECT+1   , 'SX3 B1+   ', QSELECT+3    ,X1 ,O  ,X1 );
66680        ICODE(PSELECT+2   , 'SX3   B0+ ', QSELECT      ,X0 ,O  ,X0 );
66690        QCODE(QSELECT     , 'IX0 X0+X3 ', 0);
66700        OCODE(PSELECTROW  , 'SELECTR   '               ,X0 ,O  ,X6 );
66710        OCODE(PSTRNGSLICE , 'STRSUB    '               ,X0 ,X1 ,X6 );
66720        OCODE(PSTRNGSLICE+1,'STRTRIM   '               ,X0S,O  ,X6 );
66730        OCODE(PSTARTSLICE , 'STARTSL   '               ,STP,O  ,O  );
66740        OCODE(PSLICE1     , 'SLICE1    '               ,X0 ,X1 ,X0 );
66750        OCODE(PSLICE2     , 'SLICE2    '               ,X0S,X1 ,X0 );
66760        OCODE(PSLICEN     , 'SLICEN    '               ,X0S,O  ,X6 );
66770        ICODE(PCASE       , 'SA3 +     ', QCAS         ,X1 ,O  ,O  );
66780        OCODE(QCAS        , 'CASE      '               ,O  ,O  ,O  );
66785        ICODE(PCASJMP     , 'EQ    B0, ', 0            ,O  ,O  ,O  );
66787        ICODE(PCASJMP+1   , 'EQ    B0, ', 0            ,O  ,O  ,O  );
66790        ICODE(PJMPF       , 'PL    X1, ', 0            ,X1 ,O  ,O  );
66800        ICODE(PLPINIT     , 'SX1 B5+   ', QLPINIT      ,X0S,O  ,X6 );
66810        OCODE(QLPINIT     , 'LINIT1    '               ,O  ,O  ,O  );
66820        ICODE(PLPINIT+1   , 'SX1 B5+   ', QLPINIT+1    ,X0S,O  ,X6 );
66830        OCODE(QLPINIT+1   , 'LINIT2    '               ,O  ,O  ,O  );
66840        ICODE(PLPINIT+2   , 'SX1 B5+   ', QLPINIT+2    ,X0S,O  ,O  );
66850        OCODE(QLPINIT+2   , 'LINIT3    '               ,O  ,O  ,O  );
66860        ICODE(PLPINIT+3   , 'SX1 B5+   ', QLPINIT+3    ,X0S,O  ,O  );
66870        OCODE(QLPINIT+3   , 'LINIT4    '               ,O  ,O  ,O  );
66880        ICODE(PLPTEST     , 'ZR    X6, ', 0            ,X6 ,O  ,O  );
66888        ICODE(PLPINCR     , 'SX0 B5+   ', QLOOPINCR+5  ,O  ,O  ,X6 );
66890        OCODE(QLOOPINCR+5 , 'LOOPINC   '               ,O  ,O  ,O  );
66900        ICODE(PLPINCR+1   , 'SA4 B5+   ', QLOOPINCR    ,O  ,O  ,X6 );
66910        QCODE(QLOOPINCR   , 'SX3 B1    ', QLOOPINCR+1);
66920        QCODE(QLOOPINCR+1 , 'IX7 X4+X3 ', QLOOPINCR+2);
66930        QCODE(QLOOPINCR+2 , 'SA7 A4    ', QLOOPINCR+3);
66940        QCODE(QLOOPINCR+3 , 'SA3 A4+B1 ', QLOOPINCR+4);
66950        QCODE(QLOOPINCR+4 , 'IX6 X3-X4 ', 0);
66960        ICODE(PRANGENT    , 'SX2 B5+   ', QRANGENT     ,O  ,O  ,O  );
66970        OCODE(QRANGENT    , 'RANGENT   '               ,O  ,O  ,O  );
66980        OCODE(PRANGEXT    , 'RANGEXT   '               ,O  ,O  ,O  );
66990        ICODE(PRANGEXT+1  , 'SA3 B5+12 ', QRANGEXT     ,O  ,O  ,O  );
67000        QCODE(QRANGEXT    , 'SA2 X3+2  ', QRANGEXT+1);
67010        QCODE(QRANGEXT+1  , 'BX7 X2    ', QRANGEXT+2);
67020        QCODE(QRANGEXT+2  , 'SA7 A3    ', 0);
67030        OCODE(PRANGEXT+2  , 'RANGXTP   '               ,X0 ,O  ,X6 );
67032        OCODE(PRECGEN     , 'DORECGE   '               ,O  ,O  ,O  );
67040        OCODE(PACTDRMULT  , 'CRMULT    '               ,X0 ,O  ,X6 );
67050        OCODE(PACTDRSTRUCT, 'CRSTRUC   '               ,O  ,O  ,X6 );
67060        OCODE(PCHECKDESC  , 'CHKDESC   '               ,X0 ,X1 ,X6 );
67070        OCODE(PVARLISTEND , 'GARBAGE   '               ,X0 ,O  ,O  );
67080        ICODE(PVARLISTEND+1,'SB6 B6-B1 ', 0            ,ST ,O  ,O  );
67090        ICODE(PDCLINIT    , 'SA3 B2+328', QDCLINIT     ,O  ,O  ,O  ); (*FIRSTVAR*)
67100        QCODE(QDCLINIT    , 'BX7 X3    ',0);
67110        ICODE(PDCLINIT+1  , 'SA3 B2+329', QDCLINIT     ,O  ,O  ,O  ); (*FIRSTVAR+1*)
67120        ICODE(PDCLINIT+2  , 'SA7 B5+   ',0             ,O  ,O  ,O  );
67130        ICODE(PPARM       , 'SA3 B5+   ', QPARM        ,O  ,O  ,O  );
67140        QCODE(QPARM       , 'SA2 X3    ', QPARM+1);
67150        QCODE(QPARM+1     , 'SX7 B1    ', QPARM+2);
67160        QCODE(QPARM+2     , 'LX7 47    ', QPARM+3);
67170        QCODE(QPARM+3     , 'IX7 X2+X7 ', QPARM+4);
67180        QCODE(QPARM+4     , 'SA7 A2    ', 0);
67210        OCODE(PCREATEREF  , 'CRREFN    '               ,X0 ,O  ,X6 );
67220        OCODE(PCREATEREF+1, 'CRRECN    '               ,X0 ,O  ,X6 );
67230        OCODE(PCREATEREF+2, 'CRREFR    '               ,X0 ,O  ,X6 );
67240        OCODE(PCREATEREF+3, 'CRRECR    '               ,X0 ,O  ,X6 );
67260        ICODE(PDCLSP      , 'SA6 B5+   ', 0            ,X6 ,O  ,O  );
67270        ICODE(PDCLSP+1    , 'SA3 X6    ', QDCLSP       ,X6 ,O  ,O  );
67280        QCODE(QDCLSP      , 'SX7 B1    ', QDCLSP+1);
67290        QCODE(QDCLSP+1    , 'LX7 47    ', QDCLSP+2);
67300        QCODE(QDCLSP+2    , 'IX7 X3+X7 ', QDCLSP+3);
67310        QCODE(QDCLSP+3    , 'SA7 A3    ', PDCLSP);
67320        OCODE(PDCLSP+2    , 'DCLSN     '               ,SNS,O  ,O  );
67330        OCODE(PDCLSP+3    , 'DCLPN     '               ,SNS,O  ,O  );
67340        ICODE(PFIXRG      , 'SX7 B5+   ', 0            , O ,O  ,O  );
67350        ICODE(PFIXRG+1    , 'SA7 B5+   ', 0            , O ,O  ,O  );
67360        OCODE(PBOUNDS     , 'BOUND     '               ,STS,O  ,X6 );
67370        ICODE(PLOADVAR    , 'SX1 B5+   ', QLOADVAR     ,O  ,O  ,X6 );
67380        QCODE(QLOADVAR    , 'SX2 B5    ', QLOADVAR+1);
67390        OCODE(QLOADVAR+1  , 'GLDVAR    '               ,O  ,O  ,O  );
67400        ICODE(PLOADVAR+1  , 'SX1 B2+   ', QLOADVAR+2   ,O  ,O  ,X6 );
67410        QCODE(QLOADVAR+2  , 'SX2 B2+345', QLOADVAR+1);                (*FIRSTIBOFFSET*)
67420        ICODE(PLOADVAR+2  , 'SX1 X3+   ', QLOADVAR+3   ,O  ,O  ,X6 );
67430        QCODE(QLOADVAR+3  , 'SX2 X3    ', QLOADVAR+1);
67440        OCODE(PLOADRT     , 'ROUTN     '               ,O  ,O  ,X6 );
67450        ICODE(PLOADRTA    , 'SX1 B5+   ', QLOADRTA     ,O  ,O  ,X6 );
67460        ICODE(PLOADRTA+1  , 'SX1 B2+   ', QLOADRTA     ,O  ,O  ,X6 );
67470        ICODE(PLOADRTA+2  , 'SX1 X3+   ', QLOADRTA     ,O  ,O  ,X6 );
67480        OCODE(QLOADRTA    , 'ROUTNA    '               ,O  ,O  ,O  );
67490        OCODE(PLOADRTP    , 'ROUTNP    '               ,X0 ,O  ,X6 );
67500        OCODE(PSCOPETT+2  , 'TASSTPT   '               ,X0 ,X1 ,X6 );
67510        OCODE(PSCOPETT+3  , 'SCPTTP    '               ,X0 ,X1 ,X6 );
67520        OCODE(PSCOPETT+4  , 'SCPTTM    '               ,X0 ,X1 ,X6 );
67530        OCODE(PASSIGTT    , 'TASSTS    '               ,X0 ,X1 ,X6 );
67540  (*+61()
67550        OCODE(PASSIGTT+1  , 'TASSTS2   '               ,X0 ,X12,X6 );
67560  ()+61*)
67570        OCODE(PASSIGTT+2  , 'TASSTPT   '               ,X0 ,X1 ,X6 );
67580        OCODE(PASSIGTT+3  , 'TASSTP    '               ,X0 ,X1 ,X6 );
67590        OCODE(PASSIGTT+4  , 'TASSTM    '               ,X0 ,X1 ,X6 );
67600        OCODE(PSCOPETN    , 'SCPTNP    '               ,X0 ,X1 ,X6 );
67610        OCODE(PASSIGTN    , 'TASSNP    '               ,X0 ,X1 ,X6 );
67620        OCODE(PSCOPENT+2  , 'SCPNTPT   '               ,X0 ,X1 ,X6 );
67630        OCODE(PSCOPENT+3  , 'SCPNTP    '               ,X0 ,X1 ,X6 );
67640        OCODE(PASSIGNT    , 'NASSTS    '               ,X0 ,X1 ,X6 );
67650        OCODE(PASSIGNT+1  , 'NASSTS2   '               ,X0 ,X1 ,X6 );
67660        OCODE(PASSIGNT+2  , 'NASSTPT   '               ,X0 ,X1 ,X6 );
67670        OCODE(PASSIGNT+3  , 'NASSTP    '               ,X0 ,X1 ,X6 );
67690        OCODE(PSCOPENN    , 'SCPNNP    '               ,X0 ,X1 ,X6 );
67700        OCODE(PASSIGNN    , 'NASSNP    '               ,X0 ,X1 ,X6 );
67710        ICODE(PSCOPEVAR   , 'SX2 B5+   ', QSCOPEVAR    ,X0 ,O  ,O  );
67720        QCODE(QSCOPEVAR   , 'SX3 B5    ', QSCOPEVAR+1);
67730        OCODE(QSCOPEVAR+1 , 'GVSCOPE   '               ,O  ,O  ,O  );
67740        ICODE(PSCOPEVAR+1 , 'SX2 B2+   ', QSCOPEVAR+2  ,X0 ,O  ,O  );
67750        QCODE(QSCOPEVAR+2 , 'SX3 B2+345', QSCOPEVAR+1);
67760        ICODE(PSCOPEVAR+2 , 'SX2 X3+   ', QSCOPEVAR+1  ,X0 ,O  ,O  );
67770        OCODE(PSCOPEEXT   , 'SCOPEXT   '               ,X0 ,O  ,X6 );
67780        ICODE(PASGVART    , 'SA6   B5+ ', 0            ,X6 ,O  ,O  );
67790        ICODE(PASGVART+1  , 'SA6   B2+ ', 0            ,X6 ,O  ,O  );
67800        ICODE(PASGVART+2  , 'SA6   X3+ ', 0            ,X6 ,O  ,O  );
67810  (*+61()
67820        ICODE(PASGVART+3  , 'BX7 X1    ', QASGVART     ,X12,O  ,O  );
67830        QCODE(QASGVART    , 'SA7 B5+   ', QASGVART+1);
67840        QCODE(QASGVART+1  , 'BX7 X2    ', QASGVART+2);
67850        QCODE(QASGVART+2  , 'SA7 A7+B1 ', 0);
67860        ICODE(PASGVART+4  , 'BX7 X1    ', QASGVART+3   ,X12,O  ,O  );
67870        QCODE(QASGVART+3  , 'SA7 B2+   ', QASGVART+1);
67880        ICODE(PASGVART+5  , 'BX7 X1    ', QASGVART+4   ,X12,O  ,O  );
67890        QCODE(QASGVART+4  , 'SA7 X3+   ', QASGVART+1);
67900  ()+61*)
67910        ICODE(PASGVART+6  , 'SX1 B5+   ', QVASSTX      ,X0 ,O  ,O  );
67920        OCODE(QVASSTX     , 'GVASSTX   '               ,O  ,O  ,O  );
67930        ICODE(PASGVART+7  , 'SX1 B2+   ', QVASSTX      ,X0 ,O  ,O  );
67940        ICODE(PASGVART+8  , 'SX1 X3+   ', QVASSTX      ,X0 ,O  ,O  );
67950        OCODE(PIDTYREL    , 'IS        '               ,X0 ,X1 ,X6 );
67960        OCODE(PIDTYREL+1  , 'ISNT      '               ,X0 ,X1 ,X6 );
67980        ICODE(PGETTOTCMN  , 'BX1 X0    ', QGETTOTCMN   ,X0 ,O  ,X1 );
67990        QCODE(QGETTOTCMN  , 'AX0 42    ', QGETTOTCMN+1);
68000        QCODE(QGETTOTCMN+1, 'IX1 X1+X0 ', 0);
68005        OCODE(PGETTOTCMN+1, 'GTOTMUL   '               ,X0 ,O  ,X1 );
68010        OCODE(PGETTOTCMN+2, 'GTOTRFR   '               ,X0 ,O  ,X1 );
68030        ICODE(PGETTOTAL   , 'SA5 X1    ', QGETTOTAL    ,X1 ,O  ,X5 );
68040        QCODE(QGETTOTAL   , 'AX1 42    ', QGETTOTAL+1);
68050        QCODE(QGETTOTAL+1 , 'SA3 X1    ', QGETTOTAL+2);
68060        QCODE(QGETTOTAL+2 , 'AX3 47    ', QGETTOTAL+3);
68070        QCODE(QGETTOTAL+3 , 'NZ  X3,2* ', QGETTOTAL+4);
68080        OCODE(QGETTOTAL+4 , 'SAVGARB   '               ,O  ,O  ,O  );
68090  (*+61()
68100        ICODE(PGETTOTAL+1 , 'SA4 X1    ', QGETTOTAL+5  ,X1 ,O  ,X45);
68110        QCODE(QGETTOTAL+5 , 'SA5 A4+B1 ', QGETTOTAL+1);
68120  ()+61*)
68130        OCODE(PGETTOTAL+2 , 'GTOTP     '               ,X0 ,O  ,X6 );
68140        OCODE(PGETTOTAL+3 , 'GTOTN     '               ,X0 ,O  ,X6 );
68150        OCODE(PGETTOTAL+4 , 'GTOTREF   '               ,X0 ,O  ,X6 );
68152        OCODE(PGETMULT    , 'GETMULT   '               ,X0 ,O  ,X6 );
68154        OCODE(PGETMULT+1  , 'GETSLN    '               ,X0 ,O  ,X6 );
68160        OCODE(PDEREF      , 'DREFS     '               ,X0 ,O  ,X6 );
68170        OCODE(PDEREF+2    , 'DREFPTR   '               ,X0 ,O  ,X6 );
68180        OCODE(PDEREF+3    , 'DREFN     '               ,X0 ,O  ,X6 );
68190        OCODE(PDEREF+4    , 'DREFM     '               ,X0 ,O  ,X6 );
68200        OCODE(PSKIP       , 'SKIPS     '               ,O  ,O  ,X6 );
68210        OCODE(PSKIP+1     , 'SKIPPIL   '               ,O  ,O  ,X6 );
68220        OCODE(PSKIPSTRUCT , 'SKIPSTR   '               ,O  ,O  ,X6 );
68230        OCODE(PNIL        , 'NILP      '               ,O  ,O  ,X6 );
68240        ICODE(PVOIDNORMAL , 'SA3 X1    ', QVOIDNM      ,X1 ,O  ,O  );
68250        QCODE(QVOIDNM     , 'AX3 47    ', QVOIDNM1);
68260        QCODE(QVOIDNM1    , 'NZ  X3,3* ', QVOIDNM2);
68270        QCODE(QVOIDNM2    , 'SX0 A3    ', QVOIDNM3);
68280        OCODE(QVOIDNM3    , 'GARBAGE   '               ,O  ,O  ,O  );
68290        ICODE(PVOIDNAKED  , 'LX1 18    ', PVOIDNORMAL  ,X1 ,O  ,O  );
68300        ICODE(PWIDEN      , 'PX1 X1    ', QWIDEN       ,X1 ,O  ,X1 );
68310        QCODE(QWIDEN      , 'NX1 X1    ', 0);
68320        OCODE(PWIDEN+2    , 'WIDREAL   '               ,X0 ,O  ,X6 );
68330        OCODE(PWIDEN+4    , 'WIDCHAR   '               ,X0 ,O  ,X6 );
68340        OCODE(PWIDEN+5    , 'WIDBITS   '               ,X0 ,O  ,X6 );
68350        OCODE(PWIDEN+6    , 'WIDBYTS   '               ,X0 ,O  ,X6 );
68360        OCODE(PWIDEN+7    , 'WIDSTR    '               ,X0 ,O  ,X6 );
68370        OCODE(PROWNONMULT , 'ROWNM     '               ,X0 ,O  ,X6 );
68380        OCODE(PROWMULT    , 'ROWM      '               ,X0 ,O  ,X6 );
68390        ICODE(PCALL       , 'SX1 B0+   ', QCALL        ,SNS,O  ,O  );
68400        QCODE(QCALL       , 'SA5 X6    ', QCALL+1);
68410        QCODE(QCALL+1     , 'AX6 42    ', QCALL+2);
68420        QCODE(QCALL+2     , 'SB7 X5    ', QCALL+3);
68430        QCODE(QCALL+3     , 'SX7 2*    ', QCALL+4);
68440        QCODE(QCALL+4     , 'JP  B7    ', 0);
68450        ICODE(PCALLA      , 'SX6 B5+   ', QCALLA       ,SNS,O  ,O  );
68460        ICODE(PCALLA+1    , 'SX6 B2+   ', QCALLA       ,SNS,O  ,O  );
68470        ICODE(PCALLA+2    , 'SX6 X3+   ', QCALLA       ,SNS,O  ,O  );
68480        QCODE(QCALLA      , 'SA5 X2    ', QCALLA+1);
68490        QCODE(QCALLA+1    , 'SB7 X5    ', QCALLA+2);
68500        QCODE(QCALLA+2    , 'SX7 2*    ', QCALLA+3);
68510        QCODE(QCALLA+3    , 'JP  B7    ', 0);
68520        ICODE(PRNSTART    , 'SA6 B6    ', QRNSTART     ,O  ,O  ,O  );
68530        QCODE(QRNSTART    , 'BX3 X7    ', QRNSTART+1);
68540        QCODE(QRNSTART+1  , 'SX4 B0+   ', QRNSTART+2);
68550        OCODE(QRNSTART+2  , 'RNSTART   '               ,O  ,O  ,O  );
68560        OCODE(PRETURN     , 'RETURN    '               ,XN ,O  ,O  );
68570        OCODE(PGBSTK      , 'GBSTK     '               ,O  ,O  ,O  );
68580        OCODE(PGETOUT     , 'GETOUT    '               ,O  ,O  ,O  );
68590        ICODE(PSETIB      , 'SB5 X6    ', QSETIB       ,O  ,O  ,O  );
68600        QCODE(QSETIB      , 'LX6 18    ', QSETIB+1);
68610        QCODE(QSETIB+1    , 'SB6 X6    ', 0);
68620        OCODE(PLEAPGEN    , 'GENSTR    '               ,O  ,O  ,X6 );
68630        OCODE(PLEAPGEN+1  , 'HEAPSTR   '               ,O  ,O  ,X6 );
68640        OCODE(PLEAPGEN+2  , 'GENRSTR   '               ,O  ,O  ,X6 );
68650        OCODE(PLEAPGEN+3  , 'GENMUL    '               ,X0 ,O  ,X6 );
68660        OCODE(PLEAPGEN+4  , 'HEAPMUL   '               ,X0 ,O  ,X6 );
68670        OCODE(PLEAPGEN+5  , 'GENRMUL   '               ,X0 ,O  ,X6 );
68680        OCODE(PPREPSTRDISP, 'PCOLLST   '               ,O  ,O  ,X6 );
68690        OCODE(PPREPROWDISP, 'PCOLLR    '               ,STS,O  ,X6 );
68700        OCODE(PPREPROWDISP+1,'PCOLLRM   '              ,STS,O  ,X6 );
68710        OCODE(PCOLLCHECK  , 'PCOLLCK   '               ,X0 ,O  ,X6 );
68720  (**)
68730        END;
68740    PROCEDURE THIRDPART;
68750        BEGIN
68760        ICODE(PCOLLTOTAL  , 'SA4 B6-B1 ', QCOLLTOTAL   ,ST ,X6 ,ST );
68770        QCODE(QCOLLTOTAL  , 'SA6 X4+   ', 0);
68780        ICODE(PCOLLTOTAL+2, 'SA4 X6    ', QCOLLTOTAL+1 ,ST ,X6 ,ST );
68790        QCODE(QCOLLTOTAL+1, 'SX7 B1    ', QCOLLTOTAL+2);
68800        QCODE(QCOLLTOTAL+2, 'LX7 47    ', QCOLLTOTAL+3);
68810        QCODE(QCOLLTOTAL+3, 'IX7 X4+X7 ', QCOLLTOTAL+4);
68820        QCODE(QCOLLTOTAL+4, 'SA7 A4    ', PCOLLTOTAL);
68830        OCODE(PCOLLTOTAL+3, 'COLLTP    '               ,X0 ,X1 ,X6 );
68840        OCODE(PCOLLTOTAL+4, 'COLLTM    '               ,X0 ,X1 ,X6 );
68850        OCODE(PCOLLNAKED  , 'COLLNP    '               ,X0 ,X1 ,X6 );
68860        ICODE(PNAKEDPTR   , 'LX1 18    ', QNAKEDPTR    ,X1 ,O  ,X6 );
68862        QCODE(QNAKEDPTR   , 'SX6 X1    ', 0);
68870        ICODE(PLINE       , 'SX7   B0+ ', QLINE        ,O  ,O  ,O  );
68880        QCODE(QLINE       , 'SA7  B5+9 ', 0);
68890        OCODE(PENDSLICE   , 'ENDSL     '               ,X0 ,O  ,X0 );
68900        OCODE(PTRIM       , 'SLICEA    '               ,STP,O  ,O  );
68910        OCODE(PTRIM+1     , 'SLICEB    '               ,STP,O  ,O  );
68920        OCODE(PTRIM+2     , 'SLICEC    '               ,STP,O  ,O  );
68930        OCODE(PTRIM+3     , 'SLICED    '               ,STP,O  ,O  );
68940        OCODE(PTRIM+4     , 'SLICEE    '               ,STP,O  ,O  );
68950        OCODE(PTRIM+5     , 'SLICEF    '               ,STP,O  ,O  );
68960        OCODE(PTRIM+6     , 'SLICEG    '               ,STP,O  ,O  );
68970        OCODE(PTRIM+7     , 'SLICEH    '               ,STP,O  ,O  );
68980        OCODE(PTRIM+8     , 'SLICEI    '               ,STP,O  ,O  );
68990        OCODE(PTRIM+9     , 'SLICEJ    '               ,STP,O  ,O  );
69000        ICODE(PJMP        , 'EQ    B0, ', 0            ,O  ,O  ,O  );
69010        ICODE(PDUP1ST     , 'SA1 B6-B1 ', 0            ,STP,O  ,X1 );
69010        ICODE(PDUP1PILE   , 'SA1 B6-B1 ', 0            ,STP,O  ,X1 );
69020        ICODE(PDUP2ND     , 'SA1 B6-B1 ', 0            ,STP,X5P,X1 );
69020        ICODE(PDUP2PILE   , 'SA1 B6-B1 ', 0            ,STP,X5P,X1 );
69030  (*+61() ICODE(PDUP2ND+1   , 'SA1 B6-B1 ', 0            ,STP,X45,X1 ); ()+61*)
69040        ICODE(PDATALIST   , 'SX7 B0+   ', QPUSH+1      ,SNS,O  ,SDL);
69050        OCODE(PHOIST      , 'HOIST     '               ,O  ,O  ,O  );
69060        ICODE(PSTATICLINK , 'SX6 B5    ', 0            ,O  ,O  ,O  );
69070        ICODE(PASP        , 'SB6 B6-   ', 0            ,O  ,O  ,O  );
69080        ICODE(PLOADX5     , 'SA5   B5+ ', 0            ,O  ,O  ,O  );
69090        ICODE(PLOADX5+1   , 'SA5   B2+ ', 0            ,O  ,O  ,O  );
69100        ICODE(PLOADX5+2   , 'SA5   X3+ ', 0            ,O  ,O  ,O  );
69110        ICODE(PLOADX5IM   , 'SX5   B0+ ', 0            ,O  ,O  ,X5 );
69120        ICODE(PLOADX5IM+1 , 'SA5   B0+ ', 0            ,O  ,O  ,O  );
69130        ICODE(PPUSH       , 'SA4   B5+ ', QPUSH        ,O  ,O  ,O  );
69140        QCODE(QPUSH       , 'BX7 X4    ', QPUSH+1);
69150        QCODE(QPUSH+1     , 'SA7 B6    ', QPUSH+2);
69160        QCODE(QPUSH+2     , 'SB6 B6+B1 ', 0);
69170        ICODE(PPUSH+1     , 'SA4   B2+ ', QPUSH        ,O  ,O  ,O  );
69180        ICODE(PPUSH+2     , 'SA4   X3+ ', QPUSH        ,O  ,O  ,O  );
69190        ICODE(PPUSHIM     , 'SX7   B0+ ', QPUSH+1      ,O  ,O  ,ST );
69200        ICODE(PPUSHIM+1   , 'SA4   B0+ ', QPUSH        ,O  ,O  ,O  );
69210        ICODE(PLOADX0     , 'SA4 B5+   ', QLOADX0      ,O  ,O  ,O  );
69220        QCODE(QLOADX0     , 'BX0 X4    ', 0);
69230        ICODE(PLOADX0+1   , 'SA4 B2+   ', QLOADX0      ,O  ,O  ,O  );
69240        ICODE(PLOADX0+2   , 'SA4 X3+   ', QLOADX0      ,O  ,O  ,O  );
69250        ICODE(PLOADX1     , 'SA1 B5+   ', 0            ,O  ,O  ,O  );
69260        ICODE(PLOADX1+1   , 'SA1 B2+   ', 0            ,O  ,O  ,O  );
69270        ICODE(PLOADX1+2   , 'SA1 X3+   ', 0            ,O  ,O  ,O  );
69280        ICODE(PLOADX6     , 'SA4 B5+   ', QLOADX6      ,O  ,O  ,O  );
69290        QCODE(QLOADX6     , 'BX6 X4    ', 0);
69300        ICODE(PLOADX6+1   , 'SA4 B2+   ', QLOADX6      ,O  ,O  ,O  );
69310        ICODE(PLOADX6+2   , 'SA4 X3+   ', QLOADX6      ,O  ,O  ,O  );
69320        ICODE(PLOADX0IM   , 'SX0 B0+   ', 0            ,O  ,O  ,X0 );
69330        ICODE(PLOADX0IM+1 , 'SA4 B0+   ', QLOADX0      ,O  ,O  ,O  );
69340        ICODE(PLOADX1IM   , 'SX1 B0+   ', 0            ,O  ,O  ,X1 );
69350        ICODE(PLOADX1IM+1 , 'SA1 B0+   ', 0            ,O  ,O  ,O  );
69360        ICODE(PLOADX2IM   , 'SX2 B0+   ', 0            ,O  ,O  ,O  );
69370        ICODE(PLOADX2IM+1 , 'SA2 B0+   ', 0            ,O  ,O  ,O  );
69380        ICODE(PLOADX3IM   , 'SX3 B0+   ', 0            ,O  ,O  ,O  );
69390        ICODE(PLOADX3IM+1 , 'SA3 B0+   ', 0            ,O  ,O  ,O  );
69400        ICODE(PLOADX4IM   , 'SX4 B0+   ', 0            ,O  ,O  ,O  );
69410        ICODE(PLOADX4IM+1 , 'SA4 B0+   ', 0            ,O  ,O  ,O  );
69420        ICODE(PLOADX6IM   , 'SX6 B0+   ', 0            ,O  ,O  ,X6 );
69430        ICODE(PLOADX6IM+1 , 'SA4 B0+   ', QLOADX6      ,O  ,O  ,O  );
69440        ICODE(PPOPTOX0    , 'SB6 B6-B1 ', QPOPX0       ,O  ,O  ,O  );
69450        QCODE(QPOPX0      , 'SA4 B6    ', QLOADX0);
69460        ICODE(PPOPTOX1    , 'SB6 B6-B1 ', QPOPX1       ,O  ,O  ,O  );
69470        QCODE(QPOPX1      , 'SA1 B6    ', 0);
69480        ICODE(PPOPTOX6    , 'SB6 B6-B1 ', QPOPTOX6   ,O  ,O  ,O  );
69490        QCODE(QPOPTOX6    , 'SA4 B6    ', QLOADX6);
69500        ICODE(PX5TOX0     , 'BX0 X5    ', 0            ,X5 ,O  ,X0 );
69510        ICODE(PX5TOX1     , 'BX1 X5    ', 0            ,X5 ,O  ,X1 );
69520        ICODE(PX5TOX6     , 'BX6 X5    ', 0            ,X5 ,O  ,X6 );
69530        ICODE(PPUSHX6     , 'SA6 B6    ', QPUSH+2      ,X6 ,O  ,O  );
69540        ICODE(PX6TOX5     , 'BX5 X6    ', 0            ,X6 ,O  ,X5 );
69550        ICODE(PX6TOX0     , 'BX0 X6    ', 0            ,X6 ,O  ,X0 );
69560        ICODE(PX6TOX1     , 'BX1 X6    ', 0            ,X6 ,O  ,X1 );
69570        ICODE(PPUSHX5     , 'BX7 X5    ', QPUSH+1     ,X5 ,O  ,O  );
69580        ICODE(PPOPTOX5    , 'SB6 B6-B1 ', QPOP1        ,O  ,O  ,O  );
69590        QCODE(QPOP1       , 'SA5 B6    ', 0);
69600        ICODE(PPUSHX0     , 'BX7 X0    ', QPUSH+1     ,X0 ,O  ,O  );
69610        ICODE(PPUSHX1     , 'BX7 X1    ', QPUSH+1     ,X1 ,O  ,O  );
69620        ICODE(PX1TOX5     , 'BX5 X1    ', 0            ,X1 ,O  ,X5 );
69630        ICODE(PX1TOX6     , 'BX6 X1    ', 0            ,X1 ,O  ,X6 );
69640        ICODE(PX1TOX0     , 'BX0 X1    ', 0            ,X1 ,O  ,X0 );
69650        ICODE(PSWAP       , 'BX3 X1    ', QSWAP        ,O  ,O  ,O  );
69660        QCODE(QSWAP       , 'BX1 X5    ', QSWAP1);
69670        QCODE(QSWAP1      , 'BX5 X3    ', 0);
69680  (*+61()
69690        ICODE(PPUSH2      , 'SA3 B5+   ', QPUSH2       ,O  ,O  ,O  );
69700        QCODE(QPUSH2      , 'BX7 X3    ', QPUSH2+1);
69710        QCODE(QPUSH2+1    , 'SA7 B6    ', QPUSH2+2);
69720        QCODE(QPUSH2+2    , 'SA3 A3+B1 ', QPUSH2+3);
69730        QCODE(QPUSH2+3    , 'BX7 X3    ', QPUSH2+4);
69740        QCODE(QPUSH2+4    , 'SA7 A7+B1 ', QPUSH2+5);
69750        QCODE(QPUSH2+5    , 'SB6 A7+B1 ', 0);
69760        ICODE(PPUSH2+1    , 'SA3 B2+   ', QPUSH2       ,O  ,O  ,O  );
69770        ICODE(PPUSH2+2    , 'SA3 X3+   ', QPUSH2       ,O  ,O  ,O  );
69780        ICODE(PLOADX12    , 'SA1 B5+   ', QLOADX12     ,O  ,O  ,O  );
69790        QCODE(QLOADX12    , 'SA2 A1+B1 ', 0);
69800        ICODE(PLOADX12+1  , 'SA1 B2+   ', QLOADX12     ,O  ,O  ,O  );
69810        ICODE(PLOADX12+2  , 'SA1 X3+   ', QLOADX12     ,O  ,O  ,O  );
69820        ICODE(PLOADX45    , 'SA4 B5+   ', QLOADX45     ,O  ,O  ,O  );
69830        QCODE(QLOADX45    , 'SA5 A4+B1 ', 0);
69840        ICODE(PLOADX45+1  , 'SA4 B2+   ', QLOADX45     ,O  ,O  ,O  );
69850        ICODE(PLOADX45+2  , 'SA4 X3+   ', QLOADX45     ,O  ,O  ,O  );
69860        ICODE(PPUSHX12    , 'BX7 X1    ', QPUSHX12     ,O  ,O  ,O  );
69870        QCODE(QPUSHX12    , 'SA7 B6    ', QPUSHX12+1);
69880        QCODE(QPUSHX12+1  , 'BX7 X2    ', QPUSH2+4);
69890        ICODE(PPUSHX45    , 'BX7 X4    ', QPUSHX45     ,O  ,O  ,O  );
69900        QCODE(QPUSHX45    , 'SA7 B6    ', QPUSHX45+1);
69910        QCODE(QPUSHX45+1  , 'BX7 X5    ', QPUSH2+4);
69920        ICODE(PPOPTOX12   , 'SA2 B6-B1 ', QPOPTOX12    ,O  ,O  ,O  );
69930        QCODE(QPOPTOX12   , 'SA1 A2-B1 ', QPOPTOX12+1);
69940        QCODE(QPOPTOX12+1 , 'SB6 A1    ', 0);
69950        ICODE(PPOPTOX45   , 'SA5 B6-B1 ', QPOPTOX45    ,O  ,O  ,O  );
69960        QCODE(QPOPTOX45   , 'SA4 A5-B1 ', QPOPTOX45+1);
69970        QCODE(QPOPTOX45+1 , 'SB6 A4    ', 0);
69980        ICODE(PX12TOX45   , 'BX4 X1    ', QX12TOX45    ,O  ,O  ,O  );
69990        QCODE(QX12TOX45   , 'BX5 X2    ', 0);
70000        ICODE(PX45TOX12   , 'BX1 X4    ', QX45TOX12    ,O  ,O  ,O  );
70010        QCODE(QX45TOX12   , 'BX2 X5    ', 0);
70020  ()+61*)
70030        ICODE(PDECM       , 'SX7 B0+   ', 0            ,O  ,O  ,O  );
70040        ICODE(PDECM+1     , 'SA3 B5+   ', QDECM        ,O  ,O  ,O  );
70050        QCODE(QDECM       , 'MX4 25    ', QDECM+1);
70060        QCODE(QDECM+1     , 'BX3 -X4*X3', QDECM+2);
70070        QCODE(QDECM+2     , 'LX7 35    ', QDECM+3);
70080        QCODE(QDECM+3     , 'BX7 X3+X7 ', QDECM+4);
70090        QCODE(QDECM+4     , 'SA7 A3    ', 0);
70100        END;
70110   (* *** CHANGES TO BE MADE ON PERQ  ***  *)
70120   (*     PPARM , PPARM+1, PLOADRTA, PDECM *)
70130   (*     PCALLA, PRANGENT, PDCLINIT       *)
70140    PROCEDURE INITPOPARRAY;
70150      VAR I, J:SBTTYP;
70160        BEGIN
70170        FOR I := SBTSTK TO SBTX1 DO
70180          FOR J:= SBTVOID TO SBTX1 DO POPARRAY [I, J] := PNONE;
70190        FOR I := SBTSTK TO SBTX1 DO
70200          BEGIN
70210          POPARRAY [I,I] := PNOOP;
70220          POPARRAY [I,SBTVOID] := PNOOP;
70230          POPARRAY [I,SBTVAR] := PLOADVAR;
70240          POPARRAY [I,SBTPROC] := PLOADRTA;
70250          POPARRAY [I,SBTRPROC]:= PLOADRTA;
70260          END;
70270  (*+61()
70280        POPARRAY [SBTSTK  , SBTSTK2 ] := PVARLISTEND+1;
70290        POPARRAY [SBTX12  , SBTX1   ] := PNOOP;
70300        POPARRAY [SBTSTK  , SBTX12  ] := PPUSHX1;
70310        POPARRAY [SBTSTK  , SBTX45  ] := PPUSHX5;
70320        POPARRAY [SBTSTK2 , SBTID   ] := PPUSH2;
70330        POPARRAY [SBTSTK2 , SBTIDV  ] := PPUSH2;
70340        POPARRAY [SBTSTK2 , SBTX12  ] := PPUSHX12;
70350        POPARRAY [SBTSTK2 , SBTX45  ] := PPUSHX45;
70360        POPARRAY [SBTX12  , SBTID   ] := PLOADX12;
70370        POPARRAY [SBTX12  , SBTIDV  ] := PLOADX12;
70380        POPARRAY [SBTX12  , SBTSTK2 ] := PPOPTOX12;
70390        POPARRAY [SBTX12  , SBTX45  ] := PX45TOX12;
70400        POPARRAY [SBTX45  , SBTID   ] := PLOADX45;
70410        POPARRAY [SBTX45  , SBTIDV  ] := PLOADX45;
70420        POPARRAY [SBTX45  , SBTSTK2 ] := PPOPTOX45;
70430        POPARRAY [SBTX45  , SBTX12  ] := PX12TOX45;
70440  ()+61*)
70450        POPARRAY [SBTSTK  , SBTID   ] := PPUSH;
70460        POPARRAY [SBTSTK  , SBTIDV  ] := PPUSH;
70470        POPARRAY [SBTSTK  , SBTLIT  ] := PPUSHIM;
70480        POPARRAY [SBTSTK  , SBTDEN  ] := PPUSHIM;
70490        POPARRAY [SBTSTK  , SBTX5   ] := PPUSHX5;
70500        POPARRAY [SBTSTK  , SBTX6   ] := PPUSHX6;
70510        POPARRAY [SBTSTK  , SBTX0   ] := PPUSHX0;
70520        POPARRAY [SBTSTK  , SBTX1   ] := PPUSHX1;
70530        POPARRAY [SBTX5   , SBTID   ] := PLOADX5;
70540        POPARRAY [SBTX5   , SBTIDV  ] := PLOADX5;
70550        POPARRAY [SBTX5   , SBTLIT  ] := PLOADX5IM;
70560        POPARRAY [SBTX5   , SBTDEN  ] := PLOADX5IM;
70570        POPARRAY [SBTX5   , SBTSTK  ] := PPOPTOX5;
70580        POPARRAY [SBTX5   , SBTX6   ] := PX6TOX5;
70590        POPARRAY [SBTX5   , SBTX1   ] := PX1TOX5;
70600        POPARRAY [SBTX6   , SBTID   ] := PLOADX6;
70610        POPARRAY [SBTX6   , SBTIDV  ] := PLOADX6;
70620        POPARRAY [SBTX6   , SBTLIT  ] := PLOADX6IM;
70630        POPARRAY [SBTX6   , SBTDEN  ] := PLOADX6IM;
70640        POPARRAY [SBTX6   , SBTSTK  ] := PPOPTOX6;
70650        POPARRAY [SBTX6   , SBTX5   ] := PX5TOX6;
70660        POPARRAY [SBTX6   , SBTX1   ] := PX1TOX6;
70670        POPARRAY [SBTX0   , SBTID   ] := PLOADX0;
70680        POPARRAY [SBTX0   , SBTIDV  ] := PLOADX0;
70690        POPARRAY [SBTX0   , SBTLIT  ] := PLOADX0IM;
70700        POPARRAY [SBTX0   , SBTDEN  ] := PLOADX0IM;
70710        POPARRAY [SBTX0   , SBTSTK  ] := PPOPTOX0;
70720        POPARRAY [SBTX0   , SBTX5   ] := PX5TOX0;
70730        POPARRAY [SBTX0   , SBTX6   ] := PX6TOX0;
70740        POPARRAY [SBTX0   , SBTX1   ] := PX1TOX0;
70750        POPARRAY [SBTX1   , SBTID   ] := PLOADX1;
70760        POPARRAY [SBTX1   , SBTIDV  ] := PLOADX1;
70770        POPARRAY [SBTX1   , SBTLIT  ] := PLOADX1IM;
70780        POPARRAY [SBTX1   , SBTDEN  ] := PLOADX1IM;
70790        POPARRAY [SBTX1   , SBTSTK  ] := PPOPTOX1;
70800        POPARRAY [SBTX1   , SBTX5   ] := PX5TOX1;
70810        POPARRAY [SBTX1   , SBTX6   ] := PX6TOX1;
70820        END;
70830    PROCEDURE INITLENARRAY;
70840      VAR I: SBTTYP;
70850        BEGIN
70860        FOR I := SBTSTK TO SBTX1 DO LENARRAY[I] := 0;
70870        LENARRAY[SBTSTK ] := SZWORD;
70880  (*+61()
70890        LENARRAY[SBTSTK2] := 2*SZWORD;
70900        LENARRAY[SBTX12 ] := 2*SZWORD;
70910        LENARRAY[SBTX45 ] := 2*SZWORD;
70920  ()+61*)
70930        LENARRAY[SBTX5  ] := SZWORD;
70940        LENARRAY[SBTX6  ] := SZWORD;
70950        LENARRAY[SBTX0  ] := SZWORD;
70960        LENARRAY[SBTX1  ] := SZWORD;
70970        END;
70980    PROCEDURE INITREGISTERS;
70990      VAR I: SBTTYP;
71000        BEGIN
71010        FOR I := SBTVOID TO SBTX1 DO REGISTERS[I] := [];
71020        REGISTERS[SBTDL   ] := [SBTX1];
71030        REGISTERS[SBTX5   ] := [SBTX5];
71040        REGISTERS[SBTX6   ] := [SBTX6];
71050        REGISTERS[SBTX0   ] := [SBTX0];
71060        REGISTERS[SBTX1   ] := [SBTX1];
71070  (*+61()
71080        REGISTERS[SBTX12  ] := [SBTX1]; (*THERE IS NO SBTX2+)
71090        REGISTERS[SBTX45  ] := [SBTX5]; (*THERE IS NO SBTX4+)
71100  ()+61*)
71110        END;
71120      BEGIN (*INITCODES*)
71130      FIRSTPART; SECONDPART; THIRDPART; INITPOPARRAY; INITLENARRAY; INITREGISTERS;
71140      END;
71150  (**)
71160  (**)
71170  (**)
71180  (**)
71190  (**)
71200  BEGIN
71210          LINELIMIT(OUTPUT,10000); LINELIMIT(LSTFILE,10000);
71220          DUMP(FIRSTSTACK);
71230  (*-01() DUMP(FIRSTSTACK,LASTSTACK); ()-01*)
71240  END    (*$G-*)    .
####S