Ok I'm not sure how much I am going to be able to fit into this because its a big piece of work!
I have recently finished designing a full computer for The Powder Toy, This is no joke either. I will go through each component separately. One thing to not is that the computer does not have a hard drive, thats for you to add how you like, there will also be a Language for it ect... basically it still needs some add ons. Here it is:
(C)Massey101 All right belong to Massey101, limited rights are also shared with Powder Toy Technology
The PTT DX-4 (Computer) This computer currently features a keyboard instead of a Hard Drive (the two are interchangeable) This keyboard has all of the commands on it (Jump will not work because there is no where to jump to) The Language on the keyboard is very similar to PCL. The PCL Language can be found here.
So Basically: -IF will set the test bit (located top right in the CPU) to 1 or 0. If a Jump is placed after it will only jump if the bit is 1. -Jump (1 arg) Jumps to a new spot in the program (only works with Hard Drives) -S-OUT (1 arg) sends the argument to S-OUT, currently this is a display. -A->IN will take register A and put it back in in the place of a constant. EG: A->IN;S-OUT. This will place register A into the argument for S-OUT
The PTT 4004: 4bit CPU The CPU is the larger box to the right, it has 2 inputs and 2 outputs. The bottom one is command IN, This is where the information from the South Bridge is passed into the cpu, it is decoded and hooks up the functions. The one above is a mid clock input it is used when reading from the ram. This goes directly to Register A and B. The Next one Data Out. This is used to send any information to the North Bridge. The next one up is the command out, this tells the north bridge what to do with the data its been sent.
The Entire CPU is 4 bit and does not stray from this like I have seen some peoples. IF you would like more information regarding any particular parts of the cpu please ask and make it more specific I cannot go into detail about the entire thing.
Also the Following command are used for Command In. 1. 0001 - Constant -> A (Arg) 2. 0011 - Constant -> B (Arg) 3. 0101 - A -> RAM (Arg) 4. 0110 - B -> RAM (Arg) 5. 0111 - C -> RAM (Arg) 6. 1001 - RAM -> A (Arg) 7. 1010 - RAM -> B (Arg) 8. 1101 - ADD 9. 1110 - SUB 10. 1111 - Equal to 11. 1011 - JUMP (Arg) 12. 1100 - Variable 13. 0010 - Display (Arg) 14. 0100 Less Than 15. 1000 Greater Than
The North Bridge The Northbridge get commands in from the top right. Based on the following:
It then redirects the Data based on these commands to its required location. Most of it is taken up with the A->IN and Ram Control. The Ram Control Saves the thing that needs to be sent to ram for a whole cycles so that its ready when it gets the position. The A->IN is very similar except it holds it for longer before Sending it to the Command IN.
The SouthBridge The Southbridge uses a counter to increment the position in the Hard Drive by One each clock cycle. It can also be set to a specific number by the Northbridge which enables the ability to jump through the program.
The Ram The Ram is very simple with just a decoder on the right to specify the position and Read/Write. It uses SWCH to save the bits and is split up into blocks of 4 bits therefor one byte is four bits not eight in this situation.
The Ports The Ports so far are the standard Powder Toy Technology Ports that will be up on the wiki in a short time, these ports are designed so that another port of a similar type will be compatible.
The Hard Drive Is currently non existent :D It would be good if someone could make one, it would be very similar to the ram but one problem. 4 bits only allows a maximum of 16 words in the hard drive. I have thought of two work arounds but please feel free to give your ideas:
1. Have jumps handled by the motherboard using two bytes for the command. This would require a new Southbridge to be designed to check for the jump command and take total control if it finds it.
2. The Hard Drive is split into "sectors" where each sector is 14 bytes and 0000 will jump down a sector and 1111 will jump up a sector. Using this method about 42 bytes could fit inside the hard drive using my current RAM design. However this makes it difficult as the File System will not support files above 14 bytes.
The Graphics Card and Display The Display was created by Powder Toy Technology and credit goes to UBERNESS. It first decodes the binary input ad is transferred to the second part of the Graphics Card which converts it to a seven segment display form.
EDIT: Jump commands are not working but since there is no Hard Drive this is not a problem.
If you want help with anything above please ask and I will assist.