Slashdot Mirror


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?

12 of 68 comments (clear)

  1. Good book by .@. · · Score: 3, Informative

    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.

    --
    .@.
  2. Re:The road most travelled by Mr+Z · · Score: 5, Informative

    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:

    • Combinatorial Logic: This will teach you about logic gates, boolean arithmetic, binary numbering systems, and all sorts of digital logic that isn't changing with respect to time.
    • Sequential Logic: This will teach you how to build state machines and deal with circuits that change state versus time. This builds on the first step.
    • Microprocessor Interfacing: This teaches about common computer structures, such as data busses, address busses, clocks, and how everything hooks together. A one-semester undergrad course should be sufficient to design something along the lines of an IBM PC XT class machine, if you're good.

    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.

    --Joe
  3. Go simple by Snowfox · · Score: 4, Informative
    Go simple if you're building your first one.

    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.

  4. Starting places by arb · · Score: 4, Informative

    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!

  5. It fun by jackb_guppy · · Score: 3, Informative

    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.

  6. Consider some stufy material. by muonzoo · · Score: 2, Informative
    The MIT 6.270 project course has been running for a long time. When I was an undergrad, they has a very cool design for a Motorola 68HC11 based SBC that was perfect for motor interfacing and various small scale projects. These days, the same architect (Fred Martin) has a modernised version of the original 6.270 SBC available at HandyBoard.com and there are variants of the original SBC with it's documentation here.

    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!
  7. Start small (and simple) by Restil · · Score: 5, Informative

    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
    1. Re:Start small (and simple) by Confuse+Ed · · Score: 2, Informative
      re:
      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.

      Whilst you're reading up on this you'll probably find that most electronics text books include chapters on computers.

      My personal favourite "The Art of Electronics" by Horowitz and Hill walks you through an example of incorporating a 68008 (I think, I haven't actually got my copy of it available at the moment) into an instrument (ie. specialized rather then general purpose computer) they construct in chapter 11.

      If you want to start off really simple (think more of really simple programable calculator kind of level) then something more along the lines of a PIC 16fxx microcontroller from Microchip is a good starting point, as you can have something up and running very quickly with just a breadboard, the microcontroller and a handful of discrete components (and maybe some LED's for output) using a PC to program the device, and then slowly add to the base design with some external memory, and LCD display, a numeric keypad for input, and so on ...

  8. Re:Go simple - processor by morbid · · Score: 1, Informative

    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.
  9. Gates may be good at taking credit for others... by Alex+Belits · · Score: 5, Informative

    ...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.
  10. One book to buy.... by erf · · Score: 3, Informative
    "The Art of Electronics" by Horowitz and Hill and its companion book "Student Manual for the Art of Electronics" by Hayes and Horowitz.

    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.

  11. Gates and Allen by qurob · · Score: 2, Informative

    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