Weird behavior of register read on custom cartridge

cafe-alpha

Established Member
I'm currently making a custom cartridge with a CPLD connected in a similar way as FT245RL in USB dev cart (= D0-D7 lines + few address lines + RD/WR0 connected to CPLD).
I implemented a (very) simple register I/O module in the CPLD, and the first 2 bytes of the register map return respectively 0x55 and 0xAA when read.

As only D0-D7 are connected, data on even address should return 0xFF. Hence, expected read contents is "FF 55 FF AA", but on some Saturns (*1), I get "55 55 AA AA" when read.

(*1) It works correctly on some test Saturn, but fail on other ... depends on Saturn/BIOS revision ?!?

Does somebody (Antime ?) have an idea about the origin of this problem ?
And is there a countermeasure (A-bus related setting) to get it working correctly everywhere ?
 
The Saturn firmware version is irrelevant, I'm guessing timing variations. You could try playing with the A-bus wait state settings and see if that changes anything. A logic analyzer would be very helpful here.
 
OK, I will play with SCU setting registers :)
What's weird is that it works on some Saturns, and bug on others ... I will log SCU version in order to see if it depends on SCU version or not.
 
I tried behavior with some values for AREF and ASR0, and it surprisingly worked when setting theses registers both to 1 !
I tried some other values according to info in ST-097-R5-072694 document, without success. So the weird point remains, but at least it works :)
 
Back
Top