For the Journal of the Thai Statistical Association, June 2001
Commemorating Prof. Bundhit Kantabutra.
Thailand’s First Computers: The IBM 1620 and The IBM 1401
Vitit Kantabutra
College of Engineering
Idaho State University
Pocatello, Idaho 83209-8060, U.S.A.
In 1963 Prof. Bundhit Kantabutra brought the first two computers into Thailand, marking the dawn of the Thai Information Age. The purpose of this article is to introduce these machines and compare them, and explain why they were great choices for the tasks they were put to do.
Interestingly enough to all Thai statisticians, both these computers were brought in primarily for the development of statistics in Thailand. The first one, an IBM 1620, was installed at Chulalongkorn University’s Statistics Department, and was meant first and foremost for statistical education, while the second one, an IBM 1401, was put to work on “real-world” statistics problems crunching numbers and printing reports full-time at the National Statistical Office.[1] However, as soon as the first computer was installed, Prof. Bundhit organized computer programming classes open to all for only a small fee. This move was really what started Information Processing in Thailand, since people came to take these classes from all walks of life, and often ended up taking important posts in academia, government, and industry.
1 Background. The history of these computers is very much tied up with Prof. Bundhit’s leading role in the development of Statistics in Thailand. Thus it only makes sense to begin with a brief recounting of the beginning of young Mr. Bundhit’s career.
Like many other Thais who wanted to play a leadership role in their lives, Mr. Bundhit went abroad for a university education. After having received a Bachelor’s degree in accounting in the Philippines, he went to the University of Chicago for graduate studies. After some advice from a professor back in the Philippines, he switched his major from accounting to statistics. He finished an MBA in statistics and passed the Ph.D. comprehensives in the same field, both at the University of Chicago before bringing his wife and children home to Bangkok in 1949.
His change of fields to statistics couldn’t have been a better career move. Upon his arrival in Bangkok, there was a great need for statisticians. World War II just ended four years before that, and the Thai government was still finding the best way to apply for foreign funds to repair damages caused by the war. In order to apply successfully for such funds, the government had to present to the funding agencies many important economical statistics, which weren’t available. Since statisticians were very rare in Thailand at that time, Mr. Bundhit was recruited upon arrival to gather these statistics. However, some senior government officials had enough vision to realize that statistics would be useful for the country far into the future. Thus Mr. Bundhit was also charged with the grand tasks of long term development of the statistical field in Thailand, both as an academic discipline and as a practical field [2].
In order to develop statistics in Thailand, he headed the statistical development team of the Prime Minister’s Office, which later became the National Statisical Office (NSO). He also founded the Department of Statistics at Chulalongkorn University and became its first head. During an extensive tour of U.S. governmental institutions in 1955, Prof. Bundhit was impressed with the capabilities of computers in performing statistical calculations. Real statistical work involved manipulating large amounts of data and thus could not be done correctly without a computer. Prof. Bundhit therefore concluded that Thailand's future statisticians simply had to be trained to use one, and that he simply had to buy one for his Statistics Department at Chula. Likewise the government also needed a computer for statistical computations important to the nation’s economy.
By 1961, Prof. Bundhit was able to obtain enough funding that, with an educational discount from IBM, Thailand was able to afford its very first computer. It was an IBM 1620, which became operational on 9 August, 1963. The price tag was 2 million baht, but the amount paid to IBM was considerably less due to a generous educational discount from IBM [7].
Once installed, the nations first computer programming classes were taught and were made available not only to Stat Chula’s students, but to the Thai public as well. Many came to take classes in FORTRAN, COBOL, and machine language from many universities, government agencies, private businesses, and even the local United Nations offices. The machine remained in service for 20 years, a remarkable lifetime for a computer.
Also in 1963, an IBM 1401 was installed at the National Statistical Office. As we will see in this article, this computer has features that made it more appropriate for “real-world” computation than the 1620. The Thai 1401 system cost 9 million baht, and was complex enough to program that early developers had to be sent to Australia to be trained [10].
In the remainder of this article, we will examine Thailand’s first two computers, the 1620 and the 1401, in greater detail.
2 The IBM 1620. A small, general-purpose scientific computer, the 1620 was the most popular computer on U.S. campuses at the time. Thus Prof. Bundhit made world-class educational equipment available to Thais for the first time, ahead of all other countries in the region. Though small, this machine was adequate for the type of calculations required of it, and caused quite an information revolution in Southeast Asia.
2.1 The 1620 System. The 1620 is a small, affordable scientific computer designed specifically for training purposes. The cost ranged from less than $100,000 for the basic system to several hundred thousand dollars. The 1620 system is arranged in two separate units [1]:
- The 1620, which consists of the following:
- the computer (CPU) running at 50 KHz. (A later model, model 2, ran at 100 KHz.)
- magnetic core storage capable of storing 20,000 decimal digits or 10,000 alphameric characters (which included letters, digits, and special characters). Extra memory was available as an option.
- A typewriter that typed at 10 characters/second.
- The 1621 paper tape reader, which includes the 961 tape punch in its cabinet. The tape punch punched at a rate of 15 characters/second.
The 1622 card read-punch is also available, capable of punching 80-column cards at 125 cards per minute. In many installations, the card punch is the main output, since no printer was initially available. Additional memory modules can be purchased, increasing the memory size by increments of 20,000 decimal digits up to a total of 100,000.
Later on other peripherals became available, such as hard disks, printers, and even plotters.
2.2 The IBM 1620’s Representation of Data. At the circuit level, binary digits (bits) were used. However, those bits were made to encode decimal digits and “alphameric” characters. Thus as far as programmers were concerned the 1620 was a decimal computer.
In particular, the 1620 encodes information in two separate ways. For purely numerical information, 6 bits are used for encoding the decimal digits 0 through 9.
Why 6 bits? Actually only 4 bits are needed to encode 10, and indeed up to 16, different values. The “natural Binary-Coded Decimal (BCD) representation is used. For example, the decimal digit 0 is represented as 0000, 1 as 0001, 2 as 0010, and 9 as 1001. However, a fifth bit is used as a “flag bit,” to be explained later, while a sixth bit is used for parity encoding (error checking), which we will not elaborate further.
Some reader will now wonder how many decimal digits can be stored in each address in main memory, or in each “word.” Actually, only one digit! In other words, each digit is individually addressable. How, then, does one know where a multi-digit number begins and where it ends?
This question is in fact one of the things settled by using the fifth, or flag bit introduced a couple of paragraphs earlier! A multi-digit positive integer, for example, is stored in contiguous memory locations, with the most significant digit stored in the location with the smallest address. The address of the whole integer is taken to be the same as the address of the least significant digit, that is, the units, which is stored at the highest address. The most significant digit, on the other hand, is marked in the sense that its fifth (field) bit is set (to high). In storing a positive number, all other digits have their field bits reset (set to 0).
What if we would like to store a negative integer? That’s actually another application of the versatile field bit! To distinguish a negative number from its positive counterpart, we set the field bit of the least significant bit. An important consequence of this new use for the flag bit is that one may not store a single-digit number! Every number stored must have at least two digits, so 7, for example, would be stored as 07.
The field bit is also used in the addition table (see next section) to indicate a carry out.
What about the storage of alphameric characters, that is, a mixture of letters, digits, and special symbols? For this the IBM 1620 needs 12 bits, or the equivalent of two pure decimal digits. See [1, 4, 5], for example, for the particular codes used. Encoding alphameric characters with so many bits was a bit inefficient, but this was not a significant problem for pure scientific computing by the standards of those days, especially on an educational computer.
2.2 The IBM 1620’s Instructions. The 1620 has fixed-length instructions, that is, every instruction occupies 12 6-bit decimal digits in memory. Two decimal digits are always used to encode the operation code, or op-code, and the remaining 10 digits are used for encoding up to two operands, using 5 digits for each operand.
The instruction format is as follows [5]:
The following types of instructions existed in the 1620:
- Arithmetic instructions
- Instructions for internal data transmission
- Branch instructions
- Input/output (I/O) instructions
- Miscellaneous instructions that don’t fit the aforementioned categories.
2.2.1 Arithmetic Instructions. In those days computers were used more as a calculator than anything else. That is, applications such as word processing didn’t exist, and database management was beyond the capabilities of the 1620.[2] Therefore arithmetic instructions, though very important today, were even more important for the 1620.
Since the 1620 was a relatively small computer, arithmetic took more time than in large computers. Take the addition of two numbers, for example. In large computers costing millions of dollars, it was possible to add all the digits of the two operands in one synchronous step, but the 1620 had to add serially, or digit by digit, starting with the units digit and progressing leftwards towards digits of more significance. Memory locations 00300 – 00399 were used to store an addition table, which would be loaded at boot-up time. Multiplication took more steps than addition, and also involved lookups in a multiplication table, which was stored at memory locations 00100-00299. The basic execution time for adding d-digit numbers, with the machine running at 50kHz, is 160 + 80d microseconds [5]. This means that aside from the 160 microseconds that all additions take, each digit took 4 clock cycles to complete.
The basic version of the 1620 hardware only handled integers, and not floating-point numbers. Thus, to handle fractions software libraries had to be called. Integer division is likewise not handled in hardware. Software library routines for integer division and floating-point operations existed, but took a lot of computation time and memory. However, both floating-point and division hardware were available at additional cost. High-level languages like FORTRAN permit both floating-point numbers and the division operation, and so having division and floating-point hardware would save both computation time and memory.
2.2.2 Input-Output Instructions. I/O is fairly straightforward, except we should note that the device is not specified in the op-code itself. Instead, we specify the device in bits Q8 and Q9 within the field normally reserved for the second operand. The location in memory involved in I/O is specified in the P bits.
The following table [5, p. 24] shows all the instructions of the basic IBM 1620. In addition to each instruction’s name and op-code, the mnemonic code is also shown. This mnemonic code is an easy-to-remember code for use in “symbolic programming.”
Instruction Name / Machine code / Mnemonic codeArithmetic Instructions:
Add / 21 / A
Add Immediate / 11 / AM
Subtract / 22 / S
Subtract Immediate / 12 / SM
Multiply / 23 / M
Multiply Immediate / 13 / MM
Compare / 24 / C
Compare Immediate / 14 / CM
Internal Data Transmission Instructions:
Transmit Digit / 25 / TD
Transmit Digit Immediate / 15 / TDM
Transmit Field / 26 / TF
Transmit Field Immediate / 16 / TFM
Transmit Record / 31 / TR
Branch Instructions:
Branch / 49 / B
Branch No Flag / 44 / BNF
Branch No Record Mask / 45 / BNR
Branch on Digit / 43 / BD
Branch Indicator / 46 / BI
Branch No Indicator / 47 / BNI
Branch and Transmit / 27 / BT
Branch and Transmit Immediate / 17 / BTM
Branch Back / 42 / BB
Input-Output Instructions:
Read Numerically / 36 / RN
Write Numerically / 38 / WN
Dump Numerically / 35 / DN
Read Alphanumerically / 37 / RA
Write Alphanumeracally / 39 / WA
Miscellaneous Instructions:
Control / 34 / K
Set Flag / 32 / SF
Clear Flag / 33 / CF
Halt / 48 / H
No Operation / 41 / NOP
2.3Programming the Thai IBM 1620. Some people called the IBM 1620 the “first personal computer.” Unlike other computers of the day where operators were required, the 1620 can be easily operated by the average programmer sitting at the console. As we can see from the photo of Stat Chula’s 1620, the whole setup was a friendly-looking desk with a panel of switches and lights and a typewriter. Students programmed the 1620 in high-level languages (FORTRAN, COBOL) as well as in machine language [3]. It is worth noting that students of software in those days learned machine language, whereas today, in the year 2001, few software people know machine language well. There are two reasons for this difference: first, today’s machines have more complex languages, and second, compilers of high-level languages have become smart enough that the translated code is almost always efficient enough for all purposes, and hence there is not much need to know machine language.
Note that the Thai 1620, like most 1620s, didn’t have many peripherals. (Some larger 1620 installations included peripherals “borrowed” from the 1401 series.)Wrote Khun Vichit [10], “As for peripherals, the 1620 had an electronic typewriter, card reader,card-punch output. That's about all. No disk-drive, no line-printer, notape-unit.”
3 The IBM 1401. Prof. Bundhit brought this machine as Thailand’s second computer, and the country’s first computer for full-time non-academic use, for installation at the National Statistical Office. While the 1620 was a small and user-friendly machine appropriate for an educational institution, it lacked some important features and peripherals for routine “real-world” data processing. Here are some examples of features that the 1620 didn’t have but the 1401 system did:
- Magnetic disks and tape units, or any form of fast auxiliary storage. The 1620 only had a card reader/puncher unit and a paper tape reader/puncher unit. These were too slow for use as backup memory for many real-world applications involving large amounts of data.
- Printer and other peripheral devices. The 1620 presented its output to human users on punched cards. This form of output is not very easy to read and file away, especially if there is a lot of output. The 1401 had a printer, as well as more specialized devices. Note, however, that 1620 was compatible with some of the peripherals made for the 1401 system.
- Hareware features that would make it convenient for dealing with non-numerical data. Although the 1620 permitted “alphameric” data, each alphameric character needed 12 bits to store. This cost a lot of precious storage space as well as programming inconvenience. The 1401, on the contrary, stored both digits and alphameric characters in the same amount of storage – 8 bits. Additionally the 1401 had instructions that converted the leading zeros in a number into blanks, making printed output easier to read and more conventional-looking.
3.1 The IBM 1401 System. The 1401 was classified as a small business computer. To quote Dave Nichols [6], “it was called the Model T of the computer business, because it was the first mass-produced digital, all-transistorized, business computer that could be afforded by many businesses worldwide. Also, it came in just a few basic models and they were all gray.” Some also regarded the 1401 as the real-world “first cousin” [4] of the 1620 because there were similarities and compatibilities. However, to be more suited to real-world business data processing, the 1401 would need auxiliary memory and peripherals. In particular, the 1401 computer system consists of the following components:
- The CPU unit with 4K of magnetic core memory. However, the 1401 could handle up to 32K of memory and many installations had more than 4K [6, 8]. The Thai 1401 had 8K of core memory [10].
- A card reader/puncher, Model 1402, capable of sorting cards that it had read or punched into different bins.
- An on-line printer, Model 1403. This needs a little explanation. In those days, some computer systems had off-line printers that weren’t connected to the CPU. In order to print, one had to output the data onto some intermediate medium such as cards, and then feed those cards into the printer’s card reader. According to those who programmed the 1401 [6, 9], the printer had a chain-drive type system that made it very loud like a freight train.
- While those 3 components just listed would comprise a basic system, many installations would find other components useful, such as
- Magnetic disks with capacities in the millions of decimal digits, Model 1405, which stored 10 Megabytes and spun at 1200 rpm [9]. This allows fast, random access of databases, something not possible with the 1620.
- Magnetic tape drives. These are the tall tape drives such as the Model 729 or the Model 7330 that inspired many science fiction movies of the day.
- Paper tape reader/puncher.
- Other, more specialized equipment, such as the 1419 check sorter [6] for banking applications.
3.2 The 1401’s Data Representation. Each character, whether digit, letter, or special character, is stored in 8 bits including parity bit. This makes programming with and storage of non-numerical data on the 1401 more convenient and efficient than on the 1620. The 8 bits are designated C, B, A, 8, 4, 2, 1, and W. C is the check bit or parity, Bits A and B are for recording the 0, 11, and 12 zones of the punched cards (we’ll ignore the details). The 8 through 1 bits represent weights, whereas W is the word mark, for marking the end of a word or an instruction.