-- file: WeaveId.mesa -- Pascal-to-Mesa translator output, translated at September 23, 1986 1:27:37 pm PDT DIRECTORY PascalBasic, PascalWizardFiles, WeaveProcs, WeaveProcArray, WeaveVars; WeaveId: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, WeaveProcs, WeaveProcArray, WeaveVars EXPORTS WeaveProcs = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, WeaveProcs, WeaveProcArray, WeaveVars; PrintId: PROCEDURE[P: NamePointer] = BEGIN K:PascalInteger[0..MaxBytes]; W:PascalInteger[0..1]; IF INT[P]>=NamePtr THEN PascalWriteLongString[file: @TermOut, item: "IMPOSSIBLE"] ELSE BEGIN W_ PascalMODPower2Mask[P ,1]; FOR i:INT IN [ INT[ByteStart^[P]].. INT[ INT[ByteStart^[P+2]]-1 ]] DO K _ i; PascalWriteChar[file: @TermOut, item: Xchr^[ByteMem [W, K]^]] ENDLOOP; END; END;--:44----51:----:52----59:-- IdLookup: PROCEDURE[T: EightBits] RETURNS[IdLookupResult: NamePointer] = BEGIN I:PascalInteger[0..LongBufSize];H:PascalInteger[0..HashSize];K:PascalInteger[0..MaxBytes];W:PascalInteger[0..1]; L:PascalInteger[0..LongBufSize];P:NamePointer; L_IdLoc-IdFirst;--60: H_Buffer^[IdFirst];I_IdFirst+1; WHILE INT[I]3))) THEN--62:--BEGIN I_IdFirst;K_ByteStart^[P]; W_ PascalMODPower2Mask[P ,1];WHILE( INT[I] NULL};--:61--IF P=NamePtr THEN--63: BEGIN W_ PascalMODPower2Mask[NamePtr ,1]; IF INT[BytePtr^[W]+L]>MaxBytes THEN BEGIN PascalWriteLn[file: @TermOut]; {PascalWriteLongString[file: @TermOut, item: "! Sorry, "]; PascalWriteLongString[file: @TermOut, item: "byte memory"]; PascalWriteLongString[file: @TermOut, item: " capacity exceeded"]};Error[]; History_3;JumpOut[]; END; IF INT[NamePtr+2]>MaxNames THEN BEGIN PascalWriteLn[file: @TermOut]; {PascalWriteLongString[file: @TermOut, item: "! Sorry, "]; PascalWriteLongString[file: @TermOut, item: "name"]; PascalWriteLongString[file: @TermOut, item: " capacity exceeded"]};Error[]; History_3;JumpOut[]; END;I_IdFirst;K_BytePtr^[W]; WHILE INT[I]L THEN C_1 ELSE C_4 ELSE IF INT[J]>L THEN C_ 3 ELSE IF INT[ModText^[J]]MaxBytes THEN BEGIN PascalWriteLn[file: @TermOut]; {PascalWriteLongString[file: @TermOut, item: "! Sorry, "]; PascalWriteLongString[file: @TermOut, item: "byte memory"]; PascalWriteLongString[file: @TermOut, item: " capacity exceeded"]};Error[]; History_3;JumpOut[]; END; IF INT[NamePtr]>MaxNames-2 THEN BEGIN PascalWriteLn[file: @TermOut]; {PascalWriteLongString[file: @TermOut, item: "! Sorry, "]; PascalWriteLongString[file: @TermOut, item: "name"]; PascalWriteLongString[file: @TermOut, item: " capacity exceeded"]};Error[]; History_3;JumpOut[]; END;P_NamePtr; IF C=0 THEN Link^[Q]_P ELSE Ilk^[Q]_P;Link^[P]_0;Ilk^[P]_0;Xref^[P]_0; C_1;FOR i:INT IN [ INT[1 ].. INT[L ]] DO J _ i; ByteMem[W, INT[K+J]-1]^_ModText^[J] ENDLOOP;BytePtr^[W]_ INT[K]+L; ByteStart^[NamePtr+2]_ INT[K]+L;NamePtr_NamePtr+1;--:68--EXITS Label31 => NULL};IF C#1 THEN BEGIN BEGIN IF NOT PhaseOne THEN BEGIN PascalWriteLn[file: @TermOut ];PascalWriteLongString[file: @TermOut, item: "! Incompatible section names"];Error[]; END; END;P_0; END; ModLookupResult_P; END;--:67----70: PrefixLookup: PROCEDURE[L: SixteenBits] RETURNS[PrefixLookupResult: NamePointer] = BEGIN C:PascalInteger[0..4]; Count:PascalInteger[0..MaxNames];J:PascalInteger[0..LongestName];K:PascalInteger[0..MaxBytes];W:PascalInteger[0..1]; P:NamePointer;Q:NamePointer;R:NamePointer; Q_0;P_Ilk^[0]; Count_0;R_0;WHILE P#0 DO BEGIN--69:--BEGIN K_ByteStart^[P];W_ PascalMODPower2Mask[P ,1]; C_1;J_1; WHILE( INT[K]L THEN C_1 ELSE C_4 ELSE IF INT[J]>L THEN C_ 3 ELSE IF INT[ModText^[J]]