Olivetti Programma 101: Architecture and Programming of the First Personal Computer
**Olivetti Programma 101 (P101), released in 1965, was one of the first programmable calculators with claims to personal computer status. Weighing 36 kg, the device implemented discrete transistor logic, magnetostrictive memory with 240 bytes, and a register-based programming language. Sales continued until 1972 at a price of $3,200–$3,500, making it a mass-market product before the HP 9100A appeared.
Design and Ergonomics
The P101 stood out for its compact size, comparable to a typewriter, and futuristic design by Mario Bellini. Development was led by Pier Giorgio Perotto's team starting in 1962, based on principles of simplicity, ergonomics, and aesthetics. The keyboard included 37 buttons, a wheel for setting decimal points (0–15 digits), and three locking keys: program recording, printing, and unlocking.
Output was handled by a drum printer (30 characters/s) on standard paper tape. It printed 22-digit numbers with signs, decimal points, and control symbols. Indicator lights: blue for ready, flashing for execution, red for errors (overflow, division by zero).
Memory Architecture
Memory based on a magnetostrictive delay line (6.5 m wire) provided 240 bytes. Ten registers, each 24 bits, had fixed roles:
- M (Median): Input and intermediate carry.
- A (Accumulator): Operation results with rounding.
- R (Results): Full result or remainder.
- B, C: Data storage, divisible into half-registers.
- D, E, F: Data or instructions, divisible into half-registers.
- p1, p2: Instructions only.
Registers B–F supported full mode (22 digits + sign/point or 24 instructions) and split mode (11 digits/12 instructions per half-register, denoted as F/ = f). Minimum program size was 48 instructions (p1+p2), maximum 120 (D+E+F+p1+p2).
Machine logic tracked modes: errors occurred when transferring >11 digits to a split register or splitting a full one.
Programming Language
The language was a simplified assembler with mathematical, data exchange, utility operations, and jumps. There was no "equals" button.
Mathematical Operations
| Button | Description |
|--------|-------------|
| + - × | A ±× M → A (rounded), R (full) |
| : | A / M → A (rounded), R (remainder) |
| √ | A = √M, M = 2√M |
| Register + - × : √ | Copies register to M, applies operation |
| A ↕ | |A| in A |
Data Exchange
- Register ↑ (except A,R): M → register.
- Register ↓: register → A.
- Register ↕: exchange A ↔ register (R ↕ = R ↓).
- / ↕: fractional part of A → M.
- R S: exchange R ↔ D.
Utility
- S: pause/continue, input to M.
- Register ◊: print register.
- Register * (except M,R): zero out.
Split mode is activated by a command with /, full mode by clearing (B * for B).
Jump System
32 instructions: 16 unconditional (? CV? D? R? → A? B? E? F?), 16 conditional (/ before sending, jump if A > 0). Symbols V, W, Y, Z encode send-destination pairs.
Key Takeaways
- P101 introduced the personal computer as a compact desk device.
- Magnetostrictive memory of 240 bytes with flexible registers (full/split).
- Language with jumps and branching for algorithms.
- Ergonomics: printer, indicator lights, simple keyboard.
- Influence: HP paid licensing fees for patents.
— Editorial Team
No comments yet.