Unless the varied gods of the Internet are really having a bad day, you're looking at this page because you searched for "Homebrew Computers," "Kit Computers," or "Crazy Ramblings" from an ex-computer science major. Regardless of how you happened to get here, Welcome!
Computers have always fascinated me, starting with the rare glimpses of fantasy machines in TV and movies dating to my formative years in the 1960's and early 1970's. My first impressions of a computer was (of course) a big box with blinking lights, spinning tape reels, punch cards, and green-bar printouts. The first machines I used were the UNIVAC 90/60, the Wang 2200, and the IBM 360... There was very little about these machines to disabuse me of those initial impressions. The UNIVAC was in a traditional fishbowl computer room, "Authorized Personnel" were the only folks who could touch the machine itself. The IBM mainframe was literally hundreds of miles away, accessed using a teletype. The Wang was the only machine you could actually touch, and that was shared with hundreds of other users. My high school classes in computer science included a student key for after-hours building access, since you might not get machine time until 02:00 AM.
By the early 1980's, I got my own machines: a Commodore VIC-20, the TI 99/4a, even a tiny Timex-Sinclair 1000. In 1985, my doting mother bought me one of the original Apple Macintosh computers to replace the first three I "lost" in a tornado that struck our home on May 31, 1985. I learned programming in FORTRAN, COBOL, BASIC (yes, it does cause a certain degree of brain damage!), 6502 Machine Language, High-Level Assembly Language, and eventually C and C++. I used many other computer systems including the DEC pdp-11 series, various VAX minicomputers, a host of systems running DOS and Windows of various flavors. I finally made my way to Linux, NetBSD, and even tiny embedded systems. I started constructing kit computers -- the Micro Kim from Vince Briel, the Replica-1 clone of the Apple I, a PiDP-11. I even built a few pocket calculators along the way.
Now it's time to homebrew a machine at a very low level. That's what this particular web page is for. Building a complete system from the ground up. It probably won't be pretty. While I can probably knock together a fairly simply machine, it's not going to have many of the modern features your commodity desktop has, but I'll honestly be able to say how it works. I might even make it somewhat useful.
For a computing device to be useful, it needs to be able to accept input, process that input, and produce output from that process. The classic I-P-O Model looks something like this flowchart:
An example of the input subsystem might be a keyboard, or a punch card reader. The process block might be anything from a simple arithmetic operation to a complex logical operation. The output could by a video display, a printout, or even a bank of lamps. Most early computer systems utilized a punch-card reader for input, processed that input in the "central processing unit" (CPU), and printed the results of that processing on a printer. Today, our computers use a keyboard and mouse for input, process that input within a "microprocessor," and generate a video signal to display that output. Yes, this is terribly over-simplified but the concept is important to consider. I'm not going to re-invent the wheel. A keyboard will still generate most of our input in the homebrew system. There WILL be some sort of display for output; and I still consider a printer (or similar device creating persistent hardcopy output) an absolute necessity.
In the MicroKim computer, you can see all these basic parts of a computer system, and quite a bit more that we'll get into as we move forward:
The primary source of input here is the keypad -- just simple switches representing a total of 16 symbols for the hexadecimal digits 0-F and control keys to command the functions of the computer. The processor here is the 6502 microprocessor on the bottom left portion of the circuit board. The primary output is the 6-digit hexadecimal display on the upper right portion of the circuit board. Other chips provide for program storage (the EPROM, fourth up from the bottom on the left side), working memory (the RAM chip, third up from the bottom), and interfacing with other devices (the second chip up from the bottom, directly above the Microprocessor.) Other chips on the board serve to buffer data between the major components, exercise control over how the circuits function, and convert signals between various devices that the computer might be connected to. An important connection, that allows you to connect a video-display terminal, is seen at the top of the board and is labeled the "RS232 Serial Port." A serial interface is terribly useful, and allows us to more easily communicate with the computer through a conventional keyboard and video display.