Cafeteria Style Computing
Cafeteria Style Computing
Friday, April 12, 2024

Cafeteria Style Computing

by Charlotte Wipp

The Red Room

The Red Room, previously in the Mathematics and Computing building, was surrounded by lecture and study halls. The room itself could not be accessed by students, giving it a ‘temple’ like existence, housing computer operating priests. The Red Room existed to provide students and staff at the university with the chance to work with computers and learn how to program. Although, with the influx of student programs, the standard IBM compilers were unable to keep up with the amount of computing jobs demanded each day. 

System/360 75

In 1967 Waterloo installed the IBM System/360 75 to increase the job capacity for education, research, and University administration. At the time the System/360 75 was the most powerful computer in Canada and was bought under the pretense of being ‘furniture’ to subsidize the cost.  WATFOR, originally written for the IBM 7040, was re-written for the System/360 75.  Called WATFOR 360 and, later, WATFIV this was now the compiler used for Fortran programs.

Currently the IBM System/360 75 Operator Panel exists in the Computer Museum. 

Cafeteria Style Computing

The solution to the job-handling problem, was a dedicated terminal system. The system was enacted in a cafeteria-style service where students would line up to input their codes and wait for the output from compilers in the Red Room. 

The System/360 75 memory was linked to an express terminal, consisting of a 1000 punch cards per minute reader and a 1100 line per minute printer. In addition to the WATFOR and WATFIV compilers, the system could process jobs at 20,000 program statements per minute. The Computing Centre was able to process around 5000 to 7000 jobs per day with the Cafeteria Style Computing method.  

Students had access to systems, like the System/360 75, that could compile, read, and interpret their work in seconds. A student would begin a job by submitting their Fortran source code on a deck of punch cards. A standard Fortran compiler, would process the source code line by line, translating it into a machine-readable object code file. The object code and additional software would be combined through a linker, a system program that combines many files into an executable file. Finally, with this file made of the data from the original source deck, the system would execute the program. Once finished, the computer would continue to the next job, an error in code causing the job to end immediately.  

A former Red Room operator provided a description of how WATFOR/WATFIV worked in contrast:
This is a description of how the standard IBM compilers worked, using three distinct steps (compile, link, execute), and storing the intermediate files on disk. Once the executable file was produced, it could be run as often as required without having to repeat the compile and link steps. This was exactly what was needed in a business environment where a production program would be run many times without changes. Student programs, on the other hand, involved several iterations of compile, debug and execute, but once the program worked it would almost never be run again. This is exactly the opposite of what the standard compile/link/execute paradigm was designed to handle. WATFOR and WATFIV leveraged the fact that student programs would only be run once, and combined all three steps into one, thus omitting the intermediate disk files altogether. When a source program was read from cards, the compiler would create the executable code directly in memory, and if no compile time errors were detected it would be immediately executed. Once a program finished running the executable code in memory was simply discarded. At this point the compiler would immediately loop back to process the next program. With the standard three step process, each program (compiler, linker, executable) would be brought into memory one at a time to perform its part of the processing. If you had two Fortran programs to compile and execute, after the first program was done, all three steps had to be repeated for the second. WATFOR and WATFIV obtained their speed in two ways. First the "load and go" methodology (compile the source code directly to executable code in memory) eliminated the overhead of the three distinct steps. Second, once the compiler had finished processing the first program, it would simply branch back to the beginning to read and execute the next program. In this way the time to read the compiler into memory was eliminated for the second and subsequent programs.

IBM System/360 75

System/360 75

University of Waterloo Library. Special Collections & Archives. Dr. Donald D. Cowan Fonds. GA165-179_008.

The Punch card reader is on the right in the first image, and the printer is on the right side of the closest counter in the second photo. 

A former Red Room operator notes:
Image GA165-177_037 is actually a picture of cards being entered into the IBM 1710. The 1710 was a separate system that had nothing to do with WATFOR, WATFIV, or the Red Room. This picture shows the 1710 in the Math and Computer building, where it was essentially retired from use by undergraduates. It was still used by high school students during Computer Science Days however, so this picture is most likely showing that.

Additional notes

The former Red Room operator also notes:
Many of the pictures in this blog post show students using the Debug Terminal in the Math building. In all except GA165-177_036 there is a computer centre operator running the card reader. This is clearly seen in the picture at the top of the page, and in images GA165-177_059 and GA165-177_058. The students would line up to hand their card decks to the operator who would feed them into the card reader, and once the cards had been read the decks would be separated and placed on the counter on the other side (the counter with the telephone on it). After handing his card deck to the operator, the student would continue down to the printer to get his output. Output was printed in the same order as the decks were submitted, so as long as everyone stayed in line, when a student arrived at the printer his listing would be the next to come off. Once the student had his output he would continue around the other side of the printer back to where his cards were waiting to be picked up. As well as feeding in cards, the operator would also replace the printer paper when it ran out, and fix paper jams. This is the way it was in the fall of 1970, and it remained that way afterwards. Image GA165-177_036 is presumably an earlier picture showing a different layout of the Debug Terminal. There is no operator shown in the picture, and the card reader is facing outward so it appears that students were responsible for placing their own decks in the card reader. This might have worked in the early days when there were not too many students trying to run programs, but with an increasing number of students taking computer programming courses it was replaced by the system shown in the other pictures where there is a computer centre employee operating the card reader and keeping an eye on the printer.

About the author

Charlotte is a Physics and Astronomy student currently in her 2B term at Waterloo. She enjoys tinkering and creating all forms of art in her free time. She works at the Computer Museum as their current Winter 2024 coop student.