Wow, never thought I'd see this posted here! (I'm the creator of this project.) I thought about building my own CPU from relays and/or discrete logic (I met the creators of the Magic-1 and BMOW a couple years ago at a Maker Faire), but it would have taken way too much time and money, so I stuck with an off-the-shelf chip.
My development process isn't that well documented online, but soon I hope to start a blog where I explain how the whole thing works; address decoding, bank switching, assembly programming, etc. And then I'll write some games, add a Forth environment, hook it up to the internet, who knows. All my source code, schematics, and tools will be online sometime in 2011 if anyone's interested.
The 6809 actually has two stack pointers, S and U. S is the hardware stack (used for calls/returns) and U is basically another index register with dedicated push/pull instructions. A Forth implementation typically uses two stacks (the return stack and the parameter stack), this maps very well to the 6809's register set.
A couple of really good books I'd recommend (for the intel 8086) would be the "The 8086 Project book" and the radio shack "Understanding Digital Computers".
Those books are a great start to this kind of hobby.
For those of you in the Valley, you can find the book that started me on this project at the Santa Clara library. It's the first edition of "Microprocessor System Design Fundamentals" by Kenneth J. Breeding.
It's not a great book, but it's one of very few publications (apart from the databooks) that explain the 6809 architecture.
My library used to have the 8086 project book. When I was young I used to drool over the projects in it for hours but I never had the resources or the knowledge to build anything. I might have to check it out again now that I have both.
Yes it is. Got it on Craigslist, ridiculously cheap, with a full set of pods and manuals. Making a boot floppy, on the other hand, was a bit of a challenge. Thanks to WeirdStuff Warehouse for still selling 720K floppies!
Reminds me of this wonderful 3D rendering I saw yesterday, titled "16-bit memories"[0].
The artist is Toni Bratincevic, and you can find more of his work on his website[1]. It's the kind of art that makes me wish I had an ounce of artistic talent so I could illustrate my thoughts in such splendor ;/
Oooh. I used to have a Radio Shack Color Computer, and I loved the 6809. So much cleaner than the 6502. Two 8-bit accumulators, A and B, which can be combined as a 16-bit accumulator, D. MUL, which sets D to A * B. Four 16-bit index registers, all of which can be used interchangeably in any indexed-mode operation. (Two of them can be used as stack pointers.) A rich indexed mode, including constant offset, accumulator offset (A, B, or D), and offset from PC (allowing position-independent code).
The 6502, by contrast, had one 8-bit accumulator, A, and two 8-bit index registers, X and Y. X and Y were used differently: IIRC, you could do (in C syntax) * (addr+X) or (* addr)+Y, but not the other way around. No easy way to do position-independent code. (I suppose you could hack it with OS support, though, by providing a routine at a fixed location that reads the caller's address from the stack.)
This was referred to as an extreme sport in IEEE Spectrum Magazine and I cannot agree more. How then hell did this guy manage to debug any problems he may have.
A quick tip just in case this inspires anyone to far. I highly recommend that you think long and hard before you run out and buy a thousand relays with the intentions of following in this guys foot steps ..
My development process isn't that well documented online, but soon I hope to start a blog where I explain how the whole thing works; address decoding, bank switching, assembly programming, etc. And then I'll write some games, add a Forth environment, hook it up to the internet, who knows. All my source code, schematics, and tools will be online sometime in 2011 if anyone's interested.