DIY CPU Demo'd Running Minix 313
DeviceGuru writes "Bill Buzbee offered the first public demonstration of the open-source Minix OS — a cousin of Linux — running on his homebrew minicomputer, the Magic-1, at the Vintage Computer Festival in Mountain View, Calif. The Magic-1 minicomputer is built with 74-series TTL ICs using wire-wrap construction, and implements a homebrew, 8086-like ISA. Rather than using a commercial microprocessor, Buzbee created his own microcoded CPU that runs at 4.09 MHz, and is in the same ballpark as an old 8086 in performance and capabilities. The CPU has a 22-bit physical address bus and an 8-bit data bus."
Pimp my Magic-1 (Score:4, Interesting)
I'm quite impressed that he went to the trouble of the cutaway side panel and the illumination [linuxdevices.com]. With all those switches and lights on the front we truly are one step closer to Star Trek technology.
Altair-a-like (Score:4, Interesting)
Doomsday paranoia (Score:5, Interesting)
Dan East
Re:Heh heh heh... (Score:2, Interesting)
Whats amazing is if he did it just for fun (Score:5, Interesting)
Re:Is there a kit version? (Score:2, Interesting)
If you're just starting out, get Don Lancaster's TTL Cookbook first.
I can imagine this guy's pleasure (Score:5, Interesting)
When I still was a teen, I used to spend full week-ends doing such nerd stuff.
I wrote a PC-compatible BIOS for my Sanyo-MBC550 (eg: here: http://www.seasip.info/VintagePC/sanyo.html/ [seasip.info]),
and was the happiest person of the world when I first got MS-DOS 5.0 to boot on it !
I also designed a simple microcontroller-based robot from printer parts
just for fun, and I was really impressed when I saw it turn around the
whole room for the first time (it could detect obstacles by sending
ultrasonic pulses).
Also, modding a 8088 motherboard to accept a second 8088 on the 8087 socket
was definitely fun. There was no cache coherency problems at that time. You
just had to invert A19 to make the second one boot at 512 kB and the bus arbiter
let them work in parallel. It was really cool to have an 8088-SMP
Those were project during which the time did not exist. I can imagine that this
guy spends his whole spare time on his project without noticing the night come,
then the day... Sometimes I wish I still had that much spare time!
Sincere kudos to him and great respect for his work!
Willy
Re:Self flagellation (Score:4, Interesting)
We do the same thing at my university... sort of (Score:3, Interesting)
Since our design lacks cache, the CISC architecture that this guy implemented may be faster (it does more per instruction which is critical when instruction fetch time dominates.
However, our RISC design is fully 32-bit (registers, ALU, address and data buses) and is pipelined (classic 5-stage fetch/decode/execute/memory access/register write). We also have to deal with hazards (resolved by forwarding or pipeline bubbles). We're even working on a VLIW version now.
Of course, all of this is vastly easier when you can use a high-level hardware description language. Hats off to this tinkerer.
Re:Doomsday paranoia (Score:5, Interesting)
Even a computer built from relays is still very useful if the alternative is pen and paper.
I've sometimes wondered how far back in history you'd have to go before the technology was incapable of making a reliable relay and a battery. Not such an easy thing, but in some ways easier than a mechanical computer like Babbage's difference engine. (The fine tolerances required for the machined parts gave Babbage so much trouble.)
Perhaps two hundred years ago, maybe more.
I suppose the technologically hardest part is drawing the fine copper wire. For the rest, people have been using molds with molten metal for millennia. Chemical batteries are not too hard to make if you have enough amphora.
I know this is ancient history... (Score:3, Interesting)
Re:Doomsday paranoia (Score:1, Interesting)
For people that have difficulty imagining, there's a rather instructive 1984 feature length movie that takes just such a premise as a scenario.
It's on Google video : http://video.google.com/videoplay?docid=-2023790698427111488 [google.com]
(for those with short spans of attention, it *really* kicks off at 45 minutes)
Re:To evade whitelists (Score:3, Interesting)
I wrote about this before here [slashdot.org]. It's an important issue but I think people aren't really listening. I think it all sounds a bit far-fetched, especially to techies. Central control of the Internet? The source of every packet being verified in transit to ensure it originates from a licensed "trusted" computer? Trusted status (and Internet connectivity) lost as soon as you install a non-approved application? But the technology exists, and so does the political and corporate will to implement it. All that's needed is a way to justify the costs and inconvenience to the public, and we already know what they're going to say. It'll have something to do with thinking of the children and the war on terror. The "trusted Internet" will be promoted as a salvation from online criminals, and the fact that it will have other useful side effects such as enabling central control of information distribution will not be mentioned.
I suppose it all sounds a bit like "OMG DRM the sky is falling!" But if we don't think about these issues and how we will prevent them from threatening our freedom, then we will just end up blindly accepting them. I think widespread use of free software is key because hardware and software monocultures are the greatest threat. If the trusted Internet is not compatible with sufficient computers, it will be prohibitively expensive to implement.
Vacuum tubes are easier than transistors (Score:5, Interesting)
The other parts aren't that hard. You have capacitors (just need sheets of metal foil and paper for between them), inductors (coils of wire), resistors (again, wire), and diodes (basically just a simpler version of a vacuum tube... i.e. without the grid).
If you look at some of the intricacies of medieval jewelry and such, I wouldn't think it's too much of a step to make vacuum tubes.
Like this: first, learn to make copper wire. Next, make a chemical battery. Then, use the battery technology to develop permanent magnets... Make a lot of money by selling excellent "artificial lodestone" compasses to everyone. Buy more slaves. Then, wrap the wire into a generator coil, along with the magnets. Using water-wheel technology, you now have a reliable source of (at this point alternating current) electricity.
Next, make diodes:
Learn to blow glass. Put two electrodes in a glass bottle with a heater coil on one of them, and also a valve connected to a tube. Fill the bottle with mercury, then using just gravity, you drain the bottle of mercury without letting air in: this can create a good enough vacuum to make the diode work. The only difference between this and a vacuum tube is that there's no "grid" between the electrodes.
The heater coils can be heated with the AC generator, and these diodes can be used to convert your electricity to direct current, enabling you to more cheaply produce magnetic compasses in order to fund your purchases of slaves.
Simply train them to make you more vacuum tubes, and you can make a computer! In the middle ages! Also, your diode/vacuum tube technology is the same needed in order to make light bulbs.
Really, in order to make a computer using medieval technologies, you'd need slave labor, or serfdoms (which is the same thing).
I mean, there's pretty much no way a man can be expected to make enough vacuum tubes to make even a simple computer... I'm thinking it'd take you thousands of tubes...
I knew a guy who did something similar (Score:3, Interesting)
The really odd moment was overhearing the hardware guy talking to one of the software guys, who was bemoaning the lack of a logical shift-right as opposed to a bitwise shift-right in the assembly code. The hardware guy sat down, drew a couple of things, and said, "yeah, we can add that with four gates." Wouldn't THAT be nice, to be able to spend two hours wiring, and add a new assembly instruction to your processor?
I wish I could find links: they're all members of the Denver Mad Scientists' Club, but I can't find anything on their homepage.
Re:Self flagellation (Score:3, Interesting)
I have designed a small microprocessor and implemented it with a toolkit I wrote myself in Common Lisp. This toolkit simulates functional elements like registers, latches, an ALU and a microprogrammed controller.
I worked 10 months on it, but much of that was time spent (re)learning to design circuits, documenting, project management, learning the intricacies of Common Lisp, and the SBCL and CLISP implementations. I also searched and bought some old books to get some more background information.
The speed of the processor core, compiled using SBCL, is 125kHz (yes, you read that right) on my 1800 Mhz AMD system.
After a long pause, I started this week again working on the visualisation, which should be a Python GUI application, which runs the real processor core program as a subprocess (not enough portable visualisation tools in Common Lisp).
Several of your ideas above presented are exactly my thoughts also. However, if you go to the utter core, you keep having a reliance on corporate America (even here in Europe).
How far would you go building your own computer, and what software would you run ?
The first step down from building a computer with an existing processor would indeed be to go to SS/MSI functions. However, these are also manufactured by big corporations and are (here in Europe) more difficult to find.
Will you wire wrap or etch boards ? Wire wrap reduces your switching speed, a double-sided etched board can probably get your switching speed to 8 MHz (see this example [mycpu.eu]).
What software will you run ? There are currently two portable compilers, gcc and lcc. Unless you really want to write things yourself, you will need a good software stack. Maybe an old Linux kernel can do. Network hardware ? Other peripherals ?
I have been thinking further. My current test architecture is 12 bits, but my toolkit can be used for simulation of widths between 1 and 32 bits. I have been able to draw a schematic implementation using LSTTL components, with a projected speed of about 6 MHz. There is only one path to a wider and faster architecture, and that is using FPGAs and so forth.
The advantages are that it is easy to add more hardware functionality and have higher speeds.
When you want to implement a processor using MSI/SSI components, you want to add most functionality using the microprogram or ordinary software. If you want to increase speed, you need to add more hardware. Using a modern FPGA, the design can be changed to move software coded functionality into real hardware.
Higher speeds come automatically with using the FPGA, but you still have to take into account the limitations of the printed circuit board, especially in the realm of memory access.
My ultimate, projected goal is be a design that can fit in an FPGA, together with a port of GCC, and an instruction set that is based upon two criteria : the simplicity of the processor design, and the optimized code that can be generated by GCC. Generated code should be both fast and short (to not take up much memory). For this, I need a whole lot of analysis of generated code for a hypothetical processor ISA.
However, I still have to do some more work on the current design, specifically adding an IO structure and interrupt handling. And also find time to publish my work so that interested people can use my code.
Re:Why not PCBs? (Score:4, Interesting)
This was made with these tools:
double sided copper clad board
two sheets of the cheapest Tesco's Value brand matte inkjet paper
an HP LaserJet printer (1200dpi)
a normal domestic household iron
some fine grit wet-and-dry sandpaper
etchant and tinning chemicals.
an inexpensive pillar drill and 0.8mm / 1.0mm bits to make vias and holes for through-hole components
The consumables for this (photo paper, cost of printing, the blank PCB) was less than a couple of quid. It is quite time consuming though, but I enjoy making the boards anyway. It's nice to achieve something that everyone else tells you can't be done.
I *hand soldered* the fine pitch surface mount parts. All you do is carefully line up the part, tack corner pins into position with solder, then get a blob of solder on the tip of the iron and drag it down the pins - then mop up the excess with solder wick.
The nice thing about making PCBs rather than wire wrapping is you can use surface mount components (quite a few interesting chips are only available in insanely fine pitch SMD packages), and make a reasonable ground plane.
Re:But does it run.... ? (Score:3, Interesting)
FTFA :
Additionally, it "supports user and supervisor modes,..."
From that alone, you should be able to deduce that it could in theory run a multitasking OS. Supervisor mode for when the OS needs to do things, user mode for userland stuff.
If it's got the grunt of an 8086 with a couple of megs of RAM, then it's up there with the machines on which the Internet was developed and considerably after (in computing generation terms) the machines on which multitasking and Unix-alike operating systems were developed.