I’ve been fortunate to see the development of computer technology from mainframes to cell phones. Here is my personal history of the computers I have seen and owned and my thoughts on the key technologies that made it all happen. It has been great and fascinating. I found out that I’m not the only one that has a great interest in older computers. Check out the computer collection at Futurebots! I guess the few computers I have in the basement aren’t too bad…
In Grade 7 everyone had to take typing and I didn’t see the value in that. I wasn’t too bad a typist for my raw speed, but you got docked 10 words for every mistake you made. It was estimated that you could fix a mistake in the time it took you to type 10 words! The IBM Selectric® had a error key that remembered what you typed and type backwards using a correction ribbon greatly speeding this up. I can still type well. My real first contact with programming was on my HP-25 calculator. It recorded the key strokes you typed in and had a “GO TO” function so you could branch based on number values. It was very slow, but is could help you with custom or tedious calculations.
A computer programming course was available in my senior year of high school, but I didn’t take this course. Since none of the high schools had a computer you marked your program onto mark sense cards with a pencil with one card per line of code. All the cards from the class were put into a box, sent to the North York Board of Education computer and you found out next week if you program worked! Most of the time you made an error that you had to correct which went into the next week batch of programs along with your next assignment.
First Contact 1976
The first time I ever saw a computer and worked with it was in my freshman year at the University of Toronto where computer science was a compulsory spring semester course. Programming was done on punch cards which were fed into a card reader. By the time you went around the corner, the line printer had finished and your program and the results were there for you to tear off. I’ll have to introduce a few pieces of machinery here since these are no longer used. The IBM Model 29 card puncher (Courtesy of International Business Machines Corporation copyright © International Business Machines Corporation) was a rugged, desk sized piece of equipment with a keyboard and two magazines for storing card. A card was fed from the blank card magazine on the right by pushing a button and as you typed the text appeared on the top of the card. The corresponding EBCDIC code for each character you typed was punched into the card with small rectangular holes. When you were finished the card was ejected and another card fed into its place. Each card had the capacity for 80 characters. Your program storage media was the cards so you had to carry them around with you which was no problem when you were new. Later when I wrote more sophisticated programs I would have to carry a box of cards around with me!
Of course we never saw the IBM 360/370 computer which was somewhere else on the campus. This was an amazing concept for me at the time to think that the computer was somewhere else and it was handling requests from many different locations at the same time. Our computer room – which was typical of several on campus – was filled with card punchers, one card reader an on line printer. The computer was a mystery. The print out always showed how much computer time was used to do your program. It was generally less than one tenth of a second which seemed fast back then. Assembly language programs were finished much faster.
The IBM 360 and its successor the IBM 370 were great computers for their time and extremely successful for IBM. They could handle up to 248 stations while working on other computations. Unlike previous mainframes which were custom-made for their application, the IBM 360/370 could be configured to handle scientific or business needs with the same system. Its storage was from 8,000 to 524,000 characters. A character is roughly one byte of data, so this is 8K to 524K of RAM. This was the best and fastest general computer of the time…
The IBM line printer was an interesting piece of mechanical equipment the size of two refrigerators back to back. The main feature of the printer was a drum formed of 80 disks where each disk had all the printable characters on it. In front of the drum was a ribbon of ink that went completely across the sheet and advanced slowly so that the fresh ribbon was always coming in. The paper was behind the ribbon and behind the paper were 80 hammers, one for each wheel. So in order there was the drum, the inked ribbon, the paper and the hammer. During operation the drum turned at high speed and when the appropriate character was in front of the ribbon the hammer would be timed to strike putting that character on the page. Once all the characters were printed for a line the fan fold paper would advance one line. Sometimes there were timing issues and the characters were a little high or low on the line. It was fast, but very noisy so the entire printer was encased in a sound proof housing. Naturally, there were no graphics, but graphics were still to come in the future…
The programming language of choice for the engineering department was FORTAN, specifically WATFIV which actually stands for “Waterloo FORTAN IV” from our arch rivals at the University of Waterloo. WATFIV was particularly well suited for engineering applications as it could handle double precision floating point numbers and there were a number or preprogrammed solver functions – for example for differential equations – that made it useful. There were other programming languages available like SPK (a subset of PL/1) and of course COBOL – which for some amazing reason continues to be used in business today.
I had a great interest in the IBM 360/370 so I decided to take a course in assembly language programming. There was a steep learning curve and many of the students in the class actually worked on the mainframe and had helpful suggestions for the professor on how to program more easily. Imagine taking introductory Spanish in Mexico… I still have some of the programs I wrote at this time, but the best keepsake of all is the quick reference guide to assembly language programming shown here. There are massive numbers of assembly language instructions. One typical assignment from class was to take a stack of up to 20 cards, read them, and arrange them in alphabetical order using the first four characters of each card. The key to this assignment was to leave the original text in the same place and manipulate the pointers to the records with indirect references.
The good news about assembly language programming on any computer was that you really understood how it worked. The bad news was that it had very little error handling so finding mistakes took some time. Later on I programmed some assembly language on the 6502 processor in the Apple II. Programming like this is basically over, but it lives on in Excel functions and object oriented programming for macros.
You can see that there was very little interaction with the actual computer. You got very quick feedback, but in reality you had to find an open card puncher to correct a card and then stand in line to run your cards through again. With the capability of the computer it couldn’t operate a personal workstation for you and as a student you didn’t store anything on it. Since processor time was so valuable you had an account that had a certain number of runs that you could make.
This is the end of Part 1. In Part 2 I actually get to program at a terminal with a one-line display!
All text and photos are copyright 2009, Frank Hada. Contact me at email@example.com.