Pushing registers on the stack changes the stack pointer but writes in the wrong location (0x01ss instead of 0x21ss).
Pushes generated from JSR are correct.
0> step
Stop at 0x002412: (109) stepped 2 ticks
A= $2e 46 +46 . X= $00 0 +0 . Y= $00 0 +0 .
P= 00000101
NVTBDIZC
S= 0x21f9 22 85 24 63 23 86 22 01 ".$c#.".
0x2412 48 PHA
F 0x002412
0>
Stop at 0x002413: (109) stepped 3 ticks
A= $2e 46 +46 . X= $00 0 +0 . Y= $00 0 +0 .
P= 00000101
NVTBDIZC
S= 0x21f8 96 22 85 24 63 23 86 22 .".$c#."
0x2413 a9 fc LDA #$fc
F 0x002413
0>
Stop at 0x002415: (109) stepped 2 ticks
A= $fc 252 -4 . X= $00 0 +0 . Y= $00 0 +0 .
P= 10000101
NVTBDIZC
S= 0x21f8 96 22 85 24 63 23 86 22 .".$c#."
0x2415 48 PHA
F 0x002415
0>
Stop at 0x002416: (109) stepped 3 ticks
A= $fc 252 -4 . X= $00 0 +0 . Y= $00 0 +0 .
P= 10000101
NVTBDIZC
S= 0x21f7 24 96 22 85 24 63 23 86 $.".$c#.
0x2416 20 60 25 JSR $2560 <printf>
F 0x002416
0> dump /x 0x01f7
0x01f7 00 fc 2e 00 00 00 00 00 ........
0x01ff 00 00 00 00 00 00 00 00 ........
0x0207 00 00 00 00 00 00 00 00 ........
0x020f 00 00 00 00 00 00 00 00 ........
0x0217 00 00 00 00 00 00 00 00 ........
0x021f 00 00 00 00 00 00 00 00 ........
0x0227 00 00 00 00 00 00 00 00 ........
0x022f 00 00 00 00 00 00 00 00 ........
0x0237 00 00 00 00 00 00 00 00 ........
0x023f 00 00 00 00 00 00 00 00 ........
0> step
Stop at 0x002560: (109) stepped 3 ticks
A= $fc 252 -4 . X= $00 0 +0 . Y= $00 0 +0 .
P= 10000101
NVTBDIZC
S= 0x21f5 2e 18 24 96 22 85 24 63 ..$.".$c
0x2560 <printf>:
0x2560 ba TSX
F 0x002560
0>
Diff: