![Crying or Very Sad :cry:](./images/smilies/icon_cry.gif)
Bear with me on this one, it might be a little technical - and there will be questions
![Wink ;)](./images/smilies/icon_e_wink.gif)
A while ago I did a little playing with a microcontroller hooked up to the zx81's rear port with the intention of performing some DMA. Direct Memory Access - forcing the z80 off the bus so an external controller can write to the RAM directly. The 1st stage worked - I could take the z80 off the bus by signalling it on one of its control lines - 'BUSRQ' and have it return to normal business when required.
Unfortunately I had to stop playing at that point and I've only just got back into the playground. Here's the new controller board hooked up to the zeddy and ready for action. Type LOAD"" (simply a way of putting the machine in a FAST-mode loop without writing any code - It's got nothing to do with the DMA) and hit the button...
CRASH!
Pretty much every time
![Sad :(](./images/smilies/icon_e_sad.gif)
starting from the top - with /busrq - we see it get asserted. The signals here are all active when low.
/busak follows. This is the z80 confirming that it's sleeping. There is a period of silence in the trace and then you see little blips where the /wr line is asserted. This should poke values into RAM. In the time between blips things like address line setup happens. After 8 bytes have been sent /busrq is de-asserted, or released. /busak follows and the z80 continues its business. For once. Mostly it crashes :*(
One thing I wasn't expecting to see is blips on the /rd line. _I'm_ not doing that, and the timings of the signal are too close to the write pulses and too even in width to be coincidence. Either I have a short circuit somewhere or the ULA is interfering... Anyone know what the ULA does when /busq is asserted?? Could /rd be floating? I'd expect to see a delay if it was capacitive coupling. Should a DMA controller pull /rd low? Anything else?
It looks like I'll need to actively drive /mreq too - I have a 'wilf' barebones 32k mod and that requires /mreq to be asserted in order to enable the decoder. I've just thought of that as I've been typing.
All-in-all this is turning out to be quite a lot more hassle than I thought
![Smile :)](./images/smilies/icon_e_smile.gif)
Fun though.