Playing with Buttons and Tweaking the OS
I've made a nice enclosure for the MAG-85 that I've been using for the past year or so, but it's ready for some tweaks. The body of the enclosure is made out of a piece of 12" by 12" perforated aluminum bent into shape using a piece of wood and a rubber mallet. It turned out looking great, believe it or not!
The front panel was also constructed by hand out of hardboard. I holds the LCD display, eight output LEDs hooked up to the 8085's OUT 01 output, eight slide switches hooked up to the 8085's IN 01 input port, the keyboard, and an LED hooked up to the SOD output.
There are also four push buttons that have been nothing but trouble. They are the RESET (red), TRAP, RST7.5 and RST5.5 inputs (black) for the 8085. The switches I put in bounce horribly. I have both hardware and software debouncing on them, and they still get a bounce through to the OS about one time in a dozen. Too often! So I'll be replacing these with better switches that I can recommend for others to build around.
The keyboard, by contrast, is working great. It's one I picked up from SMC Electronics. It has full-travel keys that are clean and easy to use. I purchased a variety of extra keycaps so that I could mix and match colors. The keycap legends were made using dry transfer lettering overcoated with clear fixative.
Top and bottom panels
The top panel holds the power connector, power switch, power LED, and LCD contrast and backlight controls. This is a bit much, and the power LED isn't immediately visible, so this is one of the things I'm tweaking. I've accidentally switched off the whole unit when I meant to turn off the LCD backlight, too. Not a big deal (the RAM is non-volatile in this system), but I'd rather not surprise myself like that if I can avoid it.
The bottom panel is blank right now. I'm considering moving the power plug down there, and I'm looking at possible accommodations for batteries in the future.
Once I finish the improvements in the enclosure, I'll be posting the detailed instructions for constructing it. It will be buildable without power tools (though a drill motor helps).
I'm also working to make a version of the OS that's complete and clean enough to post. The OS is mostly LCD routines, with some basic provisions for viewing and editing memory, registers, and I/O ports. Features may change between then and the time I post version 1, but I'm determined to post a version soon--it's been too long since I've started this project to only have test code posted.
Main Circuit Board Complete!
Next, the Front Panel and Enclosure
I've finished the main board and tested it using a mock-up of the front panel components (image above.) Now I'm waiting for delivery of some nifty keyboards I found online so that I can start building up the front panel. Next will come the enclosure for the system. Soon, I'll be posting detailed info on construction of the hand-wired board, front panel, and enclosure.
This is already a really fun system to play with. To be honest, while health and schedule problems caused by bad health have slowed me down on finishing this, I've also been 'playing hookey' by just fiddling around with the one I've got built up on solderless breadboard.
The basic system has:
- An 8085 CPU at 1/2 to 3.25MHz
- 8K of non-volatile RAM
- A 4 x 5 matrix keypad
- An LCD display, from 16x2 characters to 40x2.
- Three user-accessible interrupts
- Serial I/O and a programmable single bit output.
- 16 extra digital inputs and 16 outputs.
- Decoding for an additional 40 digital I/Os, if desired (or use as 10 additional outputs as-is!)
- All in only 12 simple-to-use ICs
If you want simpler, you can drop 8 digital inputs and outputs and build it with just 10 ICs.
If you want more, memory can be expanded to 64K easily, and an additional 1,984 digital I/Os can be added off-board. Support chips can be added to provide just about any functionality you desire. The MAG-85 is a useful system by itself, but it can also form an easy-to-use core for experimenting with expansion to a larger system.
Don't Let thee Rat's Nest Scare You...
All those loose wires are pretty messy looking. But the fact is, they're just jumper wires from my solderless breadboard. They go to connectors that plug in to the system board. Each I/O chip has a 10-pin connector to connect to its 8 inputs or outputs, plus power and ground. Plus, there' a 16-pin keyboard connector that connects the matrix keypad and three interrupts to the front panel. The LCD uses a 10-pin connector that's the same as the one for the digital outputs (it uses the first of three digital output chips. Since they're all the same, you could hook up 3 LCD displays if you like...)All together, this means you've got:
- One LCD connector cable.
- One Keyboard connector cable.
- 3 small plugs for the Reset switch, Power LED, and SOD (bit output) LED.
- Zero to four ten-pin I/O connector cables.
5 to 9 cables total. Not so bad, eh? Needless to say, the real thing will not look as ugly as my hashed-up-from-loose-wire cables in the picture above.
Posted March 18,2010. Earlier posts to this subject below.
Time to Bend Metal
The PCB for the permanent version is going to be one or two Vector Plugboards with integral power buses. Based on the number of tie points I'm using already on the logic lab, I'm expecting to need a linear stretch of about 15-20 inches space on the board for the chips in the plan:
IC length (pins) XTAL Osc 7 7400 7 8085 20 74373 10 2x74138 16 74C923 10 4x74HCT574 40 Some extra 16 Total 126
That's already over 13 inches when giving room to space the chips out a bit, and give room for extras like resistors and all (caps will go on the bottom of the board, I expect.)
One short board (Vector 3677-2) gives about 12 inches of space. If I was willing to give up some of the I/O chips (the 74HCT574s) I could probably cram the whole thing onto one of these. But I want some I/O. For LEDs and DIP switches if nothing else. I gotta have something to play with in my programs, right?
A long board (Vector 3677) is roomier, about 20 inches of space. But it's 9.5" long overall, a bit awkward for a hand-held. However, this is probably the way I'm going to go. I don't want to deal with the problems of splitting unbuffered signals off the board, or with adding buffers for the bus for a multi-board design. The old low part count principle again. If I have two boards, that adds buffers, extra power conditioning, and that much more to go wrong or get damaged while flopping around at the ends of interconnects while I'm trouble shooting it. One board it is.
The keypad and display will be off-board. Their signals are already buffered by the I/O ports anyway. The same will probably go for any other I/O devices. I will probably be able to fit headers into the stray space at the ends of the rows.
It's hard to find a decent hand-held enclosure for a board that's so long. If I cut off the plug end of the board (long enough to still be used in other projects) I can reduce the length enough to stick it in an old modem's case. I'm also looking at building up a case.
One idea I've had is to split a section of dowel into two half-cylinders. I'd put a pair of saw kerfs in the flat side of each, one to hold the PCB, the other to hold the board for the keypad and display. I'd put some flats on before splitting the dowel to give me a place to mount a face panel and back panel, then cut a couple of endcaps and screw them into the dowel ends. Another idea is to knock together a form and slump some acrylic into it to make a housing. I'd put in relief cuts for the end covers ahead of time, so that they'd already be there once it's been slumped into shape.
Close, Sooo Close
When I was looking for possible enclosures online, I came across Box Enclosures. They've got some really nice hand-held cases. None that quite meet my needs, unfortunately, because the prices are quite reasonable, and the cases are very nice for being generic-type enclosures. I'll keep these in mind for future projects. The colored grips and included battery compartments are really nice. The faces would be really easy to customize with a printout. If I do a PCB set (a core board and a UI board) for the MAG-85, I may do it up to fit one of these. A real PCB would take less space than a protoyping board, so I could almost certainly fit it.
Update: 11 Nov 2009
I've started construction of the permanent hardware now. I'm using the Vector 3677 board, as dsecribed above. So far, I've built and tested the power supply, and added the clock/oscillator circuit. After having to do some rework on the power supply on the PCB, I regret not prototyping every part of the MAG-85 circuit on the solderless breadboard before beginning construction. A simple problem I ran into caused by a databook with a typo could have been avoided.
I had been planning on adding the full RESET and single-step circuits to the permanent version without bothering to prototype them on solderless breadboards first. I've decided that I should do them on solderless boards first.
Update: 24 Nov 2009
I have successfully added the CPU to the PCB and tested it with a free-run test using components on a solderless breadboard. See my blog entry on this here:8085 Permanent Hardware Free Run Test
Next will be adding the address latch and memory. I'll also be breadboarding the single-step circuit on the prototype.