Building A Computer From Scratch?
wackybrit asks: "The economy has given many of us the chance to go and work on some side projects. I was reading "Interview With Bill Gates" and have been inspired to create my own computer from parts, to write my own interpreter, and to really see if I could do what Gates and Allen did back then. With the Internet as a reference guide, it should be easy. However, things are not always so easy. I might be a techie, but I have no idea how memory chips hook up, how a data bus really works, and how to tie everything up. Do you Slashdot folk have any handy tips or resources I can refer to for building my own machine from scratch?" If you had a chance to build your own computer, would you make yours similar to existing designs (ala the PC, or the Mac), or would you do it differently?
If you can find a copy, "Bebop Bytes Back" (found here) is a wonderful book. Despite the childish title, the book will walk you through designing a computer, from scratch. An included CD-ROM provides you with all sorts of routers, simulators, and so forth, including a few IMSAI simulators.
Even if you don't actually build a computer, you'll feel like you've done when you make it through this book. Bebop To The Boolean Boogie and Designus Maximus Unleashed are also very good tutorials.
These books aren't going to teach you how to build with off-the-shelf components. They're going to help you understand bus-level logic and so forth.
From there, you may want to look into the How to Write Your Own Operating System page, which will help you get something running on the ahrdware you put together.
.@.
Huh? I suspect you didn't understand the question. You're thinking about plugging together a bunch of boards you picked up at Micro Center or George's Local Computer Shop or whatever. That is NOT building from SCRATCH any more than microwaving a TV dinner is cooking food from scratch.
The article is asking about designing a computer from the component level. That is, getting individual chips, etc. and working from there. For that, I'd recommend taking some digital logic courses, or studying the equivalent material online.
To really know what you're doing, at least well enough to build an early 80s-level computer, you'll need to know the following:
That's what I'd recommend. Also, go find schematics for those old machines (Apple ][ computers used to come with schematics, for instance), and study those. Good luck.
--JoeProgram Intellivision!
Use a 65816 or even a 6502. Don't plan on making this your main machine. Just go with what's easy to build, because you're going to make a hell of a lot of mistakes.
The advantage of a simple processor with a narrow bus and address space and with well-defined behaviors is that you're going to spend a whole lot less time debugging bad traces and similar basic mistakes, and more time getting at the real meat of the system.
You might also grab a copy of Embedded Systems or similar and grab one of the many microcontrollers advertised therein, with a decent amount of RAM and basic I/O controllers on the chip. Getting memory working involves a lot of busywork, connecting pins over and over and over and over and over.
Another user suggested getting the C64 programmer's reference manual and looking at the schematic in the back. This would be a good start. Look at at least a few reference designs before anything else. Most of the really old systems had complete schematics available so your average electronics repair shop could troubleshoot them.
First of all you should decide on exactly what you want to do. Do you want to design and build your own computer, or are you happy to build a computer that other people have already designed? I started building other people's designs (the first computer I built was a Z-80 kit computer) and managed to teach myself enough to tackle designing and building a simple 8-bit computer. 8-bit computers are reasonably simple to design and build and there's quite a lot of resources on the net available.
I would suggest that you look at sites like 6502.org, www.coprolite.com, Mark-8, POD 6502 or Grant Searle's collection of sites build your own UK101, build your own ZX-80 and build your own Jupiter Ace...
These are all quite good sites, and you can study their designs to learn how they work.
Hope this helps!
I have two of them. Both still work. Z-80 Wire Wrap Motherboards. The first one took almost 6 months to build. The second only a month.
IT IS VERY BORING TO DO. The first machine has almost 4,000 wires. I made 6 mistakes.
I got the plans from Kilobaud Mag. They did a three part artical.
Other posters who suggest that you do some studying are not unwise. Digital logic is straightforward when you have a background in combinatorial logic and a few other concepts up to about 25MHz. Designs with that level of clock speed can easily be wire-wrapped. Beyond that, you are going to have to start considering high-speed design issues when you route your boards.
One of the most rewarding things that I did as an undergrad was design my own SBC around a Motorola 68HC11 to run the mechanics for a 3-D scanning system that interfaced to an SGI workstation.
I really think that if this interests you, you should pursue it . The current 'state of the hobby' is now so advanced that it is somewhat mind numbing what can be done with some FPGAs and some software to layout a PCB.
The Motorola Dragonball family (or it's decendants) are an excellent 68000 core family of chips that are easy to use and you can design a modestly useful machine around them with a classic buss / memory mapped IO architecture without working up too much of a sweat.
Good Luck!Assuming you're doing this for the educational experience and not because you plan to end up with a powerhouse computer when you're done, your best bet will be to build something on the scale of the Apple II. The first bit of good news, the parts necessary to build it are dirt cheap now.
The first thing you need to do is to understand all the logic gates and how they work, and then work with the various logic gate chips (the 74 series) to get various simple experiments working. This will get you familiar with HOW the circuits are passing information around, as well as give you some experience with wiring the components together in a useful fashion.
After that, CPU's and memory are just largescale versions of your typical logic chips. Of course, its not as simple as it sounds and you definitely have your work cut out for you if you plan to do it completely from scratch. If you want to follow some old schematics your job will be simpler, but that might defeat some of the purpose.
As for programming, you'll be starting at the raw assembly level. You'll also need some type of interface to input and view data, as well as storage. In the beginning, you can use programmable rom chips to hold enough operating system information to get you going. Yes, you will have to develop at least a simple operating system.
Hope I didn't scare you too much. If you manage to get all that working, you'll be in a great position to move onto something more complex. Today's computers won't even seem that complex anymore, it will simply be a matter of scale.
-Restil
Play with my webcams and lights here
The poster recommends using a 6502. Consider using a Z80 as well. They have their own RAM refresh generator and some internal 16-bit features (e.g. registers pair to become 16-bit BC, DE, HL (16-bit accumulator)) and have a nice instruction set with loops, block moves, block compares, a separate I/O bus and an alternate register set (useful for holding system context), and two 16-bit index registers. The interrupt modes are pretty good too. There are plenty software emulators about that you try out your code on.
I'm out of my tree just now but please feel free to leave a banana.
...but it's worth to remember that "standing on the shoulders of giants" applies to anything related to the computing that actually works. One man making a big show out of making, of all things, BASIC interpreter for hardware made by others, doesn't mean that something decent can be built from scratch without serious learning and existing components.
I have seen second or third-year MIPT (Moscow Institute of Physics and Technology, in Russia) students building 8080 or Z80-based computers in 1987-89, and tweaking a lot of hardware and software in them, but I don't know if that can be really described as "from scratch" -- at that particular place there were two or three dominant base designs, with some simple "OS" written by different people, including a bunch of BASIC interpreters, editors, assembler, etc. (those things were too small to run CP/M). Making those things required mostly knowledge of electronics plus understanding of microprocessors, knowledge of 8080 instruction set, and some programming skills, not necessarily all in one person, and when I studied there I have seen, I think, about one of those things per four-people dorm room. Of course, that was in the FRTK (mostly EE) students' dorm, and at the time the most common computer that we used at the school was a russian clone of PDP-11.
Contrary to the popular belief, there indeed is no God.
This will walk you through analog and digital circuit design and construction, and culminates with the building of a 68000 based fully functioning computer with I/O, buses, the works.
I had the pleasure of taking an electronics course taught by Mr. Hayes, and building your very own computer is fun. It is also time consuming, complicated, and frustrating. You'll also need a moderate amount of equipment such as an oscilloscope, power supply, function generator, DVM, and the like.
Although they DID write BASIC and other language for a ton of machine, they didn't 'build their own computers'.
You're thinking of Jobs and Woz