9

I recently got me head round the basics of how a CPU works after watching Ben Eaters 8bit bread board computer series of internet videos. Now I am hooked and i want to take my understanding further.

Is there windows based software that simulates the building of a computer? For example, a system based on the 6502, where I could start with learning the basic of the chip and build up to creating a NES or C64. Although the hardware part is important, the ideal for me is to understand practically how to go from the relatively simple operations of a CPU to communicating with peripheral and generating text and graphics.

Thanks for and tips and ideas.

closed as too broad by mcleod_ideafix, cbmeeks, JAL, Leo B., Tommy Jul 7 '17 at 0:20

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Welcome to Retrocomputing Stack Exchange. Please read the tour if you haven't already. I think what you're looking for is a combination between a circuit simulator and a generalised computer simulator (e.g. MAME). This question might be better suited to Software Recommendations but there are processes for moving it if that's the case. – wizzwizz4 Jul 3 '17 at 6:13
  • Your question sounds a bit like you were looking for a combined IC design / hardware CAD / electronic circuit simulation / CPU simulator / computer emulator software jack-of-all-trades. While each single piece might be available for specific CPUs or hardware designs, there is no such thing as an integrated toolset end-to-end or even only a data flow between such components so that you could build your own tool chain. – tofro Jul 3 '17 at 17:35
  • 2
    A lone 6502 isn't going to teach you anything as it can't do anything by itself. You're going to need a ROM to store your program, RAM so your program can do something non-trivial, some sort of output device so you can see your program doing something and some sort of input device so your program can do something useful. You don't build a computer by adding these things one a time. You put them all together at once so you have a working computer and not a pile of useless parts. – Ross Ridge Jul 3 '17 at 19:03
  • 2
    I'm voting to close this question as off-topic because this question seems to be more related to electrical engineering vs. retro computers. The 6502.org forums might be a great place to ask this question because they have a section devoted to 6502 simulation and emulation. – cbmeeks Jul 5 '17 at 13:07
7

There's a book The Elements of Computing Systems: Building a Modern Computer from First Principles which takes the reader through the steps in designing and building computers from the logic gate level to the high level language level. The processor you build is actually one of the authors' own design, and although a 16 bit processor is quite simple.

The reason I mention it is that the book uses a number of software tools to emulate the various components it discusses. In particular, it has an HDL simulator which will allow you to build complex circuits, including, e.g. processors from virtual logic gates. This is, I think what you want. The software is all available for free from the book's associated web site

http://www.nand2tetris.org/software.php

One problem you'll find once you've implemented your 6502 is that it will be dog slow. Once you get to that point and want to start using (for example) 6502 assembler, it's better to switch to a software emulator of which there are many.

Edit

Having reread your question, I think my recommendation might be starting at a lower level than you want. I'll leave the answer here anyway, just in case you are interested in how processors are designed from the ground up.

  • Thanks Jeremy. This looks to be exactly what I was after :) – Terryb Jul 3 '17 at 18:04
2

A possible approach could be starting with a logic simulator (like logisim). When it becomes all to slow, emulate your architecture in your favorite programming language.

A second approach could be building your system from scratch using a FPGA.

Not the answer you're looking for? Browse other questions tagged or ask your own question.