Tuesday, January 26, 2016

Card Readers and Printers

Computers were usually show pieces of the company and were in an air-conditioned room with a glass wall so people could look in and be impressed by them. Since there were no online terminals, the primary input was in the form of punched cards and the primary output was printer paper (usually green-and-white fan-fold paper unless one was printing a special form like invoices, paychecks, etc.)

Card sequencing

While cards with transactions such as timecards or sales orders could be sorted by employee number or customer number as needed, the cards that programmers punched their programs into could not. COBOL had allowed for the first six columns of the card to be a page/line number of the coding sheet, but as programs were changed it was difficult to maintain that sequence. So most people after preparing a program deck would fairly soon run a listing of the program so in the event that the deck was dropped it could be reassembled. One afternoon, when leaving the computer center at MSU I saw a rather unfortunate individual who had not done so. He had a large box of cards (perhaps 1500 of them) under his arm along with his text books, and had inadvertently dropped the box while crossing the bridge across the Red Cedar River right behind the data center. Several hundred of the cards had fallen under the railing and were floating down the river below. He was so disgusted that he was in the process of kicking all the rest of them under the railing as well to join those which were drifting down the river. I have no idea how many hours of work that represented, but I wasn’t about to ask him.

Tape-to-printer

While most systems had some sort of card input and several different reports for output, if you declared in your program that you were using them, then the physical card reader or line printer would be assigned to your program and your program could run no faster than the physical device could read/print. Since these mechanical devices were considerably slower than the computers could run the programs may people used ways to speed things up. One that was available on the IBM-360 line of computers was a program called PUPPIT (short for Processing Utility for Print and/or Punch Image Tapes). This program could run in a small dedicated amount of memory (see topic of Foreground Partition in the section on Processors) at the same time as another program was running in the Background Partition. So people would write their programs to write report line images to a tape. Then the tape-to-printer PUPPIT program could run independently later.

This also had other advantages in that one had a backup of the report if the original was lost or some needed another copy. It also meant that something like paper tearing in the printer would not mean that you had to restart the program. Finally, a program could print multiple reports without having to have multiple printers physically assigned to it.

Printer loops

The IBM 1403 printer (and others like it) were controlled by a loop of heavy paper tape. This tape had holes in it where the various “channels” were supposed to be. For example, by convention, the topmost printed line would be channel-1, the bottom of the page would be marked by channel-12, and for something like an invoice the beginning of the invoice details would be channel-2 and the page total would be marked by channel 3. That way a print program would start the address at channel-1, would then skip to channel-2 and print the details, then skip to channel-3 to print the totals. The paper tape would usually be as long as a couple of pages (say 33” for three 11x17 pages) with the channels repeated three times, the tape would then be taped into a loop and inserted in the printer. Each special form would have its own special paper tape loop.

There were two incidents I can remember where this caused a problem. The first was when someone prepared a new paper tape loop and the three instances were not identical. One of the channel punches was supposed to be at a certain position on the page, but one of the punches was off by one line. So when the forms were printed every third page would have its total line not printing in the proper box on the page. This was a pretty frustrating problem to resolve, especially since there were a couple of copies of the paper tape loop and all but one of them were fine.

The second instance was a pretty exciting one. As part of my initial training at Uniroyal I got to work in the computer room for a few weeks (see more below in the People stories). I had just loaded up the printer with a new box of forms and put the appropriate paper tape loop in the printer. I pressed start and was starting to the other end of the room for another task, but I had not yet closed the printer cover (they had sound proofing in the cover to keep the printer noise level down but we did not always close it for short print jobs). Unbeknownst to us, the programmer had changed the program to use a new channel number but he had not given us the instructions to prepare a new paper tape loop. About half way down the first page, the program gave an instruction to jump to the new channel but there were no punches in the column on the paper tape. So the printer just began slewing paper at top speed looking for that channel punch. At that slew speed the paper just shot straight up out of the printer, hit the ceiling above the printer, and then started creating a pile of paper in the area. By the time one of us got back to the printer and hit the stop button, there was a half-box of paper in a huge pile on the floor in front of the printer. We had no choice but to gather it up in armloads and carry it out to the dumpster. Besides the programmer getting scolded for not giving us the new instructions, we began a policy of putting hole in every channel at the bottom of each page to prevent future occurrences.

Printing Pictures


These were all “line printers” that were only capable of printing individual characters at fixed locations on a line. However, one of the lesser used features was to instruct the printer to print a second set of characters without advancing to the next line. This “over printing” was done by using a “+” as the line-feed character (blank was a standard single-space, “0” was a double space, “-“ was a triple space, and another number like “1” or “2” was an advance to channel “1”, “2”, etc.) Some enterprising people designed the set of darkness characters for several shades and by printing multiple times on each line you could create pictures with multiple shades of darkness (all in black on white obviously). Pictures of Snoopy, or one of a cat in 15 shades were common. Of course these were always done off hours and without management knowing what the printers were being used for!

1 comment:

  1. Things had advanced by the time I was in university. I took one class in Fortran for which the instructor required submit punched cards.

    I am a very bad typist. I could probably spend a semester just trying to get a complete set of cards with no errors.

    Our instructor was a bit behind the times in the computer world--I think she only had the job because she was the wife of the department head (this was a special course for Natural Resources majors). Fortunately, by this point one could write the program on a text editor and then submit it to the Fortran batch processor to run. One could then submit a command to the computer center to punch the cards for the program from the stored version on the computer.

    The cards the computer punched for you, though, had no printing. So I had to take the cards to one of the special keypunch machines that could "interpret" them--read the cards and enter the text. I never told the instructor how I did this.

    My main challenge was that the instructor required we use Fortran IV, but I was already playing with a version 10 on the computer, which had more capabilities.

    ReplyDelete