Break: name the status register properly and show the Stack Pointer
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
5fd995aa62
commit
c23adb2836
@@ -2,12 +2,12 @@ CosmOS
|
||||
> loaded, starting at 2000
|
||||
> two stops, and what the registers were at each
|
||||
break at 200E
|
||||
A 11 B 22 Q 00 S 00
|
||||
DP0 1030 DP1 05CC DP2 039A DP3 2000
|
||||
A 11 B 22 Q 00 status 00
|
||||
DP0 1030 DP1 05EF DP2 039A DP3 2000 SP FFFF
|
||||
press a key
|
||||
break at 2018
|
||||
A 44 B 55 Q 00 S 00
|
||||
DP0 1000 DP1 05CC DP2 039A DP3 2000
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user