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.
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.