-- file: MFFileNamesImpl.mesa -- Pascal-to-Mesa translator output, translated at October 31, 1985 4:28:02 pm PST DIRECTORY PascalBasic, PascalWizardFiles, MFTypes, MFInteraction, MFSymbols, MFInput, MFFileNames; MFFileNamesImpl: PROGRAM IMPORTS MFInteraction, MFSymbols, MFInput EXPORTS MFFileNames = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, MFTypes, MFInteraction, MFSymbols, MFInput, MFFileNames; --:751----766:-- CurName: StrNumber; CurArea: StrNumber; CurExt: StrNumber; --:766----767:-- AreaDelimiter: PoolPointer; ExtDelimiter: PoolPointer; --:767----768:-- MfArea: StrNumber; --:768----781: JobName: StrNumber; LogName: StrNumber; --:784----790:-- GfFile: ByteFile; OutputFileName: StrNumber; PrintFileName: PROCEDURE[N,A,E: PascalInteger] = BEGIN Print[A];Print[N]; Print[E]; END;--:772----73:-- BeginName: PROCEDURE = BEGIN AreaDelimiter←0;ExtDelimiter←0; END;--:769----770: MoreName: PROCEDURE[C: AsciiCode] RETURNS[MoreNameResult: PascalBoolean] = BEGIN IF C=32 THEN MoreNameResult←FALSE ELSE BEGIN IF(C=62)OR (C=47)OR (C=93) THEN AreaDelimiter←PoolPtr ELSE IF(C=46) THEN ExtDelimiter←PoolPtr; BEGIN IF INT[PoolPtr+1]>MaxPoolPtr THEN BEGIN IF INT[PoolPtr+1]>PoolSize THEN Overflow[129,PoolSize-InitPoolPtr];MaxPoolPtr←PoolPtr+1; END; END; BEGIN StrPool↑[PoolPtr]←C;PoolPtr←PoolPtr+1; END;MoreNameResult←TRUE; END; END;--:770----771:-- EndName: PROCEDURE = BEGIN IF INT[StrPtr+3]>MaxStrPtr THEN BEGIN IF INT[StrPtr+3]>MaxStrings THEN Overflow[130,MaxStrings-InitStrPtr];MaxStrPtr←StrPtr+3; END; IF AreaDelimiter=0 THEN CurArea←157 ELSE BEGIN CurArea←StrPtr; StrPtr←StrPtr+1;StrStart↑[StrPtr]←AreaDelimiter+1; END; IF ExtDelimiter=0 THEN BEGIN CurExt←157;CurName←MakeString[]; END ELSE BEGIN CurName←StrPtr;StrPtr←StrPtr+1; StrStart↑[StrPtr]←ExtDelimiter;CurExt←MakeString[]; END; END;--:771 --773:-- PackFileName: PROCEDURE[N,A,E: StrNumber] = BEGIN K:PascalInteger; C:AsciiCode;J:PoolPointer; K←0; FOR i:INT IN [ INT[StrStart↑[A]].. INT[StrStart↑[A+1]-1 ]] DO J ← i; C←StrPool↑[J];K←K+1; IF K<=FileNameSize THEN NameOfFile↑[K]←Xchr↑[C]; ENDLOOP; FOR i:INT IN [ INT[StrStart↑[N]].. INT[StrStart↑[N+1]-1 ]] DO J ← i; C←StrPool↑[J];K←K+1; IF K<=FileNameSize THEN NameOfFile↑[K]←Xchr↑[C]; ENDLOOP; FOR i:INT IN [ INT[StrStart↑[E]].. INT[StrStart↑[E+1]-1 ]] DO J ← i; C←StrPool↑[J];K←K+1; IF K<=FileNameSize THEN NameOfFile↑[K]←Xchr↑[C]; ENDLOOP; IF K<=FileNameSize THEN NameLength←K ELSE NameLength← FileNameSize; FOR i:INT IN [ INT[NameLength+1 ].. INT[FileNameSize ]] DO K ← i; NameOfFile↑[K]←' ENDLOOP; END; --:777----779: MakeNameString: PROCEDURE RETURNS[MakeNameStringResult: StrNumber] = BEGIN K:PascalInteger[1..FileNameSize]; IF( INT[PoolPtr+NameLength]>PoolSize)OR (StrPtr=MaxStrings) THEN MakeNameStringResult←63 ELSE BEGIN FOR i:INT IN [ INT[1 ].. INT[NameLength ]] DO K ← i; StrPool↑[PoolPtr]←Xord↑[NameOfFile↑[K]];PoolPtr←PoolPtr+1; ENDLOOP; MakeNameStringResult←MakeString[]; END; END; --:779 --780:-- ScanFileName: PROCEDURE = BEGIN BeginName[]; WHILE Buffer↑[CurInput.LocField]=32 DO CurInput.LocField← INT[CurInput. LocField]+1 ENDLOOP ; {WHILE TRUE DO BEGIN IF(Buffer↑[CurInput.LocField]=59)OR (Buffer↑ [CurInput.LocField]=37) THEN GOTO Label30; IF NOT MoreName[Buffer↑[CurInput.LocField]] THEN GOTO Label30; CurInput.LocField← INT[CurInput.LocField]+1; END ENDLOOP ;EXITS Label30 => NULL};EndName[]; END;--:780 --783:-- PackJobName: PROCEDURE[S: StrNumber] = BEGIN CurArea←157; CurExt←S;CurName←JobName;PackFileName[CurName,CurArea,CurExt]; END;--:783----785:-- PromptFileName: PROCEDURE[S,E: StrNumber] = BEGIN K:PascalInteger[0..BufSize]; IF Interaction=2 THEN NULL; IF S=608 THEN BEGIN IF Interaction=3 THEN NULL;PrintNl[133];Print[609]; END ELSE BEGIN IF Interaction=3 THEN NULL;PrintNl[133];Print[610]; END; PrintFileName[CurName,CurArea,CurExt];Print[611]; IF E=612 THEN ShowContext[];PrintNl[613];Print[S]; IF INT[Interaction]<2 THEN FatalError[614];BEGIN Print[615];TermInput[]; END; --786:--BEGIN BeginName[];K←First;WHILE(Buffer↑[K]=32)AND ( INT[K]<Last)DO K←K+1 ENDLOOP ; {WHILE TRUE DO BEGIN IF K=Last THEN GOTO Label30; IF NOT MoreName[Buffer↑[K]] THEN GOTO Label30;K←K+1; END ENDLOOP ;EXITS Label30 => NULL};EndName[]; END--:786 ;IF CurExt=157 THEN CurExt←E; PackFileName[CurName,CurArea,CurExt]; END;--:785----787: END.