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