MPU4 Hardware - another lesson
May 5th, 2007 by James
I’ve mentioned before how the hardware is very sensitive to timing, and also how it multiplexes it’s inputs, lamps and LEDs using a simple decoder circuit. What I haven’t mentioned before is how everything comes together.
As there’s only the 6809 processor to keep control of everything, it doesn’t make sense for the input mechanism to be entirely dependent on CPU writes for timing, so there’s a little pulse timer (74LS122) in the IC24 socket.
This is a discrete timer, wired up to produce a pulse of fixed length after receiving an appropriate signal. To limit the 6809 activity rquired, the various pins are tied to high and low voltage so that only one line (B1) needs to be pulsed to generate an output.
Since I couldn’t bear to watch Sheffield United have their backsides handed to them on a silver platter, I decided to try to troubleshoot why this rather simple setup wasn’t working in AGEMAME.
It appears the code I’d originally written was setting up a pulse based on the ‘Q’ output pin, when in fact it needed to be the inverse, ‘Bar Q’ (sorry, can’t draw it using this character set).
Also, the pulse was being cancelled out prematurely by other writes, when they should actually extend the duration.
Upshot of all this is that Connect 4 now works, as do the inputs and lamps for all of MPU4.
However, this has exposed a long lying fault in the CHR emulation, which has been around since the start, and needs major surgery to fix (the data tables aren’t being parsed correctly, due to their bytewise nature), so I won’t be forwarding this to MAME just yet.
This entry was posted on Saturday, May 5th, 2007 at 10:07 pm and is filed under AGEMAME News. You can trackback from your own site.