Hacker News new | past | comments | ask | show | jobs | submit login
A Homebrew 8-Bit Computer (msarnoff.org)
98 points by fogus on Dec 15, 2010 | hide | past | favorite | 20 comments



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.


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


Can I get a pointer to why?


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


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


Amazing job. This is exactly what I'd like to do in a couple years. I will definitely use this as my inspiration / guide.


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.


Is that a HP1650A I spy?


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!


Being a sucker for retro I went for the green screen 1630A myself. Plus the 1650As go for hundreds of pounds here in the UK.

I like your twitter image .. I used the same one (but from my 1630A) :D (http://twitter.com/andrew_rose)


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


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


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


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


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.


His HP1630A ;)


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.


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.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: