
A Homebrew 8-Bit Computer - fogus
http://www.msarnoff.org/6809/
======
msarnoff
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.

~~~
colomon
Forth was my first thought when I read the article -- it seems like a perfect
fit for a project like this.

~~~
rick_2047
Can I get a pointer to why?

~~~
msarnoff
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.

Here's the first of a great series of articles from 1993 about implementing
Forth on 8/16-bit computers: <http://www.bradrodriguez.com/papers/moving1.htm>

~~~
monological
I read on your webpage that you go to HSC. I LOVE that place.

------
w1ntermute
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 ;/

0: <http://i.imgur.com/0gZzv.jpg>

1: <http://www.interstation3d.com/new_gallery.html>

~~~
flannell
Ahh, the memories. Thanks for the link, really nice picture.

------
metageek
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.)

------
xd
Nice project. I've got a box full of 8086's and support chips just waiting for
that rainy weekend to come around.

If you like this stuff, you have to check out the daddy of homebrew computing:
<http://www.homebrewcpu.com>

~~~
rick_2047
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.

~~~
xd
His HP1630A ;)

------
RiderOfGiraffes
You really want to see a CPU made out of relays:
<http://web.cecs.pdx.edu/~harry/Relay/>

Note, this is just the CPU - he uses an 8K CMOS RAM unit.

~~~
xd
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 ..

If still want a thousand relays, give me a bell.

