The IBM 305 RAMAC, a landmark in early commercial computing, was not only notable for its pioneering use of hard disk storage but also for its unique internal architecture and operational mechanics. This system, publicly announced in 1956, was designed with a specific focus on real-time accounting, influencing its character-oriented, variable word length decimal (BCD) computer design. Understanding its core components and how they interacted provides
insight into the technological landscape of the mid-20th century.
Drum Memory and Data Representation
At the heart of the IBM 305 RAMAC's processing unit was a drum memory, rotating at 6000 RPM, capable of holding 3200 alphanumeric characters. This drum memory was organized into 32 tracks, with each track storing 100 characters. For temporary data transfers, a core memory buffer with a capacity of 100 characters was utilized. Each character within the system was represented by six bits, plus an additional odd parity bit, denoted as 'R'. These six bits were structured with two zone bits ('X' and 'O') and four binary bits to represent the value of the digit.
Data itself could be stored in fixed-point "words" of varying lengths, from a single decimal digit up to 100 decimal digits. The sign of these numbers was indicated by the 'X' bit of the least significant digit, using a signed magnitude format. Data records also offered flexibility, ranging from one character to 100 characters in size. This variable-length approach allowed for efficient storage and manipulation of diverse data types relevant to accounting and control applications.
Instruction Set and Control Panel Programming
Interestingly, the IBM 305 RAMAC's instruction set did not include built-in jump commands. Instead, these crucial control flow operations were implemented through physical wiring on the control panel. For an unconditional jump, the program exit code (P field) would specify a Program exit hub on the control panel. A wire connected this hub, via distributors, to Program entry hubs that defined the first, second, and third address digits of the target instruction.
Conditional jumps were similarly managed. The P field would designate a Program exit hub, which was then wired to an appropriate Condition selector common hub for testing. The corresponding two Condition selector output hubs would then have wires leading to Program entry hubs for the jump targets or to a Program advance hub to continue sequential execution. This method allowed for complex conditions, such as testing the sign and zero states of multiple accumulators, to be wired to execute within a single instruction, activating one of several Program entry hubs.
Timing and Hardware Implementation
All timing signals for the 305 were precisely derived from a factory-recorded clock track on the drum. This clock track contained 816 pulses, spaced 12 microseconds apart, with a 208-microsecond gap for synchronization. Reading or writing a single character took 96 microseconds. A typical instruction on the 305 required three revolutions of the drum, totaling 30 milliseconds: one for fetching the instruction (I phase), one for reading the source operand into the core buffer (R phase), and one for writing the destination operand from the core buffer (W phase).
If the program exit code (P field) was not blank, an additional two drum revolutions (20 milliseconds) were added for the D and P phases, allowing relays to be picked. An optional "Improved Processing Speed" feature could be installed, enabling the three instruction phases (IRW) to follow each other immediately without waiting for the next drum revolution. With this option and optimized code, a typical instruction could execute in as little as one drum revolution (10 milliseconds). However, some operations, like multiplication, took significantly longer, ranging from 60 to 190 milliseconds, and division (an option) could take 100 to 370 milliseconds. The logic circuitry of the 305 was constructed using one- and two-tube pluggable units and relays, reflecting the vacuum tube technology prevalent at the time.

















