f66 vs f77
working simultaneously on projects decwar and inverse is, as hoped, producing insights. the inversion fortran is coming directly from fifties and sixties ibm 701 ‘defense calculator’, 704, 7090/7094 lineage. it’s now running on linux python, linux fortran, and pdp-10 fortran. the concept is to add 7090/7094 fortran to that, and possibly cdc fortran.
meanwhile, decwar is a fusion of pdp-10 fortran and assembly. roughly speaking, much of the real work happens in assembly. it’s usually interacting with the high segment memory where the overall game state for multiple players/jobs lives. the fortran is somewhat of an i/o layer, interacting with the players. it’s doing quite a bit of text i/o. now here’s the thing. very roughly speaking the assembly code is ‘six bit ascii’ and expects the same with fortran, which means the f66 fortran66 ascii standard, hollerith characters, etc. f77 fortran77 ascii standard brought breaking changes with ‘seven/eight bit ascii’, character data type, suppression of hollerith, etc. here’s the two relevant tapes for decwar.
tapes/BB-D480C-SB_FORTRAN10_V6.tap f66 'six bit ascii'
tapes/BB-D480F-SB_FORTRAN10_V10.tap f77 'seven/eight bit ascii'
porting decwar to f77 seems possible, but probably means breaking changes in the assembly code as well.
in any case, here’s a possible approach to all this. f77 is naturally ‘easier’ and in some senses nicer. projects inverse and simplex are going backwards in time though. this is geology. not just more primitive fortran versions, but assembly as well can be expected, deeper in time. this is one of the beautiful things about decwar. it’s coming directly from the era when assembly was standard and fortran was the upstart. the era immortalized in the story of mel.
all the signs say, f66 it is. here’s first pdp10 run of the complete f66 inversion code, direct from forsythe and moler. this is 7090/7094 f66 code. there are more numerical questions with the pdp10 output than the linux output, but the code is all there and working on both ‘as is’.
.ex inverse
FORTRAN: INVERS
MAIN.
INVERT
IMPRUV
DECOMP
SOLVE
SING
INVHIL
HIL
PRINT1
PRINT2
LINK: Loading
[LNKXCT INVERS execution]
0.98892106 0.49116241 0.32595560 0.24365902 0.19443469 0.16170528
0.49120462 0.32631841 0.24414401 0.19496628 0.16224892 0.13891907
0.32601349 0.24416193 0.19512628 0.16247703 0.13918004 0.12172207
0.24372152 0.19499232 0.16248597 0.13926308 0.12184548 0.10829895
0.19449884 0.16227878 0.13919372 0.12185049 0.10834668 0.09753552
0.16176917 0.13895058 0.12173830 0.10830686 0.09753854 0.08871465
0.98970806 0.49180831 0.32650311 0.24413332 0.19485413 0.16208157
0.49180839 0.32681585 0.24456675 0.19533370 0.16257395 0.13921057
0.32650322 0.24456678 0.19547102 0.16277715 0.13944580 0.12196055
0.24413344 0.19533375 0.16277717 0.13951687 0.12207039 0.10850088
0.19485425 0.16257401 0.13944582 0.12207040 0.10854168 0.09771068
0.16208169 0.13921063 0.12196058 0.10850090 0.09771068 0.08886933
1.00000000 0.50000000 0.33333334 0.25000000 0.20000000 0.16666667
0.50000000 0.33333334 0.25000000 0.20000000 0.16666667 0.14285714
0.33333334 0.25000000 0.20000000 0.16666667 0.14285714 0.12500000
0.25000000 0.20000000 0.16666667 0.14285714 0.12500000 0.11111111
0.20000000 0.16666667 0.14285714 0.12500000 0.11111111 0.10000000
0.16666667 0.14285714 0.12500000 0.11111111 0.10000000 0.09090909
35.87 -626.44 3336.10 -7498.21 7492.17 -2745.39
-626.39 14598.69 -87520.84 209924.59 -218571.46 82402.89
3335.67 -87516.33 559896.62 -1399352.81 1498983.56 -577009.59
-7496.86 209904.96 -1399299.36 3598038.41 -3935202.34 1539050.42
7490.41 -218543.48 1498882.22 -3935092.13 4372745.81 -1731733.36
-2744.61 82389.94 -576956.95 1538974.17 -1731697.22 692787.19
35.90 -627.03 3339.84 -7507.44 7501.88 -2749.07
-627.03 14614.86 -87622.13 210173.43 -218834.24 82502.80
3339.84 -87622.12 560558.15 -1400976.59 1500697.56 -577661.17
-7507.44 210173.41 -1400976.53 3602152.53 -3939542.69 1540699.92
7501.88 -218834.21 1500697.45 -3939542.56 4377438.81 -1733516.33
-2749.07 82502.78 -577661.11 1540699.84 -1733516.30 693478.09
36.00 -630.00 3360.00 -7560.00 7560.00 -2772.00
-630.00 14700.00 -88200.00 211680.00 -220500.00 83160.00
3360.00 -88200.00 564480.00 -1411199.98 1512000.02 -582120.00
-7560.00 211680.00 -1411199.98 3628800.03 -3969000.00 1552320.02
7560.00 -220500.00 1512000.02 -3969000.00 4410000.00 -1746359.98
-2772.00 83160.00 -582120.00 1552320.02 -1746359.98 698544.02
CPU time 0.05 Elapsed time 5.28
EXIT
.