-- file: TexSymbols2Impl.mesa -- Pascal-to-Mesa translator output, translated at September 27, 1985 10:21:37 am PDT DIRECTORY PascalBasic, PascalWizardFiles, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest; TexSymbols2Impl: PROGRAM IMPORTS PascalBasic, PascalWizardFiles, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest EXPORTS TexSymbols = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, TexTypes, TexSysdep, TexSysdepInline, TexInteraction, TexMemory, TexSymbols, TexScan, TexOps, TexRest; --:165 --173:-- FontInShortDisplay: PascalInteger; --:173----181:-- DepthThreshold: PascalInteger; BreadthMax: PascalInteger; --:181----213: Nest: LONG POINTER TO ARRAY PascalInteger[0..40] OF ListStateRecord ← PascalStaticZone.NEW[ARRAY PascalInteger[0..40] OF ListStateRecord]; NestPtr: PascalInteger[0..NestSize]; MaxNestStack: PascalInteger[0..NestSize]; CurList: ListStateRecord; ShownMode: PascalInteger[-201..201]; --:213----246:-- OldSetting: PascalInteger[0..21]; --:246----253: Eqtb: LONG POINTER TO ARRAY PascalInteger[1..5476] OF MemoryWord ← PascalStaticZone.NEW[ARRAY PascalInteger[1..5476] OF MemoryWord]; XeqLevel: LONG POINTER TO ARRAY PascalInteger[4767..5476] OF Quarterword ← PascalStaticZone.NEW[ARRAY PascalInteger[4767..5476] OF Quarterword]; --:253----256: Hash: LONG POINTER TO ARRAY PascalInteger[258..3024] OF TwoHalves ← PascalStaticZone.NEW[ARRAY PascalInteger[258..3024] OF TwoHalves]; HashUsed: Halfword; NoNewControlSequence: PascalBoolean; CsCount: PascalInteger; --:256----271: SaveStack: LONG POINTER TO ARRAY PascalInteger[0..600] OF MemoryWord ← PascalStaticZone.NEW[ARRAY PascalInteger[0..600] OF MemoryWord]; SavePtr: PascalInteger[0..SaveSize]; MaxSaveStack: PascalInteger[0..SaveSize]; CurLevel: Quarterword; CurGroup: GroupCode; CurBoundary: PascalInteger[0..SaveSize]; --:271----286:-- MagSet: PascalInteger; UsePressFormat: PascalBoolean; --:286----297:-- CurCmd: EightBits; CurChr: Halfword; CurCs: Halfword; CurTok: Halfword; --:297----301: InputStack: LONG POINTER TO ARRAY PascalInteger[0..200] OF InStateRecord ← PascalStaticZone.NEW[ARRAY PascalInteger[0..200] OF InStateRecord]; InputPtr: PascalInteger[0..StackSize]; MaxInStack: PascalInteger[0..StackSize]; CurInput: InStateRecord; --:301----304:-- InOpen: PascalInteger[0..MaxInOpen]; InputFile: LONG POINTER TO ARRAY PascalInteger[1..6] OF AlphaFile ← PascalStaticZone.NEW[ARRAY PascalInteger[1..6] OF AlphaFile]; Line: PascalInteger; LineStack: LONG POINTER TO ARRAY PascalInteger[1..6] OF PascalInteger ← PascalStaticZone.NEW[ARRAY PascalInteger[1..6] OF PascalInteger]; --:304----305: ScannerStatus: PascalInteger[0..5]; WarningIndex: Halfword; DefRef: Halfword; --:305----308: ParamStack: LONG POINTER TO ARRAY PascalInteger[0..60] OF Halfword ← PascalStaticZone.NEW[ARRAY PascalInteger[0..60] OF Halfword]; ParamPtr: PascalInteger[0..ParamSize]; MaxParamStack: PascalInteger; --:308----309:-- AlignState: PascalInteger; --:309----310: BasePtr: PascalInteger[0..StackSize]; --:310----333:-- ParLoc: Halfword; ParToken: Halfword; --:361----382: CurMark: LONG POINTER TO ARRAY PascalInteger[0..4] OF Halfword ← PascalStaticZone.NEW[ARRAY PascalInteger[0..4] OF Halfword]; --:382----387:-- LongState: PascalInteger[110..113]; --:387 --388:--Pstack: LONG POINTER TO ARRAY PascalInteger[0..8] OF Halfword ← PascalStaticZone.NEW[ARRAY PascalInteger[0..8] OF Halfword]; --:388----410:-- CurVal: PascalInteger; CurValLevel: PascalInteger[0..5]; --:410----438:-- Radix: SmallNumber; --:438----447: CurOrder: GlueOrd; --:447----480:--ReadFile: LONG POINTER TO ARRAY PascalInteger[0..15] OF AlphaFile ← PascalStaticZone.NEW[ARRAY PascalInteger[0..15] OF AlphaFile]; ReadOpen: LONG POINTER TO ARRAY PascalInteger[0..16] OF PascalInteger[0..2] ← PascalStaticZone.NEW[ARRAY PascalInteger[0..16] OF PascalInteger[0..2]]; --:480----489:-- CondPtr: Halfword; IfLimit: PascalInteger[0..4]; CurIf: SmallNumber; --:489----493: SkipLine: PascalInteger; --:493----512:-- CurName: StrNumber; CurArea: StrNumber; CurExt: StrNumber; --:512----513:-- AreaDelimiter: PoolPointer; ExtDelimiter: PoolPointer; --306:-- Runaway: PROCEDURE = BEGIN P:Halfword; IF INT[ScannerStatus]>1 THEN BEGIN PrintNl[431]; SELECT ScannerStatus FROM 2 =>BEGIN Print[432];P←DefRef; END; 3 =>BEGIN Print[433];P←64997; END;4 =>BEGIN Print[434];P←64996; END; 5 =>BEGIN Print[435];P←DefRef; END; ENDCASE;PrintChar[63];PrintLn[]; ShowTokenList[Mem[P]↑.Hh.Rh,0,ErrorLine-10]; END; END;--:306----:119----120: ShowContext: PROCEDURE = BEGIN OldSetting:PascalInteger[0..21]; --315:--I:PascalInteger[0..BufSize];J:PascalInteger[0..BufSize];L:PascalInteger[0..HalfErrorLine];M:PascalInteger; N:PascalInteger[0..ErrorLine];P:PascalInteger;Q:PascalInteger;--:315-- BasePtr←InputPtr; InputStack↑[BasePtr]←CurInput; {WHILE TRUE DO BEGIN CurInput←InputStack↑[BasePtr];--312: IF(BasePtr=InputPtr)OR (CurInput.StateField#0)OR (CurInput. IndexField#3)OR (CurInput.LocField#0) THEN BEGIN Tally←0; OldSetting←Selector;IF CurInput.StateField#0 THEN BEGIN--313: IF INT[CurInput.NameField]<=17 THEN IF(CurInput.NameField=0) THEN IF BasePtr=0 THEN PrintNl[436] ELSE PrintNl[437] ELSE BEGIN PrintNl[438]; IF CurInput.NameField=17 THEN PrintChar[42] ELSE PrintInt[ INT[CurInput. NameField]-1];PrintChar[62]; END ELSE BEGIN PrintNl[439]; PrintInt[Line+( INT[CurInput.LocField]-CurInput.StartField)]; END; PrintChar[32]--:313--;--318:--BEGIN L←Tally;Tally←0;Selector←20; TrickCount←1000000; END; IF Buffer↑[CurInput.LimitField]=Eqtb↑[4815].Int THEN J←CurInput. LimitField ELSE J←CurInput.LimitField+1; IF INT[J]>0 THEN FOR i:INT IN [ INT[CurInput.StartField ].. INT[J-1 ]] DO I ← i; IF I=CurInput. LocField THEN BEGIN FirstCount←Tally; TrickCount←Tally+1+ErrorLine-HalfErrorLine; IF TrickCount<ErrorLine THEN TrickCount←ErrorLine; END; Print[Buffer↑[I]];--:318-- ENDLOOP; END ELSE BEGIN--314: SELECT CurInput.IndexField FROM 0 =>PrintNl[440];1,2 =>PrintNl[441]; 3 =>IF CurInput.LocField=0 THEN PrintNl[442] ELSE PrintNl[443]; 4 =>PrintNl[444];5 =>BEGIN PrintLn[];PrintCs[CurInput.NameField]; END; 6 =>PrintNl[445];7 =>PrintNl[446];8 =>PrintNl[447];9 =>PrintNl[448]; 10 =>PrintNl[449];11 =>PrintNl[450];12 =>PrintNl[451];13 =>PrintNl[452]; 14 =>PrintNl[453];15 =>PrintNl[454]; ENDCASE =>PrintNl[63]--:314--;--319: BEGIN L←Tally;Tally←0;Selector←20;TrickCount←1000000; END; IF INT[CurInput.IndexField]<5 THEN ShowTokenList[CurInput.StartField, CurInput.LocField,100000] ELSE ShowTokenList[Mem[CurInput. StartField]↑.Hh.Rh,CurInput.LocField,100000]--:319--; END; Selector←OldSetting;--317: IF TrickCount=1000000 THEN BEGIN FirstCount←Tally; TrickCount←Tally+1+ErrorLine-HalfErrorLine; IF TrickCount<ErrorLine THEN TrickCount←ErrorLine; END; IF Tally<TrickCount THEN M←Tally-FirstCount ELSE M← TrickCount-FirstCount;IF L+FirstCount<=HalfErrorLine THEN BEGIN P←0; N←L+FirstCount; END ELSE BEGIN Print[149]; P←L+FirstCount-HalfErrorLine+3;N←HalfErrorLine; END; FOR i:INT IN [ INT[P ].. INT[FirstCount-1 ]] DO Q ← i; PrintChar[TrickBuf↑[ PascalMODPower2Mask[Q ,63]]] ENDLOOP; PrintLn[];FOR i:INT IN [ INT[1 ].. INT[N ]] DO Q ← i; PrintChar[32] ENDLOOP; IF M+N<=ErrorLine THEN P←FirstCount+M ELSE P←FirstCount+(ErrorLine -N-3); FOR i:INT IN [ INT[FirstCount ].. INT[P-1 ]] DO Q ← i; PrintChar[TrickBuf↑[ PascalMODPower2Mask[Q ,63]]] ENDLOOP; IF M+N>ErrorLine THEN Print[149]--:317--; END--:312--; IF(CurInput.StateField#0) THEN IF( INT[CurInput.NameField]>17)OR ( BasePtr=0) THEN GOTO Label30;BasePtr←BasePtr-1; END ENDLOOP ; EXITS Label30 => NULL};CurInput←InputStack↑[InputPtr]; END;--:311----323: BeginTokenList: PROCEDURE[P: Halfword,T: Quarterword] = BEGIN BEGIN IF INT[InputPtr]>MaxInStack THEN BEGIN MaxInStack←InputPtr ;IF InputPtr=StackSize THEN Overflow[455,StackSize]; END; InputStack↑[InputPtr]←CurInput;InputPtr←InputPtr+1; END; CurInput.StateField←0;CurInput.StartField←P; CurInput.IndexField←T; IF INT[T]>=5 THEN BEGIN Mem[P]↑.Hh.Lh←Mem[P]↑.Hh.Lh+1; IF T=5 THEN CurInput.LimitField←ParamPtr ELSE BEGIN CurInput. LocField←Mem[P]↑.Hh.Rh;IF Eqtb↑[4797].Int>1 THEN BEGIN BeginDiagnostic[]; PrintNl[210];SELECT T FROM 14 =>PrintEsc[222];15 =>PrintEsc[456]; ENDCASE =>PrintCmdChr[71,T+3551];Print[418];TokenShow[P]; EndDiagnostic[FALSE]; END; END; END ELSE CurInput.LocField←P; END;--:323 --324:-- EndTokenList: PROCEDURE = BEGIN IF INT[CurInput.IndexField]>=3 THEN BEGIN IF INT[CurInput.IndexField]<=4 THEN FlushList[CurInput.StartField] ELSE BEGIN DeleteTokenRef[ CurInput.StartField]; IF CurInput.IndexField=5 THEN WHILE INT[ParamPtr]>CurInput.LimitField DO BEGIN ParamPtr←ParamPtr-1;FlushList[ParamStack↑[ParamPtr]]; END ENDLOOP ; END; END ELSE IF CurInput.IndexField=1 THEN AlignState←0; BEGIN InputPtr←InputPtr-1;CurInput←InputStack↑[InputPtr]; END; BEGIN IF Interrupt#0 THEN PauseForInstructions[]; END; END;--:324----325: BackInput: PROCEDURE = BEGIN P:Halfword; WHILE(CurInput.StateField=0)AND (CurInput.LocField=0)DO EndTokenList[] ENDLOOP ;P←GetAvail[];Mem[P]↑.Hh.Lh←CurTok; IF INT[CurTok]<768 THEN IF INT[CurTok]<512 THEN AlignState←AlignState-1 ELSE AlignState←AlignState+1; BEGIN IF INT[InputPtr]>MaxInStack THEN BEGIN MaxInStack←InputPtr; IF InputPtr=StackSize THEN Overflow[455,StackSize]; END; InputStack↑[InputPtr]←CurInput;InputPtr←InputPtr+1; END; CurInput.StateField←0;CurInput.StartField←P; CurInput.IndexField←3;CurInput.LocField←P; END;--:325----327: BackError: PROCEDURE = BEGIN OkToInterrupt←FALSE;BackInput[]; OkToInterrupt←TRUE;Error[]; END; InsError: PROCEDURE = BEGIN OkToInterrupt←FALSE;BackInput[];CurInput.IndexField←4; OkToInterrupt←TRUE;Error[]; END;--:327----328: BeginFileReading: PROCEDURE = BEGIN IF InOpen=MaxInOpen THEN Overflow[457,MaxInOpen]; IF First=BufSize THEN Overflow[128,BufSize];InOpen←InOpen+1; BEGIN IF INT[InputPtr]>MaxInStack THEN BEGIN MaxInStack←InputPtr; IF InputPtr=StackSize THEN Overflow[455,StackSize]; END; InputStack↑[InputPtr]←CurInput;InputPtr←InputPtr+1; END; CurInput.IndexField←InOpen;LineStack↑[CurInput.IndexField]←Line; CurInput.StartField←First;CurInput.StateField←1; CurInput.NameField←0; END;--:328----329:-- EndFileReading: PROCEDURE = BEGIN First←CurInput.StartField; Line←LineStack↑[CurInput.IndexField]; IF INT[CurInput.NameField]>17 THEN AClose[@InputFile↑[CurInput.IndexField ]];BEGIN InputPtr←InputPtr-1;CurInput←InputStack↑[InputPtr]; END; InOpen←InOpen-1; END;--:329----330:-- ClearForErrorPrompt: PROCEDURE = BEGIN WHILE(CurInput.StateField#0)AND (CurInput.NameField=0)AND ( INT[InputPtr]>0)AND ( INT[CurInput.LocField]>CurInput.LimitField)DO EndFileReading[] ENDLOOP ;PrintLn[]; END;--:330----336: CheckOuterValidity: PROCEDURE = BEGIN P:Halfword;Q:Halfword; IF ScannerStatus#0 THEN BEGIN DeletionsAllowed←FALSE;--337: IF CurCs#0 THEN BEGIN IF(CurInput.StateField=0)OR ( INT[CurInput. NameField]<1)OR ( INT[CurInput.NameField]>17) THEN BEGIN P←GetAvail[]; Mem[P]↑.Hh.Lh← INT[4096]+CurCs;BeginTokenList[P,3]; END;CurCmd←10; CurChr←32; END--:337--;IF INT[ScannerStatus]>1 THEN--338:--BEGIN Runaway[]; IF CurCs=0 THEN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[465]; END ELSE BEGIN CurCs←0;BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[466]; END; END;Print[467];--339:--P←GetAvail[]; SELECT ScannerStatus FROM 2 =>BEGIN Print[432];Mem[P]↑.Hh.Lh←637; END; 3 =>BEGIN Print[473];Mem[P]↑.Hh.Lh←ParToken;LongState←112; END; 4 =>BEGIN Print[434];Mem[P]↑.Hh.Lh←637;Q←P;P←GetAvail[];Mem[P]↑.Hh.Rh←Q; Mem[P]↑.Hh.Lh←6855;AlignState←-1000000; END;5 =>BEGIN Print[435]; Mem[P]↑.Hh.Lh←637; END; ENDCASE;BeginTokenList[P,4]--:339--;Print[468]; SprintCs[WarningIndex];BEGIN HelpPtr←4;HelpLine↑[3]←469; HelpLine↑[2]←470;HelpLine↑[1]←471;HelpLine↑[0]←472; END;Error[]; END--:338-- ELSE BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134]; Print[459]; END;PrintCmdChr[104,CurIf];Print[460]; PrintInt[SkipLine];BEGIN HelpPtr←3;HelpLine↑[2]←461; HelpLine↑[1]←462;HelpLine↑[0]←463; END; IF CurCs#0 THEN CurCs←0 ELSE HelpLine↑[2]←464;CurTok←6858; InsError[]; END;DeletionsAllowed←TRUE; END; END;--:336----340: --:340----341:-- GetNext: PROCEDURE = BEGIN K:PascalInteger[0..BufSize];T:Halfword;Cat:PascalInteger[0..15]; DO {--Label20:--CurCs←0;{IF CurInput.StateField#0 THEN--343: BEGIN DO {--Label25:--IF INT[CurInput.LocField]<=CurInput.LimitField THEN BEGIN CurChr←Buffer↑[CurInput.LocField]; CurInput.LocField←CurInput.LocField+1; DO {--Label21:--CurCmd←Eqtb↑[ INT[4127]+CurChr].Hh.Rh;--344: SELECT CurInput.StateField+CurCmd FROM--345:--10,26,42,27,43--:345-- => GOTO Label25; 1,17,33 =>--354: BEGIN {IF INT[CurInput.LocField]>CurInput.LimitField THEN CurCs←257 ELSE BEGIN DO {--Label26:--K←CurInput.LocField;CurChr←Buffer↑[K]; Cat←Eqtb↑[ INT[4127]+CurChr].Hh.Rh;K←K+1; IF Cat=11 THEN CurInput.StateField←17 ELSE IF Cat=10 THEN CurInput. StateField←17 ELSE CurInput.StateField←1; IF(Cat=11)AND ( INT[K]<=CurInput.LimitField) THEN--356: BEGIN DO CurChr←Buffer↑[K];Cat←Eqtb↑[ INT[4127]+CurChr].Hh.Rh;K←K+1; IF(Cat#11)OR ( INT[K]>CurInput.LimitField) THEN EXIT; ENDLOOP;--355: BEGIN IF Buffer↑[K]=CurChr THEN IF Cat=7 THEN IF INT[K]<CurInput.LimitField THEN BEGIN CurChr←Buffer↑[K+1]; IF INT[CurChr]<64 THEN Buffer↑[K-1]← INT[CurChr]+64 ELSE Buffer↑[K-1]← INT[CurChr]-64; CurInput.LimitField← INT[CurInput.LimitField]-2;First←First-2; WHILE INT[K]<=CurInput.LimitField DO BEGIN Buffer↑[K]←Buffer↑[K+2];K←K+1; END ENDLOOP ; GOTO Label26; END; END--:355--;IF Cat#11 THEN K←K-1; IF INT[K]>CurInput.LocField+1 THEN BEGIN CurCs←IdLookup[CurInput. LocField, INT[K]-CurInput.LocField];CurInput.LocField←K; GOTO Label40; END; END--:356-- ELSE--355: BEGIN IF Buffer↑[K]=CurChr THEN IF Cat=7 THEN IF INT[K]<CurInput.LimitField THEN BEGIN CurChr←Buffer↑[K+1]; IF INT[CurChr]<64 THEN Buffer↑[K-1]← INT[CurChr]+64 ELSE Buffer↑[K-1]← INT[CurChr]-64; CurInput.LimitField← INT[CurInput.LimitField]-2;First←First-2; WHILE INT[K]<=CurInput.LimitField DO BEGIN Buffer↑[K]←Buffer↑[K+2];K←K+1; END ENDLOOP ; GOTO Label26; END; END--:355--;CurCs←129+Buffer↑[CurInput.LocField]; CurInput.LocField←CurInput.LocField+1;EXIT; EXITS Label26 => NULL} ENDLOOP; END; EXITS Label40 => NULL};CurCmd←Eqtb↑[CurCs].Hh.B0;CurChr←Eqtb↑[CurCs].Hh.Rh; IF INT[CurCmd]>=112 THEN CheckOuterValidity[]; END--:354--;14,30,46 =>--353: BEGIN CurCs←CurChr+1;CurCmd←Eqtb↑[CurCs].Hh.B0; CurChr←Eqtb↑[CurCs].Hh.Rh;CurInput.StateField←1; IF INT[CurCmd]>=112 THEN CheckOuterValidity[]; END--:353--;8,24,40 =>--352: BEGIN IF(CurChr=Buffer↑[CurInput.LocField])AND ( INT[CurInput.LocField]<CurInput.LimitField) THEN BEGIN IF INT[Buffer↑[CurInput.LocField+1]]<64 THEN CurChr←Buffer↑[CurInput.LocField+1]+64 ELSE CurChr←Buffer↑ [CurInput.LocField+1]-64;CurInput.LocField←CurInput.LocField+2; GOTO Label21; END;CurInput.StateField←1; END--:352--;16,32,48 =>--346: BEGIN BEGIN IF Interaction=3 THEN NULL;PrintNl[134];Print[474]; END; BEGIN HelpPtr←2;HelpLine↑[1]←475;HelpLine↑[0]←476; END; DeletionsAllowed←FALSE;Error[];DeletionsAllowed←TRUE; GOTO Label20; END--:346 ;--347:--11 =>--349:--BEGIN CurInput.StateField←17;CurChr←32; END--:349--; 6 =>--348:--BEGIN CurInput.LocField←CurInput.LimitField+1;CurCmd←10; CurChr←32; END--:348--;22,15,31,47 =>--350: BEGIN CurInput.LocField←CurInput.LimitField+1; GOTO Label25; END--:350--; 38 =>--351:--BEGIN CurInput.LocField←CurInput.LimitField+1; CurCs←ParLoc;CurCmd←Eqtb↑[CurCs].Hh.B0;CurChr←Eqtb↑[CurCs].Hh.Rh; IF INT[CurCmd]>=112 THEN CheckOuterValidity[]; END--:351--; 2 =>AlignState←AlignState+1;18,34 =>BEGIN CurInput.StateField←1; AlignState←AlignState+1; END;3 =>AlignState←AlignState-1; 19,35 =>BEGIN CurInput.StateField←1;AlignState←AlignState-1; END; 20,21,23,25,28,29,36,37,39,41,44,45 =>CurInput.StateField←1;--:347 ENDCASE => NULL--:344--;EXIT; EXITS Label21 => NULL} ENDLOOP; END ELSE BEGIN CurInput.StateField←33;--360: IF INT[CurInput.NameField]>17 THEN--362: BEGIN Line←FileGetPos[@InputFile↑[CurInput.IndexField]]; First←CurInput.StartField; IF NOT ForceEof THEN BEGIN IF InputLn[@InputFile↑[CurInput.IndexField ],TRUE] THEN FirmUpTheLine [] ELSE ForceEof←TRUE; END; IF ForceEof THEN BEGIN PrintChar[41];ForceEof←FALSE;PascalTextBREAK[file: @TermOut]; EndFileReading[];CheckOuterValidity[]; GOTO Label20; END; IF(Eqtb↑[4815].Int<0)OR (Eqtb↑[4815].Int>127) THEN CurInput.LimitField← INT[CurInput.LimitField]-1 ELSE Buffer↑[CurInput.LimitField]←Eqtb↑[4815]. Int;First←CurInput.LimitField+1; CurInput.LocField←CurInput.StartField; END--:362 ELSE BEGIN IF NOT (CurInput.NameField=0) THEN BEGIN CurCmd←0; CurChr←0; GOTO Label10; END;IF INT[InputPtr]>0 THEN BEGIN EndFileReading[]; GOTO Label20; END;IF INT[Selector]<18 THEN OpenLogFile[]; IF INT[Interaction]>1 THEN BEGIN IF CurInput.LimitField=CurInput. StartField THEN PrintNl[477];PrintLn[];First←CurInput.StartField; BEGIN Print[42];TermInput[]; END;CurInput.LimitField←Last; IF(Eqtb↑[4815].Int<0)OR (Eqtb↑[4815].Int>127) THEN CurInput.LimitField← INT[CurInput.LimitField]-1 ELSE Buffer↑[CurInput.LimitField]←Eqtb↑[4815]. Int;First←CurInput.LimitField+1; CurInput.LocField←CurInput.StartField; END ELSE FatalError[478]; END--:360--;BEGIN IF Interrupt#0 THEN PauseForInstructions[]; END; GOTO Label25; END;EXIT; EXITS Label25 => NULL} ENDLOOP; END--:343-- ELSE--357: IF CurInput.LocField#0 THEN BEGIN T←Mem[CurInput.LocField]↑.Hh.Lh; CurInput.LocField←Mem[CurInput.LocField]↑.Hh.Rh; IF INT[T]>=4096 THEN BEGIN CurCs← INT[T]-4096;CurCmd←Eqtb↑[CurCs].Hh.B0; CurChr←Eqtb↑[CurCs].Hh.Rh; IF INT[CurCmd]>=112 THEN IF CurCmd=115 THEN--358: BEGIN CurCs← INT[Mem[CurInput.LocField]↑.Hh.Lh]-4096; CurInput.LocField←0;CurCmd←Eqtb↑[CurCs].Hh.B0; CurChr←Eqtb↑[CurCs].Hh.Rh;IF INT[CurCmd]>99 THEN BEGIN CurCmd←0; CurChr←257; END; END--:358-- ELSE CheckOuterValidity[]; END ELSE BEGIN CurCmd← PascalDIVPower2[T ,8];CurChr← PascalMODPower2Mask[T ,255]; SELECT CurCmd FROM 1 =>AlignState←AlignState+1; 2 =>AlignState←AlignState-1;5 =>--359: BEGIN BeginTokenList[ParamStack↑[ INT[CurInput.LimitField]+CurChr-1],0]; GOTO Label20; END--:359--; ENDCASE => NULL; END; END ELSE BEGIN EndTokenList[]; GOTO Label20; END--:357--;--342: IF INT[CurCmd]<=5 THEN IF INT[CurCmd]>=4 THEN IF AlignState=0 THEN--789: BEGIN IF ScannerStatus=4 THEN FatalError[767]; CurCmd←Mem[CurAlign+5]↑.Hh.Lh;Mem[CurAlign+5]↑.Hh.Lh←CurChr; IF CurCmd=63 THEN BeginTokenList[64990,2] ELSE BeginTokenList[Mem[ CurAlign+2]↑.Int,2];AlignState←1000000; GOTO Label20; END--:789----:342--;EXITS Label10 => NULL};EXIT; EXITS Label20 => NULL} ENDLOOP; END; --:341----363:-- FirmUpTheLine: PROCEDURE = BEGIN K:PascalInteger[0..BufSize]; CurInput.LimitField←Last; IF Eqtb↑[4795].Int>0 THEN IF INT[Interaction]>1 THEN BEGIN PrintLn[]; IF INT[CurInput.StartField]<CurInput.LimitField THEN FOR i:INT IN [ INT[CurInput. StartField ].. INT[ INT[CurInput.LimitField]-1 ]] DO K ← i; Print[Buffer↑[K]] ENDLOOP; First←CurInput.LimitField;BEGIN Print[479];TermInput[]; END; IF INT[Last]>First THEN BEGIN FOR i:INT IN [ INT[First ].. INT[Last-1 ]] DO K ← i; Buffer↑[ INT[K]+CurInput. StartField-First]←Buffer↑[K] ENDLOOP; CurInput.LimitField← INT[CurInput.StartField]+Last-First; END; END; END; InsertRelax: PROCEDURE = BEGIN CurTok← INT[4096]+CurCs;BackInput[]; CurTok←6861;BackInput[];CurInput.IndexField←4; END;--:379 GetXToken: PROCEDURE = BEGIN DO {--Label20:--GetNext[]; {IF INT[CurCmd]<=99 THEN GOTO Label30; IF INT[CurCmd]>=110 THEN IF INT[CurCmd]<114 THEN MacroCall [] ELSE BEGIN CurCs← 2764;CurCmd←9; GOTO Label30; END ELSE Expand[]; GOTO Label20; EXITS Label30 => NULL};IF CurCs=0 THEN CurTok← INT[(CurCmd*256)]+CurChr ELSE CurTok← INT[4096]+CurCs;EXIT; EXITS Label20 => NULL} ENDLOOP; END;--:380----381:-- XToken: PROCEDURE = BEGIN WHILE INT[CurCmd]>99 DO BEGIN Expand[];GetNext[]; END ENDLOOP ; IF CurCs=0 THEN CurTok← INT[(CurCmd*256)]+CurChr ELSE CurTok← INT[4096]+CurCs; END;--:381----403:-- END.