-- file: WeaveLow.mesa -- Pascal-to-Mesa translator output, translated at September 23, 1986 1:27:38 pm PDT DIRECTORY PascalBasic, PascalWizardFiles, WeaveProcs, WeaveProcArray, WeaveVars; WeaveLow: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, WeaveProcArray, WeaveVars EXPORTS WeaveProcs = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, WeaveProcs, WeaveProcArray, WeaveVars; FlushBuffer: PROCEDURE[B: EightBits,PerCent: PascalBoolean] = BEGIN J, K:PascalInteger[0..LineLength]; J_B; {IF NOT PerCent THEN WHILE TRUE DO BEGIN IF J=0 THEN GOTO Label30; IF OutBuf^[J]#32 THEN GOTO Label30;J_J-1; END ENDLOOP ; EXITS Label30 => NULL};FOR i:INT IN [ INT[1 ].. INT[J ]] DO K _ i; PascalWriteChar[file: @TexFile, item: Xchr^[OutBuf^[K]]] ENDLOOP; IF PerCent THEN PascalWriteChar[file: @TexFile, item: Xchr^[37]];PascalWriteLn[file: @TexFile]; OutLine_OutLine+1; IF INT[B]0 THEN FlushBuffer[OutPtr,FALSE] ELSE BEGIN FOR i:INT IN [ INT[0 ].. INT[Limit ]] DO K _ i; IF(Buffer^[K]#32)AND (Buffer^[K]#9) THEN GOTO Label10 ENDLOOP; FlushBuffer[0,FALSE]; END;EXITS Label10 => NULL}; END;--:124----128:-- BreakOut: PROCEDURE = BEGIN K:PascalInteger[0..LineLength];D:AsciiCode; K_OutPtr; {WHILE TRUE DO BEGIN IF K=0 THEN--129:--BEGIN BEGIN PascalWriteLn[file: @TermOut]; {PascalWriteLongString[file: @TermOut, item: "! Line had to be broken (output l."]; PascalWriteInteger[file: @TermOut, item: OutLine, fieldMinLength: 1]}; END; {PascalWriteLongString[file: @TermOut, item: "):"]; PascalWriteLn[file: @TermOut]}; FOR i:INT IN [ INT[1 ].. INT[OutPtr-1 ]] DO K _ i; PascalWriteChar[file: @TermOut, item: Xchr^[OutBuf^[K]]] ENDLOOP; PascalWriteLn[file: @TermOut];IF History=0 THEN History_1; FlushBuffer[OutPtr-1,TRUE]; GOTO Label10; END--:129--;D_OutBuf^[K]; IF D=32 THEN BEGIN FlushBuffer[K,FALSE]; GOTO Label10; END; IF(D=92)AND (OutBuf^[K-1]#92) THEN BEGIN FlushBuffer[K-1,TRUE]; GOTO Label10; END;K_K-1; END ENDLOOP ;EXITS Label10 => NULL}; END;--:128----131:-- OutMod: PROCEDURE[M: PascalInteger] = BEGIN K:PascalInteger[0..5];A:PascalInteger; K_0;A_M;DO Dig^[K]_ A MOD 10; A_ A /10;K_K+1; IF A=0 THEN EXIT; ENDLOOP;DO K_K-1; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_Dig^[K]+48; END; IF K=0 THEN EXIT; ENDLOOP; IF ChangedModule^[M] THEN BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_92; IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_42; END; END;--:131----132: OutName: PROCEDURE[P: NamePointer] = BEGIN K:PascalInteger[0..MaxBytes];W:PascalInteger[0..1]; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_123; END;W_ PascalMODPower2Mask[P ,1]; FOR i:INT IN [ INT[ByteStart^[P]].. INT[ INT[ByteStart^[P+2]]-1 ]] DO K _ i; IF ByteMem[W, K]^=95 THEN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92; END;BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_ByteMem[W, K]^; END; ENDLOOP; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_125; END; END;--:132----133:-- END.