Keith Gaughan

An attempt at public introspection

Electronics

A homebrew computer project

· 4min

I’ve always wanted to build electronics for myself, but I’ve never had the chance. That’s something I’d like to fix.

I’ve a few projects that have been banging around my head for a while, which are all related in some way or another.

The first is to build my own Jupiter Ace. I mentioned this particular project a few months ago elsewhere. My plan for this originated as something like the Jupiter II before I stumbled across the repo for it. I’d still like to do something like that, replacing as much discrete glue logic with PLDs as possible, but I want to create a board that’s a little bit more straightforward for those of us nervous about soldering SMD components to build. My plans for it are slightly different anyway as I want to replace the keyboard with a PS/2 keyboard, and I want to generate a VGA signal.

Which leads me to the second project: I think it’d be fun to build a VGA character interface. Actually, the plan would be to build two of them: a basic low-res one for the Ace, and a proper 80×25 character buffer similar to that found on PCs, with the standard 4-bit VGA palette (mostly: not sure about brown/orange) as both background and foreground attributes. My plan is to build this in such a way as to minimise bus contention and keep it so that scrolling is fast by using a text/attribute buffer. The idea here would be that the display circuitry would copy the text and attribute data over to a memory buffer before drawing it, which should be a quick operation, and then use that to generate the video signal. What I’m not sure about is whether I should have two buffer that are flipped between on alternate lines or just a single buffer. Two buffers would potentially allow a bit more flexibility, but I’m not sure how necessary it is. Either way, the idea is to minimise the amount of time the video circuitry needs to contend with the CPU for bus access. I figure I might be able to use a 6845 CRTC to drive the signal generation circuitry, but I might have to resort to something a bit more sophisticated. A lot of the image generation, beside timing and colour, is potentially something that can be driven from EEPROMs and some basic glue logic.

This would be a more complicated version of the circuit built for the Jupiter Ace clone. I’m hoping to get the kinks out on the lower-resolution 32×24 mono display before moving onto the more complicated high-resolution display.

The PLDs are going to be interesting. I want to go down that route because, even though they’re obsolete technology, they’re available as through-hole components. Atmel/Microchip produce them still (though I believe they have quirks) in the form of the ATF22V10, and company, and minipro looks as if it should work with them, so WinCUPL is an option with WINE. Given how obsolete they are, it’s difficult to find any modern software for compiling down equations to a form that can be optimised and written to them, which is unfortunate, but understandable. I’m not sure if a subset of VHDL or Verilog can work with sPLDs. If that’s an option, then great, but I’m not holding my breath.

I’m under no illusions that, while simple by modern standards, these are not trivial projects, so they’re going to take me quite a long time. Before I get to the Ace itself, I’ll probably have to, at the very least, do some prototyping of a simple computer that I can communicate with using a UART first, and before even that, I’m probably going to have a lot of experimentation to do. I’m not sure how I’ll do serial communication. I might be able to use something like a 6551 ACIA, and see what support hardware I need to convince it to talk to a computer, either via an RS232-to-USB cable, or an FTDI cable. There’s also the MAX232 family, which I learned of recently, and they seem cheap and easy to get ahold of. Honestly, just dealing with serial communications itself isn’t a small project, but still small compared with the video adaptors.

So, that’s the gist of things, and is mostly me speculating to myself. Before all that, I have an RC2014 coming in the post, and simply assembling that kit will teach me a lot. For instance, I know the RC2014 comes with serial I/O support, but I’ve little idea of the details beyond the fact that I was sure to include and FTDI daughterboard. It’ll be interesting at least, and I could do with something interesting to do.