TheLastMillennial wrote:
I don't know off the top of my head an easy way to do it, but I found several tutorials here
Keep it up! now if I only had Minecraft...

ps. don't question my search engine. Razz
more like DuckDuckNo

Just Kidding Razz Thanks!
CalcMeister wrote:
I've divided this project (making a redstone powered Turing Machine of sorts) into different stages that I'll tackle in steps. Here's a list of what I'm working on:
Not started
In progress
Complete

Creating the program memory (waffle ROM)
Creating temporary memory register
Hardwiring command instructions
Input
Output
Repeat
If
End
Quit
Hardwiring looping and line advancement tools
Connecting command arguments to specifically clocked serial ports
Parallel to serial converter (and vice versa)
Connecting command arguments to temporary memory
Creating command line interface

Current step: Hardwiring command instructions

Protip: don't have "if", "repeat", "while" and "end" commands; there is a reason real CPUs aren't like that. Instead have "compare", "goto" and "goto if compare was true/false".
c4ooo wrote:
CalcMeister wrote:
I've divided this project (making a redstone powered Turing Machine of sorts) into different stages that I'll tackle in steps. Here's a list of what I'm working on:
Not started
In progress
Complete

Creating the program memory (waffle ROM)
Creating temporary memory register
Hardwiring command instructions
Input
Output
Repeat
If
End
Quit
Hardwiring looping and line advancement tools
Connecting command arguments to specifically clocked serial ports
Parallel to serial converter (and vice versa)
Connecting command arguments to temporary memory
Creating command line interface

Current step: Hardwiring command instructions

Protip: don't have "if", "repeat", "while" and "end" commands; there is a reason real CPUs aren't like that. Instead have "compare", "goto" and "goto if compare was true/false".
Interesting. I'm designing this on the fly with no real idea what I'm doing, so I'll take your word for it. But what makes this approach better than that of a looping machine?
Well, image this piece of code:

Code:

if foo
dostuff
end
doOtherStuff
while bar
do more stuff
end


Image if foo is false; the computer will run it like this:

Code:

if foo //Foo is false, search for next End statement
dostuff //Not an End, ignore
end //End, execute normally
doOtherStuff //Execute
while bar //Bar is true, run loop
do more stuff //Execute
end //Go up until you find the previous while

You are going to have a hell of a time making it run correctly, especially if you have two loops nested within each other. Razz

Now, this code, which will act exactly the same:

Code:

1:compare foo to 1
2:goto line 4 if false
3:dostuff
4:doOtherStuff
6:compare bar with 1
7:goto line 9 if false
8:do more stuff
9:goto line 6
10:quit

The above code will run faster(if done correctly), and you won't have to worry about the complexity aroused by nested loops or anything.
Quote:
Now, this code, which will act exactly the same:

Code:

1:compare foo to 1
2:goto line 4 if false
3:dostuff
4:doOtherStuff
6:compare bar with 1
7:goto line 9 if false
8:do more stuff
9:goto line 6
10:quit

The above code will run faster(if done correctly), and you won't have to worry about the complexity aroused by nested loops or anything.
That's an interesting idea, as it would remove the complications of nested loops indeed. Of course, the ol' Goto taboo would be broken, but it's whatever. To do this, I would have to construct the following parts:
    Modified line advancer that can interpret Goto information
    Boolean readable/writable bit for conditional Gotos
    Modified comparison apparatus (Similar to the Repeat and If comparison hardware)
I'm not sure if I'll implement this exclusively, because much depends upon what's already in place, but I'll add these new commands in my remaining command slots.

P.S. This will most likely push me over to using 4 bits of each command for command specification.[/list]
Since I've started this project, much has been changed about where I'm going with it. I love c4ooo's idea of "compare", "goto" and "goto if compare" commands, and i'll be implementing then exclusively due to how they lessen complications caused by looping. I'll experiment with what works best when I'm finished with the interpreter in its entirety. Try to ignore any specs I have posted previously, as most of them have been edited. Here's what I hope to be a final copy of the interpreter's specs:

    ► 40 bit (5 byte) commands structured as follows:

      + bits 0-4: Command specification

      + bits 5-7: Boolean arguements

      + bits 8-23: Argument 1

      + bits 24-39: Argument 2

    ► 100 codable lines

    ► 16 addressable parallel ports

    ► Line advancement mechanism that queries the hardwired Goto and End commands

    ► One byte of built-in non-addressable temporary memory

    ► One bit of built in non-addressable boolean temporary memory

    ► 10 codable commands, structured as follows:

      + Input: Takes input from a specified parallel port and stores it in temporary memory (byte). Arg 1- Port to query; Arg 2- null

      + Output: Outputs temporary memory (byte) to specified parallel port. Arg 1- Port to send to; Arg 2- null

      + Quit: Resets temporary memory (byte) to specified data, and resets the line advancer to line 0. Arg 1- Byte to set temporary memory to; Arg 2- null; Bool Arg 1- Whether to reset temporary memory (byte); Bool Arg 2- Whether to reset temporary memory (bit)

      + Goto: Resets line advancer to specified line. Arg 1- Line to go to; Arg 2- null

      + Compare: Compares two pieces of data and stores the result in temporary memory (bit) 1=Equal 2=Not Equal. Arg 1- Parallel port to compare to; Arg 2- Second data point; Bool Arg 1- Whether second data point is a parallel port or a constant 1=Constant 0=Parellel Port

      + GotoIf: Resets line advancer to specified line IF temporary memory (bit) is equal to 1. Arg 1- Line to go to; Arg 2- null

    ► Command interpreter with hardwired command information; can read command and send necessary information to other parts of the program interpreter

    ► Time coordinator that prevents premature actions from different components

P.S. Still open for suggestions about Bin to Dec if anyone has a genius solution!
Can we start a new topic about how to use command blocks for things like wierless redstone? Wierless music?
I'm totally interested.
Thanks bruh
SeeGreatness wrote:
Can we start a new topic about how to use command blocks for things like wierless redstone? Wierless music?
I'm totally interested.
Thanks bruh
The beauty of this project is that I'm not using ANY command blocks. In fact, I've never placed a command block in my life. You should create that topic and ask for help, because I don't know anything about command blocks.
Here are some long-awaited screenshots!
Many of these components were constructed before I knew exactly where I was going with this, so there will probably be some vestigial wiring when this is all said and done.


Most of what I've built so far


Memory Waffle
The pink and purple lines will soon be parallel ports. The different colored lines (red, white, green, cyan) correspond to segments of each command, which are stated in an above post.


Binary Incrementor
I originally built this as a brute-force way to turn decimal into binary, but I found a better way. It may be used for something else in the future though.


Full Adder
Yes, I know it isn't as well optimized as the other ones out there, but I was building this from sheer logic gate knowledge, not online cheats. There will probably be a dozen of these, with subtraction included, in order to create a usable math chip.


Input Area
I built this area a while back when the "programmable" aspect of this computer was not yet solidified. I will still probably use it, but disconnect it from the bussing it was linked to and instead use a parallel port.


7-Segment Display and Converter
This 7-segment display panel can show 4 digits, take an input similar to BCD, and output operation symbols. The wiring in the back is the BCD to 7-seg converter.


Non Volatile Memory (4 Bytes)
I don't think I'll be needing this, but I keep it around. There are 4 bytes of input and one reset button, which when pressed will write the input to the output of the memory and keep it that way until reset is pressed again. Utilizes the repeater signal locking function.
Just think, 100 years from now you will be able to make a Minecraft computer that fits inside of the palm of your hand. Razz Anyways, great work! Looks more complicated than anything I've seen in Minecraft before. Keep it up!
TheLastMillennial wrote:
Just think, 100 years from now you will be able to make a Minecraft computer that fits inside of the palm of your hand. Razz Anyways, great work! Looks more complicated than anything I've seen in Minecraft before. Keep it up!


Yah. With a little bit of effort, one can install the ComputerCraft mod!

This is amazing, keep it up!
You make me want to do redstone again :nostalgia: ;(
Yeah. I actually have started back up a little, and have a (huge/rube goldberg like) sextuple (6) piston extender.

I also have a way to theoretically make it as long as I can (inf expandable) so expect a project made out of that thing Sad
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 2 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement