-- file: WeavePhaseIII.mesa -- Pascal-to-Mesa translator output, translated at September 23, 1986 1:27:38 pm PDT DIRECTORY PascalBasic, PascalWizardFiles, WeaveProcs, WeaveVars, WeaveProcArray; WeavePhaseIII: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, WeaveProcs, WeaveVars, WeaveProcArray EXPORTS WeaveProcs = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, WeaveProcs, WeaveVars, WeaveProcArray; Unbucket: PROCEDURE[D: EightBits] = BEGIN C:AsciiCode; FOR i:INT DECREASING IN [ INT[0 ].. INT[100 ]] DO C _ i; IF INT[Bucket^[Collate^[C]]]>0 THEN BEGIN IF INT[ScrapPtr]>MaxScraps THEN BEGIN PascalWriteLn[file: @TermOut]; {PascalWriteLongString[file: @TermOut, item: "! Sorry, "]; PascalWriteLongString[file: @TermOut, item: "sorting"]; PascalWriteLongString[file: @TermOut, item: " capacity exceeded"]};Error[]; History_3;JumpOut[]; END;ScrapPtr_ScrapPtr+1; --IF SCRAP_PTR>MAX_SORT_PTR THEN MAX_SORT_PTR:=SCRAP_PTR; IF C=0 THEN Cat^[ScrapPtr]_255 ELSE Cat^[ScrapPtr]_D; Trans^[ScrapPtr]_Bucket^[Collate^[C]];Bucket^[Collate^[C]]_0; END ENDLOOP; END; --:250----257:-- ModPrint: PROCEDURE[P: NamePointer] = BEGIN IF INT[P]>0 THEN BEGIN ModPrint[Link^[P]]; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_58; END;TokPtr_1;TextPtr_1; ScrapPtr_0;StackPtr_0;CurState.ModeField_1; TokMem^[TokPtr]_P+30720;TokPtr_TokPtr+1;MakeOutput[];Footnote[0]; FinishLine[];ModPrint[Ilk^[P]]; END; END;--:257----261:----PROCEDURE DEBUG_HELP; -- LABEL 888,10;VAR K:SIXTEEN_BITS;BEGIN DEBUG_SKIPPED:=DEBUG_SKIPPED+1; -- IF DEBUG_SKIPPED=65) THEN C_C+32;Blink^[CurName]_Bucket^[C]; Bucket^[C]_CurName; END; END ENDLOOP ;--:244-- ENDLOOP;--251:--ScrapPtr_0;Unbucket[1]; WHILE INT[ScrapPtr]>0 DO BEGIN CurDepth_Cat^[ScrapPtr]; IF(Blink^[Trans^[ScrapPtr]]=0)OR (CurDepth=255) THEN--253: BEGIN CurName_Trans^[ScrapPtr];--IF TROUBLE_SHOOTING THEN DEBUG_HELP; DO BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_58; END;--254: SELECT Ilk^[CurName]FROM 0 =>IF INT[ByteStart^[CurName+2]]-ByteStart^[CurName]=1 THEN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_124; END ELSE BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_92; END;1 => NULL; 2 =>BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_57; END; 3 =>BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_46; END; ENDCASE =>BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_38; END ;OutName[CurName]--:254 ;--255:----256:--ThisXref_Xref^[CurName];CurXref_0; DO NextXref_Xmem^[ThisXref].XlinkField; Xmem^[ThisXref].XlinkField_CurXref;CurXref_ThisXref; ThisXref_NextXref; IF ThisXref=0--:256-- THEN EXIT; ENDLOOP; DO BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_44;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_32; END; CurVal_Xmem^[CurXref].NumField; IF INT[CurVal]<10240 THEN OutMod[CurVal] ELSE BEGIN BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1;OutBuf^[OutPtr]_92; IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_91; END;OutMod[ INT[CurVal]-10240]; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_93; END; END;CurXref_Xmem^[CurXref].XlinkField; IF CurXref=0 THEN EXIT; ENDLOOP;BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_46; END;FinishLine--:255--[]; CurName_Blink^[CurName]; IF CurName=0 THEN EXIT; ENDLOOP;ScrapPtr_ScrapPtr-1; END--:253-- ELSE--252:--BEGIN NextName_Trans^[ScrapPtr]; DO CurName_NextName;NextName_Blink^[CurName]; CurByte_ INT[ByteStart^[CurName]]+CurDepth;CurBank_ PascalMODPower2Mask[CurName ,1]; IF CurByte=ByteStart^[CurName+2] THEN C_0 ELSE BEGIN C_ByteMem[ CurBank, CurByte]^;IF( INT[C]<=90)AND ( INT[C]>=65) THEN C_C+32; END; Blink^[CurName]_Bucket^[C];Bucket^[C]_CurName; IF NextName=0 THEN EXIT; ENDLOOP; ScrapPtr_ScrapPtr-1;Unbucket[CurDepth+1]; END--:252--; END--:251-- ENDLOOP ; BEGIN IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_92;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_102; IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_105;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_110; END;FinishLine[];--258: ModPrint[Ilk^[0]]--:258--;BEGIN IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_92; IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_99;IF OutPtr=LineLength THEN BreakOut[]; OutPtr_OutPtr+1;OutBuf^[OutPtr]_111; IF OutPtr=LineLength THEN BreakOut[];OutPtr_OutPtr+1; OutBuf^[OutPtr]_110; END;FinishLine[];PascalWriteLongString[file: @TermOut, item: "Done."];--:240-- END; END.