Sunday, February 19, 2012

HALTing Progress

Garbage on the screen doesn't sound like progress, but given that I had nothing prior, I considered it a good sign.  But one thing stood in the way of further progress.  I wired up the Liber809 prototype in such a way that it was physically impossible to hook up the IC clip from the LogicPort to the 6809E.  I was going to have to rewire this thing, and so I began to do just that.

Another weekend spent carefully resoldering and moving wires around yielded a reconfigured prototype board that now had the 6809 prominently sticking up at the top, easily accessible to the IC clip.  After hooking everything back up and attaching the LogicPort, the E and Q clock signals showed up perfectly.  The Maxim part was doing what it was supposed to do, and doing it well.  The 6809 was alive, and although it wasn't causing the XEGS to show a nice colored background and emitting sound, it was doing SOMETHING.

Next, it was time to look at the address lines.  When the 6809E comes up, it asserts its address lines in the following manner: $FFFE, grab the byte there, $FFFF, grab the byte there... the 16 bit value is then loaded into the 6809's program counter and execution jumps to that address.

I could clearly see that the 6809 was doing just that, and the $FF00 address looked correct, but after that, things went haywire.

Well, it turns out that the thing we were worried about was in our face.  You see, the Atari hardware can take over the address bus at different times, basically telling the CPU to get out of the way using a line called the HALT signal.  When Gary came up with the design for the Liber809, he knew that the 6809 would have to cope with relinquishing the bus every now and then to make the other hardware on the Atari happy.  Problem was, the method he chose didn't exactly make that happen at the right time.  The 6809 was still trying to use the bus when the Atari's hardware was, and it was causing problems.

At least now, with a logic analyzer and some captured data, I was able to give Gary hard data to look at.  All he had to do was download the Intronix software on his PC.  I could then email him the data that I took from the analyzer, and that worked like a charm.  Now all we had to do was analyze what went wrong and how to fix it.  No doubt, the circuit would need to be adjusted, but how?

No comments:

Post a Comment