Hand-made Web Server, Built From 200 TTL Chips
ps writes "Bill Buzbee has constructed a hand-made CPU, complete with
hardware address translation, memory mapped I/O, and DMA, out of 200
74-series TTL chips wired together with thousands of individually wrapped
wires. By using a port of Adam Dunkels' uIP TCP/IP stack to the Magic-1, it
currently serves up live web pages
at an amazing speed of 3 MHz. See the website for photos and
schematics."
And as part of its stress-testing procedure, its been slashdotted!
This just goes to show the kind of amazing innovation that can still come out of a garage project. One guy working on his own can sometimes come up with ideas that the big guys like Intel etc are just too slow to be able to jump on. They're all fiddling around trying to get their buggy Verilog tools to work, while this guy just goes and wire wraps it in a few evenings. Bravo! I'll bet it takes the big semiconductor companies at least a year to catch up with this.
He posted his 3 Mhz server on slashdot.. i guess that by now that fine wire-mess is a melted wire-mess...
Post a link to a 3 MHz webserver on Slashdot? BRILLIANT!
Hmmm.
- Already slow even before hitting the front page: Check
- Millions of bored geeks have just dragged themselves into work: Check
Yep, there is no chance this will get slashdotted, but in case it does, I think there is a mirror working here.
I Am My Own Worst Enemy
P.S. Cool project Bill.
Hulk SMASH Celiac Disease
Magic-1 Stats
* Files served: 804
* Boot time: Sunday, June 05 2005 - 08:59:01 PM
* Current time: Monday, June 06 2005 - 07:05:14 AM
* Ticks mod 64: 56
* uIP start time: Sunday, June 05 2005 - 10:18:36 PM
* Clock speed: 3.0 Mhz
* OS Version: 1.33
* Slashdotted: Monday, June 06 2005 - 07:13:14 AM
It served up live web pages at an amazing speed of 3 MHz.
THIS is the type of stories that Slashdot should be posting! Cool engineering type stuff. Enough with the "M$" slamfest and what is Apple/Sony/Nintendo doing today crap.
In the time it took Bill Buzbee to create his homebrew CPU, I perfected the artificial vagina. Coincidently, it too is constructed out of 200 74-series TTL chips wired with thousands of individually wrapped wires. Now I ask: whose time was better spent?
Letter
And cackling "3 megahertz, mwahahahaaaaaa". He pressed the submit button.
Deleted
I can't figure out who is more humor impaired--you, or the person that modded your post "Insightful."
As I write this, the vast majority of the 38 comments are about /.'ing the machine, blah blah blah.
I, for one, think it's a neat project, and bow to Buzbee's superior geekdom.
Back then, we just had a Slash - AND WE LOVED IT.
ps writes "Bill Buzbee has constructed a hand-made CPU, complete with hardware address translation, memory mapped I/O, and DMA, out of 200 74-series TTL chips wired together with thousands of individually wrapped wires. By using a port of Adam Dunkels' uIP TCP/IP stack to the Magic-1, it currently serves up live web pages at an amazing speed of 3 MHz. See the website for photos and schematics."
Dennis Kuschel from Germany already did a similar project years ago. check his german page http://mycpu.dr.ag/ or his english page http://mycpu-en.dr.ag/ Dennis also wrote a custom OS with network stack and a c64-compatible basic interpreter for his homebrew-computer.
Magic-1 is a homebuilt minicomputer. It doesn't use an off-the-shelf microprocessor, but rather has a custom CPU made out of 74 Series TTL chips. Altogether there are more than 200 chips in Magic-1 connected together with thousands of individually wrapped wires. And, it works. Not only the hardware, but there's also a full ANSI C compiler for Magic-1 (retargeted LCC), and a rudimentary homebrew operating system. You can even telnet into Magic-1 and play Original Adventure.
This web site has served as the development repository for the project, and contains lots of pictures documenting the construction, as well as full documentation and diaries stretching back to the project's beginning in 2001. You can also find a few videos of Magic-1 running, including the first time it worked.
Start here, and then check out the Overview and Photo Gallery. To dig deeper, browse through Technical Info, Construction - and if you're really interested, you can even download Magic-1's full schematics.
Magic
In the summer of 1980 I celebrated my freshly minted B.S. in Journalism by blowing most of the cash I collected in graduation gifts on a TRS-80 Model 1 computer. Sitting on the floor of my apartment I fired it up, typed in the sample BASIC program and then "RUN".
"BILL", I responded.
Wow! I was blown away. This was just a machine, but I could interact with it using language that we both understood. As a Liberal Arts graduate with next to no technical background, I found this completely astonishing. Over the next year, I continued to play with my TRS-80 Model 1 while working as a journalist on a small-town Kansas newspaper. I decided that I really wanted to learn more about how computers worked, so I went back to college and picked up a M.S. in Computer Science.
Now, more than 20 years later, I find myself with an urge to touch that magic again by building my own computer from scratch. By "scratch", I mean designing my own instruction set, wire-wrapping a CPU out of a pile of 74 series TTL devices and writing (or porting) my own assembler, compiler, linker, text editor and operating system.
I'm calling this computer the "Magic-1", or M-1 for short. It's a one-address, microprogrammed machine with one-byte opcodes. It features 8/16-bit data operations, functioning on an 8-bit wide data bus with 16-bit addresses (mapped via 2K-byte pages into a 22-bit physical address space). Code and data address spaces can be shared or disjoint, giving each process up to 128K bytes of addressing. User and supervisor modes exist, along with hardware address translation, memory-mapped IO, and support for DMA and externally-generated interrupts. As far as components go, it is built entirely out of 74LS and 74F-series TTL devices plus modern SRAM and old bi-polar PROMs for the microcode store. I designed it to run at 4 Mhz, but missed a couple of critical paths - so ended up at 3 Mhz. Goals
OK, so I understand wanting to do your own CPU, buy why on earth are you doing it this way? I mean, why TTL - why not FPGA? And really, 16-bit virtual addresses in a 22-bit physical address space! What's the deal with that?
I guess any project should start off with some notion what of what you're trying to achieve. My high-level project goals are: bullet
Touch the magic. By this I mean to gain a deeper understanding of how computers work, and specifically computers similar to those of the late 70's and early 80's that first fired my interest. For this reason, the Z80 loomed large in my mind throughout the design process, and running with an 8-bit data bus and 16-bit addresses just seemed right. Although I'm largely trying to use parts that would have been current in that time, I'm not shooting for historical accuracy. My choice of
Where law ends, tyranny begins -- William Pitt
Blinky lights~Real Computer
10 years ago I worked in a mainframe shop that had upgraded from the 4381 to a 9121. Neither system had much "eye candy". That meant that the client didn't have much to show off in the "big window" of the data center when tours/investors were guided thru.
Unless Tex was working.(and thankfully he almost always there). He was the client's rep that ordered paper by the semi for us & was able to bend Standard Register to his will with a mere phone call(one semi load of paper a year will usually do that, we did multiples)
Tex would lead the tour to the window and happily point to the elderly IBM network controller(box was actually blue on the sides, model forgotten) with all its blinking status leds and tell em "there is the computer".
They'd make "pretty lights" noises and continue along, Tex would grin from ear to ear & we'd have to wait till they left before we could run outta air laughing.
Tex dreaded the times anyone talked about network upgrades.
Come on guys, this is 3,000,000hz! That's like, wow.
Modern computers come with like 2.4 or something. This is wAY WAY faster, no way will we slashdot it.
ECL is the non-saturated logic family.
Mea navis aericumbens anguillis abundat
This is a prime case where the submitter should have : 1) warned the site's owner, 2) made arrangements for a mirror or coral cache or bittorrent whatever. Because you KNOW this bitch was gonna go down like a three-year-old trying to stop a stampeding herd of elephants.
And the alledged "management" of slashdot should have at least warned the poor sap before unleashing this upon his little corner of the web.
That said, this sounds uber-l33t, and I'm planning to check it out once the smoking rubble is cleared away.
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
The real sad thing is that from a traceroute, it looks like he's hosting the site from his personal DSL connection. So, he probably can't even contact anyone for help or to even complain.
Hope he doesn't need to use the Internet any time soon.
DRM-free, beeyotch!!!!
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
Points missed: pretty much all of them.
RTFA, he states that he knows he can use FPGA's etc. but doesn't want to. He WANTS the nostalgia value of wiring everything from bare basics and, short of wiring millions of transistors together, has done it. It was a personal project that was never supposed to have any value except that he can say "I made that".
Personally, I'd love to have the money to start on something like this myself. It's something to show the grandchildren... this is how we used to do it and this is one that **I** made.
It never hurts to forget where we've come from. You might as well ask why we're bothering to keep BBC Micros, ZX Spectrum's, Commodore's, PDP's in museums. This wasn't a "practical" project, it was a personal one.
Also, I think it's a good thing to propogate the knowledge that is needed to build something manually from bare components rather than rely on a manufacturer of FPGA's, etc. to still be making the same components in another 50 years, the software to program them still be around etc.
I've often pondered on what would happen if we had, say, some sort of nuclear war that put all the current methods of manufacture out of action. At the moment, everything is built on having a certain amount of technology available to build upon to fabricate the "latest" technology.
When those layers are removed, you will have to go back to basics. This is why I was also against the scrapping of coastguard listening stations that would listen out for ordinary AM-radio morse code SOS signals. It's the lowest common demoninator that can be easily fabricated from the lowest-level components.
We shouldn't forget where we've come from in case we ever had a need to get back from there!
Is this an Amish version of a web server or something? I know the Amish insist on doing things the hard way, such as plowing a field with a horse. Why would a person choose to build a system today using old tech such as this? Must be some religious thing or perhaps a new Amish Sect? Compish? Or is it simply Stupish? ;)
Sure, a 3 MHz TTL device isn't going to compete with anything comtemporary, particularly a commercial microprocessor.
True, nobody is going to buy one due to the labor cost to build it.
But can anyone think that it was built to set the world on fire? Has nobody but me ever built something simply for the love of doing it, or the knowledge gained from figuring out how to do so? There's more to building something (whether it be from a kit or personal design) than the usefulness of the end result.
I'm not calling a hoax yet, but 3MHz seems awfully fast for wire-wrap. Do any of the old salts out there know what the limiting frequency would be for a wire-wrapped board?
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
So, if a guy wanted to build a more "modern" homebrew CPU, what options are there? Are there any decent CAD tools that don't cost a thousand million dollars? And once a layout is done, is there anywhere you can get just one single chip made for a reasonable price?
/. doesn't need to check everything, but when the site specifically says it's running on a 3MHz box at home...
# cat
Damn, my RAM is full of llamas.
You are 100% missing the point of this exercise. It's more art than technology. It isn't about speed, it's about fun, and beauty, and designing something yourself, without the need for the latest-and-greatest. It's much easier to buy a fish at the store than catch one yourself, but I don't see fishermen stopping that any time soon.
-Jesse
Nothing says "unprofessional job" like wrinkles in your duct tape.
You should have been in our place - we were struggling to get parallel processing running on 286 processors (hmm, yes..) and we were very much an 'Intel Shop' (many of us wondered who from Intel was 'sleeping with the MD'!). At one very key developers meeting involving Senior Management, one brave engineer was heard to remark "Everything we're trying to do could be achieved almost instantly if we went to Motorola Processors" - you could have heard a pin drop. Management totally blanked the comment and on we went stabbing away at the design until we had a 4-CPU card working - just in time for the 386 launch...and off we went back to square one...
AT&ROFLMAO
Why should a person with a strong EE background have serious knowledge of HTML? Do physicists know everything about chemistry?
200 TTL chips for the CPU, $60
Wirewrap boards to put the chips on, $20
Wirewrap wire to hook everything up, $20
turning on your webserver, only to be slashdotted - priceless!
you could buy microcontroller and ethernet ready chipset for it for less than the cost of 200 ttls and you'd get much better performance with that rig
Way to miss the point! Since his intent was to delve into the lowest levels of the CPU logic (all of which is sealed up in a glob of epoxy in your suggestion), I'd say your solution has a performance of 0.
As for being a waste of money, that depends on the value he places on what he has learned (including insight you have to experiance rather than just read for) vs. the cost in time and materials for the project.
Ah, I see you've been deceived by the "little-endian" heresy. As all right-thinking people know, both bits and bytes are numbered from the "big end" first. [In truth, I got used to big-endian numbering when doing lots of work on HP's PA-RISC architecture, which used big-endian bit numbering. So, when doing my own CPU I decided to make it big-endian as well.] As far as the blue wire, I started out trying to use different colors, but found that only a few kinds of wire would work reasonably well in my cut-strip-wrap gun. And, it only came in blue. I did make an exception for clocked signals where I could and used red wire (but I only had a limited amount of it).
Seriously, that's pretty much what they were, just piles of TTL logic chips and strung-on-wire graphite beads for memory, all on pizza-box-size boards that slipped into a big chassis. You needed at least three boards, one for the CPU, one for memory, and one for I/O. The first minicomputer I worked with was a Data General Nova 1200. 1200 as in 1200 nanoseconds PER INSTRUCTION. That's a whopping 833 KHz. And a stunning 8 kilobytes of memory. It was amazing what we got that thing to do, though.
You can tell you're getting old when people start reproducing the obsolete crap you're happy as hell to have left behind.