-- file: TangleSend.mesa
-- Pascal-to-Mesa translator output, translated at September 23, 1986 11:39:50 am PDT


DIRECTORY
  PascalBasic,
  PascalWizardFiles,
  TanglePrivate,
  TangleProcArray;

TangleSend: PROGRAM IMPORTS PascalBasic, 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← PascalMODPower2Mask[CurVal ,1];
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.