Hmm. My (untested in the case of cartridge ROM space) guess is that this will happen on real hardware, so long as no ROM cartridge is inserted (your store to $C000 in map type 1 should have ended up at $4000). But XRoar still isn't handling the case where there's actually a ROM at $c000, meaning your actual data makes it to RAM instead of the ROM contents. Fixing that is a bit more intrusive.pser1 wrote:I have downloaded v35.1 and tested the same program I was using without changes ...sixxie wrote: Released!
The result is the same, $c000 gets modified and so the compare finds equal values
wich should not happen on real hardware.
The logic: in an unexpanded Dragon 32, the top bit of RAM addressing is ignored, meaning that in map type 1, writes to high "RAM" (which doesn't exist) end up going to low RAM (which does).
Additionally, the ROM select values from the SAM's S output are not inhibited for writes, yet in map type 1, S has the same values when writing as they would in map type 0 (either reading or writing). Therefore the ROM gets selected (if present), and the value at that position in ROM gets written to low RAM.
As an example, try writing anything to addresses $8400-$85ff in map type 1 and see what happens to the text screen. Now try that on a real Dragon 32. (Of course this is where we find that the various board variations act differently and I'm suspected of being an idiot - but honest, this behaviour was identified on here some years ago.)