Inspiration

The best way to predict the future is to study the past or prognosticate.

As ECS students, we witness technological breakthroughs on a nearly daily basis in this highly advanced society, and we learn about the most advanced techniques and the most innovative ideas on college campuses. But what can be said about the past? Computer technology found its foothold in the home thanks to the development of the microprocessor. Thus for this project, we explored the legendary 6502 8-bit processor. The MOS 6502, developed in 1975, empowered such devices as the Apple II, NES, Commodore 64, and Atari - which all had a significant global impact. And even today when it is no longer the shining star in the technology field, it is still being used in embedded systems and produced in millions of volumes.

What it does

The project is a prototype for a 6502-based computer with the core components of such a device. It is capable of being programmed using an Electronically-Erasable Programmable Read-Only Memory (EEPROM) chip. In the demonstration the output is used as input for a 16x2 alphanumeric display and reads out the name of its creators.

How we built it

The breadboard prototype is comprised of the following major components:

  • Western Design Center (WDC) 6502 (W65C02S)
  • WDC Versatile Interface Adapter (VIA) (W65C22S6)
  • ATMEL 256K (32K x 8) Paged Parallel EEPROM (AT28C256)
  • HITACHI 256k SRAM (32-kword × 8-bit) (HM62256B)
  • HITACHI Dot Matrix Liquid Crystal Display Controller/Driver (HD44780U)
  • And an assortment of essential Resistor/Capacitor and Logic components for timing and control.

With address space considerations made for simplicity of design, the system relays information over data and address buses shared by all of the devices on the board. This process is an integral part of computer architecture design considerations as hardware and design constraints collide. After wiring the components together according to the documentation and datasheets, I could focus once again on the programming aspects of this project. This proved as quite the trial to get from a design to a working device. After finding plenty of resources this project became much more practical. Breadboards are not well suited for such a complex project, but it proved invaluable to us to quickly jump connections as necessary to ensure the proper function and testing of the components. --Eric

For the software aspect of it, it was strange, not so enjoyable, but definitely a good learning experience. The assembly language was a very low-level programming language, each line is paired with a certain hardware/logic gate. Which is quite the change of pace from Python, Java, and even C++, so I found it difficult to take at first. For example, the simplest code "Hello World", the one line of code you will see in every coding tutorial, took around 80 lines. But after some playing around with nandgame, I have finally gained an understanding of low-level hardware programming. Furthermore, we were able to find a few Arduino examples that demonstrated the display device which helped immensely. --Jason

Challenges we ran into

The datasheets provided by the manufacturers proved essential in the both the build and design process as it is easy to disconnect jumpers when working. Building the clock circuit proved most effective in resolving conflicts in the hardware design and the prototype. --Eric

As mentioned previously, programming it was an "ancient" realm to me, at first I could not understand how the code is programmed and why it was programmed that way. Then I also tried to code in the lowest programming languages I knew: C and C++, but to my surprise, but no one else's, it's not that easy. In the end, we took priority in finding a way to control the display in assembly and to my surprise it caused us less issues than when we tried to use different compilers to build it. --Jason

Accomplishments that we're proud of

We successfully built a practical demonstration of the 6502 family of processors using no more than a few prototyping tools, a pair of pliers, and demonstrated some mad wiring and programming resiliance. We had our concerns about the scope of this project choice, but it grew clear that this was the best choice.

What we learned

As freshman, we became much more aware of the connection between the hardware and software development process, how to utilize prototyping techniques used in electrical work and software development, the true limitations in computational capability and the opportunities in developing it, and the wealth of digital information and how to harness digital systems.

What's next for 6502 legacy

We already planned to see what else we can do with this simple computer we built. We have already written a simple tic-tac-toe game that takes input from external add-on hardware, basic user interaction, a constant looping logic, and an automated AI opponent. And soon, we are adding Arduino to this formula, because they provide a great solution to problems we faced, and yet their environment allows us to compile in C++! Arduino would certainly make our work more efficient and more straightforward.

Built With

Share this project:

Updates