Dazzler in 8-bit land

Right now I have two Dazzler-related things going on. One is finishing up the CircuitPython support, which is looking fairly complete now, and I'll be showing off in next week's update. The other thread is the other end of the technology spectrum, connecting Dazzler to 8-bit-era 1970s CPUs. These are 6502 and Z80 mostly, but the 6800, 6809 and 1802 also get some love.

Using the Dazzler for these machines makes a lot of sense. The Dazzler can run as a simple ANSI terminal, or the 8-bit CPU can take direct control and talk to the EVE GPU. The outcome should be some pretty fast 2D graphics and animation out of a genuine 8-bit computer. One of the nice things about working with these old systems is that they really are simple; it's so easy to work with them!

Last week I sent out a PCB design for attaching a "bare" 6502 to the Dazzler. It still hasn't arrived, but yesterday I ordered an RC2014, which is a homebrew Z80 computer with a very active support community. Thanks to the readers who pointed it out to me. A Dazzler peripheral card for the RC2014 should not be too far away.

This image was deleted by MailChimp when they shut down TinyLetter.

On the electrical level, many of these systems are 5V, and a proper design will need to use level shifters for the Dazzler's 3.3V inputs. Last week I came across the TXS0108, which is fairly cheap, and works as an auto-sensing level shifter. This is really nice for the CPU control signals - every signal can run through the TXS0108 and look to the 6502/Z80 like a genuine 5V signal.
This image was deleted by MailChimp when they shut down TinyLetter.
The Dazzler peripheral board can connect directly to the CPU bus, accept byte writes, and send them to the GPU. The FPGA will contain a little bit of glue to connect the byte-wide interface on the CPU side to a 4-bit interface on the EVE side. The EVE and FPGA will run at 72 MHz, so can easily keep up with byte read/writes from the 8-bit CPU; there's no handshaking required.

What this means for the Z80 is that the EVE GPU appears as a byte-wide read/write IO port. For example it can appear at IO port 0x7c, and you might write a clear-screen function like this:

# 26000007 is the 4-byte EVE command for clear screen
GD_Clear:
  ld a,4
  call makeroom
  ld a,$07
  out ($7c),a           # 07
  xor a
  out ($7c),a           # 00
  out ($7c),a           # 00
  ld a,$27
  out ($7c),a           # 26
  ret


GD_Clear is a pretty simple instruction (it's on p.72 of the BT815 Programming Guide), but it should be fairly straightforward to write code for each of the BT815 drawing instructions. With these all done, the obligatory flying sprite demo could only be a page of code.

This image was deleted by MailChimp when they shut down TinyLetter.

This kind of interface might be quite usable, and it's a very direct way of joining up an 8-bit CPU to the EVE's command system. I think that's important for this kind of machine; a lot of their appeal is the directness that's missing from today's computers.

Thanks for reading. Next week, a CircuitPython update. Please help spread the word on Dazzler, or even back it if you're so inclined. Thanks again!