Back to Home

Programma 101: memory and programming language

Olivetti Programma 101 — programmable calculator of 1965 with 240 bytes of magnetostrictive memory and register-based language. Support for full/split modes, jumps and branches. Architecture breakdown for technical specialists.

P101: the first personal computer in detail
Advertisement 728x90

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).

Google AdInline article slot

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.

Google AdInline article slot

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 |

|--------|-------------|

Google AdInline article slot

| + - × | 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

Advertisement 728x90

Read Next