Full Powder Toy Computer

  • massey101
    4th Feb 2011 Member 4 Permalink
    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:

    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:

    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
    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.
  • devast8a
    4th Feb 2011 Former Staff 1 Permalink
    I take my hat off to you. Excellent work.
  • massey101
    4th Feb 2011 Member 0 Permalink
    muhahahahaha the pupil has become the master, the cycle is complete XD
  • RedFlash
    4th Feb 2011 Member 0 Permalink
    Nice Work
  • Ace
    4th Feb 2011 Member 0 Permalink
    As your avatar states:"BRILLIANT"
  • Uberness
    4th Feb 2011 Member 0 Permalink
  • Ace
    4th Feb 2011 Member 0 Permalink
    Can I drop out, I've been a bit busy lately plus I'm clean off ideas.
  • Uberness
    4th Feb 2011 Member 0 Permalink
    Yeah, but post it on the thread.
  • massey101
    4th Feb 2011 Member 0 Permalink
    Update: I fixed a smal problem relating to the A->IN and the clock signal.
  • Cr15py
    4th Feb 2011 Member 0 Permalink
    Oh shit massey, you've got it down. You've made the next processor, congratulations.