The "operating system" for the computer constituted the human operator, who would use controls on the computer
console, which consisted of a
front panel and typewriter, to load programs from the available bulk storage media such as decks of punched cards or rolls of paper tape that were kept in cabinets nearby. Later, the model 1311 disc storage device attached to the computer enabled a reduction in the fetch and carry of card decks or paper tape rolls, and a simple "Monitor" operating system could be loaded to help in selecting what to load from disc. A standard preliminary was to clear the computer memory of any previous user's detritus being magnetic cores, the memory retained its last state even if the power had been switched off. This was effected by using the console facilities to load a simple computer program via typing its machine code at the console typewriter, running it, and stopping it. This was not challenging as only one instruction was needed such as 160001000000, loaded at address zero and following. This meant
transmit field immediate (the 16: two-digit op-codes) to address 00010 the immediate constant field having the value 00000 (five-digit operand fields, the second being from address 11 back to 7), decrementing source and destination addresses until such time as a digit with a "flag" was copied. This was the normal machine code means of copying a constant of up to five digits. The digit string was addressed at its low-order end and extended through lower addresses until a digit with a flag marked its end. But for this instruction, no flag would ever be found because the source digits had shortly before been overwritten by digits lacking a flag. Thus the operation would roll around memory (even overwriting itself) filling it with all zeroes until the operator grew tired of watching the roiling of the indicator lights and pressed the
Instant Stop - Single Cycle Execute button. Each 20,000 digit module of memory took just under one second to clear. On the
1620 II this instruction would
NOT work (due to certain optimizations in the implementation). Instead there was a button on the console called
Modify which when pressed together with the
Check Reset button, when the computer was in Manual mode, would set the computer in a mode that would clear all of memory in a tenth of one second regardless of how much memory you had; when you pressed
Start. It also stopped automatically when memory was cleared, instead of requiring the operator to stop it. Other than typing machine code at the console, a program could be loaded via either the paper tape reader, the card reader, or any disk drive. Loading from either tape or disk required first typing a "
bootstrap" routine on the console typewriter. The card reader made things easier because it had a special
Load button to signify that the first card was to be read into the computer's memory (starting at address 00000) and executed (as opposed to just starting the card reader, which then awaits commands from the computer to read cards) this is the "bootstrap" process that gets into the computer just enough code to read in the rest of the code (from the card reader, or disc, or...) that constitutes the loader that will read in and execute the desired program. Programs were prepared ahead of time, offline, on paper tape or punched cards. But usually the programmers were allowed to run the programs personally, hands-on, instead of submitting them to operators as was the case with mainframe computers at that time. And the console typewriter allowed entering data and getting output in an interactive fashion, instead of just getting the normal printed output from a blind batch run on a pre-packaged data set. As well, there were four
program switches on the console whose state a running program could test and so have its behavior directed by its user. The computer operator could also stop a running program (or it may come to a deliberately programmed stop) then investigate or modify the contents of memory: being decimal-based, this was quite easy; even floating-point numbers could be read at a glance. Execution could then be resumed, from any desired point. Aside from debugging, scientific programming is typically exploratory, by contrast to commercial data processing where the same work is repeated on a regular schedule.
Console The most important items on the 1620's console were a pair of buttons labeled
Insert &
Release, and the console typewriter. • Insert – Pressing this key with the computer in
Manual mode reset the program counter (in the MARS core memory) to zero, switched the computer into
Automatic and
Insert modes, and simulated the execution of a Read Numeric from Typewriter to address zero (unlocked the typewriter keyboard, shifted the typewriter into numeric mode). Note: unlike a real Read Numeric from Typewriter,
Insert mode would force a
Release after 100 digits had been typed to prevent overwriting the arithmetic tables. • Release – Pressing this key while doing a Read from the Typewriter terminated the Read, switched the computer into
Manual mode, and locked the typewriter keyboard. The typewriter is used for operator input/output, both as the main console control of the computer and for program controlled input/output. Later models of the typewriter had a special key marked
R-S that combined the functions of the console
Release &
Start buttons (this would be considered equivalent to an
Enter key on a modern keyboard). Note: several keys on the typewriter did not generate input characters, these included
Tab and
Return (the 1620s alphameric and numeric BCD character sets lacked character codes for these keys). The next most important items on the console were the buttons labeled
Start,
Stop-SIE, and
Instant Stop-SCE. • Start – Pressing this key with the computer in
Manual mode switched the computer to
Automatic mode (causing the computer to begin executing at the address in the program counter). • Stop-SIE – Pressing this key with the computer in
Automatic mode switched the computer to
Manual mode when the currently executing instruction completes. Pressing this key with the computer in
Manual mode switched the computer into
Automatic mode for one instruction. • Instant Stop-SCE – Pressing this key with the computer in
Automatic mode switched the computer into
Automatic/Manual mode at the end of the current memory cycle. Pressing this key with the computer in
Manual or
Automatic/Manual mode switched the computer into
Automatic/Manual mode and executed one memory cycle. For program debugging there were the buttons labeled
Save &
Display MAR. • Save – Pressing this key with the computer in
Manual mode saved the program counter into another register in the MARS core memory and activated
Save mode. When a Branch Back instruction was executed in
Save mode, it copied the saved value back to the program counter (instead of copying the return address register as it normally did) and deactivated
Save mode. This was used during debugging to remember where the program had been stopped to allow it to be resumed after the debugging instructions that the operator had typed on the typewriter had finished. Note: the MARS register used to save the program counter in was also used by the
Multiply instruction, so this instruction and the
Save mode were incompatible! However, there was no need to use multiply in debugging code, so this was not considered to be a problem. • Display MAR – Pressing this key with the computer in
Manual mode displayed the selected MARS register and the contents of the memory at that address on the console lamps. All of main memory could be cleared from the console by entering and executing a transfer instruction from address to address +1, this would overwrite any word mark, that would normally stop a transfer instruction, and wrap around at the end of memory. After a moment, pressing Stop would stop the transfer instruction and memory would be cleared.
IBM 1621/1624 Paper Tape reader/punch The
IBM 1621 Paper Tape Reader could read a maximum of 150 characters per second;The
IBM 1624 Paper Tape Punch could output a maximum of 15 characters/second. by modern standards, however, with repetition, the procedure soon became automatic and you no longer thought about the details involved. GOTRAN was much simpler to use, as it directly produced an executable in memory. However it was not a complete FORTRAN implementation. To improve this various third-party FORTRAN compilers were developed. One of these was developed by Bob Richardson, a programmer at
Rice University, the FLAG (FORTRAN Load-and-Go) compiler. Once the FLAG deck had been loaded, all that was needed was to load the source deck to get directly to the output deck; FLAG stayed in memory, so it was immediately ready to accept the next source deck. This was particularly convenient for dealing with many small jobs. For instance, at
Auckland University a batch job processor for student assignments (typically, many small programs not requiring much memory) chugged through a class lot rather faster than the later
IBM 1130 did with its disk-based system. The compiler remained in memory, and the student's program had its chance in the remaining memory to succeed or fail, though a bad failure might disrupt the resident compiler. Later, disk storage devices were introduced, removing the need for working storage on card decks. The various decks of cards constituting the compiler and loader no longer need be fetched from their cabinets but could be stored on disk and loaded under the control of a simple disk-based operating system: a lot of activity becomes less visible, but still goes on. Since the punch side of the card reader-punch did not edge-print the characters across the top of the cards, one had to take any output decks over to a
separate machine, typically an
IBM 557 Alphabetic Interpreter, that read each card and printed its contents along the top. Listings were usually generated by punching a listing deck and using an
IBM 407 accounting machine to print the deck. ==Hardware implementation==