По причинам, лучше объясненным здесь и здесь , PHP
всегда устанавливает флаг Break , когда он переносит регистр состояния в стек. Тем не менее, существует репрезентативная разница между тем, как этот флаг физически реализован, и тем, как мы его визуализируем - на самом деле он вообще не хранится в регистре состояния, а представляется так, как будто он есть.
Когда 6502 выполняет инструкцию PHP
, он устанавливает бит 4 в значении регистра состояния, который записывается в стек , но это не отражается как фактическое изменение в регистре состояния сам. Таким образом, ваш журнал показывает регистр состояния как неизмененный после PHP
, но когда вы PLA
этот байт, он имеет бит 4, установленный . Вы можете убедиться в этом сами, используя свой монитор для прерывания после инструкции PHP
, а затем посмотрите на байт в области памяти стека ($ 01xx).