2 ms·
This keyboard may seem extreme, but in my first decade as a programmer I had to load instructions or data into around a dozen different different computers thro
by todd8 4y ago
This keyboard may seem extreme, but in my first decade as a programmer I had to load instructions or data into around a dozen different different computers through front panel switches. On most computers before 1980's there would be a row of switches with accompanying lights numbering one switch for each bit in a word (which might be 8, 9, 12, 16, 18, or even 60 bits wide). Setting the switches could be used to load an address into the machines address register with the press of another button and then setting the switches with the desired data bits a different button would load the data at the previously entered address.
Interacting with the switches was often needed to boot the machine or to single step the machine and debug where some code wasn't working by loading the values on the switches into the program counter (address of the next instruction for the computer to execute).
These early computers didn't have anything like a BIOS that could boot the machine into a usable state. The boot sequence would often look something like this:
(1) enter a few instructions into low memory, perhaps 3 or 4 instructions would be enough, this would be done with the front panel switches
(2) start the computer running these instructions (might require loading the program counter with the first instruction's memory location
(3) these instructions would issue a low level hardware operation by storing a value into a hardware I/O control register that would cause a card reader to read one 80 character card; this card would be the first of a small stack of cards always stored next to the card reader
(4) reading this card would load 80 characters into a consecutive memory locations, again somewhere in low memory this card's instructions would be a very primitive boot loader
(5) the last instruction from step (1) would be a jump to the instructions read off of the first card and this would start the boot loader; the boot loader would issue additional hardware instructions to read the rest of the small stack of cards; these additional cards would be a full blown loader capable of loading and linking the program to be run
(6) after the boot loader on the first card read in the full loader from the remaining cards the boot loader would jump to the beginning of the full loader and the full loader would run, the full loader would read in the users program and then execute it
(7) usually, the program to be run along with its input data would be cards stacked in the card reader following the small stack comprising the boot loader and the full loader
Naturally, each manufacturer did things a bit differently. Sometimes punched paper tape might be used to hold the boot loader and the programs would be stored on reels of magnetic tape and sometimes no instructions had to be input at the front panel if defaults were suitable. Back then, understanding machine code in binary was necessary.