|
|
BSD 4.3tahoe
c comment section
c
c fm041
c
c this routine tests arithmetic assignments of the
c form integer variable = primary ** primary
c where the first of two primaries is an integer variable or an
c integer constant and the second primary is an integer constant.
c
c references
c american national standard programming language fortran,
c x3.9-1978
c
c section 4.3, integer type
c section 4.3.1, integer constant
c section 6.1, arithmetic expressions
c section 10.1, arithmetic assignment statement
c
c
c **********************************************************
c
c a compiler validation system for the fortran language
c based on specifications as defined in american national standard
c programming language fortran x3.9-1978, has been developed by the
c federal cobol compiler testing service. the fortran compiler
c validation system (fcvs) consists of audit routines, their related
c data, and an executive system. each audit routine is a fortran
c program, subprogram or function which includes tests of specific
c language elements and supporting procedures indicating the result
c of executing these tests.
c
c this particular program/subprogram/function contains features
c found only in the subset as defined in x3.9-1978.
c
c suggestions and comments should be forwarded to -
c
c department of the navy
c federal cobol compiler testing service
c washington, d.c. 20376
c
c **********************************************************
c
c
c
c initialization section
c
c initialize constants
c **************
c i01 contains the logical unit number for the card reader.
i01 = 5
c i02 contains the logical unit number for the printer.
i02 = 6
c system environment section
c
cx010 this card is replaced by contents of fexec x-010 control card.
c the cx010 card is for overriding the program default i01 = 5
c (unit number for card reader).
cx011 this card is replaced by contents of fexec x-011 control card.
c the cx011 card is for systems which require additional
c fortran statements for files associated with cx010 above.
c
cx020 this card is replaced by contents of fexec x-020 control card.
c the cx020 card is for overriding the program default i02 = 6
c (unit number for printer).
cx021 this card is replaced by contents of fexec x-021 control card.
c the cx021 card is for systems which require additional
c fortran statements for files associated with cx020 above.
c
ivpass=0
ivfail=0
ivdele=0
iczero=0
c
c write page headers
write (i02,90000)
write (i02,90001)
write (i02,90002)
write (i02, 90002)
write (i02,90003)
write (i02,90002)
write (i02,90004)
write (i02,90002)
write (i02,90011)
write (i02,90002)
write (i02,90002)
write (i02,90005)
write (i02,90006)
write (i02,90002)
c
c test section
c
c arithmetic assignment statement
c
c test 615 through test 631 contain arithmetic assignment statements
c of the form integer variable = integer constant ** integer con.
c
c test 632 through test 648 contain arithmetic assignment statements
c of the form integer variable = integer variable ** integer con.
c
c
ivtnum = 615
c
c **** test 615 ****
c test 615 - small number base; zero exponent
c
if (iczero) 36150, 6150, 36150
6150 continue
ivcomp = 1 ** 0
go to 46150
36150 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46150, 6161, 46150
46150 if (ivcomp - 1) 26150,16150,26150
16150 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6161
26150 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6161 continue
ivtnum = 616
c
c **** test 616 ****
c test 616 - zero base to first power
c
if (iczero) 36160, 6160, 36160
6160 continue
ivcomp = 0 ** 1
go to 46160
36160 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46160, 6171, 46160
46160 if (ivcomp) 26160,16160,26160
16160 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6171
26160 ivfail = ivfail + 1
ivcorr = 0
write (i02,80004) ivtnum, ivcomp ,ivcorr
6171 continue
ivtnum = 617
c
c **** test 617 ****
c test 617 - base =1; exponent = 1
c
if (iczero) 36170, 6170, 36170
6170 continue
ivcomp = 1 ** 1
go to 46170
36170 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46170, 6181, 46170
46170 if (ivcomp - 1) 26170,16170,26170
16170 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6181
26170 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6181 continue
ivtnum = 618
c
c **** test 618 ****
c test 618 - large number base; exponent = 1
c
if (iczero) 36180, 6180, 36180
6180 continue
ivcomp = 32767 ** 1
go to 46180
36180 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46180, 6191, 46180
46180 if (ivcomp - 32767) 26180,16180,26180
16180 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6191
26180 ivfail = ivfail + 1
ivcorr = 32767
write (i02,80004) ivtnum, ivcomp ,ivcorr
6191 continue
ivtnum = 619
c
c **** test 619 ****
c test 619 - large exponent
c
if (iczero) 36190, 6190, 36190
6190 continue
ivcomp = 1 ** 32767
go to 46190
36190 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46190, 6201, 46190
46190 if (ivcomp - 1) 26190,16190,26190
16190 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6201
26190 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6201 continue
ivtnum = 620
c
c **** test 620 ****
c test 620 - zero base; large number exponent
c
if (iczero) 36200, 6200, 36200
6200 continue
ivcomp = 0 ** 32767
go to 46200
36200 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46200, 6211, 46200
46200 if (ivcomp) 26200,16200,26200
16200 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6211
26200 ivfail = ivfail + 1
ivcorr = 0
write (i02,80004) ivtnum, ivcomp ,ivcorr
6211 continue
ivtnum = 621
c
c **** test 621 ****
c test 621 -large number base; zero exponent
c
if (iczero) 36210, 6210, 36210
6210 continue
ivcomp = 32767 ** 0
go to 46210
36210 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46210, 6221, 46210
46210 if (ivcomp - 1) 26210,16210,26210
16210 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6221
26210 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6221 continue
ivtnum = 622
c
c **** test 622 ****
c test 622 -exponent is power of two
c
if (iczero) 36220, 6220, 36220
6220 continue
ivcomp = 181 ** 2
go to 46220
36220 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46220, 6231, 46220
46220 if (ivcomp - 32761) 26220,16220,26220
16220 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6231
26220 ivfail = ivfail + 1
ivcorr = 32761
write (i02,80004) ivtnum, ivcomp ,ivcorr
6231 continue
ivtnum = 623
c
c **** test 623 ****
c test 623 - base and exponent are both powers of two
c
if (iczero) 36230, 6230, 36230
6230 continue
ivcomp = 2 ** 8
go to 46230
36230 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46230, 6241, 46230
46230 if (ivcomp - 256) 26230,16230,26230
16230 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6241
26230 ivfail = ivfail + 1
ivcorr = 256
write (i02,80004) ivtnum, ivcomp ,ivcorr
6241 continue
c
c tests 624 and 625 test to ensure exponentiation operator is
c not commutative
c
ivtnum = 624
c
c **** test 624 ****
c
if (iczero) 36240, 6240, 36240
6240 continue
ivcomp = 3 ** 9
go to 46240
36240 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46240, 6251, 46240
46240 if (ivcomp - 19683) 26240,16240,26240
16240 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6251
26240 ivfail = ivfail + 1
ivcorr = 19683
write (i02,80004) ivtnum, ivcomp ,ivcorr
6251 continue
ivtnum = 625
c
c **** test 625 ****
c
if (iczero) 36250, 6250, 36250
6250 continue
ivcomp = 9 ** 3
go to 46250
36250 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46250, 6261, 46250
46250 if (ivcomp - 729) 26250,16250,26250
16250 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6261
26250 ivfail = ivfail + 1
ivcorr = 729
write (i02,80004) ivtnum, ivcomp ,ivcorr
6261 continue
c
c tests 626 through 631 test positive and negative bases to positive
c odd and even number powers checking the sign
c of the results
c
ivtnum = 626
c
c **** test 626 ****
c
if (iczero) 36260, 6260, 36260
6260 continue
ivcomp = 1 ** 2
go to 46260
36260 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46260, 6271, 46260
46260 if (ivcomp - 1) 26260,16260,26260
16260 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6271
26260 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6271 continue
ivtnum = 627
c
c **** test 627 ****
c
if (iczero) 36270, 6270, 36270
6270 continue
ivcomp= (-1) ** 2
go to 46270
36270 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46270, 6281, 46270
46270 if (ivcomp - 1) 26270,16270,26270
16270 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6281
26270 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6281 continue
ivtnum = 628
c
c **** test 628 ****
c
if (iczero) 36280, 6280, 36280
6280 continue
ivcomp = 7 ** 3
go to 46280
36280 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46280, 6291, 46280
46280 if (ivcomp - 343) 26280,16280,26280
16280 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6291
26280 ivfail = ivfail + 1
ivcorr = 343
write (i02,80004) ivtnum, ivcomp ,ivcorr
6291 continue
ivtnum = 629
c
c **** test 629 ****
c
if (iczero) 36290, 6290, 36290
6290 continue
ivcomp = (-7) ** 3
go to 46290
36290 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46290, 6301, 46290
46290 if (ivcomp + 343) 26290,16290,26290
16290 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6301
26290 ivfail = ivfail + 1
ivcorr = -343
write (i02,80004) ivtnum, ivcomp ,ivcorr
6301 continue
ivtnum = 630
c
c **** test 630 ****
c
if (iczero) 36300, 6300, 36300
6300 continue
ivcomp = 7 ** 4
go to 46300
36300 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46300, 6311, 46300
46300 if (ivcomp - 2401) 26300,16300,26300
16300 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6311
26300 ivfail = ivfail + 1
ivcorr = 2401
write (i02,80004) ivtnum, ivcomp ,ivcorr
6311 continue
ivtnum = 631
c
c **** test 631 ****
c
if (iczero) 36310, 6310, 36310
6310 continue
ivcomp = (-7) ** 4
go to 46310
36310 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46310, 6321, 46310
46310 if (ivcomp - 2401) 26310,16310,26310
16310 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6321
26310 ivfail = ivfail + 1
ivcorr = 2401
write (i02,80004) ivtnum, ivcomp ,ivcorr
6321 continue
ivtnum = 632
c
c **** test 632 ****
c test 632 - small number base; zero exponent
c
if (iczero) 36320, 6320, 36320
6320 continue
ivon01 = 1
ivcomp = ivon01 ** 1
go to 46320
36320 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46320, 6331, 46320
46320 if (ivcomp - 1) 26320,16320,26320
16320 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6331
26320 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6331 continue
ivtnum = 633
c
c **** test 633 ****
c test 633 - zero base to first power
c
if (iczero) 36330, 6330, 36330
6330 continue
ivon01 = 0
ivcomp = ivon01 ** 1
go to 46330
36330 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46330, 6341, 46330
46330 if (ivcomp) 26330,16330,26330
16330 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6341
26330 ivfail = ivfail + 1
ivcorr = 0
write (i02,80004) ivtnum, ivcomp ,ivcorr
6341 continue
ivtnum = 634
c
c **** test 634 ****
c test 634 - base =1; exponent = 1
c
if (iczero) 36340, 6340, 36340
6340 continue
ivon01 = 1
ivcomp = ivon01 ** 1
go to 46340
36340 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46340, 6351, 46340
46340 if (ivcomp - 1) 26340,16340,26340
16340 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6351
26340 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6351 continue
ivtnum = 635
c
c **** test 635 ****
c test 635 - large exponent
c
if (iczero) 36350, 6350, 36350
6350 continue
ivon01 = 1
ivcomp = ivon01 ** 32767
go to 46350
36350 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46350, 6361, 46350
46350 if (ivcomp - 1) 26350,16350,26350
16350 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6361
26350 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6361 continue
ivtnum = 636
c
c **** test 636 ****
c test 636 - large number base; exponent = 1
c
if (iczero) 36360, 6360, 36360
6360 continue
ivon01 = 32767
ivcomp = ivon01 ** 1
go to 46360
36360 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46360, 6371, 46360
46360 if (ivcomp - 32767) 26360,16360,26360
16360 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6371
26360 ivfail = ivfail + 1
ivcorr = 32767
write (i02,80004) ivtnum, ivcomp ,ivcorr
6371 continue
ivtnum = 637
c
c **** test 637 ****
c test 637 - zero base; large number exponent
c
if (iczero) 36370, 6370, 36370
6370 continue
ivon01 = 0
ivcomp = ivon01 ** 32767
go to 46370
36370 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46370, 6381, 46370
46370 if (ivcomp) 26370,16370,26370
16370 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6381
26370 ivfail = ivfail +1
ivcorr = 0
write (i02,80004) ivtnum, ivcomp ,ivcorr
6381 continue
ivtnum = 638
c
c **** test 638 ****
c test 638 -large number base; zero exponent
c
if (iczero) 36380, 6380, 36380
6380 continue
ivon01 = 32767
ivcomp = ivon01 ** 0
go to 46380
36380 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46380, 6391, 46380
46380 if (ivcomp - 1) 26380,16380,26380
16380 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6391
26380 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6391 continue
ivtnum = 639
c
c **** test 639 ****
c test 639 -exponent is power of two
c
if (iczero) 36390, 6390, 36390
6390 continue
ivon01 = 181
ivcomp = ivon01 ** 2
go to 46390
36390 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46390, 6401, 46390
46390 if (ivcomp - 32761) 26390,16390,26390
16390 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6401
26390 ivfail = ivfail + 1
ivcorr = 32761
write (i02,80004) ivtnum, ivcomp ,ivcorr
6401 continue
ivtnum = 640
c
c **** test 640 ****
c test 640 - base and exponent are both powers of two
c
if (iczero) 36400, 6400, 36400
6400 continue
ivon01 = 2
ivcomp = ivon01 ** 8
go to 46400
36400 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46400, 6411, 46400
46400 if (ivcomp - 256) 26400,16400,26400
16400 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6411
26400 ivfail = ivfail + 1
ivcorr = 256
write (i02,80004) ivtnum, ivcomp ,ivcorr
6411 continue
c
c tests 641 and 642 test to ensure exponentiation operator is
c not commutative
c
ivtnum = 641
c
c **** test 641 ****
c
if (iczero) 36410, 6410, 36410
6410 continue
ivon01 = 3
ivcomp = ivon01 ** 9
go to 46410
36410 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46410, 6421, 46410
46410 if (ivcomp - 19683) 26410,16410,26410
16410 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6421
26410 ivfail = ivfail + 1
ivcorr = 19683
write (i02,80004) ivtnum, ivcomp ,ivcorr
6421 continue
ivtnum = 642
c
c **** test 642 ****
c
if (iczero) 36420, 6420, 36420
6420 continue
ivon01 = 9
ivcomp = ivon01 ** 3
go to 46420
36420 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46420, 6431, 46420
46420 if (ivcomp - 729) 26420,16420,26420
16420 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6431
26420 ivfail = ivfail + 1
ivcorr = 729
write (i02,80004) ivtnum, ivcomp ,ivcorr
6431 continue
c
c tests 643 through 648 test positive and negative bases to positive
c odd and even number powers checking the sign
c of the results
c
ivtnum = 643
c
c **** test 643 ****
c
if (iczero) 36430, 6430, 36430
6430 continue
ivon01 = 1
ivcomp = ivon01 ** 2
go to 46430
36430 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46430, 6441, 46430
46430 if (ivcomp - 1) 26430,16430,26430
16430 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6441
26430 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6441 continue
ivtnum = 644
c
c **** test 644 ****
c
if (iczero) 36440, 6440, 36440
6440 continue
ivon01 = -1
ivcomp = ivon01 ** 2
go to 46440
36440 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46440, 6451, 46440
46440 if (ivcomp - 1) 26440,16440,26440
16440 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6451
26440 ivfail = ivfail + 1
ivcorr = 1
write (i02,80004) ivtnum, ivcomp ,ivcorr
6451 continue
ivtnum = 645
c
c **** test 645 ****
c
if (iczero) 36450, 6450, 36450
6450 continue
ivon01 = 7
ivcomp = ivon01 ** 3
go to 46450
36450 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46450, 6461, 46450
46450 if (ivcomp - 343) 26450,16450,26450
16450 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6461
26450 ivfail = ivfail + 1
ivcorr = 343
write (i02,80004) ivtnum, ivcomp ,ivcorr
6461 continue
ivtnum = 646
c
c **** test 646 ****
c
if (iczero) 36460, 6460, 36460
6460 continue
ivon01 = -7
ivcomp = ivon01 ** 3
go to 46460
36460 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46460, 6471, 46460
46460 if (ivcomp + 343) 26460,16460,26460
16460 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6471
26460 ivfail = ivfail + 1
ivcorr = -343
write (i02,80004) ivtnum, ivcomp ,ivcorr
6471 continue
ivtnum = 647
c
c **** test 647 ****
c
if (iczero) 36470, 6470, 36470
6470 continue
ivon01 = 7
ivcomp = ivon01 ** 4
go to 46470
36470 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46470, 6481, 46470
46470 if (ivcomp - 2401) 26470,16470,26470
16470 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6481
26470 ivfail = ivfail + 1
ivcorr = 2401
write (i02,80004) ivtnum, ivcomp ,ivcorr
6481 continue
ivtnum = 648
c
c **** test 648 ****
c
if (iczero) 36480, 6480, 36480
6480 continue
ivon01 = -7
ivcomp = ivon01 ** 4
go to 46480
36480 ivdele = ivdele + 1
write (i02,80003) ivtnum
if (iczero) 46480, 6491, 46480
46480 if (ivcomp - 2401) 26480,16480,26480
16480 ivpass = ivpass + 1
write (i02,80001) ivtnum
go to 6491
26480 ivfail = ivfail + 1
ivcorr = 2401
write (i02,80004) ivtnum, ivcomp ,ivcorr
6491 continue
c *** end of tests ***
c
c write page footings and run summaries
99999 continue
write (i02,90002)
write (i02,90006)
write (i02,90002)
write (i02,90002)
write (i02,90007)
write (i02,90002)
write (i02,90008) ivfail
write (i02,90009) ivpass
write (i02,90010) ivdele
c
c
c terminate routine execution
stop
c
c format statements for page headers
90000 format (1h1)
90002 format (1h )
90001 format (1h ,10x,34hfortran compiler validation system)
90003 format (1h ,21x,11hversion 1.0)
90004 format (1h ,10x,38hfor official use only - copyright 1978)
90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
90006 format (1h ,5x,46h----------------------------------------------)
90011 format (1h ,18x,17hsubset level test)
c
c format statements for run summaries
90008 format (1h ,15x,i5,19h errors encountered)
90009 format (1h ,15x,i5,13h tests passed)
90010 format (1h ,15x,i5,14h tests deleted)
c
c format statements for test results
80001 format (1h ,4x,i5,7x,4hpass)
80002 format (1h ,4x,i5,7x,4hfail)
80003 format (1h ,4x,i5,7x,7hdeleted)
80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
c
90007 format (1h ,20x,20hend of program fm041)
end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.