“Bill Buzbee offered the first public demonstration of the Minix OS – a cousin of Linux [I beg your pardon?] – running on his homebrew minicomputer, today at the Vintage Computer Festival in Mountain View, Calif. Magic-1, built with 74-series TTL ICs using wire-wrap construction, implements a homebrew, 8086-like ISA.”
I’d classify this as more interesting than any of the latest “umpteenth-power” processors I find on the market. While not as sexy, there’s something wholesome and more entertaining with knowing how every bit of your system works, and how to change it.
Now that’s a glutton for pain. Why not something like Z80 or 68k, if one wants to keep oneself in the microcode realm?
I guess it’s a matter of taste, after all. All I can say is that I’d never use 8086 for inspiration.
(Unless the article is regarding ISA as the instruction set mnemonics, and not the actual machine code representation.)
All IMHO, of course.
Actually, the first thing that came to my mind after seeing the Magic-1 block diagram was the almighty Z80
I think it started out as a Z80, that’s what he mentions, but then he morphed it more towards the 8086. Most likely just to get the architecture closer to what something like Minix was designed to work with.
I think the novelety of going in both directions to get code running is interesting. Basically he had a blob of software (minix) that he wanted to get running, so he hacked botht the software AND his CPU to get it to work.
Can you imagine how nice it would be when you ran in to a problem with the chipset to fix that instead of have to write code around it?
That’s surprisingly clean for a DIY job. Hats off to the guy who did that. I’d like to know what he spent on it.
What’s in that box represents my worst nightmare back in tech school.
That’s surprisingly clean for a DIY job
Maybe if they showed the other side of the boards where the wire-wrap is it would not look so clean.
Maybe if they showed the other side of the boards where the wire-wrap is it would not look so clean.
Like this?
http://www.homebrewcpu.com/Pictures/alu_12.JPG
and these:
http://www.homebrewcpu.com/photo_gallery.htm
Honestly, it’s still a pretty clean deal
(edit: added quote at top)
Edited 2007-11-05 00:14
If you’re going to build a CPU and computer from scratch, why use and off the shelf OS?
To show everyone that you got the specs correct.
He did write his own OS. It was only recently that he ported minix.
This project would be no less interesting if he really had just used minix from the beginning. It simply isn’t practical to undertake a project at this level of technology without relying on the work of others. Very long chains of specialized skills are needed to design/manufacture/program a working computer, and the particular set of skills that Buzbee synthesized to build this system by himsef is already quite uncommon.
The point of a project like this isn’t to show off to the world that one man is a technological island any more than it is to create a fabulous new consumer product. Bill Buzbee is now smarter than he was before he started the project. The machine itself, the software that runs on it, and the opinions of onlookers are just secondary artifacts. One could easily buy a better computer anywhere, but the insight he must have gained can only be earned.
I don’t read that as an accusation at all. It’s for people who haven’t heard of Minix to have some idea of what it is, and it’s a pretty good choice of analogy: they share a grandfather in Unix.
This guy’s pretty amazing. I was beginning to think these low-level skills had been lost now that the technology pyramid is built so high and the goal is to keep heaping things on top. I would love to have such a thorough understanding of technology.
Grab yourself a copy of ‘Code’ by Charles Petzold, sure it’s from Microsoft press, but the contents has nothing at all to do with them. It will explain exactly how a CPU works right down at the low level, and will very quickly get you to a place where you could think about building a project similar to this, though a not as fancy. After that, ‘Inside the Machine’ by Jon Stokes will give you a more abstracted understanding of how modern processors work. I really can’t recommend Code enough, just get it, seriously!
If you look at his site.. He’s spent months hacking the old Minix code-base to his homebrew architecture.
It’s a great accomplishment, but it’s a shame he didn’t implement paging in time for the demonstration.
It does certainly bear a resemblance (intentional?) to some of the PDPs (especially the LSI-11), but I don’t think I’d call it a minicomputer. For me, that term brings to mind images of the VAX and AS/400.
Personally I think it’s a much cooler project to restore one of the minicomputers that this thing resembles, like Robert Krten has: http://www.parse.com/~museum/pdp8/pdp8i/index.html
To each his own, of course, but Harry Porter’s electromechanical monstrosity is still my favorite homebuilt computer. The convenience of SSI and MSI TTL ICs be damned, he built a tribute to the venerable Harvard Mark I (okay, he used an SRAM IC… I can’t blame him for that):
http://web.cecs.pdx.edu/~harry/Relay/index.html
“Personally I think it’s a much cooler project to restore one of the minicomputers that this thing resembles, like Robert Krten has: http://www.parse.com/~museum/pdp8/pdp8i/index.html “
I like these ones: http://www.parse.com/~museum/misc/index.html
I’ve resored robotron computers (built in the GDR) for a museum in Schwerin, northern Germany, many years ago. This really was fun, and hard work, because you barely find information material on this very special topic, but still very interesting. Toying around with relay based “computers” was cool, too. If you wanted some real basics (not BASIC), the U880 based Polycomputer 880 – http://www.robotrontechnik.de/index.htm?/html/computer/poly880.htm – and the Lerning Computer 80 – http://www.robotrontechnik.de/index.htm?/html/computer/lc80.htm – were a good point to start. But they are not x86 and don’t run a specific known OS such as Minix.
When I get some time, I’ll try to revice an ancient dec VT-101 terminal that’s still waiting in the cellar, waiting for resurrection, waiting for better days… can wait some more… 🙂
To build a system using either (transistors or relays). Though I doubt that my system would have MMU type features. Its instruction set would be more along the lines of a 65XX or 6809.
Of course the two big problems building a system like this are design tools and cost. I haven’t seen a 74XX in ages. Just looking at a suppliers site though I see I can buy both 4000 CMOS and 7400 TTL range of components.
I don’t know what sort of design tool lets you snap together 1000’s of transistors and put them in a block so they appear as like an IC and then you can go on and work with another block. No I have not done any research into these tools, maybe when I have a job again.
I don’t know what sort of design tool lets you snap together 1000’s of transistors and put them in a block so they appear as like an IC and then you can go on and work with another block. No I have not done any research into these tools, maybe when I have a job again.
ever heard of pen&paper?
ever heard of pen&paper?
Yeah I thought of that but I don’t have a wall big enough in my house to put everything on it. And I would not use pen I would use a pencil since it it easier to erase.
I have tried to do some prototypes but the models just get too complex too easily. I was hoping there was an automated way of plugging all those thousands of components together.
See you start with a few relays and you can make a simple gate like a flip-flop or nand. then you add a few gates together to make a more complex system. Then eventually you might have something like a 8-bit buffer or a 8-bit shifter. Then you add those components together to make say the ALU. But then you think some of those components are redundant and you try to use Boolean Algebra to clean it all up. So how many relays does it take to make a register?
Of course all the while you have to take into consideration the speed at which all these components communicate. If a buffer does not open for writing while some other component is sending it data then the system just won’t work.
The solution to this problem is to write a simulator that calculates the time it takes for each component to respond.
Logic Works has a software simulator, which you may find handy.
http://www.logicworks5.com/
“ever heard of pen&paper?”
Problem to be solved by recursion:
In order to make a running CPU, I need a running CPU.
🙂
Does doing it without CAD make me nerdier or what
Although, I must say, if I went about a project like this, I would start with a Xilinx Spartan fpga development board and code up the microprocessor in Verilog.
Might be less “homebrew” that way, though.
In case anyone wants to try this, these guys are selling the best development boards I’ve seen:
http://www.xess.com/
I recommend the XSA-3S1000 to start with, and the XST-3.0 as an add-on to the former to add some peripherals. They are $200 each. Don’t forget the software ($1 for the cd) and power supply (<$10).
BTW, even if your goal is building the hardware from 74xxxx, the FPGA development boards make some good hardware debuggers.
Early hand crafted computers were done with LSI gates and wire wrapping, today, the easy path for hobby CPU design is using FPGAs.
He deliberately chose the hard path, like climbing a mountain ( which is enjoyable ) instead of using a tunnel.
One could also do funny things with FPGA CPUs, a Lisp machine project would be great as well.
I did wire wrapping TTL before I became a chip designer, I really would not ever want to work at that level again. Signal conditions are just awefull in TTL, a few MHz is doing well. A better approach if low level gates is a must is to use CMOS 7400 equivalents or better use ECL, both will have much better signals and ECL can also give pretty good speeds too.
Also using FPGAs is still a really good idea, prototype in the Spartan or Cyclone on one of the widely available edu boards and if you can get the architecture to work then redo the correct logic in gate level logic of choice. One might expect to reach logic speeds closer to 50-100MHz and use SDRAM memory. Several homebrew FPGA cpus run GNU tool chains and some can boot Linux.
That allows you to use a modern language like Verilog or VHDL and when high level RTL code works, rewrite the code to use lower gate level primitives to the same effect. The synthesized gate logic in Luts will then be much closer to wired gates on a board. The tools are essentially free to use from Xilinx, Altera, Lattice etc when low end target FPGAs are used even if you retarget to logic gates.
In the hobby world of true homebrew computers though it is rare to see someone with the deep software skills this Transmeta guy has, most of these machines get to run far less code.
Also ofcourse the Z80 and early 8086 were pretty close cousins both being revamped 8080s, 1 in the 8 bit direction, the other 16bit. And this guy has an inside track on the 86 architecture nuances so it is hardly surprising what he produced!
BTW, almost all the early micro processors were designed with pencil & paper tools with only a minimal use of CAD. Even the 68K and 8086 were done that way IIRC. These were usually prototyped with TTL or CMOS gate chips although the silicon for them arrived before the wirewrap proto’s even worked so their usefullness was limited. After that it was CAD all the way.
On Lisp, there is a project to redo the Symbolics design in FPGA.
Projects like this, and the recreation of things like the Altair, the Apple I, and other 1st Generation Personal Computers are great!
I can think of the guys name right now, but there’s an incredibly smart man who built his own 6809 system and wrote his own OS for it and offers both for free from his website (plans to build your own system, not the actual system itself).
He built one into a wooden desktop formfactor, and a second one into a Wooden Compaq-Portable type box.
I envy people like that who have skills I don’t.
I have to say that the early 80’s were a lot more exciting time in Personal Computing than it is today.
I liked hot-rodding my TRS-80 Model I and Color Computers to add things like Turbo Speed, Lowercase, Composite Video, etc…
I had to deal with wire-wrap boards in the 1970’s. I found that no two wire wrap boards are alike, they are extremely fragile, and though they are supposedly prototypes for production PC boards, they never operate the same way and always require mods to my driver code. I was pleased when I went to work at a company that went directly from drafting to PC boards, they were so much more reliable.
The main thing is the toggle switches and the LEDs as a user-interface. I can still remember the PDP-11 and the Imsai 8080.