Inside the Rekursiv.
A processor that ships with no instruction set, has no addresses, only object numbers, and a memory that outlives the power switch. Linn, the Glasgow turntable maker, built it to run a factory.
02 / The machine
after BYTE, Nov 1988, Figure 103 / Logik & Numerik
04 / The two stacks
SRAM inside the processorEvaluation stack
Control stack
The evaluation stack holds operands, and each frame's receiver, arguments and temporaries; FP marks the first argument. The control stack holds a sender's CODE, PC, FP and SELF for every message send, and a µret for every microcode subroutine call. Recursive microcode lives here.
08 / Control store
09 / Compiled program
Workbench
Lingo quick reference
Microcode quick reference
Model & limitations
From BYTE (Pountain, Nov 1988): the units and memories of Figure 1, including the 16,384-word control store and the 524,288-word NAM. The 40-bit object number: object/raw bit, compact bit, a compact's 5-bit type and 32-bit data, and 38-bit numbers from a sequential allocator. A pager table of 64K slots hashed on the object number, holding size, type (an object number) and DRAM address, with type and range checks on every access. A collision squeezes the old object out to disk. Page faults stall below the level of instructions, with no restart. Two DRAM halves with an EndMem test in grabspace. The collector traces with disk fetches off, copies only new or modified objects to the other half, and as a second level squeezes objects out to disk. The host loads the control store over VME. The machine starts empty.
Not modelled: Klok and real timing; the 128-bit microword layout (the page shows fields, not bits); the parallel phases inside a microword (here fields run in order); the last-resort use of the spare DRAM half for a huge object (the page traps); offline renumbering of object numbers; the disk processor's B-tree; networks of Rekursivs; the C and Prolog instruction sets Linn planned. BYTE's control store map has 2048 entries for 10-bit opcodes, which only reach 1024; the page uses 1024. BYTE's Listing 1 as printed puts the copied CDR in the CAR, which mirrors the tree. The page copies faithfully and keeps the listing's CDR-first order.
This page's own: the LINGO-8 microcode and its opcode numbers; the Lingo-like language and its compiler; the compact type codes; symbols as compacts indexing a symbol table in the machine; the layouts of classes, methods and the root object; the hash (number mod slots); the VR status bits; spilling the new objects a written object refers to; keeping a modified disk object live in GC; disk timing (15 ms) and GC cost; the HADES protocol and the host's printer; Numerik's registers widened to 40 bits; and the warm start that preloads the image. A power cycle starts cold.
Keyboard: Space run/pause, S step, B back, R reset, P power cycle. Back undoes recent manual steps; running clears that history.