-- file: TangleSend.mesa
-- Pascal-to-Mesa translator output, translated at September 14, 1985 3:58:20 pm PDT
DIRECTORY
PascalBasic,
PascalWizardFiles,
TanglePrivate,
TangleProcArray;
TangleSend: PROGRAM IMPORTS PascalWizardFiles, TanglePrivate, TangleProcArray EXPORTS TanglePrivate = PUBLIC
BEGIN OPEN PascalBasic, PascalWizardFiles, TanglePrivate, TangleProcArray;
--:107----113:-- SendTheOutput: PROCEDURE =
BEGIN
CurChar:EightBits;K:PascalInteger[0..LineLength];J:PascalInteger[0..MaxBytes];W:PascalInteger[0..1];
N:PascalInteger; WHILE INT[StackPtr]>0 DO BEGIN CurChar←GetOutput[];
DO {--Label21:--{{SELECT CurChar FROM 0 => NULL;--116:
65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,
89,90 =>BEGIN OutContrib↑[1]←CurChar;SendOut[2,1]; END;
97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115
,116,117,118,119,120,121,122 =>BEGIN OutContrib↑[1]←CurChar-32;
SendOut[2,1]; END;130 =>BEGIN K←0;J←ByteStart↑[CurVal];
W← CurVal MOD 2;
WHILE( INT[K]<MaxIdLength)AND ( INT[J]<ByteStart↑[CurVal+2])DO BEGIN K←K+1;
OutContrib↑[K]←ByteMem[W, J]↑;J←J+1;
IF INT[OutContrib↑[K]]>=97 THEN OutContrib↑[K]←OutContrib↑[K]-32; END ENDLOOP ;
SendOut[2,K]; END;--:116----119:--48,49,50,51,52,53,54,55,56,57 =>BEGIN N←0;
DO CurChar←CurChar-48;
IF N>=214748364 THEN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! Constant too big"];Error[]; END ELSE N←10*N+CurChar;
CurChar←GetOutput[]; IF( INT[CurChar]>57)OR ( INT[CurChar]<48) THEN EXIT; ENDLOOP;SendVal[N];K←0;
IF CurChar=101 THEN CurChar←69;
IF CurChar=69 THEN GOTO Label2 ELSE GOTO Label21; END;
125 =>SendVal[PoolCheckSum];12 =>BEGIN N←0;CurChar←48;
DO CurChar←CurChar-48;
IF N>=268435456 THEN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! Constant too big"];Error[]; END ELSE N←8*N+CurChar;
CurChar←GetOutput[]; IF( INT[CurChar]>55)OR ( INT[CurChar]<48) THEN EXIT; ENDLOOP;SendVal[N];
GOTO Label21; END;13 =>BEGIN N←0;CurChar←48;
DO IF INT[CurChar]>=65 THEN CurChar←CurChar-55 ELSE CurChar←
CurChar-48;IF N>=134217728 THEN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! Constant too big"];Error[]; END ELSE N←16*N+CurChar;
CurChar←GetOutput[];
IF( INT[CurChar]>70)OR ( INT[CurChar]<48)OR (( INT[CurChar]>57)AND ( INT[CurChar]<65)) THEN EXIT; ENDLOOP;
SendVal[N]; GOTO Label21; END;128 =>SendVal[CurVal];46 =>BEGIN K←1;
OutContrib↑[1]←46;CurChar←GetOutput[];
IF CurChar=46 THEN BEGIN OutContrib↑[2]←46;SendOut[1,2];
END ELSE IF( INT[CurChar]>=48)AND ( INT[CurChar]<=57) THEN GOTO Label2 ELSE BEGIN
SendOut[0,46]; GOTO Label21; END; END;--:119--43,45 =>SendSign[44-CurChar];--114:
4 =>BEGIN OutContrib↑[1]←65;OutContrib↑[2]←78;OutContrib↑[3]←68;
SendOut[2,3]; END;5 =>BEGIN OutContrib↑[1]←78;OutContrib↑[2]←79;
OutContrib↑[3]←84;SendOut[2,3]; END;6 =>BEGIN OutContrib↑[1]←73;
OutContrib↑[2]←78;SendOut[2,2]; END;31 =>BEGIN OutContrib↑[1]←79;
OutContrib↑[2]←82;SendOut[2,2]; END;24 =>BEGIN OutContrib↑[1]←58;
OutContrib↑[2]←61;SendOut[1,2]; END;26 =>BEGIN OutContrib↑[1]←60;
OutContrib↑[2]←62;SendOut[1,2]; END;28 =>BEGIN OutContrib↑[1]←60;
OutContrib↑[2]←61;SendOut[1,2]; END;29 =>BEGIN OutContrib↑[1]←62;
OutContrib↑[2]←61;SendOut[1,2]; END;30 =>BEGIN OutContrib↑[1]←61;
OutContrib↑[2]←61;SendOut[1,2]; END;32 =>BEGIN OutContrib↑[1]←46;
OutContrib↑[2]←46;SendOut[1,2]; END;--:114--39 =>--117:--BEGIN K←1;
OutContrib↑[1]←39;DO IF INT[K]<LineLength THEN K←K+1;
OutContrib↑[K]←GetOutput[]; IF(OutContrib↑[K]=39)OR (StackPtr=0) THEN EXIT; ENDLOOP;
IF K=LineLength THEN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! String too long"];Error[]; END;SendOut[1,K];
CurChar←GetOutput[];IF CurChar=39 THEN OutState←6; GOTO Label21; END--:117--;
--115:
33,34,35,36,37,38,40,41,42,44,47,58,59,60,61,62,63,64,91,92,93,94,95,96,
123,124--:115-- =>SendOut[0,CurChar];--121:
9 =>BEGIN IF BraceLevel=0 THEN SendOut[0,123] ELSE SendOut[0,91];
BraceLevel←BraceLevel+1; END;
10 =>IF INT[BraceLevel]>0 THEN BEGIN BraceLevel←BraceLevel-1;
IF BraceLevel=0 THEN SendOut[0,125] ELSE SendOut[0,93];
END ELSE BEGIN PascalWriteLn[file: @TermOut];PascalWriteLongString[file: @TermOut, item: "! Extra @}"];Error[]; END;
129 =>BEGIN IF BraceLevel=0 THEN SendOut[0,123] ELSE SendOut[0,91];
IF CurVal<0 THEN BEGIN SendOut[0,58];SendVal[-CurVal];
END ELSE BEGIN SendVal[CurVal];SendOut[0,58]; END;
IF BraceLevel=0 THEN SendOut[0,125] ELSE SendOut[0,93]; END;--:121
127 =>BEGIN SendOut[3,0];OutState←6; END;2 =>--118:--BEGIN K←0;
DO IF INT[K]<LineLength THEN K←K+1;OutContrib↑[K]←GetOutput[];
IF(OutContrib↑[K]=2)OR (StackPtr=0) THEN EXIT; ENDLOOP;
IF K=LineLength THEN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! Verbatim string too long"];Error[]; END;SendOut[1,K-1];
END--:118--;3 =>--122:--BEGIN SendOut[1,0];
WHILE INT[OutPtr]>0 DO BEGIN IF INT[OutPtr]<=LineLength THEN BreakPtr←OutPtr
;FlushBuffer[]; END ENDLOOP ;OutState←0; END--:122--; ENDCASE =>BEGIN PascalWriteLn[file: @TermOut];
{PascalWriteLongString[file: @TermOut, item: "! Can't output ASCII code "]; PascalWriteInteger[file: @TermOut, item: CurChar, fieldMinLength: 1]};Error[]; END ;
GOTO Label22;EXITS Label2 => NULL};--120:--DO IF INT[K]<LineLength THEN K←K+1;
OutContrib↑[K]←CurChar;CurChar←GetOutput[];
IF(OutContrib↑[K]=69)AND ((CurChar=43)OR (CurChar=45)) THEN BEGIN IF
INT[K]<LineLength THEN K←K+1;OutContrib↑[K]←CurChar;CurChar←GetOutput[];
END ELSE IF CurChar=101 THEN CurChar←69;
IF(CurChar#69)AND (( INT[CurChar]<48)OR ( INT[CurChar]>57)) THEN EXIT; ENDLOOP;
IF K=LineLength THEN BEGIN PascalWriteLn[file: @TermOut];
PascalWriteLongString[file: @TermOut, item: "! Fraction too long"];Error[]; END;SendOut[3,K];
GOTO Label21--:120--;EXITS Label22 => NULL};EXIT; EXITS Label21 => NULL} ENDLOOP; END ENDLOOP ; END;--:113----127:--
END.