Once again the dream project returns. Since i was very small i have always dreamed of making the "perfect computer" if one could ever exist, and this is precisely what this project is about.
One thing i hate is constantly having to try and find information on how these old beasts worked. Most of my information has either come from endless hours of internet searching, buying used books, hunting down books at the university or simply from buying old computers. This includes fixing them to work them out, and just selling them to get my money back afterwords.
If i could information that took me a month to find, for even a few people that need it, to find in a few minutes on here, then as far as i'm concerned this website it working perfectly. This is exactly what this project is for, once completed.
There has been an unbelievable amount of change since the last computer, once the first one was made i went into overdrive to try to learn as much as i can about how these machines work. Surprisingly by the time i went to university, i was shown the architecture of how a PIC Microcontroller, and so far it is almost exact to the ideas i have been having, so i'm definitely on a much better track than before.
below you can see a 3K ram card that i have made. To most now this seems like nothing, but this is made from spares i had laying around waiting to be used. It is actually 6000 TIMES !!! the amount of memory as the previous computer's RAM memory cards.
The case is a donor case from a vintage Sharp computer. The stock power supply seemed to kill the mother board by putting -5V through the 5V power lines. This just so happened to happen as i put it the just programmed replacement ROM chip, which was meant to be the cure to the original problem, to the almost working computer. Due to the fact that as I had already put money into it, and from how awesome the case is, I thought I might as well use what i can to build this dream computer goal.
After the memory card was completed, my next course of attention was the very peculiar, perfectly squared, quirky, "qwerty" keyboard. Rather than entering commands by hand, i am going to make a translator on my laptop to temporarily interface with an Arduino, to output my code easily onto the computer until it is finished and the new "BASIC" style language is completed. Using the keyboard i can easily test the computer and enter information onto the device vastly easier than using jump wires or tack switches.
Using a binary counter to sequence through the keyboard, the output from the counter and output form the keyboard go to a ROM, this decodes any key press and output a custom ASCII table - style binary representation of a character. I saved the 8th bit of the output of the EEPROM, to go live when a programmed key is detected, for easily detection of keys though hardware than constantly checking registers with vast amounts of code. This means the computer doesn't need to tell the card to set or clear bits of registers for scanning and simply can be programmed to react when that bit becomes live, or waits for a detected key to be pressed. This means that the computer can do other processing while this is happening, making the system possibly much faster and freeing up program memory as well as RAM.
Additional as this have added a register for different modes of the keyboard interface card. This includes directly halting the computer until a key is pressed or even waiting specifically for the enter key to be pressed in order to continue. This card has it's own clock to keep detecting the keys even if the computer is paused.
Because of the size of the computers Bus Sizes, a standard Arduino Uno cannot easily interface with the computer fully. This means that without other logic such as shift registers i cannot properly test the cards. My solve for this was to next make the program counter and program memory card. This will allow me to use a cassette or arduino to write the data to the computer and let it run of its own steam for maximum testing of the cards themselves, as well as testing the communication between them.
This card also includes registers, when used, that can force the program counter to a certain number. This means that I can have the computer use a "goto" command only using one like of machine code. This allows the computer to do if statements and loops on logic unbelievably easily.
There is a multiplexer included, controlled by another register. This allows not just data from the memory chip to goto the instruction bus, but also to the data bus when needed. This enables the computer to be able to directly put variable values from program memory to RAM really easily.
Next up will be the ALU for actual processing and a VGA graphics card to interface with a modern monitor, until i can get enough information to implement the built in screen.