1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

186 lines
15 KiB
Plaintext

BEGIN 00000100
COMMENT CUBE LIBRARY NUMBER IS C200010. PROGRAM NAME IS 00000200
"CPLOY/TTY". THIS VERSION DATED 5/3/68; 00000300
INTEGER I,N,STA,GM,CNTCOM; 00000400
ALPHA FILE IN TTIN 14 (2,8); 00000500
ALPHA FILE OUT TTOUT 14 (2,8); 00000600
DEFINE RTT=READ(TTIN(STA)#, WTT=WRITE(TTOUT(STA)#; 00000700
REAL E, F, INCRE, G ; 00000800
ARRAY A, C, D, ER, EI[0:50] ; 00000900
ARRAY Z[0:50] ; 00001000
ARRAY TBUF,TBUF1[0:7]; 00001100
ALPHA CR,LF,LA,COMA; 00001200
LABEL TRYAGAIN; 00001300
00001400
FORMAT F2(X23,"ROOTS OF THE POLYNOMIAL{!!~"), 00001500
FF2(X18,"REAL",X12,"IMAGINARY{!~"), 00001600
FFF2(X9,E18.11,X4,E18.11,"{!~"), 00001700
F4(X23,"!!!ERROR OF THE POLYNOMIAL{!!~"), 00001800
FF4(X18,"REAL",X12,"IMAGINARY{!~"), 00001900
FFF4(X9,E18.11,X4,E18.11,"{!~"), 00002000
FCRLF(X8,"{!~"); 00002100
INTEGER STREAM PROCEDURE FINDGM(B,LA); 00002200
BEGIN 00002300
LABEL HERE ; 00002400
SI~B; 40(IF SC="~" THEN JUMP OUT 1 TO HERE; 00002500
SI~SI+1; TALLY~TALLY+1); 00002600
HERE: FINDGM~TALLY; 00002700
END; 00002800
INTEGER STREAM PROCEDURE COUNTCOMMAS(B,NDG,COMA); 00002900
VALUE NDG; 00003000
BEGIN 00003100
SI~B; DI~COMA; DI~DI+7; 00003200
NDG(IF SC=DC THEN TALLY~TALLY+1; DI~DI-1); 00003300
COUNTCOMMAS~TALLY; 00003400
END OF COUNTCOMMAS; 00003500
STREAM PROCEDURE MOVER(B,T,N); 00003600
VALUE N; 00003700
BEGIN 00003800
SI~B; DI~T; DS~N CHR; 00003900
END OF MOVER; 00004000
BOOLEAN STREAM PROCEDURE COMMA(B,NDG); 00004100
VALUE NDG; 00004200
BEGIN 00004300
SI~B; SI~SI+NDG; IF SC="," THEN TALLY~1; 00004400
COMMA~TALLY; 00004500
END OF COMMA; 00004600
STREAM PROCEDURE PUTONEIN(B,NDG,COMA); 00004700
VALUE NDG; 00004800
BEGIN 00004900
DI~B; SI~COMA; SI~SI+7; DI~DI+NDG; 00005000
DS~1 CHR; 00005100
END OF PUTONEIN; 00005200
00005300
PROCEDURE CPOLY(E, F, INCRE, G, N, A, Z, C, D, ER, EI) ; 00005400
00005500
COMMENT PROCEDURE CPOLY DETERMINES THE ROOTS OF A POLYNOMIAL, 00005600
THE COEFFICIENTS OF WHICH ARE COMPLEX NUMBERS. 00005700
00005800
R. D. RODMAN, 00005900
(PROFESSIONAL SERVICES DIVISIONAL GROUP) 00006000
00006100
CARD SEQUENCE BEGINS WITH CPLY0000 00006200
FIRST RELEASE DATE 07/01/64 ; 00006300
00006400
VALUE E, F, INCRE, G, N ; 00006500
INTEGER N ; 00006600
REAL E, F, INCRE, G ; 00006700
REAL ARRAY A, Z, C, D, ER, EI[0] ; 00006800
00006900
BEGIN 00007000
INTEGER I, N1, RCOUNT, K, L ; 00007100
REAL H, U, V, W, R, S, PR, PS, UMIN, VMIN, T, T1, T2, T3, P,Q;00007200
REAL IT, IS ; 00007300
LABEL S9, START, EXIT, ROOT ; 00007400
ARRAY B, BZ[0:N] ; 00007500
00007600
PROCEDURE ORPOL(N, A, Z, X, Y, T, IT) ; 00007700
00007800
VALUE N, X, Y ; 00007900
INTEGER N ; 00008000
REAL X, Y, T, IT ; 00008100
REAL ARRAY A, Z[0] ; 00008200
00008300
BEGIN 00008400
REAL P ; 00008500
INTEGER I ; 00008600
00008700
T ~ A[N] ; IT ~ Z[N] ; 00008800
FOR I ~ N-1 STEP -1 UNTIL 0 DO 00008900
BEGIN 00009000
P ~ T | X - IT | Y + A[I] ; 00009100
IT ~ IT | X + T | Y + Z[I] ; 00009200
T ~ P 00009300
END 00009400
END ; 00009500
FOR I ~ 0 STEP 1 UNTIL N DO 00009600
BEGIN 00009700
B[I] ~ A[I] ; BZ[I] ~ Z[I] 00009800
END ; 00009900
N1 ~ N ; RCOUNT ~ 1 ; 00010000
00010100
START: H ~ INCRE ; U ~ E ; V ~ F ; 00010200
00010300
S9: W ~ 9.9@60 ; 00010400
R ~ U-H ; 00010500
FOR K ~ 1 STEP 1 UNTIL 3 DO 00010600
BEGIN 00010700
S ~ V-H ; 00010800
FOR L ~ 1 STEP 1 UNTIL 3 DO 00010900
BEGIN 00011000
ORPOL(N1, B, BZ, R, S, PR, PS) ; 00011100
IF (ABS(PR) + ABS(PS)) < W THEN 00011200
BEGIN 00011300
UMIN ~ R ; VMIN ~ S ; W ~ ABS(PR) + ABS(PS) 00011400
END ; 00011500
S ~ S+H 00011600
END ; 00011700
R ~ R+H 00011800
END ; 00011900
IF ABS(U-UMIN) < (1.0@-10) | ABS(U) AND 00012000
ABS(V-VMIN) < (1.0@-10) | ABS(V) THEN 00012100
BEGIN 00012200
IF SQRT(U*2 + V*2) | 1.0@-12 } H THEN GO TO ROOT ; 00012300
H ~ H/G ; 00012400
GO TO S9 00012500
END ; 00012600
U ~ UMIN ; V ~ VMIN ; GO TO S9 ; 00012700
00012800
ROOT: IF ABS(V) < H | 10 THEN V ~ 0 ; 00012900
C[RCOUNT] ~ U ; D[RCOUNT] ~ V ; 00013000
ORPOL(N, A, Z, U, V, ER[RCOUNT], EI[RCOUNT]) ; 00013100
RCOUNT ~ RCOUNT + 1 ; 00013200
IF RCOUNT > N THEN GO TO EXIT ; 00013300
T ~ B[N1-1] ; IT ~ BZ[N1-1] ; 00013400
B[N1-1] ~ B[N1] ; BZ[N1-1] ~ BZ[N1] ; 00013500
FOR I ~ N1-2 STEP -1 UNTIL 0 DO 00013600
BEGIN 00013700
S ~ T + U | B[I+1] - V | BZ[I+1] ; 00013800
IS ~ IT + V | B[I+1] + U | BZ[I+1] ; 00013900
T ~ B[I] ; IT ~ BZ[I] ; B[I] ~ S ; BZ[I] ~ IS ; 00014000
END ; 00014100
N1 ~ N1-1 ; 00014200
GO TO START ; 00014300
00014400
EXIT: END ; 00014500
00014600
STA~STATUS(TBUF[*]); 00014700
STA.[9:9]~TBUF[0].[9:9]; 00014800
CR~47; LF~60; LA~31; COMA~58; 00014900
TRYAGAIN: WTT,<X8,"ALL NUMBERS ENTERED MUST BE FOLLOWED BY A COMMA{00015000
!~">); 00015100
WTT,<X8,"ENTER THE NUMBER OF COEFFICIENTS AND THE REAL{!~00015200
">); 00015300
WTT,<X8,"COEFFICIENTS{!!~">); 00015400
READ(TTIN(STA),8,TBUF[*]); 00015500
WTT,FCRLF); 00015600
GM~FINDGM(TBUF[1],LA); 00015700
IF NOT COMMA(TBUF[1],GM-1) THEN 00015800
BEGIN 00015900
PUTONEIN(TBUF[1],GM,COMA); 00016000
GM~GM+1; 00016100
END; 00016200
N~N-1; 00016300
CNTCOM~COUNTCOMMAS(TBUF[1],GM,COMA)-1; 00016400
IF CNTCOM ! N+1 THEN 00016500
BEGIN 00016600
WTT,<X8,"TYPING ERROR. PLEASE TRY AGAIN{!~">); 00016700
GO TO TRYAGAIN; 00016800
END; 00016900
MOVER(TBUF[1],TBUF1[0],GM); 00017000
READ(TBUF1[*],/,N,FOR I~0 STEP 1 UNTIL N DO A[I]); 00017100
WTT,<X8,6F6.1>,N,FOR I~0 STEP 1 UNTIL N DO A[I]); 00017200
WTT,<X8,"{!ENTER THE NUMBER OF COEFFICIENTS AND THE{!~">)00017300
; 00017400
WTT,<X8,"IMAGINARY COEFFICIENTS{!!~">); 00017500
READ(TBUF1[*],/,N,FOR I~0 STEP 1 UNTIL N DO Z[I]); 00017600
WTT,<X8,6F6.1>,N,FOR I~0 STEP 1 UNTIL N DO Z[I]); 00017700
E ~ F ~ 0.5 ; INCRE ~ 1 ; G ~ 3 ; 00017800
CPOLY(E, F, INCRE, G, N, A, Z, C, D, ER, EI) ; 00017900
WTT,FCRLF); 00018000
WTT,F2); WTT,FF2); 00018100
WTT,FFF2,FOR I~1 STEP 1 UNTIL N DO [C[I],D[I]]); 00018200
WTT,F4); WTT,FF4); 00018300
WTT,FFF4,FOR I~1 STEP 1 UNTIL N DO [ER[I],EI[I]]); 00018400
END . 00018500