Heres my solution.  I was more shooting for brevity of code than cool
stuff...  Like previous posts, it uses instruction-level addressing,
so jumps are divided by two.

http://pastie.caboo.se/6639

<snip>