1135 lines
		
	
	
	
		
			62 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			1135 lines
		
	
	
	
		
			62 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
| 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
 |