I’m currently working on some updates to the TellyMate, for the upcoming release 1.1.00 of the firmware: [edit: Now released]

Hardware generated Sync pulses
Until now, I’ve been studiously toggling the sync pin off and on ‘by hand’ in the firmware in order to generate the correct HSync and VSync pulses. This required very careful cycle counting in places, especially given that I was wrapping the serial polling routine inside the 4us HSync.
I then had a minor epiphany about using the hardware timer to handle it instead.
Serendipidously, the Sync signal is output on the pin associated with Timer1’s OC1A, meaning it was possible to do this without any hardware change at all. It wasn’t easy (I’ve had to use a different PWM method, using ICR1 as TOP), but it seems to work.

It’s nearly there, and has meant that I’ve freed up some time, especially around the start of the scanline and the USART polling routine… That’s allowed me to do…

RAM based character font
Re-defineable characters at runtime!
If the TellyMate has 2kb of SRAM available (M328p version only), then some of that RAM can be set aside to use as character data. Enough for 64 characters is available, and these are used instead of the last 64 characters of fontbank 0. At startup/reset, the ‘real’ fontbank 0 characters are copied into their RAM counterparts, meaning it’s an invisible upgrade until the user decides to redefine them at runtime.
A rather lengthy control sequence is required to redefine a character. Each character is defined by 9 bytes of data, each byte spilt into two lower-case hex digits. Unfortunately this long-winded format is required to avoid having to use a <NULL> character in the input stream (which is always ignored). If I’d written the TM again from scratch, I might have made the <NULL> character escapeable (using <DLE>)

The upshot is that it’s now possible to modify 64 characters at runtime (on a M328p based TellyMate).

Read character definitions
A control sequence to read the fontbanks has been written. This means that it’s possible for the user software to read the font definitions and use them to, for example, draw really big characters on the screen.
More imaginative people than me might find this useful.
It might be used with some simple(?) algorithms to produce ‘large’ characters with nicely rounded corners, for example.

When might all these be ready?
“Soon”. [edit: NOW!]
I’m currently finessing some of the code [so it’s not quite so ugly], then I’ll be able to run a full set of tests (on my 4 tried and true TellyMate test shields – M8, M88, M168 and M328p).
I’ve then got to write some documentation (what’s the point of adding these great features if they’re not documented in the user guide?!), write some exciting Arduino sketches to show them off, photograph them, and finally release it all.

Oh, I’m going to try and re-jig the user-guide so I can publish it as a PDF as well – possibly useful to users of e-books or wap-phones (or whatever the new things are).

[edit: 5 Mar 2010 15:10 – I’m now planning on calling this version 1.1.00, rather than 1.0.17. This fits better with the level of core code that’s changed]