|
|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC759 "Piccoline" |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC759 "Piccoline" Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2816 (0xb00)
Types: TextFile
Names: »CALC.SRC«
└─⟦d6ef3842c⟧ Bits:30002678 Pascal MT+ Version 3.3 Rel 1.2
└─⟦this⟧ »CALC.SRC«
(* AS OF 03/12/82 *)
(* This program ia a sample PASCAL MT+86 program. It makes your *)
(* computed function as a pocket calculator. To use this program *)
(* simply compile it, link it with TRANCEND.R86, FPREALS.R86 and *)
(* PASLIB. The compiler control command is: *)
(* MT+86 CALC *)
(* The linker command is: *)
(* LINKMT CALC,TRANCEND,FPREALS,PASLIB/S *)
(* To execute enter: *)
(* CALC *)
PROGRAM CALCULATE;
CONST
RCONST = -2.5;
RCONST1= 65535.5;
VAR R1,R2,TEMP:REAL;
X : ARRAY Æ1..2Å OF REAL;
CH1,OP:CHAR;
FUNCTION SUBREAL(R1,R2:REAL) : REAL;
BEGIN
SUBREAL := R1 - R2
END;
PROCEDURE ADDREAL(VAR R1:REAL; R2:REAL);
BEGIN
R1 := R1 + R2
END;
PROCEDURE TF(B:BOOLEAN);
BEGIN
IF B THEN
WRITELN('TRUE')
ELSE
WRITELN('FALSE')
END;
PROCEDURE CALC;
BEGIN
CASE OP OF
'S': WRITELN(SIN(R1));
'C': WRITELN(COS(R1));
'A': WRITELN(ARCTAN(R1));
'L': WRITELN(LN(R1));
'E': WRITELN(EXP(R1));
'+': BEGIN ADDREAL(XÆ1Å,XÆ2Å); WRITELN(XÆ1Å:10:4) END;
'-': WRITELN(SUBREAL(XÆ1Å,XÆ2Å):10:2);
'*': WRITELN(R1 * R2);
'/': WRITELN(R1 / R2);
'M': WRITELN(-R1);
'=': TF(R1 = R2);
'N': TF(R1 <> R2);
'$': WRITELN(SQRT(R1):10:3,SQRT(R2):10:3);
'<': TF(R1 < R2);
'>': TF(R1 > R2);
'Z': TF(R1 <= R2);
'G': TF(R1 >=R2);
'1': WRITELN(SQR(R1),' ',SQR(R2));
'2': WRITELN(R1 + 1);
'3': WRITELN(1+R1);
'4': WRITELN(TRUNC(R1));
'5': WRITELN(ROUND(R1));
'6': WRITELN(RCONST);
'7': WRITELN(RCONST1);
'8': BEGIN R1 := -2.234; XÆ1Å := 3.456; WRITELN(R1,' ',XÆ1Å); END;
END;
END; (* CALCULATOR *)
PROCEDURE MENU;
BEGIN
WRITE('S:SIN ');
WRITE('C:COS ');
WRITE('A:ARCTAN ');
WRITE('L:LN ');
WRITE('E:EXP ');
WRITE('1:SQR ');
WRITELN('$:SQRT ');
WRITELN('+, -, *, / ARITHMETIC OPERATORS');
WRITELN('M:NEGATE');
WRITE('= : EQUAL ');
WRITELN('N : NOT EQUAL');
WRITE('<:LESS THAN ');
WRITELN('>:GREATER THAN ');
WRITELN('Z:LESS THAN OR EQUAL TO');
WRITELN('G:GREATER THAN OR EQUAL TO');
WRITE('4:TRUNC ');
WRITELN('5:ROUND');
END;
BEGIN (* MAIN PROGRAM *)
REPEAT
WRITE('ENTER FIRST OPERAND? ');
READ(R1);
XÆ1Å := R1;
WRITELN('R1=',R1); WRITELN;
WRITE('ENTER SECOND OPERAND? ');
READ(R2);
XÆ2Å := R2;
WRITELN('R2=',R2); WRITELN;
WRITELN('ENTER OPERATOR:');
MENU;
WRITE('? ');
READ(OP);
WRITELN;
CALC;
WRITELN('Type <ESCAPE> to stop. Any other characer to repeat.');
READ(CH1);
UNTIL CH1 = CHR(27)
END.
«eof»