So I was visiting my parents the other day.  They've been going through old boxes of stuff, simplifying a little, and had stumbled across the first home computer we bought: a Commodore 128.

This was the state of the art when I was in sixth grade, I think: a 1mhz 8502 processor (2mhz if you disabled the 40-column video chip, which shared bus bandwidth with the processor), and an extra Z80 for running CPM, with 128k of RAM, and a 5.25" floppy drive which could hold about 360k (double-sided, at that).  Video was either the old C64-style 40x25 character display (or 320x200 pixels if you wanted graphics, with some pretty severe color restrictions), or the new 80 column chip (with its own memory, so you could use it while running the processor at 2mhz).

IIRC, at least part of the system was written by Microsoft (I think there was a "Microsoft Basic" banner when you turned the thing on).  I probably don't have coworkers who worked on it, though--anyone who was at Microsoft that long ago would be extremely rich and most likely retired; Bill Gates would've been around, and maybe Steve Ballmer, but the next in line after them is Mark Zbikowski (look at the beginning of any Windows PE file--see the "MZ" signature?  That guy.), and I think Mark got there after that.

So I spent the better part of a day re-reading the programmer's reference manual, just completely inhaling it.  It was great (although my wife and parents were less amused; I told them that if I didn't like computing machines to this extent, I probably wouldn't have gotten into kernel development).  It's amazing how much the perspective of twenty years of experience with other machines makes a difference; I think I understand the thing a lot better now.

Of course, reading it, the idea came to me that I could easily write an assembler for the thing... maybe a C compiler... and it hit me that implementing multiple threads and a single-priority round-robin scheduler would be pretty easy... I wonder how hard it'd be to write an MSIL->8502 translator, and implement just enough of the CLR to run something interesting...?

I probably won't get around to all that; I have other fun side projects I'd rather work on.  But I still really like the machine, for all of its limitations; it's fun to write assembly for a processor with 8-bit registers, a 16-bit hardware address space, addressing 128k of RAM.  It's fun to work with a machine where the processor logic diagram actually ends with the physical pins; it's so simple.  It's like writing a sonnet; the constraints make it more challenging, more fun.