ack/lang/a68s/aem/perqcod.p
1988-10-04 10:56:50 +00:00

717 lines
47 KiB
OpenEdge ABL

40000 (* COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER *)
40001 THINGS NEEDING ATTENTION
40002 CHECK THE START OF THE LOCAL POPS
40003 ATTEND TO PDUP1PILE AND P2DUP2PILE
40010 (**)
40020 (**)
40040 (*+05()
40050 (*+86()
40100 (*************************)
40110 (* MEANING OF PARAMTYPES *)
40120 (*************************)
40130 (**)
40140 (* OPX - OPERAND SUPPLIED BY CODE GENERATOR
40150 ONX - NEGATIVE OF OPERAND SUPPLIED BY CODE GENERATOR
40160 LCX - LOCAL INSTRUCTION LABEL
40170 GBX - GLOBAL INSTRUCTION LABEL
40180 WOP - OPERAND SUPPLIED BY CODETABLE
40190 WNP - NEGATIVE OF OPERAND SUPPLIED BY CODETABLE
40200 NON - NO OPERAND
40210 JMP - FORWARD JUMP WITHIN CODETABLE
40220 ANP - AS WNP, BUT PROVIDES LAST OPERAND FOR AN OCODE
40230 ACP - AS WOP, BUT DITTO
40240 ACX - AS OPX, BUT DITTO
40250 ANX - AS ONX, BUT DITTO
40252 MOR - LONG OPERAND TO BE FOUND IN THE NEXT OPCOD
40260 *)
40270 (**)
46726 (**)
46728 PROCEDURE INITCODES;
46730 (*INITIALISES CODETABLE+)
46732 CONST
46734 (**)
46736 PLOADRTA(*3*)=194; PDEPROC=197;
46737 PLOADE(*3*)=198; PLOADEIM(*2*)=201; PETOSTK(*3*)=203; PS4TOS2=206; PPUSHIM2(*2*)=207;
46738 PPUSHFSTK=209; PPUSHFSTK1=210; PLOADF=211; PLOADF1=212; QPUSHIM2(*2*)=213;
46739 PLOADFIM=215; PLOADFIM1=216; PLOADFSTK=217; PLOADFSTK1=218; PSTOS4=219; PPUSHF=220; PPUSHF1=221;
46740 PF0TOF1=222; PF1TOF0=223; PPUSH2(*3*)=224; PSTOS2=227; PPUSHER0=228; PLOADER0F0=229; PLOADER0F1=230;
46741 PLOADER0STK=231; QPUSHER0(*2*)=232; QLPINIT(*8*)=234; QDIV(*2*)=242; QCALL(*8*)=244;
46742 QABSI(*7*)=252;
46743 QRNSTART=259; QHOIST(*3*)=260; QSCOPEVAR(*6*)=263; QENVCHAIN=269;
46744 QIPUSH=270; QODD=271; QLEBT(*2*)=272; QLINE=274; QDATALIST=275; QGETPROC(*4*)=276;
46745 QNOTB=280; QPUSH1=281; QCAS(*3*)=282;
46746 QLOOPINCR(*6*)=285; QDCLSP(*4*)=291; QDCLINIT(*2*)=295;
46747 QELMBT(*5*)=297; QDUP1ST=302; QDUP2ND=303;
46748 QASGVART(*3*)=304; QRANGENT(*2*)=307;
46749 QNAKEDPTR=309; QLOADI=310; QADJSP2=311; QSTKTOE(*3+)=312; QADJSP4=315;
46750 QLOADF=316; QLOADF1=317; QLOADVAR(*6*)=318; QPUSH2(*4*)=324;
46751 QLOADRTA(*2*)=328; QCFSTRNG(*2*)=330; QRANGEXT(*3*)=332; QCALLA(*4*)=335;
46752 QSETIB=339; QSELECT(*3*)=340; (*SPARE(3)=343;*) QCOLLTOTAL(*11*)=346;
46753 QETOSTK(*6*)=357; QGETTOTAL(*5*)=363; (*SPARE(7)=368;*) QHEAVE(*6*)=375; QLOADER0STK(*6*)=381;
46754 QGETTOTCMN(*4*)=387; (*SPARE=391..400*)
46755 ST=SBTSTK; STP=SBTSTK; STS=SBTSTK;
46756 ST4=SBTSTK4; S4P=SBTSTK4; S4S=SBTSTK4;
46758 STN=SBTSTKN; SNP=SBTSTKN; SNS=SBTSTKN;
46760 PR1=SBTPR1; PR2=SBTPR2;
46761 FP0=SBTFPR0; FP1=SBTFPR1; FP2=SBTFPR2; FP3=SBTFPR3; F0P=SBTFPR0;
46764 XN=SBTXN;
46770 O=SBTVOID; SDL=SBTDL; E=SBTE; ER0=SBTER0;
46780 (*+)
46790 PROCEDURE ICODE(OPCOD:POP;PERQCODE:MNEMONICS;TYP:PARAMTYPES;PM:INTEGER;PNXT:POP;VP1,VP2,VPR: SBTTYP);
46800 BEGIN
46810 WITH CODETABLE[OPCOD] DO
46820 BEGIN
46830 INLINE := TRUE;
46840 PERQCOD := PERQCODE;
46850 P1 := VP1;
46860 P2 := VP2;
46870 PR := VPR;
46880 NEXT := PNXT;
46890 PARTYP := TYP;
46900 PARM := PM;
46930 END;
46950 END;
46960 (*+)
46970 PROCEDURE QCODE(OPCOD:POP;PERQCODE:MNEMONICS;TYP:PARAMTYPES;PM:INTEGER;PNXT:POP);
46980 BEGIN
46990 ICODE(OPCOD,PERQCODE,TYP,PM,PNXT,O,O,O);
47000 END;
47010 (*+)
47020 PROCEDURE OCODE(OPCOD:POP;PROUTINE:ALFA;VP1,VP2,VPR:SBTTYP);
47030 VAR I:INTEGER;
47040 BEGIN
47050 WITH CODETABLE[OPCOD] DO
47060 BEGIN
47070 INLINE := FALSE;
47080 P1 := VP1;
47090 P2 := VP2;
47100 PR := VPR;
47110 IF (P1=O) AND (P2 <> O) THEN WRITELN(OUTPUT,'FAILED OCODE-A');
47120 FOR I := 1 TO 7 DO
47124 ROUTINE[I] := PROUTINE[I];
47130 END;
47140 END;
47150 PROCEDURE FIRSTPART;
47160 VAR I:INTEGER;
47170 BEGIN
47180 FOR I := PNONE TO PLAST DO OCODE(I,'DUMMY ',O,O,O);
47182 OCODE(PPBEGIN+1 , 'ESTART_ ' , O , O , O );
47185 OCODE(PPBEGIN , 'START68 ' , O , O , O );
47190 OCODE(PPEND , 'STOP68 ' , O , O , O );
47210 ICODE(PABSI , 'DUPL ' , NON , 0 ,QABSI , E , O , E );
47215 QCODE(QABSI , 'CI ' , WOP , 0 ,QABSI+1 );
47220 QCODE(QABSI+1 , 'IJGE ' , JMP , 2 ,QABSI+2 );
47230 QCODE(QABSI+2 , 'INEG ' , NON , 0 ,0 );
47240 ICODE(PABSI-2 , 'CI ' , WOP , 0 ,QABSI+3 ,FP0, O ,FP0);
47250 QCODE(QABSI+3 , 'FLOAT ' , WOP , 3 ,QABSI+4);
47260 QCODE(QABSI+4 , 'RGE 0,3 ' , NON , 0 ,QABSI+5);
47270 QCODE(QABSI+5 , 'JTRUE ' , JMP , 2 ,QABSI+6);
47272 QCODE(QABSI+6 , 'RNEG ' , WOP , 0 ,0);
47274 OCODE(PABSI-4 , 'CABSI ' ,PR1,O ,E );
47280 ICODE(PABSB , 'NULL ' , NON , 0 ,0 , E , O , E );
47290 ICODE(PABSB-1 , 'NULL ' , NON , 0 ,0 , E , O , E );
47300 ICODE(PABSCH , 'NULL ' , NON , 0 ,0 ,ST , O ,ST );
47310 ICODE(PADD , 'IADD ' , NON , 0 ,0 , E , E , E );
47320 ICODE(PADD-2 , 'RADD 0,1' , NON , 0 ,0 ,FP0,FP1,FP0);
47325 OCODE(PADD-4 , 'CPLUS ' ,PR1,PR2, E );
47330 (*+61()
47340 ICODE(PADD-3 , '?ADD-3 ' , WOP , 8 ,0 ,ST4,ST4,ST4);
47350 ()+61+)
47360 ICODE(PANDB , 'ILAND ' , NON , 0 ,0 , E , E , E );
47370 ICODE(PANDB-1 , 'ILAND ' , NON , 0 ,0 , E , E , E );
47375 OCODE(PARG , 'CARG ' ,PR1, O , E );
47380 ICODE(PBIN , 'NULL ' , NON , 0 ,0 , E , O , E );
47390 OCODE(PCAT , 'CATCC ' ,PR1,PR2, E );
47400 OCODE(PCAT-1 , 'CATSS ' ,PR1,PR2, E );
47405 OCODE(PCONJ , 'CCONJ ' ,PR1, O , E );
47410 ICODE(PDIV , 'FLOAT ' , WOP , 3 ,QDIV , E , E ,FP0);
47412 QCODE(QDIV , 'FLOAT ' , WOP , 0 ,QDIV+1);
47414 QCODE(QDIV+1 , 'RDIV 0,3' , NON , 0 ,0);
47420 ICODE(PDIV-2 , 'RDIV 0,1' , NON , 0 ,0 ,FP0,FP1,FP0);
47425 OCODE(PDIV-4 , 'CDIV ' ,PR1,PR2, E );
47430 ICODE(PDIVAB , 'RDIV 0,1' , NON , 0 ,0 ,FP0,FP1,FP0);
47435 OCODE(PDIVAB-2 , 'CDIVAB ' ,PR1,PR2, E );
47440 ICODE(PELMBT , 'EXCH ' , NON , 0 ,QELMBT , E , E , E );
47450 QCODE(QELMBT , 'CI ' , WOP , 1 ,QELMBT+1);
47452 QCODE(QELMBT+1 , 'ISUB ' , NON , 0 ,QELMBT+2);
47460 QCODE(QELMBT+2 , 'ISLLT ' , NON , 0 ,QELMBT+3);
47470 QCODE(QELMBT+3 , 'CI ' , WOP , 0 ,QELMBT+4);
47472 QCODE(QELMBT+4 , 'IGT ' , NON , 0 ,0);
47480 OCODE(PELMBY , 'ELMBY ' ,PR1,PR2, E );
47490 OCODE(PENTI , 'ENTIER ' ,PR1, O , E );
47500 ICODE(PEQ , 'IEQ ' , NON , 0 ,0 , E , E , E );
47520 ICODE(PEQ-2 , 'REQ 0,1 ' , NON , 0 ,0 ,FP0,FP1, E );
47525 OCODE(PEQ-4 , 'CEQ ' ,PR1,PR2, E );
47530 ICODE(PEQB , 'IEQ ' , NON , 0 ,0 , E , E , E );
47540 ICODE(PEQB-1 , 'IEQ ' , NON , 0 ,0 , E , E , E );
47550 ICODE(PEQB-2 , 'IEQ ' , NON , 0 ,0 , E , E , E );
47560 ICODE(PEQCS , 'IEQ ' , NON , 0 ,0 , E , E , E );
47570 ICODE(PEQCS-1 , 'CI ' , ACP , 2 ,QCFSTRNG ,PR1,PR2, E );
47590 OCODE(PEXP , 'POWI ' ,PR1,PR2, E );
47600 OCODE(PEXP-2 , 'POWR ' ,PR1,PR2,FP0);
47605 OCODE(PEXP-4 , 'CPOW ' ,PR1,PR2, E );
47610 ICODE(PPASC , 'CALL ' , OPX , 0 ,0 ,SDL, O , E );
47620 ICODE(PPASC+1 , 'CALL ' , OPX , 0 ,0 ,PR1, O , E );
47670 ICODE(PGE , 'ILE ' , NON , 0 ,0 , E , E , E );
47680 ICODE(PGE-2 , 'RGE 0,1 ' , NON , 0 ,0 ,FP0,FP1, E );
47690 ICODE(PGEBT , 'EXCH ' , NON , 0 ,PLEBT , E , E , E );
47700 ICODE(PGEBT-1 , 'ILE ' , NON , 0 ,0 , E , E , E );
47710 ICODE(PGECS , 'ILE ' , NON , 0 ,0 , E , E , E );
47720 ICODE(PGECS-1 , 'CI ' , ACP , 4 ,QCFSTRNG ,PR1,PR2, E );
47740 ICODE(PGT , 'ILT ' , NON , 0 ,0 , E , E , E );
47760 ICODE(PGT-2 , 'RGT 0,1 ' , NON , 0 ,0 ,FP0,FP1, E );
47770 ICODE(PGTBY , 'ILT ' , NON , 0 ,0 , E , E , E );
47780 ICODE(PGTCS , 'ILT ' , NON , 0 ,0 , E , E , E );
47790 ICODE(PGTCS-1 , 'CI ' , ACP , 5 ,QCFSTRNG ,PR1,PR2, E );
47795 OCODE(PIM , 'CIM ' ,PR1, O , E );
47800 ICODE(PLE , 'IGE ' , NON , 0 ,0 , E , E , E );
47820 ICODE(PLE-2 , 'RLE 0,1 ' , NON , 0 ,0 ,FP0,FP1, E );
47830 ICODE(PLEBT , 'ILNOT ' , NON , 0 ,QLEBT , E , E , E );
47832 QCODE(QLEBT , 'ILAND ' , NON , 0 ,QLEBT+1);
47834 QCODE(QLEBT+1 , 'INOT ' , NON , 0 ,0);
47840 ICODE(PLEBT-1 , 'ILE ' , NON , 0 ,0 , E , E , E );
47850 ICODE(PLECS , 'IGE ' , NON , 0 ,0 , E , E , E );
47860 ICODE(PLECS-1 , 'CI ' , ACP , 1 ,QCFSTRNG ,PR1,PR2, E );
47920 ICODE(PLT , 'IGT ' , NON , 0 ,0 , E , E , E );
47940 ICODE(PLT-2 , 'RLT 0,1 ' , NON , 0 ,0 ,FP0,FP1, E );
47950 ICODE(PLTBY , 'IGT ' , NON , 0 ,0 , E , E , E );
47960 ICODE(PLTCS , 'IGT ' , NON , 0 ,0 , E , E , E );
47970 ICODE(PLTCS-1 , 'CI ' , ACP , 0 ,QCFSTRNG ,PR1,PR2, E );
47980 OCODE(PLWBMSTR , 'LWBMSTR ' ,PR1, O , E );
47990 OCODE(PLWBM , 'LWBM ' ,PR1, O , E );
48000 OCODE(PLWB , 'LWB ' ,PR1,PR2, E );
48010 ICODE(PMINUSAB , 'ISUB ' , NON , 0 ,0 , E , E , E );
48020 ICODE(PMINUSAB-2 , 'RSUB 0,1' , NON , 0 ,0 ,FP0,FP1,FP0);
48025 OCODE(PMINUSAB-4 , 'CMINAB ' ,PR1,PR2, E );
48030 OCODE(PMOD , 'MOD ' ,PR1,PR2, E );
48040 OCODE(PMODAB , 'MOD ' ,PR1,PR2, E );
48050 ICODE(PMUL , 'IMULT ' , NON , 0 ,0 , E , E , E );
48060 ICODE(PMUL-2 , 'RMULT 0,' , WOP , 1 ,0 ,FP0,FP1,FP0);
48070 (*+61()
48080 ICODE(PMUL-3 , '?MUL-3 ' , WOP , 8 ,0 ,ST4,ST4,ST4);
48090 ()+61+)
48095 OCODE(PMUL-4 , 'CTIMS ' ,PR1,PR2, E );
48100 OCODE(PMULCI , 'MULCI ' ,PR1,PR2, E );
48110 OCODE(PMULCI-1 , 'MULSI ' ,PR1,PR2, E );
48120 OCODE(PMULIC , 'MULIC ' ,PR1,PR2, E );
48130 OCODE(PMULIC-1 , 'MULIS ' ,PR1,PR2, E );
48140 END;
48150 PROCEDURE SECONDPART;
48160 BEGIN
48170 ICODE(PNE , 'INE ' , NON , 0 ,0 , E , E , E );
48190 ICODE(PNE-2 , 'RNE 0,1 ' , NON , 0 ,0 ,FP0,FP1, E );
48195 OCODE(PNE-4 , 'CNE ' ,PR1,PR2, E );
48210 ICODE(PNEB , 'INE ' , NON , 0 ,0 , E , E , E );
48220 ICODE(PNEB-1 , 'INE ' , NON , 0 ,0 , E , E , E );
48230 ICODE(PNEB-2 , 'INE ' , NON , 0 ,0 , E , E , E );
48240 ICODE(PNECS , 'INE ' , NON , 0 ,0 , E , E , E );
48250 ICODE(PNECS-1 , 'CI ' , ACP , 3 ,QCFSTRNG ,PR1,PR2, E );
48252 ICODE(PNEGI , 'INEG ' , NON , 0 ,0 , E , O , E );
48260 ICODE(PNEGI-2 , 'RNEG ' , WOP , 0 ,0 ,FP0, O ,FP0);
48265 OCODE(PNEGI-4 , 'CNEGI ' ,PR1,PR2, E );
48270 ICODE(PNOTB , 'INOT ' , NON , 0 ,0 , E , O , E );
48290 ICODE(PNOTB-1 , 'ILNOT ' , NON , 0 ,0 , E , O , E );
48300 ICODE(PNOOP , 'NULL ' , NON , 0 ,0 , E , O ,ST );
48310 ICODE(PNOOP-2 , 'NULL ' , NON , 0 ,0 ,FP0, O ,ST );
48320 ICODE(PNOOP-4 , 'NULL ' , NON , 0 ,0 , E , O ,ST );
48330 ICODE(PODD , 'CI ' , WOP , 1 ,QODD , E , O , E );
48340 QCODE(QODD , 'ILAND ' , NON , 0 ,0 );
48350 ICODE(PORB , 'ILOR ' , NON , 0 ,0 , E , E , E );
48360 ICODE(PORB-1 , 'ILOR ' , NON , 0 ,0 , E , E , E );
48370 ICODE(POVER , 'IDIV ' , NON , 0 ,0 , E , E , E );
48380 ICODE(POVERAB , 'IDIV ' , NON , 0 ,0 , E , E , E );
48385 OCODE(PPLITM , 'CRCOMPLEX ' ,PR1,PR2, E );
48390 ICODE(PPLSAB , 'IADD ' , NON , 0 ,0 , E , E , E );
48400 ICODE(PPLSAB-2 , 'RADD 0,1' , NON , 0 ,0 ,FP0,FP1,FP0);
48410 (*+61()
48420 ICODE(PPLSAB-3 , '?PLSAB-3' , WOP , 8 ,0 ,ST4,ST4,ST4);
48430 ()+61+)
48435 OCODE(PPLSAB-4 , 'CPLUSAB ' ,PR1,PR2, E );
48440 OCODE(PPLSABS , 'PLABSS ' ,PR1,PR2, E );
48450 OCODE(PPLSABS-1 , 'PLABSS ' ,PR1,PR2, E );
48460 OCODE(PPLSTOCS , 'PLTOSS ' ,PR1,PR2, E );
48470 OCODE(PPLSTOCS-1 , 'PLTOSS ' ,PR1,PR2, E );
48475 OCODE(PRE , 'CRE ' ,PR1,O , E );
48480 ICODE(PREPR , 'NULL ' , NON , 0 ,0 , E , E , E );
48490 ICODE(PROUN , 'ROUND ' , WOP , 0 ,0 ,FP0, O , E );
48500 OCODE(PSGNI , 'SIGNI ' ,PR1, O , E );
48510 OCODE(PSGNI-2 , 'SIGNR ' ,PR1, O , E );
48520 OCODE(PSHL , 'SHL ' ,PR1,PR2, E );
48530 (*+61()
48540 ICODE(PSHRTR , '?SHRTR ' , WOP , 8 ,QSHRTR ,ST4, O ,ST2);
48550 QCODE(QSHRTR , 'RUBBISH ' , WOP , 4 ,QSHRTR+1 );
48560 QCODE(QSHRTR+1 , 'RUBBISH ' , NON , 0 ,0 );
48570 ()+61+)
48580 OCODE(PSHR , 'SHR ' ,PR1,PR2, E );
48590 ICODE(PSUB , 'ISUB ' , NON , 0 ,0 , E , E , E );
48600 ICODE(PSUB-2 , 'RSUB 0,1' , NON , 0 ,0 ,FP0,FP1, FP0);
48605 OCODE(PSUB-4 , 'CMINUS ' ,PR1,PR2, E );
48610 ICODE(PTIMSAB , 'IMULT ' , NON , 0 ,0 , E , E , E );
48620 ICODE(PTIMSAB-2 , 'RMULT 0,' , WOP , 1 ,0 ,FP0,FP1,FP0);
48630 (*+61()
48640 ICODE(PTIMSAB-3 , '?TIMSAB-' , WOP , 8 ,0 ,ST4,ST4,ST4);
48650 ()+61+)
48655 OCODE(PTIMSAB-4 , 'CTIMSAB ' ,PR1,PR2, E );
48660 OCODE(PTIMSABS , 'MULABSI ' ,PR1,PR2, E );
48670 OCODE(PUPBMSTR , 'UPBMSTR ' ,PR1, O , E );
48680 OCODE(PUPBM , 'UPBM ' ,PR1, O , E );
48690 OCODE(PUPB , 'UPB ' ,PR1,PR2, E );
48696 QCODE(QCFSTRNG , 'IPUSH ' , NON , 0 ,QCFSTRNG+1);
48700 OCODE(QCFSTRNG+1 , 'CFSTR ' , O , O , O );
48730 ICODE(PSELECT , ' SR0 ' , NON , 0 ,QSELECT , E , O ,ER0);
48731 QCODE(QSELECT , 'LRO0 ' , WOP , 6 ,PSELECT+2);
48734 ICODE(PSELECT+1 , ' SR0 ' , NON , 0 ,QSELECT+1 , E , O ,ER0);
48736 QCODE(QSELECT+1 , 'CI ' , OPX , 6 ,0);
48740 ICODE(PSELECT+2 , 'CI ' , OPX , 0 ,QSELECT+2 ,ER0, O ,ER0);
48742 QCODE(QSELECT+2 , 'IADD ' , NON , 0 ,0);
48760 OCODE(PSELECTROW , 'SELECTR ' ,PR1, O , E );
48770 OCODE(PSTRNGSLICE, 'STRSUB ' ,PR1,PR2, E );
48780 OCODE(PSTRNGSLICE+1, 'STRTRIM ' ,PR1, O , E );
48790 OCODE(PSTARTSLICE, 'STARTSL ' , O , O , O );
48800 OCODE(PSLICE1 , 'SLICE1 ' , E , E ,ER0);
48810 OCODE(PSLICE2 , 'SLICE2 ' , E , E ,ER0);
48820 OCODE(PSLICEN , 'SLICEN ' ,PR1, O ,FP0);
48822 ICODE(PCASE , 'JUMP ' , LCX , 0 ,0 , E , O , O );
48830 ICODE(PCASCOUNT , 'CI ' , WOP , 1 ,QCAS , O , O , O );
48840 QCODE(QCAS , 'ISUB ' , NON , 0 ,QCAS+1);
48842 QCODE(QCAS+1 , 'INDXJUMP' , NON , 0 ,QCAS+2);
48844 QCODE(QCAS+2 , 'ARG ' , OPX , 0 ,0);
48846 ICODE(PCASJMP , 'LAB ' , LCX , 0 ,0 , O , O , O );
48848 ICODE(PCASJMP+1 , 'JUMP ' , LCX , 0 ,0 , O , O , O );
48850 ICODE(PJMPF , 'JFALSE ' , LCX , 0 ,0 , E , O , O );
48860 ICODE(PLPINIT , 'LAS ' , ANX , 0 ,QLPINIT ,PR1, O , E );
48862 QCODE(QLPINIT , 'IPUSH ' , NON , 0 ,QLPINIT+1);
48864 OCODE(QLPINIT+1 , 'LINIT1 ' , O , O , O );
48870 ICODE(PLPINIT+1 , 'LAS ' , ANX , 0 ,QLPINIT+2 ,PR1, O , E );
48872 QCODE(QLPINIT+2 , 'IPUSH ' , NON , 0 ,QLPINIT+3);
48874 OCODE(QLPINIT+3 , 'LINIT2 ' , O , O , O );
48880 ICODE(PLPINIT+2 , 'LAS ' , ANX , 0 ,QLPINIT+4 ,PR1, O , O );
48882 QCODE(QLPINIT+4 , 'IPUSH ' , NON , 0 ,QLPINIT+5);
48884 OCODE(QLPINIT+5 , 'LINIT3 ' , O , O , O );
48890 ICODE(PLPINIT+3 , 'LAS ' , ANX , 0 ,QLPINIT+6 ,PR1, O , O );
48892 QCODE(QLPINIT+6 , 'IPUSH ' , NON , 0 ,QLPINIT+7);
48894 OCODE(QLPINIT+7 , 'LINIT4 ' , O , O , O );
48900 ICODE(PLPTEST , 'JFALSE ' , LCX , 0 ,0 , E , O , O );
48902 ICODE(PLPINCR , 'LAS ' , ANX , 0 ,QLOOPINCR+4 , O , O , E );
48904 QCODE(QLOOPINCR+4, 'IPUSH ' , NON , 0 ,QLOOPINCR+5);
48910 OCODE(QLOOPINCR+5, 'LOOPINC ' , O , O , O );
48920 ICODE(PLPINCR+1 , 'CI ' , WOP , 1 ,QLOOPINCR , O , O , E );
48930 QCODE(QLOOPINCR , 'LAS ' , ONX , 0 ,QLOOPINCR+1);
48940 QCODE(QLOOPINCR+1, 'OAADD ' , NON , 0 ,QLOOPINCR+2);
48950
48960 QCODE(QLOOPINCR+2, 'IL ' , ONX , 2 ,QLOOPINCR+3);
48964 QCODE(QLOOPINCR+3, 'IGE ' , NON , 0 ,0);
48966 ICODE(PRANGENT , 'LAS ' , ANX , 0 ,QRANGENT , O , O , O );
48968 QCODE(QRANGENT , 'IPUSH ' , NON , 0 ,QRANGENT+1);
48970 OCODE(QRANGENT+1 , 'RANGENT ' , O , O , O );
48980 OCODE(PRANGEXT , 'RANGEXT ' , O , O , O );
48990 ICODE(PRANGEXT+1 , 'IL ' , WNP ,(SIZIBBASE+SIZLEBBASE-8),QRANGEXT, O , O , O );
48992 QCODE(QRANGEXT , ' SR2 ' , NON , 0 ,QRANGEXT+1);
48994 QCODE(QRANGEXT+1 , 'LRO2 ' , WOP , 8 ,QRANGEXT+2);
49000 QCODE(QRANGEXT+2 , ' IS ' , WNP ,(SIZIBBASE+SIZLEBBASE-8),0 );
49020 OCODE(PRANGEXT+2 , 'RANGXTP ' ,STP, O , E );
49022 OCODE(PRECGEN , 'DORECGE ' , O , O , O );
49030 OCODE(PACTDRSTRUCT,'CRSTRUC ' , O , O , E );
49040 OCODE(PACTDRMULT , 'CRMULT ' ,PR1, O , E );
49050 OCODE(PCHECKDESC , 'CHKDESC ' ,PR1,PR2, E );
49080 OCODE(PVARLISTEND, 'GARBAGE ' ,PR1, O , O );
49090 ICODE(PVARLISTEND+1,'ASFW ' , WOP , 2 ,0 ,ST , O , O );
49096 ICODE(PDCLINIT , 'LGI ' , MOR , 0 ,QDCLINIT , O , O , O );
49097 QCODE(QDCLINIT , '_UNINT ' , NON , 0 ,0);
49098 ICODE(PDCLINIT+1 , 'LGI ' , MOR , 0 ,QDCLINIT+1 , O , O , O );
49099 QCODE(QDCLINIT+1 , '_UNDEFIN' , NON , 0 ,0);
49100 ICODE(PDCLINIT+2 , 'IS ' , ONX , 2 ,0 , O , O , O );
49106 ICODE(PPARM , 'IL ' , ONX , 0 ,QDCLSP , O , O , O );
49108
49110
49120 OCODE(PCREATEREF , 'CRREFN ' ,PR1, O , E );
49130 OCODE(PCREATEREF+1,'CRRECN ' ,PR1, O , E );
49140 OCODE(PCREATEREF+2,'CRREFR ' ,PR1, O , E );
49150 OCODE(PCREATEREF+3,'CRRECR ' ,PR1, O , E );
49160
49170 ICODE(PDCLSP , ' IS ' , ONX , 2 ,0 , E , O , O );
49180 ICODE(PDCLSP+1 , ' IS ' , ONX , 2 ,QDCLSP , E , O , O );
49190 QCODE(QDCLSP , 'CI ' , MOR , 0 ,QDCLSP+1 );
49200 QCODE(QDCLSP+1 , '65536 ' , NON , 0 ,QDCLSP+2 );
49230 QCODE(QDCLSP+2 , 'EXCH ' , NON , 0 ,QDCLSP+3 );
49232 QCODE(QDCLSP+3 , ' OAADD ' , NON , 0 ,0);
49240 OCODE(PDCLSP+2 , 'DCLSN ' ,SNS, O , O );
49250 OCODE(PDCLSP+3 , 'DCLPN ' ,SNS, O , O );
49252 ICODE(PFIXRG , 'LAS ' , ONX , 0 ,0 , O , O , O );
49254 ICODE(PFIXRG+1 , 'IS ' , ONX , 0 ,0 , O , O , O );
49260 END;
49270 PROCEDURE THIRDPART;
49280 BEGIN
49290 OCODE(PBOUNDS , 'BOUND ' ,STS, O , E );
49300 ICODE(PLOADVAR , 'LAS ' , ACP , 0 ,QLOADVAR , O , O , E );
49304 QCODE(QLOADVAR , 'LAS ' , ACX , 0 ,QLOADVAR+3);
49310 ICODE(PLOADVAR+1 , 'LROA3 ' , ACP ,250,QLOADVAR+1 , O , O , E );
49312 QCODE(QLOADVAR+1 , 'LROA3 ' , ACX ,250,QLOADVAR+3);
49320 ICODE(PLOADVAR+2 , 'LROA2 ' , ACP ,192,QLOADVAR+2 , O , O , E );
49322 QCODE(QLOADVAR+2 , 'LROA2 ' , ACX ,192,QLOADVAR+3);
49324 QCODE(QLOADVAR+3 , 'IPUSH ' , NON , 0 ,QLOADVAR+4);
49326 QCODE(QLOADVAR+4 , 'IPUSH ' , NON , 0 ,QLOADVAR+5);
49328 OCODE(QLOADVAR+5 , 'GLDVAR ' , O , O , O );
49330 OCODE(PLOADRT , 'ROUTN ' , O , O , E );
49331 ICODE(PLOADRTA , 'LAS ' , ACX , 0 ,QLOADRTA , O , O , E );
49332 ICODE(PLOADRTA+1 , 'LROA3 ' , ACX ,250,QLOADRTA , O , O , E );
49333 ICODE(PLOADRTA+2 , 'LROA2 ' , ACX ,192,QLOADRTA , O , O , E );
49334 QCODE(QLOADRTA , 'IPUSH ' , NON , 0 ,QLOADRTA+1);
49335 OCODE(QLOADRTA+1 , 'ROUTNA ' , O , O , O );
49336 OCODE(PLOADRTP , 'ROUTNP ' ,PR1, O , E );
49340 OCODE(PSCOPETT+2 , 'TASSTPT ' ,PR1,PR2, E );
49350 OCODE(PSCOPETT+3 , 'SCPTTP ' ,PR1,PR2, E );
49360 OCODE(PSCOPETT+4 , 'SCPTTM ' ,PR1,PR2, E );
49370 OCODE(PASSIGTT , 'TASSTS ' , E , E , E );
49372 OCODE(PASSIGTT+1 , 'TASSTS2 ' , E ,FP0, E );
49380 OCODE(PASSIGTT+2 , 'TASSTPT ' ,PR1,PR2, E );
49390 OCODE(PASSIGTT+3 , 'TASSTP ' ,PR1,PR2, E );
49400 OCODE(PASSIGTT+4 , 'TASSTM ' ,PR1,PR2, E );
49410 OCODE(PSCOPETN , 'SCPTNP ' ,PR1,PR2, E );
49420 OCODE(PASSIGTN , 'TASSNP ' ,PR1,PR2, E );
49430 OCODE(PSCOPENT+2 , 'SCPNTPT ' ,PR1,PR2,FP0);
49440 OCODE(PSCOPENT+3 , 'SCPNTP ' ,PR1,PR2,FP0);
49480 OCODE(PASSIGNT , 'NASSTS ' ,ER0, E ,ER0);
49490 OCODE(PASSIGNT+1 , 'NASSTS2 ' ,ER0,FP0,ER0);
49500 OCODE(PASSIGNT+2 , 'NASSTPP ' ,ER0, E ,ER0);
49520 OCODE(PASSIGNT+3 , 'NASSTP ' ,PR1,PR2,FP0);
49530
49540 OCODE(PSCOPENN , 'SCPNNP ' ,PR1,PR2,FP0);
49560 OCODE(PASSIGNN , 'NASSNP ' ,PR1,PR2,FP0);
49580 ICODE(PSCOPEVAR , 'LAS ' , ACP , 0 ,QSCOPEVAR ,PR1, O , O );
49584 QCODE(QSCOPEVAR , 'LAS ' , ACX , 0 ,QSCOPEVAR+3);
49590 ICODE(PSCOPEVAR+1, 'LROA3 ' , ACP ,250,QSCOPEVAR+1 ,PR1, O , O );
49591 QCODE(QSCOPEVAR+1, 'LROA3 ' , ACX ,250,QSCOPEVAR+3);
49592 ICODE(PSCOPEVAR+2, 'LROA2 ' , ACP ,192,QSCOPEVAR+2 ,PR1, O , O );
49594 QCODE(QSCOPEVAR+2, 'LROA2 ' , ACX ,192,QSCOPEVAR+3);
49596 QCODE(QSCOPEVAR+3, 'IPUSH ' , NON , 0 ,QSCOPEVAR+4);
49598 QCODE(QSCOPEVAR+4, 'IPUSH ' , NON , 0 ,QSCOPEVAR+5);
49600 OCODE(QSCOPEVAR+5, 'GVSCOPE ' , O , O , O );
49610 OCODE(PSCOPEEXT , 'SCOPEXT ' ,PR1, O , E );
49620 ICODE(PASGVART , ' IS ' , OPX , 0 ,0 ,E , O , O );
49630 ICODE(PASGVART+1 , ' SRO3 ' , OPX ,250,0 ,E , O , O );
49640 ICODE(PASGVART+2 , ' SRO2 ' , OPX ,192,0 ,E , O , O );
49660 ICODE(PASGVART+3 , 'LAS ' , OPX , 0 ,QASGVART ,FP0, O , O );
49671 QCODE(QASGVART , ' ASSD ' , WOP , 0 ,0 );
49680 ICODE(PASGVART+4 , 'LROA3 ' , OPX ,250,QASGVART ,FP0, O , O );
49690 ICODE(PASGVART+5 , 'LROA2 ' , OPX ,192,QASGVART ,FP0, O , O );
49710 ICODE(PASGVART+6 , 'LAS ' , ACX , 0 ,QASGVART+1 ,PR1, O , O );
49712 QCODE(QASGVART+1 , 'IPUSH ' , NON , 0 ,QASGVART+2);
49714 OCODE(QASGVART+2 , 'GVASSTX ' , O , O , O );
49720 ICODE(PASGVART+7 , 'LROA3 ' , ACX ,250,QASGVART+1 ,PR1, O , O );
49730 ICODE(PASGVART+8 , 'LROA2 ' , ACX ,192,QASGVART+1 ,PR1, O , O );
49740 OCODE(PIDTYREL , 'IS ' ,PR1,PR2, E );
49750 OCODE(PIDTYREL+1 , 'ISNT ' ,PR1,PR2, E );
49752 ICODE(PGETTOTCMN , 'LR0 ' , NON , 0 ,QGETTOTCMN ,ER0, O ,ER0);
49753 QCODE(QGETTOTCMN , 'IADD ' , NON , 0 ,0);
49754 ICODE(PGETTOTCMN+1, 'LRO0 ' , WOP , 2 ,QGETTOTCMN ,ER0, O ,ER0);
49755 ICODE(PGETTOTCMN+2, 'LRO0 ' , WOP , 4 ,QGETTOTCMN+1 ,ER0, O ,ER0);
49756 QCODE(QGETTOTCMN+1, 'SR1 ' , NON , 0 ,QGETTOTCMN+2);
49757 QCODE(QGETTOTCMN+2, 'JFALSE ' , JMP , 1 ,QGETTOTCMN+3);
49758 QCODE(QGETTOTCMN+3, 'LRO1 ' , WOP , 2 ,QGETTOTCMN);
49760 ICODE(PGETTOTAL , 'LI ' , NON , 0 ,QGETTOTAL ,ER0, O , E );
49761
49762
49763
49764 ICODE(PGETTOTAL+1, 'LDI ' , WOP , 0 ,QGETTOTAL ,ER0, O ,FP0);
49765
49766
49767
49768 QCODE(QGETTOTAL , 'LRO0 ' , WOP , 0 ,QGETTOTAL+1);
49769
49770 QCODE(QGETTOTAL+1, 'CI ' , MOR , 0 ,QGETTOTAL+2);
49771 QCODE(QGETTOTAL+2, '65536 ' , NON , 0 ,QGETTOTAL+3);
49772 QCODE(QGETTOTAL+3, 'IJGE ' , JMP , 2 ,QGETTOTAL+4);
49773 OCODE(QGETTOTAL+4, 'SAVGARB ' , O , O , O );
49774 OCODE(PGETTOTAL+2, 'GTOTP ' ,PR1, O , E );
49775 OCODE(PGETTOTAL+3, 'GTOTN ' ,PR1, O , E );
49776 OCODE(PGETTOTAL+4, 'GTOTREF ' ,PR1, O , E );
49778 OCODE(PGETMULT , 'GETMULT ' ,PR1, O , E );
49780 OCODE(PGETMULT+1 , 'GETSLN ' ,PR1, O , E );
49782 OCODE(PDEREF , 'DREFS ' ,PR1, O , E );
49784 OCODE(PDEREF+1 , 'DREFS2 ' ,PR1, O , E );
49786 OCODE(PDEREF+2 , 'DREFPTR ' ,PR1, O , E );
49788 OCODE(PDEREF+3 , 'DREFN ' ,PR1, O , E );
49790 OCODE(PDEREF+4 , 'DREFM ' ,PR1, O , E );
49800 OCODE(PSKIP , 'SKIPS ' , O , O , E );
49810 OCODE(PSKIP+1 , 'SKIPPIL ' , O , O , E );
49812 OCODE(PSKIP+2 , 'SKIPS2 ' , O , O ,FP0);
49820 OCODE(PSKIPSTRUCT, 'SKIPSTR ' , O , O , E );
49830 OCODE(PNIL , 'NILP ' , O , O , E );
49840 ICODE(PVOIDNORMAL, 'SR0 ' , NON , 0 ,PVOIDNAKED , E , O , O );
49843 ICODE(PVOIDNAKED , 'LRO0 ' , WOP , 0 ,QGETTOTAL+1 ,ER0, O , O );
49844
49845
49846
49847
49848
49900
49910 ICODE(PWIDEN , 'FLOAT ' , WOP , 0 ,0 ,E , O ,FP0);
49940 OCODE(PWIDEN+2 , 'WIDREAL ' ,PR1, O , E );
49950 OCODE(PWIDEN+4 , 'WIDCHAR ' ,PR1, O , E );
49960 OCODE(PWIDEN+5 , 'WIDBITS ' ,PR1, O , E );
49970 OCODE(PWIDEN+6 , 'WIDBYTS ' ,PR1, O , E );
49980 OCODE(PWIDEN+7 , 'WIDSTR ' ,PR1, O , E );
49990 OCODE(PROWNONMULT, 'ROWNM ' ,PR1, O , E );
50000 OCODE(PROWMULT , 'ROWM ' ,PR1, O , E );
50001 ICODE(PGETPROC , 'SFA ' , NON , 0 ,QGETPROC , O , O , O );
50002 QCODE(QGETPROC , 'CI ' , ANX , 0 ,QGETPROC+1);
50003 QCODE(QGETPROC+1 , 'IADD ' , NON , 0 ,QGETPROC+2);
50004 QCODE(QGETPROC+2 , 'LI ' , NON , 0 ,QGETPROC+3);
50005 QCODE(QGETPROC+3 , 'IPUSH ' , NON , 0 ,PGETPROC+1);
50006 OCODE(PGETPROC+1 , 'GETPROC ' ,PR1, O , O );
50010 ICODE(PCALL , 'CI ' , ACX , 0 ,QCALL ,SNS, O , O );
50011 QCODE(QCALL , 'IPUSH ' , NON , 0 ,QCALL+1);
50012 QCODE(QCALL+1 , 'RPUSH ' , WOP , 0 ,QCALL+2);
50013 QCODE(QCALL+2 , 'SFA ' , NON , 0 ,QCALL+3);
50014 QCODE(QCALL+3 , 'CI ' , WOP , 2 ,QCALL+4);
50015 QCODE(QCALL+4 , 'IADD ' , NON , 0 ,QCALL+5);
50016 QCODE(QCALL+5 , 'LI ' , NON , 0 ,QCALL+6);
50017 QCODE(QCALL+6 , 'LI ' , NON , 0 ,QCALL+7);
50018 QCODE(QCALL+7 , 'CALLT ' , NON , 0 ,0);
50019 ICODE(PCALLA , 'SFA ' , NON , 0 ,QCALLA ,SNS, O , O );
50020 QCODE(QCALLA , 'LAS ' , ACX , 0 ,QCALLA+3);
50021 ICODE(PCALLA+1 , 'SFA ' , NON , 0 ,QCALLA+1 ,SNS, O , O );
50022 QCODE(QCALLA+1 , 'LROA3 ' , ACX ,250,QCALLA+3);
50023 ICODE(PCALLA+2 , 'SFA ' , NON , 0 ,QCALLA+2 ,SNS, O , O );
50024 QCODE(QCALLA+2 , 'LROA2 ' , ACX ,192,QCALLA+3);
50025 QCODE(QCALLA+3 , 'IPUSH ' , NON , 0 ,QCALL+5);
50026 ICODE(PRNSTART , 'ASFW ' , OPX , 0 ,QRNSTART , O , O , O );
50028 OCODE(QRNSTART , 'RNSTART ' , O , O , O );
50029 ICODE(PRETURN , 'RETURN ' , NON , 0 ,0 ,XN , O , O );
50030 OCODE(PGBSTK , 'GBSTK ' , O , O , O );
50034 OCODE(POUTJUMP , 'OUTJUMP ' , O , O , O );
50040 OCODE(PGETOUT , 'GETOUT ' , O , O , O );
50042 ICODE(PSETIB , 'RPUSH ' , WOP , 0 ,QSETIB , O , O , O );
50044 OCODE(QSETIB , 'SETIB ' , O , O , O );
50050 OCODE(PLEAPGEN , 'GENSTR ' , O , O , E );
50060 OCODE(PLEAPGEN+1 , 'HEAPSTR ' , O , O , E );
50070 OCODE(PLEAPGEN+2 , 'GENRSTR ' , O , O , E );
50080 OCODE(PLEAPGEN+3 , 'GENMUL ' ,PR1, O , E );
50090 OCODE(PLEAPGEN+4 , 'HEAPMUL ' ,PR1, O , E );
50100 OCODE(PLEAPGEN+5 , 'GENRMUL ' ,PR1, O , E );
50110 OCODE(PPREPSTRDISP , 'PCOLLST ' , O , O ,FP0);
50120 OCODE(PPREPROWDISP , 'PCOLLR ' ,STS, O ,FP0);
50130 OCODE(PPREPROWDISP+1, 'PCOLLRM ' ,STS, O ,FP0);
50140 OCODE(PCOLLCHECK , 'PCOLLCK ' ,S4P, O ,FP0);
50150 ICODE(PCOLLTOTAL , 'EXCH ' , NON , 0 ,QCOLLTOTAL ,ER0, E ,ER0);
50151 QCODE(QCOLLTOTAL , 'SR1 ' , NON , 0 ,QCOLLTOTAL+1);
50152 QCODE(QCOLLTOTAL+1, 'EXCH ' , NON , 0 ,QCOLLTOTAL+2);
50153
50154 QCODE(QCOLLTOTAL+2, 'SRO1 ' , OPX , 0 ,QCOLLTOTAL+3);
50155 QCODE(QCOLLTOTAL+3, 'JFALSE ' , JMP , 1 ,0);
50156
50170 ICODE(PCOLLTOTAL+1, 'SR1 ' , NON , 0 ,QCOLLTOTAL+4 ,ER0,FP0,ER0);
50171
50172
50173 QCODE(QCOLLTOTAL+4, 'LROA1 ' , OPX , 0 ,QCOLLTOTAL+5);
50174 QCODE(QCOLLTOTAL+5, 'ASSD ' , WOP , 0 ,0);
50175
50200 ICODE(PCOLLTOTAL+2, 'DUPL ' , NON , 0 ,QCOLLTOTAL+6 ,ER0, E ,ER0);
50210 QCODE(QCOLLTOTAL+6, 'CI ' , MOR , 0 ,QCOLLTOTAL+7);
50220 QCODE(QCOLLTOTAL+7, '65536 ' , NON , 0 ,QCOLLTOTAL+8);
50222 QCODE(QCOLLTOTAL+8, 'EXCH ' , NON , 0 ,QCOLLTOTAL+9);
50230 QCODE(QCOLLTOTAL+9, 'OAADD ' , NON , 0 ,QCOLLTOTAL+10);
50240 QCODE(QCOLLTOTAL+10,'JFALSE ' , JMP , 1 ,PCOLLTOTAL);
50250 OCODE(PCOLLTOTAL+3,'COLLTP ' ,PR1,PR2,FP0);
50260 OCODE(PCOLLTOTAL+4,'COLLTM ' ,PR1,PR2,FP0);
50270 OCODE(PCOLLNAKED , 'COLLNP ' ,PR1,PR2,FP0);
50280 ICODE(PNAKEDPTR , 'JFALSE ' , JMP , 1 ,QNAKEDPTR ,ER0, O , E );
50282 QCODE(QNAKEDPTR , 'LR0 ' , NON , 0 ,0);
50290 ICODE(PLINE , 'CI ' , OPX , 0 ,QLINE , O , O , O );
50300 QCODE(QLINE , ' IS ' , WNP ,12 ,0);
50320 OCODE(PENDSLICE , 'ENDSL ' ,PR1, O , E );
50330 OCODE(PTRIM , 'SLICEA ' , O , O , O );
50340 OCODE(PTRIM+1 , 'SLICEB ' , O , O , O );
50350 OCODE(PTRIM+2 , 'SLICEC ' , O , O , O );
50360 OCODE(PTRIM+3 , 'SLICED ' , O , O , O );
50370 OCODE(PTRIM+4 , 'SLICEE ' , O , O , O );
50380 OCODE(PTRIM+5 , 'SLICEF ' , O , O , O );
50390 OCODE(PTRIM+6 , 'SLICEG ' , O , O , O );
50400 OCODE(PTRIM+7 , 'SLICEH ' , O , O , O );
50410 OCODE(PTRIM+8 , 'SLICEI ' , O , O , O );
50420 OCODE(PTRIM+9 , 'SLICEJ ' , O , O , O );
50430 ICODE(PJMP , 'JUMP ' , LCX , 0 ,0 , O , O , O );
50432 ICODE(PENVCHAIN , 'IL ' , WOP , 4 ,QENVCHAIN , O , O , O );
50434 QCODE(QENVCHAIN , ' SR2 ' , NON , 0 ,0);
50436 ICODE(PENVCHAIN+1, 'LRO2 ' , WOP ,196,QENVCHAIN , O , O , O );
50438 ICODE(PDISCARD , 'JFALSE ' , JMP , 1 ,0 , O , O , O );
50440 ICODE(PDUP1ST , 'SFA ' , NON , 0 ,QDUP1ST ,STP, O , E );
50441 ICODE(PDUP1ST+1 , 'SFA ' , NON , 0 ,QDUP2ND ,ST4, O ,FP1);
50442 QCODE(QDUP1ST , 'LI ' , NON , 0 ,0);
50450 ICODE(PDUP2ND , 'SFA ' , NON , 0 ,QDUP1ST ,STP, E , E );
50460 ICODE(PDUP2ND+1 , 'SFA ' , NON , 0 ,QDUP2ND ,ST4, E ,FP1);
50464 ICODE(PDUP2ND+2 , 'SFA ' , NON , 0 ,QDUP1ST ,STP,F0P, E );
50466 ICODE(PDUP2ND+3 , 'SFA ' , NON , 0 ,QDUP2ND ,ST4,F0P,FP1);
50468 QCODE(QDUP2ND , 'LDI ' , WOP , 1 ,0);
50470 ICODE(PDATALIST , 'CI ' , OPX , 0 ,QDATALIST ,SNS, O ,SDL);
50471 QCODE(QDATALIST , 'IPUSH ' , NON , 0 ,PALIGN);
50472 ICODE(PASP , 'ASFW ' , OPX , 0 , 0 , O , O , O );
50474 ICODE(PALIGN , 'ALIGN ' , NON , 0 , 0 , O , O , O );
50476 ICODE(PHEAVE , 'SFA ' , NON , 0 ,QHEAVE , O , O , O );
50478 QCODE(QHEAVE , 'SFA ' , NON , 0 ,QHEAVE+1);
50480 QCODE(QHEAVE+1 , 'CI ' , WOP , 2 ,QHEAVE+2);
50482 QCODE(QHEAVE+2 , 'ISUB ' , NON , 0 ,QHEAVE+3);
50484 QCODE(QHEAVE+3 , 'CI ' , OPX , 0 ,QHEAVE+4);
50486 QCODE(QHEAVE+4 , ' MVW ' , NON , 0 ,QHEAVE+5);
50487 QCODE(QHEAVE+5 , 'ASFW ' , WNP , 2 ,0);
50490 ICODE(PHOIST , 'ASFW ' , ONX , 0 ,QHOIST , O , O , O );
50492 QCODE(QHOIST , 'CI ' , ACX , 0 ,QHOIST+1);
50493 QCODE(QHOIST+1 , 'IPUSH ' , NON , 0 ,QHOIST+2);
50494 OCODE(QHOIST+2 , 'HOIST ' , O , O , O );
50496 ICODE(PPUSH , 'IL ' , OPX , 0 ,QIPUSH , O , O , O );
50498 QCODE(QIPUSH , 'IPUSH ' , NON , 0 , 0 );
50510 ICODE(PPUSH+1 , 'LRO3 ' , OPX ,250,QIPUSH , O , O ,ST );
50512 ICODE(PPUSH+2 , 'LRO2 ' , OPX ,192,QIPUSH , O , O , O );
50520 ICODE(PPUSHIM , 'CI ' , OPX , 0 ,QIPUSH , O , O ,ST );
50530 ICODE(PPUSHIM+1 , 'LGA ' , GBX , 0 ,QIPUSH , O , O , O );
50531 ICODE(PLOADEIM , 'CI ' , OPX , 0 ,0 , O , O , E );
50532 ICODE(PLOADEIM+1 , 'LGA ' , GBX , 0 ,0 , O , O , O );
50533 ICODE(PLOADE , 'IL ' , OPX , 0 ,0 , O , O , O );
50534 ICODE(PLOADE+1 , 'LRO3 ' , OPX ,250,0 , O , O , O );
50535 ICODE(PLOADE+2 , 'LRO2 ' , OPX ,192,0 , O , O , O );
50550 ICODE(PPUSHIM2 , 'LGA ' , OPX , 0 ,QPUSHIM2 , O , O , O ); (*SPECIAL FOR*)
50552 QCODE(QPUSHIM2 , 'IPUSH ' , NON , 0 ,QPUSHIM2+1); (*MDCHAN AND *)
50554 QCODE(QPUSHIM2+1 , 'IL ' , WNP , 2 ,QIPUSH); (*MDCODE *)
50560 ICODE(PPUSHIM2+1 , 'LGA ' , GBX , 0 ,QPUSH2 , O , O , O );
50570 ICODE(PPUSHER0 , 'IPUSH ' , NON , 0 ,QPUSHER0 , O , O , O );
50572 QCODE(QPUSHER0 , 'LR0 ' , NON , 0 ,QPUSHER0+1);
50574 QCODE(QPUSHER0+1 , 'IPUSH ' , NON , 0 ,0);
50580 ICODE(PLOADER0F0 , 'RPUSH ' , WOP , 0 ,PLOADER0STK , O , O , O );
50582 ICODE(PLOADER0F1 , 'RPUSH ' , WOP , 1 ,PLOADER0STK , O , O , O );
50590 ICODE(PLOADER0STK, 'SFA ' , NON , 0 ,QLOADER0STK , O , O , O );
50592 QCODE(QLOADER0STK, ' SR1 ' , NON , 0 ,QLOADER0STK+1);
50594 QCODE(QLOADER0STK+1,'LRO1 ' , WOP , 0 ,QLOADER0STK+2);
50596 QCODE(QLOADER0STK+2,' SR0 ' , NON , 0 ,QLOADER0STK+3);
50598 QCODE(QLOADER0STK+3,'LRO1 ' , WOP , 2 ,QLOADER0STK+4);
50600 QCODE(QLOADER0STK+4,'ASFW ' , WOP , 4 ,0);
50640 ICODE(PPUSH2 , 'LAS ' , OPX , 0 ,QPUSH2 , O , O , O );
50650 QCODE(QPUSH2 , 'LDI ' , WOP , 3 ,QPUSH2+1);
50652 QCODE(QPUSH2+1 , 'RPUSH ' , WOP , 3 ,0);
50660 ICODE(PPUSH2+1 , 'LRO3 ' , OPX ,252,QPUSH2+2 , O , O , O );
50662 QCODE(QPUSH2+2 , 'IPUSH ' , NON , 0 ,PPUSH+1);
50670 ICODE(PPUSH2+2 , 'LRO2 ' , OPX ,194,QPUSH2+3 , O , O , O );
50672 QCODE(QPUSH2+3 , 'IPUSH ' , NON , 0 ,PPUSH+2);
50690 ICODE(PDECM , 'CI ' , OPX , 0 ,0 , O , O , O );
50694 QCODE(PDECM+1 , ' IS ' , ONX , 0 ,0);
50696 ICODE(PETOSTK , 'IPUSH ' , NON , 0 ,0 , O , O , O );
50700 ICODE(PETOSTK+1 , 'ASFW ' , WNP , 4 ,QETOSTK , O , O , O );
50701 QCODE(QETOSTK , 'SFA ' , NON , 0 ,QETOSTK+1);
50702 QCODE(QETOSTK+1 , 'SR1 ' , NON , 0 ,QETOSTK+2);
50703 QCODE(QETOSTK+2 , 'JFALSE ' , JMP , 1 ,QETOSTK+3);
50704 QCODE(QETOSTK+3 , 'SRO1 ' , WOP , 0 ,QETOSTK+4);
50705 QCODE(QETOSTK+4 , 'JFALSE ' , JMP , 1 ,QETOSTK+5);
50706 QCODE(QETOSTK+5 , 'SRO1 ' , WOP , 2 ,0);
50714 OCODE(PETOSTK+2 , 'ETOSTK ' , O , O , O );
50715 ICODE(PSTKTOE , 'SFA ' , NON , 0 ,QLOADI , O , O , O );
50716 QCODE(QLOADI , 'LI ' , NON , 0 ,QADJSP2 );
50717 QCODE(QADJSP2 , 'ASFW ' , WOP , 2 ,0 );
50718 ICODE(PSTKTOE+1 , 'SFA ' , NON , 0 ,QSTKTOE , O , O , O );
50719 QCODE(QSTKTOE , ' SR1 ' , NON , 0 ,QSTKTOE+1 );
50720 QCODE(QSTKTOE+1 , 'LRO1 ' , WOP , 2 ,QSTKTOE+2 );
50721 QCODE(QSTKTOE+2 , 'LRO1 ' , WOP , 0 ,QADJSP4 );
50722 QCODE(QADJSP4 , 'ASFW ' , WOP , 4 ,0 );
50723 OCODE(PSTKTOE+2 , 'STKTOE ' , O , O , O );
50724 ICODE(PSWAP , 'EXCH ' , NON , 0 ,0 , O , O , O );
50725 ICODE(PPUSHFSTK , 'RPUSH ' , WOP , 0 ,0 , O , O , O );
50726 ICODE(PPUSHFSTK1 , 'RPUSH ' , WOP , 1 ,0 , O , O , O );
50727 ICODE(PLOADF , 'LAS ' , OPX , 0 ,QLOADF , O , O , O );
50728 QCODE(QLOADF , 'LDI ' , WOP , 0 ,0);
50732 ICODE(PLOADFIM , 'LGA ' , GBX , 0 ,QLOADF , O , O , O );
50734 ICODE(PLOADF1 , 'LAS ' , OPX , 0 ,QLOADF1 , O , O , E );
50735 QCODE(QLOADF1 , 'LDI ' , WOP , 1 ,0 );
50739 ICODE(PLOADFIM1 , 'LGA ' , GBX , 0 ,QLOADF1 , O , O ,FP1);
50742 ICODE(PLOADFSTK , 'RPOP ' , WOP , 0 ,0 , O , O , O );
50743 ICODE(PLOADFSTK1 , 'RPOP ' , WOP , 1 ,0 , O , O , O );
50744 ICODE(PF0TOF1 , 'RPUSH ' , WOP , 0 ,PLOADFSTK1 , O , O ,FP1);
50745 ICODE(PF1TOF0 , 'RPUSH ' , WOP , 1 ,PLOADFSTK , O , O ,FP0);
50750 END;
50755 PROCEDURE INITPOPARRAY;
50757 VAR I,J:SBTTYP;
50760 BEGIN
50761 FOR I := SBTSTK TO SBTFPR3 DO
50770 FOR J := SBTVOID TO SBTFPR3 DO
50780 BEGIN
50790 POPARRAY [I,J] := PNONE;
50800 POPARRAY [I,I] := PNOOP;
50810 POPARRAY [I,SBTVOID] :=PNOOP;
50820 POPARRAY [I,SBTVAR ] := PLOADVAR;
50822 POPARRAY [I,SBTPROC] := PLOADRTA;
50824 POPARRAY [I,SBTRPROC]:= PLOADRTA;
50830 END;
50910 POPARRAY[ SBTSTK , SBTSTK4 ] := PVARLISTEND+1;
50920 POPARRAY[ SBTSTK , SBTID ] := PPUSH;
50930 POPARRAY[ SBTSTK , SBTIDV ] := PPUSH;
50940 POPARRAY[ SBTSTK , SBTLIT ] := PPUSHIM;
50950 POPARRAY[ SBTSTK , SBTDEN ] := PPUSHIM;
50951 POPARRAY[ SBTE , SBTID ] := PLOADE;
50952 POPARRAY[ SBTE , SBTIDV ] := PLOADE;
50954 POPARRAY[ SBTE , SBTVAR ] := PLOADVAR;
50956 POPARRAY[ SBTE , SBTLIT ] := PLOADEIM;
50958 POPARRAY[ SBTE , SBTDEN ] := PLOADEIM;
50960 POPARRAY[ SBTSTK , SBTDL ] := PNOOP;
50970 POPARRAY[ SBTSTK4 , SBTID ] := PPUSH2;
50980 POPARRAY[ SBTSTK4 , SBTIDV ] := PPUSH2;
51000 POPARRAY[ SBTSTK4 , SBTDEN ] := PPUSHIM2;
51030 POPARRAY[ SBTSTK , SBTPR1 ] := PNOOP;
51040 POPARRAY[ SBTSTK , SBTPR2 ] := PNOOP;
51050 POPARRAY[ SBTSTK4 , SBTPR1 ] := PNOOP;
51060 POPARRAY[ SBTSTK4 , SBTPR2 ] := PNOOP;
51070 POPARRAY[ SBTSTK4 , SBTSTK ] := PSTOS4;
51071 POPARRAY[ SBTSTK , SBTE ] := PETOSTK;
51072 POPARRAY[ SBTE , SBTSTK ] := PSTKTOE;
51073 POPARRAY[ SBTSTK4 , SBTFPR0 ] := PPUSHFSTK;
51074 POPARRAY[ SBTSTK4 , SBTFPR1 ] := PPUSHFSTK1;
51075 POPARRAY[ SBTFPR0 , SBTID ] := PLOADF;
51076 POPARRAY[ SBTFPR0 , SBTIDV ] := PLOADF;
51077 POPARRAY[ SBTFPR0 , SBTLIT ] := PLOADFIM;
51078 POPARRAY[ SBTFPR0 , SBTDEN ] := PLOADFIM-1;
51079 POPARRAY[ SBTFPR1 , SBTID ] := PLOADF1;
51080 POPARRAY[ SBTFPR1 , SBTIDV ] := PLOADF1;
51082 POPARRAY[ SBTFPR1 , SBTLIT ] := PLOADFIM1;
51083 POPARRAY[ SBTFPR1 , SBTDEN ] := PLOADFIM1-1;
51084 POPARRAY[ SBTFPR0 , SBTSTK4 ] := PLOADFSTK;
51085 POPARRAY[ SBTFPR1 , SBTSTK4 ] := PLOADFSTK1;
51086 POPARRAY[ SBTFPR1 , SBTFPR0 ] := PF0TOF1;
51087 POPARRAY[ SBTFPR0 , SBTFPR1 ] := PF1TOF0;
51090 POPARRAY[ SBTSTK4 , SBTER0 ] := PPUSHER0;
51092 POPARRAY[ SBTSTK4 , SBTSTKR0] := PPUSHER0; (*ACTUALLY, LOAD PUTS IT INTO SBTER0 FIRST*)
51094 POPARRAY[ SBTER0 , SBTSTKR0] := PNOOP; (*ACTUALLY, LOAD PUTS IT INTO SBTER0 FIRST*)
51100 POPARRAY[ SBTER0 , SBTSTK4 ] := PLOADER0STK;
51110 POPARRAY[ SBTER0 , SBTFPR0 ] := PLOADER0F0;
51120 POPARRAY[ SBTER0 , SBTFPR1 ] := PLOADER0F1;
51130 END;
51140 PROCEDURE INITLENARRAY;
51150 VAR I:SBTTYP;
51160 BEGIN
51170 FOR I := SBTSTK TO SBTXN DO LENARRAY[I] := 0;
51180 LENARRAY[SBTSTK ] := SZWORD;
51184 LENARRAY[SBTSTK4] := 2*SZWORD;
51186 LENARRAY[SBTSTKR0]:= SZWORD; (*FOR NAKES VALUES*)
51190 LENARRAY[SBTE ] := SZWORD;
51191 LENARRAY[SBTER0 ] := 2*SZWORD; (*FOR NAKED VALUES*)
51192 LENARRAY[SBTFPR0] := 2*SZWORD;
51193 LENARRAY[SBTFPR1] := 2*SZWORD;
51194 LENARRAY[SBTFPR2] := 2*SZWORD;
51195 LENARRAY[SBTFPR3] := 2*SZWORD;
51210 END;
51220 BEGIN (* INITCODES +)
51230 FIRSTPART; SECONDPART; THIRDPART; INITPOPARRAY; INITLENARRAY;
51240 END;
51250 (*+)
51260 ()+86+)
51270 ()+05*)
59771
59772
59773
60280 (**)
60290 (**)
60300 (**)
60310 (**)
60320 (**)
60340 BEGIN
60360 (*+25() LINELIMIT(OUTPUT,10000); LINELIMIT(LSTFILE,10000); ()+25*)
60375 DUMP(FIRSTSTACK,LASTSTACK);
60380 END (*+25() (*$G-+) ()+25*).
####S