-- 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.