Build my own computing system

Thread Starter

Kire

Joined Jul 27, 2012
12
What you have written makes a lot of sense.

There is nothing wrong with putting together your own system from scratch if it is the knowledge and experience you are seeking.

Any person who wants to be an expert at microcomputer systems should understand how a computer system is put together, how the architecture functions and how machine code and assembly language programs interact with the processor.

The problem is that there is so much to learn in so little available time.

So you have to make your own decision on what you can accept and understand just by reading and have someone else explain it to you versus having to experience it yourself.

As an example, you can be an expert analog designer using integrated circuit op-amps and not having ever built a transistor amplifier.

So the question is: Do you feel compelled to go through the complete route step-by-step or are you willing to accept just an understanding of basic concepts?

Sooner or later you will have to start accepting some things as given and not have to delve into the details. What you have to experience yourself and what you can accept will be up to you.

Putting together a complete microprocessor bus system is a daunting task and prone to frustrations and failures - yet, it can be very educational. On the other hand, you can just accept it and work in assembler on a single chip microcontroller.

For concrete recommendations, I suggest reading for starters:

M68HC05 Family - Understanding Small Microcontrollers (332 pages pdf)
http://www.physics.mcmaster.ca/phys4d06/Docs/M68HC05TB.pdf

If you feel you must get your hands dirty putting together a system I can provide some guidance, but I warn you that it will be a long slow battle.
I completely understand that I will need to accept many things, and cannot possibly learn everything.

My thought is I will have to pick and chose some battles along the way, but not every battle.

If you would be willing to guide me, I would be extremely appreciative!
 

MrChips

Joined Oct 2, 2009
30,810
To begin, we are faced with a few uphill battles:

1) Choosing a chip to work with. We will assume that all of these chips are now obsolete and you will have difficulty finding off-the-shelf components. The other possibility is to salvage components from old computer boards. Here are some choices
(with examples of where they were used in the past)

6502 (Commodore VIC-20)
6510 (Commodore C64)

6800
6802
6805
6809
68000 (Apple Macintosh)
68008

Z80 (CP/M S100 systems, Tandy TRS-80)

8085
8086
8088 (IBM PC)

2) Finding compilers that run on a PC to produce object code for the target.
This one is not so difficult. Much of the original software is still available on the web.

3) Finding UV-EPROMS and EPROM burners to program the memory chips to get you started. You still need to create some form of primitive loader or BIOS to enable you to download a larger app code into RAM. It is possible that you can do this using more recent FLASH memory chips instead of the UV-EPROM.

4) Locating peripheral chips such a serial communication interface (SCI) and parallel peripheral interface (PPI) chips that you will require. For the moment we will assume that there will be no floppy or hard-drive support.

In terms of finding chips and software support, your best bet would be to create a simplified PC clone using an Intel 8088 chip which would not be my personal first choice. If I had to create such a system for posterity sake it would probably be a 6809 system.

Keep in mind that this is an exercise in futility. Don't expect to be running Windows on this system.
 

mkbutan

Joined Sep 30, 2008
299
8085 8086 8051 8251
are the family members of the 80xx family
why dont you start from these chips
take any one dev. board (eg. P89v51rd2)
http://www.nex-robotics.com/product...ement-boards/p89v51rd2-development-board.html
http://www.keil.com/dd/docs/datashts/philips/p89v51rd2.pdf
you can have arduino raspberry pi also or any other
http://www.raspberrypi.org/
http://www.arduino.cc/
make one adder program to add two no.(as you r a programmer)u know how to do this.
then compile it.
program it
start from the basic chips then to Pvi (i7)

second part of the story
when c cord is converted in binary (ie.- 0's , 1's)
check with the data sheet of the μ controller what happens when any code/ signal fed in the controller or processor
 
Last edited:

Thread Starter

Kire

Joined Jul 27, 2012
12
To begin, we are faced with a few uphill battles:

1) Choosing a chip to work with. We will assume that all of these chips are now obsolete and you will have difficulty finding off-the-shelf components. The other possibility is to salvage components from old computer boards. Here are some choices
(with examples of where they were used in the past)

6502 (Commodore VIC-20)
6510 (Commodore C64)

6800
6802
6805
6809
68000 (Apple Macintosh)
68008

Z80 (CP/M S100 systems, Tandy TRS-80)

8085
8086
8088 (IBM PC)

2) Finding compilers that run on a PC to produce object code for the target.
This one is not so difficult. Much of the original software is still available on the web.

3) Finding UV-EPROMS and EPROM burners to program the memory chips to get you started. You still need to create some form of primitive loader or BIOS to enable you to download a larger app code into RAM. It is possible that you can do this using more recent FLASH memory chips instead of the UV-EPROM.

4) Locating peripheral chips such a serial communication interface (SCI) and parallel peripheral interface (PPI) chips that you will require. For the moment we will assume that there will be no floppy or hard-drive support.

In terms of finding chips and software support, your best bet would be to create a simplified PC clone using an Intel 8088 chip which would not be my personal first choice. If I had to create such a system for posterity sake it would probably be a 6809 system.

Keep in mind that this is an exercise in futility. Don't expect to be running Windows on this system.
OK, so I looked into some parts.

It seems that by far the most available processor is the motorolla 68000, there are several of them I can buy. How does that sound?

I looked into flash memory chips, and all I can find are the little flash usb or sd cards, I am not quite sure what I am looking for here.

Regarding SCI am I looking for something like an RS232, or an FTDI chip?
Also, I am not finding anything I can purchase for PPI chips, is there another name I should be looking for?

I completely understand that this is all about learning, not about a functional computer.

Thanks!
 

MrChips

Joined Oct 2, 2009
30,810
It seems that by far the most available processor is the motorolla 68000, there are several of them I can buy.
That comes as a surprise. I would have expected the 8085, 8086, 8088 and Z80 to be more available.

If this is purely for educational purposes, the 68000 (or 68K for short) is an excellent choice. However, if you are just starting out, an introduction on the 6809 would be an easier first step. You can build a simple system with a 6809 first and then move up to a 68000 if you so desire.

See if you can find a 6809. If not, I can let you have mine.

The next set of chips you will need are:

MC6821 - PIA - Peripheral Interface Adapter
MC6850 - ACIA - Asynchronous Serial Interface
MC6845 - CRTC - video controller could also be used for graphics

but there are variants that would be better choices. I will have to dig up the alternative part numbers for you.

There is no problem with the memory chips.

Atmel AT28C64B-15PU is an 8k x 8 EEPROM
HM62256 is 32K x 8 SRAM - which I have lots in stock.

Now all we need is a 6809 assembler and a way to program a 28C64 or similar EPROM.

I will show you how to put together the system.
 

DMahalko

Joined Oct 5, 2008
189
Most modern computer systems are abstractions built on abstractions. Arduino and the like may be programmable in C or BASIC or whatever, but that's not what they actually run.

It all ends up being converted to microprocessor opcodes at some point, generally referred to as "assembly language", to accomplish the task inside the microprocessor by shuffling bits around.

Opcodes:
http://en.wikipedia.org/wiki/Opcode

Machine code:
http://en.wikipedia.org/wiki/Machine_code

Assembly language:
http://en.wikipedia.org/wiki/Assembly_language



There's a lot of magic worked into the equation to try to speed things up. The compiler may have "optimizations" built into it by really smart people, where if it sees you are programming to do a certain task, it substitutes a specific known faster method to do that task.

Compiler optimization:
http://en.wikipedia.org/wiki/Compiler_optimization



The same abstracted magic of operation is true for the modern CPU itself, which may attempt to predictively run possible future branches of the program code on redundant parallel processing units inside the CPU, so the result is already available if your code uses one of those precalculated results.

CPU predictive branching:
http://en.wikipedia.org/wiki/Branch_predictor

This prediction, pipelining, and so forth is handled by programming designed into the CPU itself, referred to as microcode, and is the final abstraction layer below opcodes, before you get down to the very bottom with logic gates and so forth.

Microcode:
http://en.wikipedia.org/wiki/Microcode



But, you can cut through all that magic and optimization, and do direct assembly language opcode programming on just about any modern CPU available, if you really want to do that.

You don't need to grab an antique processor, because in the end they ALL just end up running opcodes on logic gates.



Though please note that what you can do with raw processor opcodes on an i7 is going to be exceptionally limiting in what the CPU can do, since once again you have to design all external I/O methods by hand and your code will not take advantage of any of the compiler "magic" developed over the last 30 years.

There isn't necessarily a requirement to use any BIOS or operating system with a modern Intel processor. You can run directly raw machine code on a ROM with an i7 if you want, though this also means you can't use any of the abstractions provided by a BIOS, OS, etc.

Also assembly language programming is generally not portable across different processor types like abstracted C code, because every CPU model has its own instruction set.



Modern assembly tends to be interrupt-driven, while the older stuff was often event-loop driven.

Modern processors can vary the clock speed or even stop it, to reduce power used, and wait for hardware-triggered interrupt alerts to do some work and then stop again.

Older processors ran the clock at a fixed speed all the time and would simply wait a specific number of cycles for external events to complete, twiddling their fingers all the while as the clock runs.

Event driven programming
http://en.wikipedia.org/wiki/Event-driven_programming
 
Last edited:

absf

Joined Dec 29, 2010
1,968
The 6809 is a good choice to start building a computer system. In fact I have a few 68B09 that I took from used telephone boards at my work place. I will make a simple SBC with just a few chips based on this mpu when I have more free time too. :)

Allen
 
Last edited:

jgunn

Joined Aug 7, 2012
4
Check out the Veronica project on Quinn Dunki's blog. Although she didn't start with a particular destination in mind, she's meandering along a similar path that you're looking to start.

http://quinndunki.com/blondihacks/?p=680

That's a link to the first post about Veronica, a 6502-based computer. On the left you'll see other posts about her building a backplane and the hardware choices she's made, various memory systems projects, getting video output... at the very least, it'll be interesting reading for you.

-Jeff
 

SteveHow

Joined Jul 2, 2012
80
I found this book very good. Its extremely detailed and written for the serious student.

It explains the CPU, then takes you through Addressing, Data Lines, Demultiplexing, Interfacing. In a very simple to understand way. Well written in my opinion.

It starts with the 8088, which is nice and simple.

This book covers all topics in detail, BIOS, Floppy/Hard Drive, Assembly language, Video.

It use to come in 2 parts and you can still find them in 2 parts a lot cheaper than this, now combined 2 part edition.
(That reminds me, I should finish reading them)

80X86 IBM PC and Compatible Computers: Assembly Language, Design and Interfacing Vol. I and II.
Muhammed Ali Mazidi (Author), Janice Gillispie Mazidi (Author), Janice Catherine Gillispie-Mazidi (Author)
 
Last edited:
Top