◄ WORLD V · SONNY 5DART 471 · a helldive at the net

THE 8086 16-bit registers, 20-bit reach — the seed of x86, and it permuted all the way

Intel’s 8086 (1978) is the ancestor that mattered most: the x86 line grew from it and never broke compatibility, permuting 16→32→64 over forty years while still booting as an 8086. Its trick for reaching more than 64KB with 16-bit registers was segmentation: a physical address is (segment « 4) + offset, giving a 20-bit (1MB) space from two 16-bit registers — the same “bank byte above the offset” idea the 65816 used, arrived at independently. Where the 65816 line stalled, x86 carried the permutation to dominance.

THE TECHNIQUE physical = (segment « 4) + offset — 20-bit reach from 16-bit regs

The demo forms an 8086 physical address from a segment and offset, reaching into the 1MB space: live demo


HISTORY & CREDIT Intel 8086 · 1978 (Morse)

“16-bit registers mean 64KB.” — the 8086 reached 1MB by adding a shifted segment to the offset. cited

the address · (segment«4)+offset — 20 bits (1MB) from two 16-bit registers.
the parallel · the same “shift a bank above the offset” idea as the 65816’s data bank.
1978 · Intel (ISA by Stephen Morse) — the seed of x86, which permuted 16→32→64.

A megabyte reached by shifting a segment over an offset — the start of the line that permuted the furthest. segmentation

RECOMMEND FOR I-13 the physical address, on the compiler

On the canonical compiler, segment 0x1000 and offset 0x0200 form physical 0x10200 (66048), inside the 1MB space:

$ i13 run ln_8086.i13 # phys = (seg<<4)+off RUN OK · 24 step(s) · peak stack 3 · call depth 1 addr = 66048 -- 0x10200 = (0x1000<<4)+0x0200 reaches_1mb = 1
Recommend as a NULL — addressing, i.e. encoding. Segmentation is an address encoding (B44) that reaches more memory (B40) with narrow registers — the same family as the 65816’s banks. No new invariant. NULL — the seed of the line that carried the permutation past every rival.