It occurs to me that I never explained why I'm re-writing the keyer software. To recap the project up to this point: I have wanted a CW memory keyer for a long time, and I had wanted to do some project with the Arduino. However, I didn't think that my circuit design skills were up to designing the necessary hardware and I didn't really want to write the software, and it occurred to me that someone else might have decided to use the Arduino as the basis of a memory keyer and have designed hardware and written the software necessary to make it do what I want. A fellow named Anthony Good K3NG did, in fact, do this, and I took his schematic and used it to exercise my PC board layout skills. I used surface mount parts so I could exercise my surface-mount soldering skills.
But I discovered that he doesn't really make effective use of the display. The display is primarily used to show what characters were sent. While that's okay for a two-line display, I bought a larger four-line display. What I primarily want to see on the display is what mode the keyer is in. Stuff like the current speed, the current transmitter being keyed, whether the sidetone is on or off, and whether the keyer is in program mode or not. So, I started looking at the source code provided by Mr. Good with an eye on making to do what I want. It is, in my professional (my day job is programming devices very similar to the Arduino) opinion, horribly organized. Still, it was complete and working and I didn't have any real alternatives, so I began to try to add some organization to it. I started breaking the functional pieces up into their own files and did a ton of work and still wound up with a mess, with no end in sight.
At this point, I decided to start over. I've been working on the system slowly for some months now. My goal is to provide a feature set similar to Mr. Good's, including his ability to add and remove pieces cleanly using a features and options file. I intend to stop when I have the features that I want, generally bound by a keyer with memories and memory macros, and the ability to use a PS/2 keyboard or serial port to communicate with keyer and set the contents of memories and things like that, at which point I will put the source up for other people to see and make an announcement on Mr. Good's Yahoo group.
However, I've been thinking. I have devices far more capable than the Arduino at my disposal. I've been struggling to make everything fit in the ROM and RAM of that little ATMega128, but I've got a BeagleBone borrowed from my work and a CHIP that I just bought, and either one offers not only far more ROM and RAM, but also networking capability, the ability to be USB hosts, and, well, just a lot of things that you have to go to a lot of trouble to get on the Arduino. I've also got some prototyping boards and if I get enthusiastic, I'll build me some prototype interface hardware and we'll see what happens. Making a keyer for iambic paddles is really quite easy. As for the rest, well, who knows?