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. ( I can't find the instructions because there is no search function on the forums but it will be here soon)
So Basically: -A,B,C stand for registers -Store stands for storage/ram -con stands for constant --> places the pre into the post thing -ADD/SUB user Register A+-B->C -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 Jumps to a new spot in the program (only works with Hard Drives) -IN is the input so A->IN will take register A and put it back in in the place of a constant.
It will be easier if I could link you to PCL which has more detailed instructions but there is no search function any more.
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:
1. 101 - Write RAM 2. 110 - Read RAM 3. 011 - Variable 4. 010 - Display 5. 001 - Jump
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 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 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 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.
See forum post for more information or to ask questions https://powdertoy.co.uk/Discussions/Thread/View.html?Thread=3710