Ok, here's the reason why this was broken, then worked and then was broken again:
It's the cassette read trap here:
|
z80_set_trap(&board.z80, 1, this->casread_trap); |
Problem is: cannot simply set and clear the trap from inside the CPU callback... this will not be noticed by the CPU since the CPU struct is overwritten... need to implement a more robust solution since the same problem can also happen on other systems (one solution would be a separate 'bool z80_check_trap(int trap_id)' callback which would only be called for verification when the 16-bit address matches.
Ok, here's the reason why this was broken, then worked and then was broken again:
It's the cassette read trap here:
yakc/src/yakc/systems/cpc.cc
Line 203 in 7c62e32
Problem is: cannot simply set and clear the trap from inside the CPU callback... this will not be noticed by the CPU since the CPU struct is overwritten... need to implement a more robust solution since the same problem can also happen on other systems (one solution would be a separate 'bool z80_check_trap(int trap_id)' callback which would only be called for verification when the 16-bit address matches.