SuperCPU REU DMA does not start immediately
Versatile Commodore Emulator
Brought to you by:
blackystardust,
gpz
SuperCPU REU DMA does not immediately stop the 65816.
It would appear that the function scpu64_clock_write_stretch_io_long() should be responsible for doing this, but it does not work.
c64io_df00_store(addr, value);
switch (addr) {
case 0xdf01:
case 0xdf21:
if (!dma_in_progress) {
scpu64_clock_write_stretch_io_long();
}
GTK3VICE-3.10-win64-r46128 is the last github build with working drives.
To test in GTK3VICE-3.10-win64-r46133 & GTK3VICE-3.10-win64-r46135, you need to use the monitor to load the test program.
load "reutest.prg" 0 801
g
then SYS2066 from basic
The program prints PASS on x64sc and FAIL on xscpu64 (or weirdly FASS if I use SHIFT+RUN/STOP) because the "sta command" doesn't trigger the DMA immediately and the buffer is either written/read before the DMA starts.
If you uncomment the two "; bit status" lines, then it will force the DMA to start. But I suspect the Super CPU itself does not need this.
Last edit: smf esemef 2 days ago
Vanessa just tried on real HW and it says "PASS"
should be fixed in rr46144