Utknąłem na takiej zagadce. Zrobiłem sobie procedurkę co kopiuje ROM do RAM. Wszystko cacy.
Chciałem uodpornić kod, na wypadek programowego skoku do RESET ($C290).
Procedura RESET w początkowej fazie (według Zientary) skacze do $C4DA (IOPORTINI)
i tam jest taki kod
LDA #$00
TAX
STA PBCTL
NEXT STA GTIA,X
STA ANTIC,X
STA POKEY,X
CPX #$01
BEQ BYPASS
STA PIA,X
BYPASS INX
BNE NEXT
jest "CPX #$01" i Zientara napisał, że "W pierwszej fazie procedury zerowane są wszystkie rejestry układów GTIA, ANTIC i POKEY oraz rejestry układu PIA z wyjątkiem PORTB". Co ma sens.
Tymczasem pod emulatorem ATARI800 gdy X jest równe 5 pakowane jest ZERO do $D305 (co to w ogóle za rejestr jest?) i emulator włącza mi ROM no i z "podkładki" lipa.
ATARI800 źle to robi? W prawdziwym ATARI jest jakiś mirroring co 4 bajty? Ale wtedy CPX #$01 nie chroni przed odłączeniem ROMu, a przecież w praktyce chroni. Czy jest mirroring rejestrów ale sam PORTB jest chroniony a ATARI800 robi to źle?