I added my little LED display to my 68000 computer. It was a fun challenge, but easier than I expected
The display replaces the register and string of LEDs on address $0008,0000. It’s wired to even addresses up to $0008,0040, and to the lower 8 bits of the data bus. This makes it simple to use MOVE.w D0,(A0)+ to output a byte and increment the address pointer to the next even address for the display (or even better, MOVEP.l D0,(A0)+ to output 4 bytes with one instruction).
This little program just increments D0 after outputting it. As with the last test program, it does a loop counting up to 0xFFF before shifting, to make the changes visible. Each time it reaches 0xFFF, it increments the starting value for D0.
I did have to optimise my loops some to minimize instruction fetches while writing to the display. It’s not buffered at all, so the LEDs are only lit as long as the CPU is writing to it. This means I need to write to it as quickly and as frequently as possible to make the display bright enough to see. Even still, it’s actually easier to see on camera than in person.
I was bitten again by a missing # on a literal value. Thankfully though, I’m starting to get the hang of using the EASy68K emulator/debugger. I was able to troubleshoot several bugs without erasing and re-burning my flash ROM. Which is good because the chip is old, and I should save what few writes it has left
To that end, I also moved my program to $0001,0000, which puts it into the next sector of the flash chip. This also saves me from having to constantly re-flash the vector table, since I can keep them on the first sector and only erase the second for program changes.
What’s next? I’m not sure. I suppose the next logical step would be to program it to display some sprites just to play with outputting data from ROM. When I built this display I ended up using it with the Z80 DMA controller, which worked really well. I don’t have a 68k DMA controller though, and I don’t think the 8-bit Z8410 or i8237 would be easy to integrate with this system. I suppose maybe a timed interrupt might work if I wanted to write to the display and still do something else. That would mean I need to add RAM though. I guess t’s time to move off of the breadboard.











