Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: add tests for failed shift registers on MDAT #12

Open
darrenfreeman opened this issue Feb 28, 2022 · 0 comments
Open

Feature: add tests for failed shift registers on MDAT #12

darrenfreeman opened this issue Feb 28, 2022 · 0 comments

Comments

@darrenfreeman
Copy link

I am repairing an A4000, which had a failed U975 resulting in MDAT stuck at logic '0'. The symptoms in DiagROM were all joystick direction buttons being pressed, and although I didn't check this, the upper byte of DENISEID should have been $00 also. As I was not familiar with normal operation of DiagROM, I didn't realise the joystick buttons were all pressed - I had nothing plugged in, and I thought the colour red was not pressed instead.

I lifted the leg of U975 pin 13, which allowed MDAT to float to logic '1' at Lisa. I could tell that Lisa was reading MDAT, as the buttons changed colour when my oscilloscope probe was touching MDAT. (Floating gate.)

What I propose is that DiagROM should check for stuck joystick pins at startup, and report this. On AGA machines, add an extra warning if all pins are stuck at the same logic level as the upper eight bits of DENISEID, as this points to MDAT being stuck. The message should say if it's stuck at '0' or '1'.

Add another comment if the first test passes but the upper byte of DENISEID is unexpected. I think it should always be $FC for an A4000, or $00 for A1200 and CD32. Any other ID is either caused by jumpers installed on J975 of A4000, or a fault somewhere around the second shift register.

It could actually be useful to use DENISEID to control how DiagROM boots - on the A4000 you have six jumpers on J975, but on CD32 it appears that the upper byte can be set to $FF instead of $00, by pulling up the signal MX, which is U34 pin 1, going to a via which seems to go nowhere. (It has a 470 ohm pull-down.) So that via looks like a factory test point which we can use to force alternate behaviour in DiagROM. Desperate users could also float this pin on an A1200, and use it similarly.

I have confirmed that going out and back into the "0 - System info" menu item, produces a different DENISEID as jumpers are moved around on J975. Likely this can be polled as fast as the joystick switches, maybe we can use this someday to create a test harness?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant