Reading the die
The die is the machine's whole memory, all 32 KB of it, drawn as a picture: one pixel
per byte, 128 bytes to a row, from $0000 at the top left to $7FFF at
the bottom right. Each byte glows faintly by its value, so code and tables have a texture and
empty memory is black. On top of that, every instruction the 1802 fetches lights its byte in
the colour of the VM it is working for, and every byte that changes flashes white. Both fade
within a few frames, so the picture shows where the chip is working right now.
Hover to read any byte; click the die to enlarge it.
The coloured light is almost all in the firmware, because that is the code the 1802 actually runs. A program's own STELLAR bytecode, down in its VM block, is data to the chip: the firmware reads it one opcode at a time and runs the handler for it. So the program blocks light up white, where programs write their variables and screens, and the firmware lights up in colour, showing which handlers each program is keeping busy.
$2F50 (which VM has the chip, how many there are, multitasking on or off), and the 1802's hardware stack at the top. Only 2 pixels tall on the die, so beside the die it has its own block just above VM1, joined by a dashed line to its real place, and it is shown byte by byte in the CIDP table under the die: each VM's row in its colour, the running VM's row lit, changes flashing. Hover a byte there to see what it is.$5000, VM3 $6000 and VM4 $7000 are laid out the same way. A block that stays dark is code being read, not written; white is the program updating its data, like Mandelbrot's picture or Invaders' positions.