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.
If you want to do this today, you might consider designing your own CPU and implementing it with an FPGA. Look into the Forth processors; they're about the minimum useful machine you can build.
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
I'm all for Microsoft bashing, but this is assinine.
BG and PA came from privileged backgrounds, but so have plenty of people who didn't manage to build multibillion empires.
Sure, their family's wealth may have given them an extra cushion (as well as a chance to play with some swell DEC's in high school), but their achievements were on their own in ways that money didn't buy.
In business, Bill Gates may be an asshole, but he also has a legitimate claim as a pioneer in personal computing. The Gates and Allen did write the first programming language for the first personal computer.
And Linux Torvalds wrote linux when he had barely a pot to piss in, while living with his mother and sister.
Money didn't buy any of these people's success.
evanchik.net
- It seems like everybody was using them in the mid 80s to early 90s (sun, amiga, macs, next, just off the top of my head). This means that a) they're probably easy to design around, b) they've probably got LOTS of public-domain documentation, and c) they're cheap
;-) - The initial versions of SunOS as well as all the versions of NeXT ran on m68ks, so I know it's possible to run a Unix-like OS on them.
- I've been told that m68k assembly is comparatively easy and straight-forward to learn, and I'm going to have to hack at least SOME asm to get an OS going on my theoretical creation.
- Did I mention they're cheap?
;-) At maybe five bucks per good chip on ebay, I can afford to fry quite a few of them
Of course, I'm just a software dude (actually, my formal training is in chemistry, I just sort of fell into programming), so if any hardware people are in the audience hopefully they'll correct any stupid assumptions I've made.News for Geeks in Austin, TX
...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.
There are really two issues with what you want to do. First is digital logic and computer design, the second is hardware design and practice. The last word, "practice", is an especially tough nut. One other poster talked of wire-wrapping and messing up 6 connections out of 4000. I would suggest splitting this project into two phases, to be tackled in no particular order.
One Task: Learn about hardware construction on some simpler projects. Learn by building from working schematics.
The Other Task: Learn about computer design with simulation. Go get Icarus Verilog. (http://www.icarus.com/eda/verilog/index.html) There are microprocessor netlists available, get one. (Don't have a URL handy.) Learn to simulate it, learn Verilog, (or VHDL) then start designing your own.
Put the Two Together: Once you know how to work with hardware, and once you have a design that will simulate correctly, start thinking about building it. Besides, this is the way it's done in the Real World. Nobody comes up with a schematic, implement it in hardware, then begin debugging, any more. You don't start to touch hardware until you have a reasonable belief that your design will work, from simulation. Even then, there will still be plenty of room for debug on hardware.
The living have better things to do than to continue hating the dead.
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.