Checkpoints for non-default devices are unreliable
Versatile Commodore Emulator
Brought to you by:
blackystardust,
gpz
Activate the monitor and execute:
watch 0800 9fff
dev 8:
watch 0600 0700
a 0300 sei
.0301 sta $0600
.0304 jmp $0300
r pc = 0300
x
A watchpoint is triggered as expected:
#2 (Stop on store 0600)
.8:0301 8D 00 06 STA $0600 - A:FF X:06 Y:FF SP:45 ..-..I.C 2629402
Note the clock number, this code should trigger a watchpoint every 9 cycles. Now keep doing the same thing:
dev C:
x
Result:
(8:$0304) dev C:
Setting default device to `Computer'
(C:$e5cf) x
#2 (Stop on store 0600)
.8:0301 8D 00 06 STA $0600 - A:FF X:06 Y:FF SP:45 ..-..I.C 2637457
(8:$0304) dev C:
Setting default device to `Computer'
(C:$e5cd) x
#2 (Stop on store 0600)
.8:0301 8D 00 06 STA $0600 - A:FF X:06 Y:FF SP:45 ..-..I.C 2677363
(8:$0304) dev C:
Setting default device to `Computer'
(C:$e5d1) x
#2 (Stop on store 0600)
.8:0301 8D 00 06 STA $0600 - A:FF X:06 Y:FF SP:45 ..-..I.C 2717260
(8:$0304) dev C:
Setting default device to `Computer'
(C:$e5cd) x
#2 (Stop on store 0600)
.8:e5cd 45 06 EOR $06 - A:FF X:06 Y:FF SP:45 ..-..I.C 2757157
(8:$0304) dev C:
Setting default device to `Computer'
(C:$e5cf) x
#2 (Stop on store 0600)
.8:0301 8D 00 06 STA $0600 - A:FF X:06 Y:FF SP:45 ..-..I.C 2757166
(8:$0304)
The watchpoint is triggered at intervals of many thousands of cycles and sometimes even garbage instructions (EOR $06) are displayed.
Tested in r46036.