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

THE SEGMENT many addresses, one cell — overlapping segments alias, like the NES mirror

Segmentation has a quirk the corpus has seen before. Because a physical address is (segment«4)+offset, different segment:offset pairs can name the same physical byte: 1000:0000 and 0FFF:0010 both resolve to 0x10000. Up to 4096 distinct pairs point at each cell — the same aliasing the NES’s 2KB RAM mirror shows (dart from the 6502 gate), and the reason real-mode pointer comparisons are a minefield. A many-to-one map baked into the address arithmetic.

THE TECHNIQUE different seg:off → same physical — a many-to-one alias

The demo resolves two different segment:offset pairs to the identical physical address 0x10000: live demo


HISTORY & CREDIT 8086 real-mode segmentation

“An address names one place.” — in real mode, thousands of segment:offset pairs name each byte. cited

the overlap · 1000:0000 and 0FFF:0010 both → 0x10000.
the count · up to 4096 seg:off pairs per physical byte — pointer comparison is a trap.
the echo · the same aliasing as the NES 2KB RAM mirror — a many-to-one address map.

Thousands of names for one byte — aliasing written into the address arithmetic. aliasing

RECOMMEND FOR I-13 the alias, on the compiler

On the canonical compiler, segment:offset 1000:0000 and 0FFF:0010 both resolve to 0x10000 (65536):

$ i13 run ln_segment.i13 # overlapping segments RUN OK · 31 step(s) · peak stack 3 · call depth 1 a = 65536 -- 1000:0000 b = 65536 -- 0FFF:0010 alias = 1 -- same physical byte from two different pairs
Recommend as a NULL — an addressing quirk, not an invariant. Segment aliasing is a many-to-one property of the address encoding (B44), the same shape as the NES mirror; every correct 8086 aliases identically (B39). No carried channel. NULL — the trap under real-mode pointers, and a rhyme with the 6502 gate.