mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
228 lines
18 KiB
Plaintext
228 lines
18 KiB
Plaintext
BEGIN 00000100
|
|
COMMENT CUBE LIBRARY NUMBER IS H500010. THE PROGRAM NAME IS 00000200
|
|
"CALCSIM/REMOTE". THIS VERSION DATED 5/3/68; 00000300
|
|
COMMENT THIS PROGRAM SIMULATES AN EXTENDED DESK CALCULATOR IN- 00000400
|
|
CLUDING PRE-PROGRAMMED MATHEMATICAL ROUTINES AS WELL AS 00000500
|
|
10 STORAGE REGISTERS. 00000600
|
|
THE STRATEGY USED RELIES 0N A 1-DIMENSION ARRAY OF ALPHA 00000700
|
|
OPERATORS, THE SUBSCRIPT 0F WHICH KEYS ROUTING THROUGH A 00000800
|
|
SWITCH TO THE APPROPRIATE SECTION OF THE PROGRAM. 00000900
|
|
00001000
|
|
ADD FUNCTION REQUIREMENTS: 00001100
|
|
(1) ADD SUITABLE LABEL DECLARATION. 00001200
|
|
(2) ADD LABEL TO END OF SWITCH DECLARATION. 00001300
|
|
(3) ADD NEW OPERATOR NAME TO END OF <FILL OP[*]> STATE- 00001400
|
|
MENT, 4 CHARACTERS, LEFT JUSTIFIED. 00001500
|
|
(4) PROGRAM THE REQUIRED ROUTINE WITH LABEL ON FIRST 00001600
|
|
STATEMENT AND BRANCH TO EITHER PRINT OR READER, AS 00001700
|
|
APPROPRIATE. 00001800
|
|
(5) ADD 1 TO OUTER NEST REPTITIVE INDICATOR IN STREAM 00001900
|
|
PROCEDURE ROUTE. 00002000
|
|
(6) RECOMPILE AFTER ROUTINE IS PLACED IN DECK AND TEST. 00002100
|
|
NOTE: IF ADDING SEVERAL ROUTINES, BE SURE TO MAINTAIN 00002200
|
|
SEQUENCE C0RRESP0NDENCE BETWEEN SWITCH DECLARATI0N 00002300
|
|
AND <FILL OP[*]> STATEMENT. 00002400
|
|
ALPHA ARRAY OP CAN HANDLE ONLY 50 OPERATOR IDENTIFICA- 00002500
|
|
TIONS. GROWTH MAY REQUIRE ENLARGEMENT OF ARRAY. 00002600
|
|
ADD CONSTANT REQUIREMENTS: 00002700
|
|
(1) ADD CONSTANT NAME (6 CHARACTERS, LEFT JUSTIFIED) 00002800
|
|
TO <FILL CNSTNAN[*]> STATEMENT. 00002900
|
|
(2) ADD CONSTANT VALUE (UP TO 12 SIGNIFICANT FIGURES) T0 00003000
|
|
<FILL CONST[*]> STATEMENT. 00003100
|
|
(3) ADD 1 TO NEST REPETITIVE INDICATOR IN STREAM PRO- 00003200
|
|
CEDURE C. 00003300
|
|
NOTE: IF ADDING SEVERAL CONSTANTS, BE SURE TO MAINTAIN 00003400
|
|
SEQUENCE CORRESPONDENCE IN CONSTANT-NAME AND CON- 00003500
|
|
STANT-VALUE ARRAYS. 00003600
|
|
THESE ARRAYS PRESENTLY ARE SET UP TO HANDLE MAXIMUM OF 5100003700
|
|
CONSTANTS. GROWTH MAY REQUIRE ENLARGEMENT OF ARRAY 00003800
|
|
DIMENSIONS; 00003900
|
|
00004000
|
|
00004100
|
|
ALPHA FILE IN CALCSIM2IN 14(1,4);ALPHA FILE OUT CALCSIM2OUT 14(2,8);MONI00004200
|
|
TOR EXPOVR,INTOVR,ZERO,INDEX;INTEGER STA,I,J,INX,K,DEC;INTEGER STREAM PR00004300
|
|
OCEDURE FINDGP(B);BEGIN LABEL HERE;SI~B;22(IF SC="~"THEN JUMP OUT 1TO HE00004400
|
|
RE;SI~SI+1;TALLY~TALLY+1);HERE:FINDGP~TALLY;END;STREAM PROCEDURE MOVE(F,00004500
|
|
T,N);VALUE N;BEGIN DI~T;DS~24LIT" ";SI~F;DI~T;DS~N CHR;END;DEFINE RT=REA00004600
|
|
D(CALCSIM2IN(STA,60),4,TT[*])[LONG]#,WT=WRITE(CALCSIM2OUT(STA)#,MV=MOVE(00004700
|
|
TT[1],INP[0],FINDGP(TT[1]))#;ALPHA ARRAY TT[0:4],INP[0:3],CNSTNAM[0:50],00004800
|
|
OPERAND[0:2];SAVE ALPHA ARRAY OP[0:50];REAL VALU,DISPLAY;REAL ARRAY STOR00004900
|
|
[0:9],CONST[0:50];INTEGER ARRAY T[0:4];ALPHA OPR,MONTH;BOOLEAN BOOL;STRE00005000
|
|
AM PROCEDURE CONVERT(ALFA,INT);BEGIN SI~ALFA;DI~INT;SI~SI+3;DS~5OCT;END 00005100
|
|
OF CONVERT STREAM PROCEDURE;INTEGER PROCEDURE LEAPYEAR(YEAR);VALUE YEAR;00005200
|
|
INTEGER YEAR;BEGIN IF YEAR MOD 4!0OR YEAR=0THEN LEAPYEAR~0ELSE LEAPYEAR~00005300
|
|
1;END OF LEAPYEAR PROCEDURE;PROCEDURE DATER(MONTH,DAY,YEAR);INTEGER DAY,00005400
|
|
YEAR;ALPHA MONTH;BEGIN INTEGER ARRAY DAYS[0:11];LABEL DONE;ALPHA ALFA;AL00005500
|
|
PHA ARRAY MONTHS[0:11];INTEGER I;FILL DAYS[*]WITH 31,28,31,30,31,30,31,300005600
|
|
1,30,31,30,31;ALFA~TIME(0);FILL MONTHS[*]WITH"JAN.","FEB.","MAR.","APR."00005700
|
|
," MAY","JUNE","JULY","AUG.","SEP.","OCT.","NOV.","DEC.";CONVERT(ALFA,DA00005800
|
|
Y);YEAR~DAY DIV 1000;DAYS[2]~DAYS[2]+LEAPYEAR(YEAR);DAY~DAY MOD 1000;FOR00005900
|
|
I~0STEP 1UNTIL 11DO BEGIN DAY~DAY-DAYS[I];IF DAY{0THEN GO TO DONE;END;D00006000
|
|
ONE:DAY~DAY+DAYS[I];MONTH~MONTHS[I];END OF DATER PROCEDURE;PROCEDURE TIM00006100
|
|
ER;BEGIN FORMAT OUT F1(X8,"{!DATE OF RUN ",A4,I3," 19",I2,"{!~"),F2(X8,"00006200
|
|
PROCESSOR TIME FROM PROGRAM START (SEC.) = ~"),F3(X8,F8.2,"{!~"),F4(X8,"00006300
|
|
I/O TIME FROM PROGRAM START (SEC.) = ~"),F5(X8,F8.2,"{!~");LABEL D00006400
|
|
IDIT,DONE;IF K!0THEN GO TO DIDIT;K~1;DATER(MONTH,T[4],T[0]);T[1]~TIME(1)00006500
|
|
;DIDIT:T[2]~TIME(2);T[3]~TIME(3);WT,F1,MONTH,T[4],T[0]);WT,F2);WT,F3,T[200006600
|
|
]/60);WT,F4);WT,F5,T[3]/60);DONE:END OF TIMER PROCEDURE;BOOLEAN STREAM P00006700
|
|
ROCEDURE ALFATEST(ALFA);BEGIN LABEL FINIS,OK,NOPE;SI~ALFA;SI~SI+2;IF SC<00006800
|
|
"0"THEN GO TO OK;NOPE:TALLY~0;GO TO FINIS;OK:IF SC="-"THEN GO TO NOPE;IF00006900
|
|
SC="+"THEN GO TO NOPE;TALLY~1;FINIS:ALFATEST~TALLY;END OF ALFATEST STRE00007000
|
|
AM PROCEDURE;INTEGER STREAM PROCEDURE DIGIT(ALFA);BEGIN LABEL INVREG,FOU00007100
|
|
ND,COMPLETE,OK;SI~ALFA;SI~SI+5;18(IF SC=" "THEN JUMP OUT 1TO FOUND;SI~SI00007200
|
|
+1;);INVREG:TALLY~10;DIGIT~TALLY;GO TO COMPLETE;FOUND:SI~SI+1;IF SC=ALPH00007300
|
|
A THEN GO TO OK;GO TO INVREG;OK:IF SC<"0"THEN GO TO INVREG;DI~LOC DIGIT;00007400
|
|
DS~1OCT;COMPLETE:END OF DIGIT STREAM PROCEDURE;REAL PROCEDURE FACTORIAL(00007500
|
|
N);VALUE N;REAL N;BEGIN IF N>1.0THEN FACTORIAL~N|FACTORIAL(N-1)ELSE IF N00007600
|
|
}0.0THEN FACTORIAL~1.0ELSE FACTORIAL~0.0;END OF FACTORIAL PROCEDURE;DEFI00007700
|
|
NE SHIFT=VALU~DISPLAY#;BOOLEAN STREAM PROCEDURE NOPT(INP);BEGIN LABEL OK00007800
|
|
,EXIT;SI~INP;17(IF SC="."THEN JUMP OUT 1TO OK;SI~SI+1;);TALLY~1;GO TO EX00007900
|
|
IT;OK:TALLY~0;EXIT:NOPT~TALLY;END OF BOOLEAN STREAM PROCEDURENOPT;STREAM00008000
|
|
PROCEDURE PACK(OP);BEGIN SI~OP;SI~SI+8;DI~OP;50(SI~SI+4;DS~4CHR;);END;F00008100
|
|
ORMAT IN FIN1(A4,X1,3A6),FIN2(X5,R17.2);FORMAT OUT FTT1(X8,"{!OPR. 00008200
|
|
OPERAND OPERAND VALUE ~"/X8," DISPLAY{!~"/X8,"**** ********00008300
|
|
********* ***************** *~"/X8,"****************{!!~"),FTT5(X8,"{~"/00008400
|
|
X8," ~"),FTT6(X8,2(R17.*,X1),"~"),FTT7(X8,"REGISTE00008500
|
|
R",I2,"{!~"),FTT8(X8,"INVALID OPERATOR{!~"),FTT9(X8,"DISPLAY OVERFLOW{!~00008600
|
|
"),FTT10(X8,"DIVIDE BY ZERO ATTEMPTED{!~"),FTT11(X8,"RADIANS{!~"),FTT12(00008700
|
|
X8,"DEGREES{!~"),FTT13(X8,"MINUTES{!~"),FTT14(X8,"SECONDS{!~"),FTT15(X8,00008800
|
|
"INVALID CONSTANT NAME OR REGISTER{!~"),FTT16(X8,"!!{!!~"),FTT17(X8,"{!~00008900
|
|
"),FTT18(X8,"!IF NO FURTHER ENTRY WITHIN NEXT 60 ~"/X8,"SECONDS, CALCSIM00009000
|
|
WILL TERMINATE{!!~"),FTT20(X8,"CALCSIM TERMINATED, 2 MINUTES INACTIVE{!00009100
|
|
!}~"),FTT21(X8,"NO DECIMAL POINT GIVEN{!~"),FTT22(X8,"NEGATIVE OPERAND I00009200
|
|
NVALID{!~"); 00009300
|
|
00009400
|
|
00009500
|
|
INTEGER STREAM PROCEDURE C(CNSTNAM, OPERAND); 00009600
|
|
BEGIN 00009700
|
|
LABEL FOUND; 00009800
|
|
SI ~ CNSTNAM; TALLY ~ 0; 00009900
|
|
20(SI ~ SI + 2; DI ~ OPERAND; DI ~ DI + 2; 00010000
|
|
COMMENT REPETITIVE INDICATOR A B O V E IS TO BE CHANGED IF 00010100
|
|
ADDING CONSTANT; 00010200
|
|
IF 6 SC = DC THEN JUMP OUT 1 TO FOUND; 00010300
|
|
TALLY ~ TALLY + 1;); 00010400
|
|
TALLY ~ 63; 00010500
|
|
FOUND: C ~ TALLY; 00010600
|
|
END; 00010700
|
|
00010800
|
|
00010900
|
|
INTEGER STREAM PROCEDURE ROUTE(OPR, OP); 00011000
|
|
BEGIN 00011100
|
|
LABEL FOUND; 00011200
|
|
LOCAL TEMP; 00011300
|
|
SI ~ OPR; SI ~ SI + 4; DI ~ LOC TEMP; DS ~ 4 CHR; 00011400
|
|
SI ~ OP; TALLY ~ 0; 00011500
|
|
36(DI ~ LOC TEMP; TALLY ~ TALLY + 1; 00011600
|
|
COMMENT REPETITIVE INDICATOR A B O V E IS TO BE CHANGED IF 00011700
|
|
ADDING OPERATOR; 00011800
|
|
IF 4 SC = DC THEN JUMP OUT TO FOUND;); 00011900
|
|
TALLY ~ 63; 00012000
|
|
FOUND: ROUTE ~ TALLY; 00012100
|
|
END OF STREAM PROCEDURE ROUTE; 00012200
|
|
00012300
|
|
00012400
|
|
LABEL DONE, OVFL, ZERODIV, INVOP, ADD, SUB, MULT, DIVID, SQART,00012500
|
|
LOG10, NLOG, ALOG, EXPN, SINE, COSIN, TAN, COT, SEC, 00012600
|
|
CSC, ABSVAL, ATAN, POWER, STORE, NEGNBR, CLEAR, RESET, 00012700
|
|
INV, FACT, PRINT, READER, INVCST, DEG, MIN, 00012800
|
|
SECD, RADIAN, SINH, COSH, AVG, SDEV, SET, LONG, FAHR, 00012900
|
|
CENT, DECI; 00013000
|
|
SWITCH SELECT~STORE, RADIAN,ATAN,DEG,FAHR,CENT,MIN,SECD,ADD,SUB,00013100
|
|
MULT, DIVID, SET, SQART, LOG10, NLOG, ALOG, 00013200
|
|
EXPN, SINE, COSIN, TAN, COT, SEC, CSC, ABSVAL, POWER, 00013300
|
|
CLEAR, RESET, INV, FACT, SINH, COSH, AVG, SDEV, DONE, 00013400
|
|
DECI; 00013500
|
|
00013600
|
|
00013700
|
|
FILL OP[*] WITH " ", "SAVE", "RAD ", "ATAN", "DEG ", 00013800
|
|
"FAHR", "CENT", 00013900
|
|
"MIN ", "SECD", "ADD ", "SUB ", "MULT", "DIV ", 00014000
|
|
"SET ", "SQRT", "LOG ", "LN ", "ALOG", "EXP ", "SIN ",00014100
|
|
"COS ", "TAN ", "COT ", "SEC ", "CSC ", "ABS ", "PWR ",00014200
|
|
"CLR ", "END ", "INV ", "FACT", "SINH", "COSH", "AVG ",00014300
|
|
"SDEV", "STOP", "DEC "; 00014400
|
|
FILL CNSTNAM[*] WITH "PI ", "RADIAN", "DEGREE", 00014500
|
|
"MINUTE", "SECOND", "HALFPI", "TWOPI ", "GAMMA ", 00014600
|
|
"BOLTZ ", "PLANCK", "CHARGE", "C ", "AVOGAD", 00014700
|
|
"ELMASS", "PRMASS", "NEMASS", "FARADA", "R ", 00014800
|
|
"V(0) ", "G(0) "; 00014900
|
|
FILL CONST[*] WITH 3.14159265359, 57.295779513, 00015000
|
|
0.0174532925199, 0.000290888208666, 00015100
|
|
0.00000484813681109, 1.57079632679, 6.2831853072, 00015200
|
|
0.577215664902, 00015300
|
|
1.38054@-23, 6.6256@-34, 1.60210@-19, 2.997925@+08, 00015400
|
|
6.02252@+23, 9.1091@-31, 1.67252@-27, 1.67482@-27, 00015500
|
|
9.64870@+04, 8.3143, 2.24136@-02, 9.80665; 00015600
|
|
00015700
|
|
00015800
|
|
DEC~10;PACK(OP[0]); 00015900
|
|
STA~STATUS(TT[*]); 00016000
|
|
STA.[9:9]~TT[0].[9:9]; 00016100
|
|
EXPO00016200
|
|
VR~OVFL;INDEX~INVCST;INTOVR~OVFL;ZERO~ZERODIV;TIMER;WT,FTT1);READER:RT;W00016300
|
|
T,FTT5);MV;READ(INP[*],FIN1,OPR,OPERAND[0],OPERAND[1],OPERAND[2]);INX~RO00016400
|
|
UTE(OPR,OP[0]);IF INX=63THEN GO TO INVOP;IF OPERAND[0]=" "THEN GO T00016500
|
|
O SELECT[INX];IF ALFATEST(OPERAND[0])THEN BEGIN J~DIGIT(INP[0]);IF J<10T00016600
|
|
HEN BEGIN VALU~STOR[J];GO TO SELECT[INX];END;VALU~CONST[C(CNSTNAM[0],OPE00016700
|
|
RAND[0])];GO TO SELECT[INX];END;IF NOPT(INP[0])THEN BEGIN WT,FTT21);GO T00016800
|
|
O READER;END;READ(INP[*],FIN2,VALU);GO TO SELECT[INX];PRINT:IF 1.0-DISPL00016900
|
|
AY MOD 1.0<50.0@-10THEN DISPLAY~ENTIER(DISPLAY+10.0@-09);WT,FTT6,DEC,VAL00017000
|
|
U,DEC,DISPLAY);IF INX>8THEN BEGIN WT,FTT17);GO TO READER;END;IF INX=1THE00017100
|
|
N BEGIN WT,FTT7,J);GO TO READER;END;IF INX{3THEN BEGIN WT,FTT11);GO TO R00017200
|
|
EADER;END;IF INX{6THEN BEGIN WT,FTT12);GO TO READER;END;IF BOOL THEN BEG00017300
|
|
IN WT,FTT13);BOOL~FALSE;END ELSE WT,FTT14);GO TO READER;DECI:WT,FTT17);D00017400
|
|
EC~VALU;GO TO READER;OVFL:WT,FTT9);DISPLAY~0.0;GO TO READER;ZERODIV:WT,F00017500
|
|
TT10);GO TO READER;INVOP:WT,FTT8);GO TO READER;INVCST:WT,FTT15);GO TO RE00017600
|
|
ADER;ADD:DISPLAY~DISPLAY+VALU;GO TO PRINT;SUB:DISPLAY~DISPLAY-VALU;GO TO00017700
|
|
PRINT;MULT:DISPLAY~DISPLAY|VALU;GO TO PRINT;DIVID:DISPLAY~DISPLAY/VALU;00017800
|
|
GO TO PRINT;SQART:IF DISPLAY<0.0THEN GO TO NEGNBR;SHIFT;DISPLAY~SQRT(VAL00017900
|
|
U);GO TO PRINT;NLOG:IF DISPLAY<0.0THEN GO TO NEGNBR;SHIFT;DISPLAY~LN(VAL00018000
|
|
U);GO TO PRINT;EXPN:SHIFT;DISPLAY~EXP(VALU);GO TO PRINT;RADIAN:SHIFT;DIS00018100
|
|
PLAY~VALU/CONST[1];GO TO PRINT;SINE:SHIFT;DISPLAY~SIN(VALU);GO TO PRINT;00018200
|
|
COSIN:SHIFT;DISPLAY~COS(VALU);GO TO PRINT;TAN:SHIFT;DISPLAY~SIN(VALU)/CO00018300
|
|
S(VALU);GO TO PRINT;COT:SHIFT;DISPLAY~COS(VALU)/SIN(VALU);GO TO PRINT;SE00018400
|
|
C:SHIFT;DISPLAY~1.0/COS(VALU);GO TO PRINT;CSC:SHIFT;DISPLAY~1.0/SIN(VALU00018500
|
|
);GO TO PRINT;ABSVAL:SHIFT;DISPLAY~ABS(VALU);GO TO PRINT;ATAN:SHIFT;DISP00018600
|
|
LAY~ARCTAN(VALU);GO TO PRINT;DEG:SHIFT;DISPLAY~VALU|CONST[1];BOOL~TRUE;G00018700
|
|
O TO PRINT;MIN:SECD:VALU~ABS(DISPLAY)MOD 1.0;DISPLAY~VALU|60.0;GO TO PRI00018800
|
|
NT;POWER:DISPLAY~DISPLAY*VALU;GO TO PRINT;CLEAR:DISPLAY~VALU~0.0;WT,FTT100018900
|
|
7);GO TO READER;RESET:FOR I~0STEP 1UNTIL 9DO STOR[I]~0.0;DISPLAY~VALU~0.00019000
|
|
0;WT,FTT16);GO TO READER;INV:SHIFT;DISPLAY~1.0/DISPLAY;GO TO PRINT;FACT:00019100
|
|
SHIFT;DISPLAY~FACTORIAL(VALU);GO TO PRINT;LOG10:IF DISPLAY<0.0THEN GO TO00019200
|
|
NEGNBR;SHIFT;DISPLAY~LN(VALU)/2.30258509299;GO TO PRINT;ALOG:SHIFT;DISP00019300
|
|
LAY~EXP(2.30258509299|VALU);GO TO PRINT;STORE:STOR[J]~VALU~DISPLAY;GO TO00019400
|
|
PRINT;CENT:SHIFT;DISPLAY~(VALU-32.0)|0.55555555555;GO TO PRINT;FAHR:SHI00019500
|
|
FT;DISPLAY~1.8|VALU+32.0;GO TO PRINT;SINH:SHIFT;DISPLAY~0.5|(EXP(VALU)-100019600
|
|
.0/EXP(VALU));GO TO PRINT;COSH:SHIFT;DISPLAY~0.5|(EXP(VALU)+1.0/EXP(VALU00019700
|
|
));GO TO PRINT;SET:DISPLAY~VALU;GO TO PRINT;AVG:;SDEV:BEGIN REAL KEY;DEF00019800
|
|
INE J=VALU#;REAL ARRAY A[0:VALU];REAL T,X;INTEGER ARRAY UT,LT[0:LN(VALU+00019900
|
|
2)/0.70314718056];INTEGER I,K,Q,M,P;LABEL LAB1,LAB2,LAB3,LAB4,OUTPUT,RET00020000
|
|
RY;FORMAT IN TTYN(R17.2);FORMAT OUT TTYO1(X8,"{!!VALUE TABULATION (DESCE00020100
|
|
NDING SEQUENCE)~"/X8," -",I5," ITEMS{!!~"),TTYO2(X8,"{!~"),TTYO3(X8,4(R100020200
|
|
0.5,X1),"{!~"),TTYO4(X8,"ENTER ITEMS AT LEFT MARGIN{!~"),TTYO5(X8,"{!!AV00020300
|
|
ERAGE = ",R10.5,"{!~"),TTYO8(X13,"NO DECIMAL POINT GIVEN{!~"),TTYO6(X8,"00020400
|
|
STANDARD DEVIATION = ",R10.5,"{!~"),TTYO7(X8,"MEDIAN POSITION: BOTTOM OF00020500
|
|
COLUMN 2, THEN ~"/X8,"STEP UP HALF THE NUMBER OF {!~"/X8,"BLANKS AT BOT00020600
|
|
TOM OF COLUMN 4{!~");WT,TTYO4);KEY~VALU;FOR I~1STEP 1UNTIL J DO BEGIN RE00020700
|
|
TRY:RT;MV;IF NOPT(INP[0])THEN BEGIN WT,TTYO8);GO TO RETRY;END;WT,TTYO2);00020800
|
|
READ(INP[*],TTYN,A[I]);END;I~M~1;LAB1:IF J-I>1THEN BEGIN P~(J+I)DIV 2;T~00020900
|
|
A[P];A[P]~A[I];Q~J;FOR K~I+1STEP 1UNTIL Q DO BEGIN IF A[K]>T THEN BEGIN 00021000
|
|
FOR Q~Q STEP-1UNTIL K DO BEGIN IF A[Q]<T THEN BEGIN X~A[K];A[K]~A[Q];A[Q00021100
|
|
]~X;Q~Q-1;GO TO LAB2;END;END;Q~K-1;GO TO LAB3;END;LAB2:END;LAB3:A[I]~A[Q00021200
|
|
];A[Q]~T;IF 2|Q>I+J THEN BEGIN LT[M]~I;UT[M]~Q-1;I~Q+1;END ELSE BEGIN LT00021300
|
|
[M]~Q+1;UT[M]~J;J~Q-1;END;M~M+1;GO TO LAB1;END ELSE IF I}J THEN GO TO LA00021400
|
|
B4 ELSE BEGIN IF A[I]>A[J]THEN BEGIN X~A[I];A[I]~A[J];A[J]~X;END;LAB4:M~00021500
|
|
M-1;IF M>0THEN BEGIN I~LT[M];J~UT[M];GO TO LAB1;END;END;WT,TTYO1,KEY);K~00021600
|
|
KEY DIV 4+1;FOR M~0STEP 1UNTIL K-1DO WT,TTYO3,FOR I~KEY-M STEP-K UNTIL 100021700
|
|
DO A[I]);T~0.0;FOR I~1STEP 1UNTIL KEY DO T~T+A[I];T~T/KEY;IF OPR="AVG "T00021800
|
|
HEN GO TO OUTPUT;X~0.0;FOR I~1STEP 1UNTIL KEY DO BEGIN VALU~A[I]-T;X~X+V00021900
|
|
ALU|VALU;END;X~SQRT(X/(KEY-1));OUTPUT:WT,TTYO5,T);IF OPR="SDEV"THEN WT,T00022000
|
|
TYO6,X);WT,TTYO7);END;GO TO READER;LONG:IF INX<-0.5THEN GO TO DONE;INX~-00022100
|
|
1;WT,FTT18);GO TO READER;NEGNBR:WT,FTT22);GO TO READER; 00022200
|
|
00022300
|
|
00022400
|
|
DONE: TIMER; 00022500
|
|
IF INX < -0.5 THEN WT, FTT20); 00022600
|
|
END OF CALCULATOR SIMULATION PROGRAM. 00022700
|