Both the No more secrets-document and the codebase entry still have some vague phrasing so I dare to ask: 1. DoesSometimes the AND "#<adr_hi>+1" drops offactually mean iff the write-cycle of the SH*-command is processed during an "X"-cycle (DMA-bus-overtake-cycle), the AND drops off?Or are there more dependencies for the AND to drop off?
Sometimes the AND "#<adr_hi>+1" drops off
iff the write-cycle of the SH*-command is processed during an "X"-cycle (DMA-bus-overtake-cycle), the AND drops off?
2. ... The page where the value is stored may be equal to the value stored
The page where the value is stored may be equal to the value stored
iff there is a page break, the page where the value is stored is (<adr_hi> + 1) & y (ex. for SHY).
3. Does the page miscalculation as described under 2. also happen on an "X"-cycle? My C64-intuition would say that also the page break fixup works normally on those "X"-cycles, but I did not test anything so far...
high byte of address written to, when: +--------+------------------+---------------+ | | no DMA on cycleN | DMA on cycleN | +--------+------------------+---------------+ |page | | | |not | H | H | |crossed | | | +--------+------------------+---------------+ |page | | | |crossed | Y&(H+1) | Y&(H+1) | | | | | +--------+------------------+---------------+ value written, when: +--------+------------------+---------------+ | | no DMA on cycleN | DMA on cycleN | +--------+------------------+---------------+ |page | | | |not | Y&(H+1) | Y | |crossed | | | +--------+------------------+---------------+ |page | | | |crossed | Y&(H+1) | Y | | | | | +--------+------------------+---------------+