-- file: TangleCode.mesa -- Pascal-to-Mesa translator output, translated at September 23, 1986 11:39:50 am PDT DIRECTORY PascalBasic, PascalWizardFiles, TanglePrivate; TangleCode: PROGRAM IMPORTS PascalWizardFiles, TanglePrivate EXPORTS TanglePrivate = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, TanglePrivate; ControlCode: PROCEDURE[C: AsciiCode] RETURNS[ControlCodeResult: EightBits] = BEGIN SELECT C FROM 64 =>ControlCodeResult_64;39 =>ControlCodeResult_12; 34 =>ControlCodeResult_13;36 =>ControlCodeResult_125;32,9 =>ControlCodeResult_136; 42 =>BEGIN {PascalWriteLongString[file: @TermOut, item: "*"]; PascalWriteInteger[file: @TermOut, item: ModuleCount+1, fieldMinLength: 1]};PascalTextBREAK[file: @TermOut]; ControlCodeResult_136; END;68,100 =>ControlCodeResult_133;70,102 =>ControlCodeResult_132; 123 =>ControlCodeResult_9;125 =>ControlCodeResult_10;80,112 =>ControlCodeResult_134; 84,116,94,46,58 =>ControlCodeResult_131;38 =>ControlCodeResult_127; 60 =>ControlCodeResult_135;61 =>ControlCodeResult_2;92 =>ControlCodeResult_3; ENDCASE =>ControlCodeResult_0 ; END;--:139----140: SkipAhead: PROCEDURE RETURNS[SkipAheadResult: EightBits] = BEGIN C:EightBits; {WHILE TRUE DO BEGIN IF INT[Loc]>Limit THEN BEGIN GetLine[]; IF InputHasEnded THEN BEGIN C_136; GOTO Label30; END; END; Buffer^[Limit+1]_64;WHILE Buffer^[Loc]#64 DO Loc_Loc+1 ENDLOOP ; IF INT[Loc]<=Limit THEN BEGIN Loc_Loc+2;C_ControlCode[Buffer^[Loc-1]]; IF(C#0)OR (Buffer^[Loc-1]=62) THEN GOTO Label30; END; END ENDLOOP ;EXITS Label30 => NULL};SkipAheadResult_C; END; --:140----141:-- SkipComment: PROCEDURE = BEGIN Bal:EightBits; C:AsciiCode; Bal_0; {WHILE TRUE DO BEGIN IF INT[Loc]>Limit THEN BEGIN GetLine[]; IF InputHasEnded THEN BEGIN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! Input ended in mid-comment"];Error[]; END; GOTO Label10; END; END;C_Buffer^[Loc];Loc_Loc+1;--142:--IF C=64 THEN BEGIN C_Buffer^[Loc]; IF(C#32)AND (C#9)AND (C#42)AND (C#122)AND (C#90) THEN Loc_Loc+1 ELSE BEGIN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! Section ended in mid-comment"];Error[]; END;Loc_Loc-1; GOTO Label10; END ; END ELSE IF(C=92)AND (Buffer^[Loc]#64) THEN Loc_Loc+1 ELSE IF C=123 THEN Bal_Bal+1 ELSE IF C=125 THEN BEGIN IF Bal=0 THEN GOTO Label10; Bal_Bal-1; END--:142--; END ENDLOOP ;EXITS Label10 => NULL}; END;--:141----145: GetNext: PROCEDURE RETURNS[GetNextResult: EightBits] = BEGIN C:EightBits; D:EightBits;J, K:PascalInteger[0..LongestName]; DO {--Label20:--{IF INT[Loc]>Limit THEN BEGIN GetLine[]; IF InputHasEnded THEN BEGIN C_136; GOTO Label31; END; END;C_Buffer^[Loc]; Loc_Loc+1;IF ScanningHex THEN--146: IF(( INT[C]>=48)AND ( INT[C]<=57))OR (( INT[C]>=65)AND ( INT[C]<=70)) THEN GOTO Label31 ELSE ScanningHex _FALSE--:146--; SELECT C FROM 65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85 ,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111 ,112,113,114,115,116,117,118,119,120,121,122 =>--148: BEGIN IF((C=101)OR (C=69))AND ( INT[Loc]>1) THEN IF( INT[Buffer^[Loc-2]]<=57)AND ( INT[Buffer^ [Loc-2]]>=48) THEN C_0;IF C#0 THEN BEGIN Loc_Loc-1;IdFirst_Loc; DO Loc_Loc+1;D_Buffer^[Loc]; IF(( INT[D]<48)OR (( INT[D]>57)AND ( INT[D]<65))OR (( INT[D]>90)AND ( INT[D]<97))OR ( INT[D]>122))AND (D#95) THEN EXIT; ENDLOOP; IF INT[Loc]>IdFirst+1 THEN BEGIN C_130;IdLoc_Loc; END; END ELSE C_69; END--:148--;34 =>--149:--BEGIN DoubleChars_0;IdFirst_Loc-1; DO D_Buffer^[Loc];Loc_Loc+1; IF(D=34)OR (D=64) THEN IF Buffer^[Loc]=D THEN BEGIN Loc_Loc+1;D_0; DoubleChars_DoubleChars+1; END ELSE BEGIN IF D=64 THEN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! Double @ sign missing"];Error[]; END ; END ELSE IF INT[Loc]>Limit THEN BEGIN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! String constant didn't end"];Error[]; END;D_34; END; IF D=34 THEN EXIT; ENDLOOP;IdLoc_Loc-1;C_130; END--:149--;64 =>--150: BEGIN C_ControlCode[Buffer^[Loc]];Loc_Loc+1; IF C=0 THEN GOTO Label20 ELSE IF C=13 THEN ScanningHex_TRUE ELSE IF C=135 THEN--151:--BEGIN--153:-- K_0; {WHILE TRUE DO BEGIN IF INT[Loc]>Limit THEN BEGIN GetLine[]; IF InputHasEnded THEN BEGIN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! Input ended in section name"];Error[]; END; GOTO Label30; END; END;D_Buffer^[Loc];--154:--IF D=64 THEN BEGIN D_Buffer^[Loc+1]; IF D=62 THEN BEGIN Loc_Loc+2; GOTO Label30; END; IF(D=32)OR (D=9)OR (D=42) THEN BEGIN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! Section name didn't end"];Error[]; END; GOTO Label30; END; K_K+1;ModText^[K]_64;Loc_Loc+1; END--:154--;Loc_Loc+1; IF INT[K] NULL};--155: IF INT[K]>=LongestName-2 THEN BEGIN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! Section name too long: "]; END; FOR i:INT IN [ INT[1 ].. INT[25 ]] DO J _ i; PascalWriteChar[file: @TermOut, item: Xchr^[ModText^[J]]] ENDLOOP; PascalWriteLongString[file: @TermOut, item: "..."];IF History=0 THEN History_1; END--:155--; IF(ModText^[K]=32)AND ( INT[K]>0) THEN K_K-1;--:153--IF INT[K]>3 THEN BEGIN IF(ModText^[K]=46)AND (ModText^[K-1]=46)AND (ModText^[K -2]=46) THEN CurModule_PrefixLookup[K-3] ELSE CurModule_ModLookup[K] ; END ELSE CurModule_ModLookup[K]; END--:151 ELSE IF C=131 THEN BEGIN DO C_SkipAhead[]; IF C#64 THEN EXIT; ENDLOOP; IF Buffer^[Loc-1]#62 THEN BEGIN PascalWriteLn[file: @TermOut]; PascalWriteLongString[file: @TermOut, item: "! Improper @ within control text"];Error[]; END; GOTO Label20; END; END--:150--;--147: 46 =>IF Buffer^[Loc]=46 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_32; Loc_Loc+1; END; END ELSE IF Buffer^[Loc]=41 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_93; Loc_Loc+1; END; END; 58 =>IF Buffer^[Loc]=61 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_24; Loc_Loc+1; END; END; 61 =>IF Buffer^[Loc]=61 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_30; Loc_Loc+1; END; END; 62 =>IF Buffer^[Loc]=61 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_29; Loc_Loc+1; END; END; 60 =>IF Buffer^[Loc]=61 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_28; Loc_Loc+1; END; END ELSE IF Buffer^[Loc]=62 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_26; Loc_Loc+1; END; END; 40 =>IF Buffer^[Loc]=42 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_9; Loc_Loc+1; END; END ELSE IF Buffer^[Loc]=46 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_91; Loc_Loc+1; END; END; 42 =>IF Buffer^[Loc]=41 THEN BEGIN IF INT[Loc]<=Limit THEN BEGIN C_10; Loc_Loc+1; END; END;--:147--32,9 => GOTO Label20;123 =>BEGIN SkipComment[]; GOTO Label20; END; ENDCASE => NULL;EXITS Label31 => NULL};--IF TROUBLE_SHOOTING THEN DEBUG_HELP;--GetNextResult_C;EXIT; EXITS Label20 => NULL} ENDLOOP; END; END.