Увы(
Проверил на реале:
Набираем:
7000:A9 00 BA 86 F0 48 28 4C
7008:07 70 08 D8 A2 00 88 D0
7010:FD CA D0 FA A6 F0 CA 9A
7018:68 A2 07 0A 48 A9 B0 69
7020:00 20 29 70 68 CA 10 F3
7028:60 6C 36 00
F800<F800.FFFFM
FFFC:A 70
--
для семёрки: C220:0
[ЭмПЗУ должен быть во втором слоте]
для девятки: C082:2
--
7000G
<упр-сбр>
смотрим ответ (00000000)
--
7001:FF
7000G
<упр-сбр>
смотрим ответ (11111111)
--
7001:55
7000G
<упр-сбр>
смотрим ответ (01010101)
--
7001:AA
7000G
<упр-сбр>
смотрим ответ (10101010)
====
Протестированы um6502 [9], что-то с эмблемкой Rockwell [7] и scl 6502 [9].
Resume: похоже, проц вообще не меняет слова состояния при сбросе. Возможно, что-то задаётся при включении питания, но никакого теоретического подтверждения этому пока не найдено.
====
Проверка кода:
Код несколько усложнён из-за того, что комбинация УПР-СБР не имеет защиты от "дребезга" и, таким образом, программе нужно отличить первый RESET (когда слово флагов жестко задано), от последующих (когда повторные RESET прерывают проц в менее определённых местах).Код:*7000L 7000- A9 00 LDA #$00 7002- BA TSX 7003- 86 F0 STX $F0 7005- 48 PHA 7006- 28 PLP 7007- 4C 07 70 JMP $7007 700A- 08 PHP 700B- D8 CLD 700C- A2 00 LDX #$00 700E- 88 DEY 700F- D0 FD BNE $700E 7011- CA DEX 7012- D0 FA BNE $700E 7014- A6 F0 LDX $F0 7016- CA DEX 7017- 9A TXS 7018- 68 PLA 7019- A2 07 LDX #$07 701B- 0A ASL 701C- 48 PHA 701D- A9 B0 LDA #$B0 701F- 69 00 ADC #$00 7021- 20 29 70 JSR $7029 7024- 68 PLA 7025- CA DEX 7026- 10 F3 BPL $701B 7028- 60 RTS 7029- 6C 36 00 JMP ($0036)
P.S. Флаг D сбрасывается только у 65c02 - в его описании на это сделан акцент, причем поведение 6502 (флаг не меняется) признан ошибкой.




(
Ответить с цитированием