A breakpoint that shows every register as the program had them, waits for a key, and carries on. NOTHING IS OVERWRITTEN, and that is the design rather than a shortcut. A breakpoint poked into a running program has to replace an instruction, and putting that instruction back in order to continue is the same act as disarming the breakpoint; firing a second time would mean stepping over the restored instruction and putting the breakpoint back behind it, and this machine cannot step a single instruction. SWI is two bytes, dispatches through a vector, and its frame already holds the address after it, so RETI resumes at the next instruction with nothing to restore and nothing to re-arm. It fires every time it is reached. The price is that a breakpoint is part of the program: a build with them in has different addresses from a build without. That is the bargain every machine with a break instruction makes. Every value shown comes out of the frame rather than the registers, because by the time the handler runs the registers are the handler's. Apps/Break.asm stops twice so that the second stop is checked as well as the first. Also here, found by the test that came with it: the monitor's s wrote into whichever bank was selected, and bank 2 is the controller's own table, published read only. Writing to it was refused, and a refusal nobody catches stops the machine - so selecting the bank table to look at it and then typing s killed the session. bankPresent now keeps the whole flags byte and s declines. The recorded output of cosmosMonitor had contained that crash, having been blessed without being read. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
25 lines
643 B
Plaintext
25 lines
643 B
Plaintext
CosmOS
|
|
> nothing is loaded
|
|
> greet.sbx 210
|
|
hello.sbx 52
|
|
Life.sbx 1411
|
|
Snake.sbx 2175
|
|
Keys.sbx 663
|
|
Say.sbx 155
|
|
Break.sbx 128
|
|
notes.txt 21
|
|
8 files
|
|
> load what?
|
|
> no such file
|
|
> not a program
|
|
> loaded, starting at 2000
|
|
> a program, loaded off a disk, running on the system that loaded it
|
|
what should I call you? hello, Anachronaut. that is all I do.
|
|
finished
|
|
> a program, loaded off a disk, running on the system that loaded it
|
|
what should I call you? hello, Claude. that is all I do.
|
|
finished
|
|
> halted
|
|
Execution halted.
|
|
[exit 0]
|