mirror of
https://github.com/pkimpel/retro-220.git
synced 2026-03-01 01:29:57 +00:00
1. Supply runnable examples for all five sample programs in the BALGOL reference manual. 2. Regenerate the Generator and Compiler listings and tape images. 3. Fix assembler bugs with "S" format code on input. 4. Fix BAC-Assembler bug generating a machine-language deck for the LABEL intrinsic. 5. Note that some of these changes require retro-220 version 0.08 in order to work properly.
248 lines
4.4 KiB
Plaintext
248 lines
4.4 KiB
Plaintext
0200 BAC-220 STANDARD VERSION 2/1/62
|
||
|
||
0200 COMMENT FIFTH EXAMPLE PROGRAM - FROM BALGOL MANUAL, JANUARY 1961
|
||
|
||
0200 EDITION.
|
||
|
||
0200
|
||
|
||
0200 THE FOLLOWING PROGRAM FOR OPTICAL RAY-TRACING WAS WRITTEN BY
|
||
|
||
0200 R. MITCHELL$
|
||
|
||
0200
|
||
|
||
0200 COMMENT OPTICAL TRACE PROGRAM, R. F. MITCHELL, VIDYA 1$
|
||
|
||
0200 INTEGER M, J, K, JA, JB$
|
||
|
||
0200 ARRAY A(4), B(4), C(4)$
|
||
|
||
0200
|
||
|
||
0200 A(1) = -260.0$ A(3) = -600.0$ A(4) = 0.0$
|
||
|
||
0205 ARRAY G(6) = (25.0, 50.0, 75.0, 100.0, 125.0, 150.0)$
|
||
|
||
0205 C(1) = 1.0$ C(2) = 3.436$ C(3) = 1.0$ C(4) = -1.0$
|
||
|
||
0213 B(2) = 339.75$ B(3) = 1.0$ B(4) = 0.0$
|
||
|
||
0218 ARRAY B1(6) = (5.5, 5.75, 6.0, 6.25, 6.75, 7.0)$
|
||
|
||
0218
|
||
|
||
0218 FOR JB = (1, 1, 6)$
|
||
|
||
0229 BEGIN
|
||
|
||
0229 B(1) = B1(JB)$
|
||
|
||
0233 A(2) = A(1) - B1(JB)(1.0 - 1.0/C(2).C(2))$
|
||
|
||
0246 WRITE ($$ PARAM, F6)$
|
||
|
||
0254 OUTPUT PARAM (FOR K = (1, 1, 4)$ (A(K), B(K), C(K)))$
|
||
|
||
0283 FORMAT F6 (W3,11(3F20.8,W4))$
|
||
|
||
0289 FOR M = (1, 1, 6)$
|
||
|
||
0300 BEGIN
|
||
|
||
0300 H1 = G(M)$
|
||
|
||
0304 WRITE ($$ GVALU, F1)$
|
||
|
||
0312 OUTPUT GVALU (H1)$
|
||
|
||
0319 FORMAT F1 (B10,*G*,X20.8,W6)$
|
||
|
||
0325 SUMD = 0.0$ E = 0.0$ P = H1$
|
||
|
||
0329 FOR J = (1, 1, 3)$
|
||
|
||
0340 BEGIN
|
||
|
||
0340 R1 = P/A(J)$
|
||
|
||
0346 IF ABS(R1) GTR 0.95$
|
||
|
||
0346 GO TO PRINT$
|
||
|
||
0346
|
||
|
||
0352 I = ARCSIN(R1)$
|
||
|
||
0356 R2 = R1.C(J)/C(J+1)$
|
||
|
||
0362 IF ABS(R2) GTR 0.95$
|
||
|
||
0362 GO TO PRINT$
|
||
|
||
0362
|
||
|
||
0368 IP = ARCSIN(R2)$
|
||
|
||
0372 E = E + I - IP$
|
||
|
||
0376 H2 =(J+1)SIN(E+I)$
|
||
|
||
0389 R3 = SIN(E)$
|
||
|
||
0393 COMMENT IF R3 = SIN(E)$ *APPAREN
|
||
|
||
0393 IF R3 EQL 0.0$
|
||
|
||
0393 R3 = 1.0**-20$
|
||
|
||
0393
|
||
|
||
0398 DL = (H2-H1)/R3$
|
||
|
||
0403 DU = DL.C(J+1)$
|
||
|
||
0407 SUMD = SUMD + DU$
|
||
|
||
0410 H1 = H2$
|
||
|
||
0412 WRITE ($$ EDH, F2)$
|
||
|
||
0420 OUTPUT EDH(E, DU, H1)$
|
||
|
||
0433 FORMAT F2 (B5,*E*,X15.8,B10,*D*,X15.8,B10,*H*,X15.8,W4)$
|
||
|
||
0445 IF (PCS(1))$
|
||
|
||
0445 BEGIN
|
||
|
||
0453 WRITE ($$ ALL, F5)$
|
||
|
||
0457 OUTPUT ALL (R1, R2, I, IP, E, H2, R3, DL, DU, P)$
|
||
|
||
0491 FORMAT F5 (2(5F12.5,W4))
|
||
|
||
0496 END$
|
||
|
||
0496
|
||
|
||
0496 P = A(J).R2 - R3(A(J+1) = A(J) + B(J))
|
||
|
||
0503 END$
|
||
|
||
0503
|
||
|
||
0509 L = A(3)(1.0 + R2/R3)$
|
||
|
||
0515 SUMD = SUMD - DU$
|
||
|
||
0518 WRITE ($$ LSUMD, F3)$
|
||
|
||
0526 OUTPUT LSUMD (L, SUMD)$
|
||
|
||
0536 FORMAT F3 (B10,*L*,X20.8,B10,*SUMD*,X20.8,W6,W4)
|
||
|
||
0536 END
|
||
|
||
0546 END$
|
||
|
||
0546
|
||
|
||
0547 STOP$
|
||
|
||
0547
|
||
|
||
0549 PRINT..
|
||
|
||
0553 WRITE ($$ ERROR, F)$
|
||
|
||
0557 OUTPUT ERROR (R1, R2, A(J), C(J+1), P)$
|
||
|
||
0578 FORMAT F (*R1*,X9.4,B4,*R2*,X9.4,B4,*A*,X9.4,B4,*C*,X9.6,B4,
|
||
|
||
0578 *P*,X9.4,W1)$
|
||
|
||
0595 STOP$
|
||
|
||
0596 FINISH$
|
||
COMPILED PROGRAM ENDS AT 0597
|
||
PROGRAM VARIABLES BEGIN AT 4399
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-.26000000, 03 .55000000, 01 .10000000, 01
|
||
|
||
-.26503413, 03 .33975000, 03 .34360000, 01
|
||
|
||
-.60000000, 03 .10000000, 01 .10000000, 01
|
||
|
||
.00000000, 00 .00000000, 00 -.10000000, 01
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
G 25.00000000
|
||
|
||
|
||
E -.06831474 D 1274.89130000 H -.32774976
|
||
|
||
E -.16537255 D .29356608 H -.37607655
|
||
|
||
E -.65489915 D -4.52550560 H -3.13246810
|
||
|
||
L 51.33266500 SUMD 1275.18480000
|
||
|
||
|
||
|
||
|
||
G 50.00000000
|
||
|
||
|
||
E -.13751546 D 1269.55340000 H -.65003198
|
||
|
||
E -.33564916 D .32976416 H -.75865041
|
||
|
||
E -1.36039550 D -3.12936780 H -3.81900720
|
||
|
||
L 42.51399500 SUMD 1269.88310000
|
||
|
||
|
||
|
||
|
||
G 75.00000000
|
||
|
||
|
||
E -.20856805 D 1260.51770000 H -.96093506
|
||
|
||
E -.51685446 D .39303495 H -1.15515240
|
||
|
||
E -2.21304160 D 1.04110740 H -.32148266
|
||
|
||
L 5.40105630 SUMD 1260.91070000
|
||
|
||
|
||
|
||
|
||
G 100.00000000
|
||
|
||
|
||
E -.28261909 D 1247.55250000 H -1.25355430
|
||
|
||
E -.71812001 D .48907616 H -1.57535180
|
||
R1 -1.0295 R2 .5652 A 85.2500 C-1.000000 P -87.7708
|