Computer Bootstrapping: The Evolution of Program Loading

Computer Bootstrapping: The Evolution of Program Loading

In the early days of computing, starting a machine was not as simple as pressing a power button. The process of loading a short initial program into a computer—known as bootstrapping—has evolved from manual physical wiring to sophisticated, invisible firmware. This process is essential because a computer cannot execute a program until that program is first loaded into its memory.

Key Facts

  • ENIAC required physical cable reconfiguration rather than a stored boot program.
  • Initial Program Load (IPL) is the term IBM coined for the booting process, starting with the 7030 Stretch.
  • Minicomputers often used front-panel toggle switches to manually enter bootstrap code.
  • ROM (Read-Only Memory) revolutionized booting by storing permanent startup instructions on chips.
  • BIOS and UEFI are the modern standards for initializing hardware and loading operating systems on PCs.

Early Computing: From Cables to Stepping Switches

The first computers of the 1940s and 1950s were unique engineering feats. The ENIAC, for instance, did not store programs in memory; instead, it was configured for specific problems using a complex arrangement of interconnecting cables. Because the hardware was ready as soon as power was applied, traditional bootstrapping did not apply.

The EDSAC, the second stored-program computer, introduced a more automated approach. It used stepping switches to transfer a fixed program into memory upon pressing a start button. This initial program, completed by David Wheeler in 1948, served as a bridge to load further instructions from punched tape.

Switches and cables used to program ENIAC (1946)
Switches and cables used to program ENIAC (1946)
: Switches and cables used to program ENIAC (1946)

The Rise of Commercial Mainframes

As computers entered the commercial market, manufacturers like IBM and UNIVAC sought to simplify operations. They introduced hardware logic that could load a bootstrap program from a punch card, magnetic drum, or magnetic tape with a single button press.

The IBM 701 featured a "Load" button and a selector switch to choose the input medium. Once the first 36-bit word was read into memory, it was executed as an instruction to read more words, eventually loading a larger program without further human intervention. This concept evolved into the Initial Program Load (IPL), a term IBM standardized with the System/360 in 1964.

Initial program load punched card for the IBM 1130 (1965)
Initial program load punched card for the IBM 1130 (1965)
: Initial program load punched card for the IBM 1130 (1965)

The IBM System/360 and Successors

In the System/360 and later z/Architecture machines, the IPL process involves the operator selecting a device address (CUU) and pressing the LOAD button. The system reads 24 bytes into main storage at address zero. The CPU then uses Channel Command Words (CCWs) to continue loading the startup program. While originally designed for disk drives, this device-independent method allowed systems to boot from tapes or card readers.

IBM System/3 console from the 1970s. Program load selector switch is lower left; Program load switch is lower right.
IBM System/3 console from the 1970s. Program load selector switch is lower left; Program load switch is lower right.
: IBM System/3 console from the 1970s. Program load selector switch is lower left; Program load switch is lower right.

Minicomputers and Manual Booting

Minicomputers, such as the DEC PDP-8, reduced costs by using the CPU to assist in I/O operations. However, this made booting more complex. Operators often had to "toggle in" short programs using arrays of switches on the front panel. Because these machines used magnetic-core memory (which retained data without power), the bootstrap loader remained in memory until accidentally overwritten.

PDP-8/E front panel showing the switches used to load the bootstrap program
PDP-8/E front panel showing the switches used to load the bootstrap program
: PDP-8/E front panel showing the switches used to load the bootstrap program

Later, DEC introduced the M792 diode matrix ROM, a printed circuit card where bits were programmed by cutting diodes. This allowed for pre-programmed bootstrap loaders for various input devices, removing the need for manual switch entry.

The Microcomputer Revolution and Integrated Circuits

The earliest microcomputers, like the Altair 8800, lacked bootstrapping hardware. Users had to manually enter bootstrap code via toggle switches—a tedious and error-prone process. This changed with the introduction of PROM (Programmable Read-Only Memory) chips.

The Apple 1 (1976) was a pioneer in this regard, using PROMs to eliminate the need for front-panel switches, allowing users to debug programs via the keyboard. Eventually, the IBM PC introduced the BIOS (Basic Input/Output System), which performed a power-on self test (POST) before loading software from a boot device.

An Intel 2708 EPROM "chip" on a circuit board
An Intel 2708 EPROM "chip" on a circuit board
: An Intel 2708 EPROM "chip" on a circuit board

Modern Firmware Standards

As computing evolved, more advanced firmware emerged. Intel developed UEFI (Unified Extensible Firmware Interface) as an alternative to BIOS for x86 and Itanium machines. Meanwhile, Sun Microsystems developed OpenBoot (later Open Firmware), which used a Forth interpreter and was eventually standardized as IEEE 1275-1994 for PowerPC and SPARC systems.

Summary of Booting Methods

Evolution of Computer Bootstrapping Methods
Era/Machine Primary Loading Method Key Technology
Early (ENIAC) Physical Configuration Interconnecting Cables
Early Mainframes Single-Button Load Punched Cards / Magnetic Tape
Minicomputers Manual Toggle Front Panel Switches / Core Memory
Early Microcomputers Firmware Chips PROM / EPROM
Modern PCs Standardized Firmware BIOS / UEFI

Frequently Asked Questions

What is bootstrapping in computing?

Bootstrapping is the process of loading a small, initial program (the boot loader) into a computer's memory, which then loads the larger operating system.

What does IPL stand for in IBM systems?

IPL stands for Initial Program Load, the specific term IBM uses to describe the process of booting their mainframe systems.

How did early minicomputers store boot programs?

Many used magnetic-core memory, which was non-volatile, meaning the bootstrap loader remained in memory even after the power was turned off.

What is the difference between BIOS and UEFI?

BIOS is the legacy firmware used to initialize hardware and load the OS on IBM PC compatibles, while UEFI is a more modern, flexible replacement developed by Intel.

Why did the Apple 1 use PROM chips?

PROM chips allowed the Apple 1 to store firmware internally, eliminating the need for users to manually enter bootstrap code using toggle switches on a front panel.