Interactive

Multitasking

STELLAR runs up to four independent VMs on the single 1802, a few opcodes at a time each. This boots the real firmware from its reset vector — CREATE_CIDP discovers a VM per loaded program and the scheduler round-robins them. Watch each core, the decoded $2F00 CIDP page, and the quantum countdown that triggers each hand-off.

clock

loading…

CIDP — $2F00 interchange page

System registers (the machine-wide bytes at $2F50–$2F5F)

Cores (the highlighted one holds the CPU right now — click ⤢ to expand any VM)

Shared serial terminal

One UART, shared by all VMs — their output interleaves in the order the scheduler runs them. Click it and type to send keys in (on a phone, tap it for the keyboard); whichever VM reads first gets them.

Front panel

Also shared: one Q line and one output latch for the whole machine, whichever VM last drove them.

↻How the hand-off works

Each active VM runs a small number of opcodes — the quantum, counted down in each core's interrupt counter (+$5E of its core block) — then yields. The scheduler (Do_Next_Task, $0080) scans the CIDP for the next VM whose State is $01 (active) and hands it the CPU, updating Current VM# at $2F52. A VM waiting on serial input yields cooperatively instead of blocking the others. When a VM's program ends its State becomes $00 (done) and the scheduler skips it.

See the architecture page for the full CIDP layout, or the VM Core view for one core in depth.