-- file: MFOpsImpl4.mesa -- Pascal-to-Mesa translator output, translated at October 31, 1985 4:28:02 pm PST DIRECTORY PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFInteraction, MFMath, MFMemory, MFSymbols, MFEdges, MFOctants, MFTime, MFEquations, MFInput, MFFileNames, MFParsing, MFOps, MFGF; MFOpsImpl4: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, MFProcArray, MFInteraction, MFMath, MFMemory, MFSymbols, MFEdges, MFOctants, MFTime, MFEquations, MFInput, MFFileNames, MFParsing, MFOps, MFGF EXPORTS MFOps = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFInteraction, MFMath, MFMemory, MFSymbols, MFEdges, MFOctants, MFTime, MFEquations, MFInput, MFFileNames, MFParsing, MFOps, MFGF; FindPoint: PROCEDURE[V: Scaled,C: Quarterword] = BEGIN P:Halfword;N:Scaled;Vv:Scaled;Q:Halfword; Vv_V;P_CurExp; IF Mem[P]^.Hh.B0=0 THEN N_-65536 ELSE N_0;DO P_Mem[P]^.Hh.Rh; N_N+65536; IF P=CurExp THEN EXIT; ENDLOOP; IF N=0 THEN V_0 ELSE IF V<0 THEN IF Mem[P]^.Hh.B0=0 THEN V_0 ELSE V_N -1-( (-V-1)MOD N) ELSE IF V>N THEN IF Mem[P]^.Hh.B0=0 THEN V_N ELSE V_ V MOD N;P_CurExp;WHILE V>=65536 DO BEGIN P_Mem[P]^.Hh.Rh;V_V-65536; END ENDLOOP ; IF V#0 THEN--985:--BEGIN Q_Mem[P]^.Hh.Rh; SplitCubic[P,V*4096,Mem[ INT[Q]+1]^.Int,Mem[ INT[Q]+2]^.Int];P_Mem[P]^.Hh.Rh; END--:985--;--986:--SELECT C FROM 97 =>PairValue[Mem[ INT[P]+1]^.Int,Mem[ INT[P]+2]^.Int]; 98 =>IF Mem[P]^.Hh.B0=0 THEN PairValue[Mem[ INT[P]+1]^.Int,Mem[ INT[P]+2]^.Int] ELSE PairValue[Mem[ INT[P]+3]^.Int,Mem[ INT[P]+4]^.Int]; 99 =>IF Mem[P]^.Hh.B1=0 THEN PairValue[Mem[ INT[P]+1]^.Int,Mem[ INT[P]+2]^.Int] ELSE PairValue[Mem[ INT[P]+5]^.Int,Mem[ INT[P]+6]^.Int]; ENDCASE--:986--; END;--:984 DoBinary: PROCEDURE[P: Halfword,C: Quarterword] = BEGIN Q, R, Rr:Halfword;OldP, OldExp:Halfword;V:PascalInteger; BEGIN IF ArithError THEN ClearArith[]; END; IF Internal^[7]>131072 THEN--923:--BEGIN BeginDiagnostic[];PrintNl[715]; PrintExp[P,0];PrintChar[41];PrintOp[C];PrintChar[40];PrintExp[0,0]; Print[707];EndDiagnostic[FALSE]; END--:923--;--925: SELECT Mem[P]^.Hh.B0 FROM 13,14 =>OldP_Tarnished[P];19 =>OldP_1; ENDCASE =>OldP_0 ;IF OldP#0 THEN BEGIN Q_StashCurExp[];OldP_P; MakeExpCopy[OldP];P_StashCurExp[];UnstashCurExp[Q]; END; SELECT CurType FROM 13,14 =>OldExp_Tarnished[CurExp];19 =>OldExp_1; ENDCASE =>OldExp_0 ;IF OldExp#0 THEN BEGIN OldExp_CurExp; MakeExpCopy[OldExp]; END--:925--;{SELECT C FROM 69,70 =>--928: IF( INT[CurType]<14)OR ( INT[Mem[P]^.Hh.B0]<14) THEN IF(CurType=11)AND ( Mem[P]^.Hh.B0=11) THEN BEGIN IF C=70 THEN NegateEdges[CurExp];CurEdges_CurExp; MergeEdges[Mem[ INT[P]+1]^.Int]; END ELSE BadBinary[P,C] ELSE IF CurType=14 THEN IF Mem[P]^.Hh.B0#14 THEN BadBinary[P,C] ELSE BEGIN Q_Mem[ INT[P]+1]^.Int;R_Mem[CurExp+1]^.Int; AddOrSubtract[Q,R,C];AddOrSubtract[ INT[Q]+2, INT[R]+2,C]; END ELSE IF Mem[P]^.Hh.B0=14 THEN BadBinary[P,C] ELSE AddOrSubtract[P,0 ,C]--:928--;--935: 77,78,79,80,81,82 =>BEGIN {IF( INT[CurType]>14)AND ( INT[Mem[P]^.Hh.B0]>14) THEN AddOrSubtract[P,0,70] ELSE IF CurType#Mem[P]^.Hh.B0 THEN BEGIN BadBinary[P,C]; GOTO Label30; END ELSE IF CurType=4 THEN FlushCurExp[StrVsStr[Mem[ INT[P]+1]^.Int, CurExp]] ELSE IF(CurType=5)OR (CurType=3) THEN--937: BEGIN Q_Mem[CurExp+1]^.Int; WHILE(Q#CurExp)AND (Q#P)DO Q_Mem[ INT[Q]+1]^.Int ENDLOOP ; IF Q=P THEN FlushCurExp[0]; END--:937 ELSE IF(CurType=14)OR (CurType=13) THEN--938:--BEGIN Q_Mem[ INT[P]+1]^.Int; R_Mem[CurExp+1]^.Int;Rr_ INT[R]+BigNodeSize^[CurType]-2; {WHILE TRUE DO BEGIN AddOrSubtract[Q,R,70]; IF Mem[R]^.Hh.B0#16 THEN GOTO Label31;IF Mem[ INT[R]+1]^.Int#0 THEN GOTO Label31; IF R=Rr THEN GOTO Label31;Q_ INT[Q]+2;R_ INT[R]+2; END ENDLOOP ; EXITS Label31 => NULL};TakePart[ 53+PascalDIVPower2[(R-Mem[CurExp+1]^.Int),1]]; END--:938 ELSE IF CurType=2 THEN FlushCurExp[CurExp-Mem[ INT[P]+1]^.Int] ELSE BEGIN BadBinary[P,C]; GOTO Label30; END;--936: IF CurType#16 THEN BEGIN IF INT[CurType]<16 THEN BEGIN DispErr[P,157]; BEGIN HelpPtr_1;HelpLine^[0]_716; END ; END ELSE BEGIN HelpPtr_2; HelpLine^[1]_717;HelpLine^[0]_718; END;DispErr[0,719]; PutGetFlushError[31]; END ELSE SELECT C FROM 77 =>IF CurExp<0 THEN CurExp_30 ELSE CurExp_31; 78 =>IF CurExp<=0 THEN CurExp_30 ELSE CurExp_31; 79 =>IF CurExp>0 THEN CurExp_30 ELSE CurExp_31; 80 =>IF CurExp>=0 THEN CurExp_30 ELSE CurExp_31; 81 =>IF CurExp=0 THEN CurExp_30 ELSE CurExp_31; 82 =>IF CurExp#0 THEN CurExp_30 ELSE CurExp_31; ENDCASE;CurType_2--:936 ;EXITS Label30 => NULL}; END;--:935----939: 76,75 =>IF(Mem[P]^.Hh.B0#2)OR (CurType#2) THEN BadBinary[P,C] ELSE IF Mem[ INT[P]+1]^.Int=C-45 THEN CurExp_Mem[ INT[P]+1]^.Int;--:939----940: 71 =>IF( INT[CurType]<14)OR ( INT[Mem[P]^.Hh.B0]<14) THEN BadBinary[P,71] ELSE IF( CurType=16)OR (Mem[P]^.Hh.B0=16) THEN--941: BEGIN IF Mem[P]^.Hh.B0=16 THEN BEGIN V_Mem[ INT[P]+1]^.Int;FreeNode[P,2]; END ELSE BEGIN V_CurExp;UnstashCurExp[P]; END; IF CurType=16 THEN CurExp_TakeScaled[CurExp,V] ELSE IF CurType=14 THEN BEGIN P_Mem[CurExp+1]^.Int;DepMult[P,V,TRUE]; DepMult[ INT[P]+2,V,TRUE]; END ELSE DepMult[0,V,TRUE]; GOTO Label10; END--:941 ELSE IF(NicePair[P,Mem[P]^.Hh.B0]AND ( INT[CurType]>14))OR (NicePair[CurExp, CurType]AND ( INT[Mem[P]^.Hh.B0]>14)) THEN BEGIN HardTimes[P]; GOTO Label10; END ELSE BadBinary[P,71];--:940----947: 72 =>IF(CurType#16)OR ( INT[Mem[P]^.Hh.B0]<14) THEN BadBinary[P,72] ELSE BEGIN V _CurExp;UnstashCurExp[P];IF V=0 THEN--949:--BEGIN DispErr[0,649]; BEGIN HelpPtr_2;HelpLine^[1]_721;HelpLine^[0]_722; END;PutGetError[]; END--:949 ELSE BEGIN IF CurType=16 THEN CurExp_MakeScaled[CurExp,V] ELSE IF CurType=14 THEN BEGIN P_Mem[CurExp+1]^.Int;DepDiv[P,V]; DepDiv[ INT[P]+2,V]; END ELSE DepDiv[0,V]; END; GOTO Label10; END;--:947----950: 73,74 =>IF(CurType=16)AND (Mem[P]^.Hh.B0=16) THEN IF C=73 THEN CurExp_ PythAdd[Mem[ INT[P]+1]^.Int,CurExp] ELSE CurExp_PythSub[Mem[ INT[P]+1]^.Int, CurExp] ELSE BadBinary[P,C];--:950----951: 84,85,86,87,88,89,90,91 =>IF(Mem[P]^.Hh.B0=9)OR (Mem[P]^.Hh.B0=8)OR (Mem[P]^.Hh .B0=6) THEN BEGIN PathTrans[P,C]; GOTO Label10; END ELSE IF(Mem[P]^.Hh.B0=14)OR (Mem[P]^.Hh.B0=13) THEN BigTrans[P,C] ELSE IF Mem[P]^.Hh.B0=11 THEN BEGIN EdgesTrans[P,C]; GOTO Label10; END ELSE BadBinary[P,C];--:951----974: 83 =>IF(CurType=4)AND (Mem[P]^.Hh.B0=4) THEN Cat[P] ELSE BadBinary[P,83]; 94 =>IF NicePair[P,Mem[P]^.Hh.B0]AND (CurType=4) THEN ChopString[Mem[ INT[P]+1]^. Int] ELSE BadBinary[P,94];95 =>BEGIN IF CurType=14 THEN PairToPath[]; IF NicePair[P,Mem[P]^.Hh.B0]AND (CurType=9) THEN ChopPath[Mem[ INT[P]+1]^.Int] ELSE BadBinary[P,95]; END;--:974----982: 97,98,99 =>BEGIN IF CurType=14 THEN PairToPath[]; IF(CurType=9)AND (Mem[P]^.Hh.B0=16) THEN FindPoint[Mem[ INT[P]+1]^.Int,C] ELSE BadBinary[P,C]; END;100 =>BEGIN IF CurType=8 THEN MaterializePen[]; IF (CurType=6)AND NicePair[P,Mem[P]^.Hh.B0] THEN SetUpOffset[Mem[ INT[P]+1]^. Int] ELSE BadBinary[P,100]; END; 96 =>BEGIN IF CurType=14 THEN PairToPath[]; IF (CurType=9)AND NicePair[P,Mem[P]^.Hh.B0] THEN SetUpDirectionTime[ Mem[ INT[P]+1]^.Int] ELSE BadBinary[P,96]; END;--:982----987: 92 =>BEGIN IF Mem[P]^.Hh.B0=14 THEN BEGIN Q_StashCurExp[]; UnstashCurExp[P];PairToPath[];P_StashCurExp[];UnstashCurExp[Q]; END; IF CurType=14 THEN PairToPath[]; IF(CurType=9)AND (Mem[P]^.Hh.B0=9) THEN BEGIN PathIntersection[Mem[ INT[P]+1]^. Int,CurExp];PairValue[CurT,CurTt]; END ELSE BadBinary[P,92]; END; --:987-- ENDCASE;RecycleValue[P];FreeNode[P,2]; EXITS Label10 => NULL};BEGIN IF ArithError THEN ClearArith[]; END;--924: IF OldP#0 THEN BEGIN RecycleValue[OldP];FreeNode[OldP,2]; END; IF OldExp#0 THEN BEGIN RecycleValue[OldExp];FreeNode[OldExp,2]; END--:924--; END;--:921----943:-- FracMult: PROCEDURE[N,D: Scaled] = BEGIN P:Halfword;OldExp:Halfword;V:Fraction; IF Internal^[7]>131072 THEN--944:--BEGIN BeginDiagnostic[]; PrintNl[715];PrintScaled[N];PrintChar[47];PrintScaled[D];Print[720]; PrintExp[0,0];Print[707];EndDiagnostic[FALSE]; END--:944--; SELECT CurType FROM 13,14 =>OldExp_Tarnished[CurExp];19 =>OldExp_1; ENDCASE =>OldExp_0 ;IF OldExp#0 THEN BEGIN OldExp_CurExp; MakeExpCopy[OldExp]; END;V_MakeFraction[N,D]; IF CurType=16 THEN CurExp_TakeFraction[CurExp,V] ELSE IF CurType=14 THEN BEGIN P_Mem[CurExp+1]^.Int;DepMult[P,V,FALSE]; DepMult[ INT[P]+2,V,FALSE]; END ELSE DepMult[0,V,FALSE]; IF OldExp#0 THEN BEGIN RecycleValue[OldExp];FreeNode[OldExp,2]; END ; END;--:943----988:----1153:-- ShipOut: PROCEDURE[C: EightBits] = BEGIN F:PascalInteger; PrevM, M, Mm:PascalInteger;PrevN, N:PascalInteger;P, Q:Halfword;PrevW, W, Ww:PascalInteger; D:PascalInteger;Delta:PascalInteger;CurMinM:PascalInteger;XOff, YOff:PascalInteger; IF OutputFileName=0 THEN InitGf[]; F_RoundUnscaled[Internal^[19]];XOff_RoundUnscaled[Internal^[29]]; YOff_RoundUnscaled[Internal^[30]]; IF INT[TermOffset]>MaxPrintLine-9 THEN PrintLn [] ELSE IF( INT[TermOffset]>0)OR ( INT[FileOffset]>0) THEN PrintChar[32];PrintChar[91];PrintInt[C]; IF F#0 THEN BEGIN PrintChar[46];PrintInt[F]; END;PascalTextBREAK[file: @TermOut]; BocC_256*F+C;BocP_CharPtr^[C];CharPtr^[C]_GfPrevPtr; IF Internal^[34]>0 THEN--1165: BEGIN IF XOff#0 THEN BEGIN GfString[310,0];BEGIN GfBuf^[GfPtr]_243; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; GfFour[XOff*65536]; END;IF YOff#0 THEN BEGIN GfString[311,0]; BEGIN GfBuf^[GfPtr]_243;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;GfFour[YOff*65536]; END; END--:1165--; --1166:--PrevN_4096;P_Mem[CurEdges]^.Hh.Lh; N_ INT[Mem[ INT[CurEdges]+1]^.Hh.Rh]-4096;WHILE P#CurEdges DO BEGIN--1168: IF INT[Mem[ INT[P]+1]^.Hh.Lh]>1 THEN SortEdges[P];Q_Mem[ INT[P]+1]^.Hh.Rh;W_0; PrevM_-268435456;Ww_0;PrevW_0;M_PrevM; DO IF Q=50000 THEN Mm_268435456 ELSE BEGIN D_Mem[Q]^.Hh.Lh; Mm_ PascalDIVPower2[D ,3];Ww_Ww+( PascalMODPower2Mask[D ,7])-4; END; IF Mm#M THEN BEGIN IF PrevW<=0 THEN BEGIN IF W>0 THEN--1169: BEGIN IF PrevM=-268435456 THEN--1171: BEGIN {IF PrevN=4096 THEN BEGIN GfBoc[Mem[ INT[CurEdges]+2]^.Hh.Lh+XOff-4096 ,Mem[ INT[CurEdges]+2]^.Hh.Rh+XOff-4096,Mem[ INT[CurEdges]+1]^.Hh.Lh+YOff-4096, N+YOff];CurMinM_ INT[Mem[ INT[CurEdges]+2]^.Hh.Lh]-4096+Mem[ INT[CurEdges]+3]^.Hh.Lh; END ELSE IF PrevN>N+1 THEN--1173:--BEGIN Delta_PrevN-N-1; IF Delta<256 THEN IF Delta=0 THEN BEGIN GfBuf^[GfPtr]_70; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END ELSE BEGIN BEGIN GfBuf^[GfPtr]_71;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;BEGIN GfBuf^[GfPtr]_Delta; GfPtr_GfPtr+1;IF GfPtr=GfLimit THEN GfSwap[]; END; END ELSE BEGIN BEGIN GfBuf^[GfPtr]_72;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END;GfTwo[Delta]; END; END--:1173 ELSE--1172:--BEGIN Delta_M-CurMinM; IF Delta>164 THEN BEGIN GfBuf^[GfPtr]_70;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END ELSE BEGIN BEGIN GfBuf^[GfPtr]_74+Delta;GfPtr_GfPtr+1; IF GfPtr=GfLimit THEN GfSwap[]; END; GOTO Label30; END; END--:1172--; GfPaint[M-CurMinM];EXITS Label30 => NULL};PrevN_N; END--:1171-- ELSE GfPaint[M-PrevM]; PrevM_M;PrevW_W; END--:1169--; END ELSE IF W<=0 THEN--1170: BEGIN GfPaint[M-PrevM];PrevM_M;PrevW_W; END--:1170--;M_Mm; END;W_Ww; Q_Mem[Q]^.Hh.Rh; IF Mm=268435456 THEN EXIT; ENDLOOP;IF W#0 THEN PrintNl[912]; IF PrevM-Mem[ INT[CurEdges]+3]^.Hh.Lh+XOff>GfMaxM THEN GfMaxM_ PrevM-Mem[ INT[CurEdges]+3]^.Hh.Lh+XOff--:1168--;P_Mem[P]^.Hh.Lh;N_N-1; END ENDLOOP ; IF PrevN=4096 THEN--1167:--BEGIN GfBoc[0,0,0,0]; IF GfMaxM<0 THEN GfMaxM_0;IF GfMinN>0 THEN GfMinN_0; END--:1167 ELSE IF PrevN+YOff0 THEN PrintEdges[911,TRUE,XOff,YOff]; END;--:1164 --994:----1005:-- TryEq: PROCEDURE[L,R: Halfword] = BEGIN P:Halfword; T:PascalInteger[16..19];Q:Halfword;Pp:Halfword;Tt:PascalInteger[17..19];Copied:PascalBoolean;--1006: T_Mem[L]^.Hh.B0;IF T=16 THEN BEGIN T_17; P_ConstDependency[-Mem[ INT[L]+1]^.Int];Q_P; END ELSE IF T=19 THEN BEGIN T_17;P_SingleDependency[L]; Mem[ INT[P]+1]^.Int_-Mem[ INT[P]+1]^.Int;Q_DepFinal; END ELSE BEGIN P_Mem[ INT[L]+1]^.Hh.Rh;Q_P; {WHILE TRUE DO BEGIN Mem[ INT[Q]+1]^.Int_-Mem[ INT[Q]+1]^.Int; IF Mem[Q]^.Hh.Lh=0 THEN GOTO Label30;Q_Mem[Q]^.Hh.Rh; END ENDLOOP ; EXITS Label30 => NULL};Mem[Mem[ INT[L]+1]^.Hh.Lh]^.Hh.Rh_Mem[Q]^.Hh.Rh; Mem[ INT[Mem[Q]^.Hh.Rh]+1]^.Hh.Lh_Mem[ INT[L]+1]^.Hh.Lh;Mem[L]^.Hh.B0_16; END--:1006--; --1008: {IF R=0 THEN IF CurType=16 THEN BEGIN Mem[ INT[Q]+1]^.Int_Mem[ INT[Q]+1]^.Int+CurExp ; GOTO Label31; END ELSE BEGIN Tt_CurType; IF Tt=19 THEN Pp_SingleDependency[CurExp] ELSE Pp_Mem[CurExp+1]^.Hh. Rh; END ELSE IF Mem[R]^.Hh.B0=16 THEN BEGIN Mem[ INT[Q]+1]^.Int_Mem[ INT[Q]+1]^.Int+Mem[ INT[R ]+1]^.Int; GOTO Label31; END ELSE BEGIN Tt_Mem[R]^.Hh.B0; IF Tt=19 THEN Pp_SingleDependency[R] ELSE Pp_Mem[ INT[R]+1]^.Hh.Rh; END; IF Tt#19 THEN Copied_FALSE ELSE BEGIN Copied_TRUE;Tt_17; END;--1009: WatchCoefs_FALSE; IF T=Tt THEN P_PPlusQ[P,Pp,T] ELSE IF T=18 THEN P_PPlusFq[P,65536, Pp,18,17] ELSE BEGIN Q_P; WHILE Mem[Q]^.Hh.Lh#0 DO BEGIN Mem[ INT[Q]+1]^.Int_RoundFraction[Mem[ INT[Q]+1]^.Int ];Q_Mem[Q]^.Hh.Rh; END ENDLOOP ;T_18;P_PPlusQ[P,Pp,T]; END;WatchCoefs_TRUE; --:1009--IF Copied THEN FlushNodeList[Pp];EXITS Label31 => NULL};--:1008--IF Mem[P]^.Hh.Lh=0 THEN--1007: BEGIN IF ABS[Mem[ INT[P]+1]^.Int]>64 THEN BEGIN BEGIN IF Interaction=3 THEN NULL; PrintNl[133];Print[762]; END;Print[764];PrintScaled[Mem[ INT[P]+1]^.Int]; PrintChar[41];BEGIN HelpPtr_2;HelpLine^[1]_763;HelpLine^[0]_761; END;PutGetError[]; END ELSE IF R=0 THEN--622: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[133];Print[466]; END; BEGIN HelpPtr_2;HelpLine^[1]_467;HelpLine^[0]_468; END;PutGetError[]; END--:622--;FreeNode[P,2]; END--:1007-- ELSE BEGIN LinearEq[P,T]; IF R=0 THEN IF CurType#16 THEN IF Mem[CurExp]^.Hh.B0=16 THEN BEGIN Pp _CurExp;CurExp_Mem[CurExp+1]^.Int;CurType_16;FreeNode[Pp,2]; END; END; END;--:1005----1000:-- MakeEq: PROCEDURE[Lhs: Halfword] = BEGIN T:SmallNumber;V:PascalInteger;P, Q:Halfword; DO {--Label20:--T_Mem[Lhs]^.Hh.B0; IF INT[T]<=14 THEN V_Mem[ INT[Lhs]+1]^.Int;{SELECT T FROM--1002: 2,4,6,9,11 =>IF CurType=T+1 THEN BEGIN NonlinearEq[V,CurExp,FALSE]; GOTO Label30; END ELSE IF CurType=T THEN--1003: BEGIN {IF INT[CurType]<=4 THEN BEGIN IF CurType=4 THEN BEGIN IF StrVsStr[V ,CurExp]#0 THEN GOTO Label45; END ELSE IF V#CurExp THEN GOTO Label45;--622: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[133];Print[466]; END; BEGIN HelpPtr_2;HelpLine^[1]_467;HelpLine^[0]_468; END;PutGetError[]; END--:622--; GOTO Label30; END;BEGIN IF Interaction=3 THEN NULL;PrintNl[133]; Print[759]; END;BEGIN HelpPtr_2;HelpLine^[1]_760;HelpLine^[0]_761; END;PutGetError[]; GOTO Label30;EXITS Label45 => NULL};BEGIN IF Interaction=3 THEN NULL;PrintNl[133]; Print[762]; END;BEGIN HelpPtr_2;HelpLine^[1]_763;HelpLine^[0]_761; END;PutGetError[]; GOTO Label30; END--:1003--; 3,5,7,12,10 =>IF CurType=T-1 THEN BEGIN NonlinearEq[CurExp,Lhs,TRUE]; GOTO Label30; END ELSE IF CurType=T THEN BEGIN RingMerge[Lhs,CurExp]; GOTO Label30; END ELSE IF CurType=14 THEN IF T=10 THEN BEGIN PairToPath[]; GOTO Label20; END;13,14 =>IF CurType=T THEN--1004:--BEGIN P_V+BigNodeSize^[T]; Q_Mem[CurExp+1]^.Int+BigNodeSize^[T];DO P_ INT[P]-2;Q_ INT[Q]-2;TryEq[P,Q]; IF P=V THEN EXIT; ENDLOOP; GOTO Label30; END--:1004--; 16,17,18,19 =>IF INT[CurType]>=16 THEN BEGIN TryEq[Lhs,0]; GOTO Label30; END;1 => NULL; --:1002-- ENDCASE;--1001:--DispErr[Lhs,157];DispErr[0,756]; IF INT[Mem[Lhs]^.Hh.B0]<=14 THEN PrintType[Mem[Lhs]^.Hh.B0] ELSE Print[213]; PrintChar[61];IF INT[CurType]<=14 THEN PrintType[CurType] ELSE Print[213]; PrintChar[41];BEGIN HelpPtr_2;HelpLine^[1]_757;HelpLine^[0]_758; END;PutGetError--:1001--[];EXITS Label30 => NULL};BEGIN IF ArithError THEN ClearArith[]; END; RecycleValue[Lhs];FreeNode[Lhs,2];EXIT; EXITS Label20 => NULL} ENDLOOP; END;--:1000-- DoEquation: PROCEDURE = BEGIN Lhs:Halfword;P:Halfword; Lhs_StashCurExp[];GetXNext[];VarFlag_77;ScanExpression[]; IF CurCmd=51 THEN DoEquation [] ELSE IF CurCmd=77 THEN DoAssignment[]; IF Internal^[7]>131072 THEN--996:--BEGIN BeginDiagnostic[];PrintNl[715]; PrintExp[Lhs,0];Print[751];PrintExp[0,0];Print[707]; EndDiagnostic[FALSE]; END--:996--; IF CurType=10 THEN IF Mem[Lhs]^.Hh.B0=14 THEN BEGIN P_StashCurExp[]; UnstashCurExp[Lhs];Lhs_P; END;MakeEq[Lhs]; END;--:994----995: END.