ENIAC U. S. Army
The ENIAC is complicated. It has about 20,000 tubes and thousands of switches and plug-in contacts. Since any of these or other things may fail, it is not surprising that the duration of an average run without some failure is only a few hours. For example, a power failure (of which there were 9 in November and December, 1947) may spoil four or five tubes. Some of these failures are not clear-cut failures like a short, but borderline failures which may cause a tube to operate improperly once in a hundred to a thousand times. It is therefore important to be able to test the ENIAC rather thoroughly, rapidly, and systematically, and, as far as possible, without touching any cables or switches. Testing of this kind is a science in itself and testing procedures will constantly be changed and improved. The procedure described in this section may accordingly be considered as only one stage in such a development. It is a program, set on the function tables which tests each unit an appropriate number of times and prints the errors found on IBM cards. The nature of the errors should localize the point of failure usually to within 10 or 20 tubes (if it is a tube failure) which can be replaced and examined at leisure without holding up the machine. Of course, the fact that part of the function table switches which describe the problem to be run must be changed to carry out the test is a defect, since switch errors or bad contacts may be made in setting the problem back. This defect is partially corrected by comparing the orders set on the function table with those set on cards before starting the problem. This latter test uses only a few lines of a function table.
To test the function tables the number in the first row and first function table is sent to accumulator 11 or 15, 10**n times, then shifted and subtracted from the correct number in the constant transmitter; if the difference is not zero, it is printed and then the next number is sent to accumulator 11 or 15, etc. The whole test takes about 15 minutes if n=3.
A set of about 120 IBM cards is provided, each having 2 numbers, a[i] and b[i], and the product c[i]. The ENIAC reads a card, multiplies a[i] by b[i], 10**n times, shifts the sum n places to the right, compares it with c[i] and prints the difference if it is not zero; the next card is then read, etc. This test takes about a minute if n=2.
Divisions and a square root are used.
To test the accumulators, minus 0000000001 is sent from the constant transmitter to accumulator 1 whence it is sent to accumulator x and back to accumulator 15. Its sign is then changed and it is added to the number in accumulator 1; if the sum is not zero, it is printed. This is repeated m times, then the number is printed and then the value of x is changed. At present it is planned to test 14 of the accumulators since the others are checked some other way. However, it may be desirable to check the others the same way. The testing time, if m is 1,000, is about 5 minutes.
Two tests are provided for the constant transmitter. The first consists of sending minus 0000000001 from A[LR] m times, adding m and printing if not zero, then repeating for B[LR], etc. This only takes a few seconds. The second consists of reading the card 9999999999, -9999999999, 9999999999, -9999999999, etc., adding A[LR] to B[LR], C[LR] to D[LR], etc., and printing if not zero. This is repeated 50 times, then the signs are changed, and it is repeated 50 times. The 9's are then reduced to 8's and the test proceeds. This tests the reader and the relay switches in the constant transmitter. About 10 minutes are required for this test.
The whole program takes about 30 minutes for the values of m and n suggested, then probably another 30 minutes would be consumed by about 4 people to set and reset the 3,600 switches required to run the program and then put the problem back on, and check the orders reset on the function tables.
Thus 1 to 1-1/2 hours will be required to run this functional test if all goes well. If a defective part is discovered, more time will be required to replace it and retest that unit (it is easy to start and stop the program at any two arguments in the function table).
A shorter, more elementary test which may be run every few hours to seek out major defects has been programmed. Since it only takes about 30 lines it may often be left on the function tables throughout the problem.
F.T. (alpha) Test 00 94 0X XX 11 00 00 01 01 02 94 *01 00 63 02 03 94 03 00 63 04 03 70 01 63 05 00 00 04 95 (alpha)0 9(alpha) 05 74 00 05 72 90 94 32 02 44 06 90 94 31 01 41 35 07 11 35 63 33 03 33 08 75 94 0(alpha) 05 73 00 09 41 61 70 01 11 35 10 90 02 03 70 01 34 11 04 95 (alpha)1 3(alpha) 12 74 12 34 75 94 0(alpha) 04 74 Multiply Test 13 94 01 12 63 05 94 14 01 00 63 04 00 00 15 62 95 (alpha)2 0(alpha) 16 74 16 81 63 03 80 30 33 17 03 33 65 63 75 44 18 01 45 02 34 22 33 19 61 00 00 00 00 00 20 95 (alpha)2 3(alpha) 21 74 00 21 70 01 34 04 34 75 22 95 (alpha)2 0(alpha) 16 74 00 23 95 (alpha)2 7(alpha) 24 74 00 24 70 01 35 05 35 75 25 94 01 00 63 04 94 26 0(alpha) 15 73 00 00 00 Acc. Test 27 62 70 13 90 05 03 28 94 0(alpha) 32 15 00 00 29 94 *9 99 33 03 00 30 95 (alpha)6 2(alpha) 31 74 00 31 45 73 00 00 00 00 32 80 01 31 63 44 14 33 94 0(alpha) 60 73 00 00 34 81 02 32 63 44 14 35 94 0(alpha) 60 73 00 00 36 82 04 34 63 44 14 37 94 0(alpha) 60 73 00 00 38 83 05 35 63 44 14 39 94 0(alpha) 60 73 00 00 40 84 10 40 63 44 14 41 94 0(alpha) 60 73 00 00 42 80 11 41 63 44 14 43 94 0(alpha) 60 73 00 00 44 81 12 42 63 44 14 45 94 0(alpha) 60 73 00 00 46 82 13 43 63 44 14 47 94 0(alpha) 60 73 00 00 48 83 21 51 63 44 14 49 94 0(alpha) 60 73 00 00 50 84 22 52 63 44 14 51 94 0(alpha) 60 73 00 00 52 80 23 53 63 44 14 53 94 0(alpha) 60 73 00 00 54 81 24 54 63 44 14 55 94 0(alpha) 60 73 00 00 56 82 25 64 63 44 14 57 94 0(alpha) 60 73 00 00 58 83 24 91 91 54 63 59 44 14 94 0(alpha) 60 73 60 44 65 63 75 33 01 61 44 61 00 00 00 00 62 95 (alpha)6 6(alpha) 63 74 00 63 33 90 05 90 95 63 64 75 70 01 63 33 03 65 94 0(alpha) 30 73 00 00 66 95 (alpha)7 1(alpha) 67 74 00 67 33 90 95 63 75 70 68 01 63 90 05 33 03 69 70 02 45 15 94 0(alpha) 70 29 73 00 00 00 00 71 70 01 93 95 (alpha)7 4(alpha) 72 77 74 00 00 00 00 C.T. Test 73 74 70 19 63 92 00 00 75 70 25 93 00 00 00 76 62 95 (alpha)8 2(alpha) 77 74 77 80 02 44 01 83 24 78 91 44 25 82 24 44 79 23 81 22 44 61 00 80 70 01 63 93 63 75 81 94 0(alpha) 76 73 00 00 82 95 (alpha)8 5(alpha) 83 74 00 83 70 01 92 75 94 0(alpha) 84 75 73 00 00 00 00 Div. and Sqrt. Test 85 62 80 10 44 01 81 86 55 63 31 61 00 82 87 63 60 61 00 82 01 30 60 61 00 01 00 Shift Test 88 62 80 21 44 13 43 89 85 01 45 85 91 45 90 63 51 01 81 21 43 91 85 02 45 85 92 45 92 63 44 02 43 85 03 93 45 85 93 45 63 51 94 03 82 21 43 85 04 95 45 85 94 45 63 44 96 22 43 85 05 45 85 97 95 63 51 23 70 85 98 24 33 20 50 61 00 JLR and KLR Test 99 84 01 44 02 61 71