The dump labelled the status register "S", which reads as Stack to anybody sensible - and the Stack Pointer was the one register it did not show, so there was nothing to contradict the guess. It is written "status" now, and followed by the bits that are up, because a dump that makes you look the number up is only half a dump. The Stack Pointer is not in the frame, since the frame is where the Stack Pointer is. What the program had is fourteen bytes above it, that being what entering an interrupt puts down, so it is worked out and shown. Apps/Break.asm takes its second stop inside a subroutine, so the recorded output shows the Stack Pointer at FFFF and then at FFF5: a difference of ten, which is the size of a CALL frame. That checks the value is derived rather than constant, which the previous version could not have told you. Reported by Anachronaut, who read the output and asked why a pointer was two digits long. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
17 lines
344 B
Plaintext
17 lines
344 B
Plaintext
CosmOS
|
|
> loaded, starting at 2000
|
|
> two stops, and what the registers were at each
|
|
break at 200E
|
|
A 11 B 22 Q 00 status 00
|
|
DP0 1030 DP1 05EF DP2 039A DP3 2000 SP FFFF
|
|
press a key
|
|
break at 2023
|
|
A 44 B 55 Q 00 status 00
|
|
DP0 1000 DP1 05EF DP2 039A DP3 2000 SP FFF5
|
|
press a key
|
|
carried on to the end
|
|
finished
|
|
> halted
|
|
Execution halted.
|
|
[exit 0]
|