Turing Complete

Turing Complete

View Stats:
Lockenheada Jul 19, 2022 @ 10:32am
Wire Spagetti is where you lost me
I read the Level text about 20 times over now and I just dont get it.
The shown scematic is more than cryptic. In the level text it says that we want to add the arguments but at the first error message it tells me Argument 7 actually means read from input? it also says 7 in the level text is double double occupied by In- and Output? Doesnt that mean that once I activate the input the output also activates and always reads the input? I dont really know how to differencaiate between read and write etc etc etc.

Its never even really explained what linking comontents to the programm means and what it would mean in real life. What is linking? Why do I need to link the components now?
Then it says right at the end when you think you understood it all "The value of an argument [...] refers to one of these palces:"
but before it said that arguments are for providing a value for operations like ADD OR etc int the ALU


I really powered through as someone who never had any contact with programming/gates or CPU architecture and treated this as a puzzle game / learning program but at this level I feel like people like me are finally thrown under the bus once and for all and its just expected to have certain knowledge I do not posess.

Sure I can look up the solution or get help from others but I feel like this game should focus on teaching people without backround in the field about these concepts and at this point in the game it kind of fails.... rather severe.

Guess Im getting eaten by aliens ;)
< >
Showing 1-5 of 5 comments
UnsignedRobin Jul 19, 2022 @ 10:51am 
Originally posted by Lockenheada:
Guess Im getting eaten by aliens ;)
Ahh you're fine - you won the competition when you beat the Maze :)

Originally posted by Lockenheada:
Doesnt that mean that once I activate the input the output also activates and always reads the input? I dont really know how to differencaiate between read and write etc etc etc.

The new instructions have 4 Bytes. 1st Byte tells you what to do, 2nd and 3rd Byte is the source (or the arguments) and the 4th is the destination. So when there is a 7 on the 2nd or the 3rd byte, it means that you read from the input. If there is a 7 on the 4th byte, it means, that you activate the output.

A full instruction can look like this:
const REG2 2 const REG3 3 const IO 7 add IO REG2 REG3

It means: Add the value from the input to the value in Reg2 and store the result in Reg3. The "IO" is either input or output - depending if it appears on the 2nd/3rd spot (then its the input) or if its a destination and it is at the 4th spot.

Originally posted by Lockenheada:
What is linking? Why do I need to link the components now?
You can link a component/register to your program so that you see its value in the assembler window. To do that you have to click the red symbol on the programm component (next to the yellow 'Edit' Symbol). When you do that, there will be white/blue numbers on the bottom of your program component. If you click the numbers, you can connect it to a register or an input/output pin. If the error message tells you: "linked component 6 should point to the counter" then you have to connect the white number 6 with the counter component, so that you see it during programming.

Your point is very valid. This could be explained better, but i hope you will give it another try :)
Last edited by UnsignedRobin; Jul 19, 2022 @ 10:54am
Lockenheada Jul 19, 2022 @ 3:31pm 
Originally posted by Emeser:
The new instructions have 4 Bytes. 1st Byte tells you what to do, 2nd and 3rd Byte is the source (or the arguments) and the 4th is the destination. So when there is a 7 on the 2nd or the 3rd byte, it means that you read from the input. If there is a 7 on the 4th byte, it means, that you activate the output.
I dont understand like.... the sequence I guess? if we have two source addresses and pull them in the same action doesnt that jumble up the bit value on my 8bit bus or even create shorts?
As far as I understand it all these four byte imputs interact with each other on like the same "tick" because going top to bottom would trigger the OP first and that would be counter intuitive if we wanted to use a ALU to add something if we did the ADD action before we pulled values from arguments that follow on bus 2&3.
Also do I have to change the Decoder adresses in my ALU? because it says like this level we only do OP 0 which is ADD but my ALU is currently wired so ADD is 4. Or do I decode the first byte and hardwire the 0 output to a 8bit Maker on the 4 and put that into the ALU?

As you can see I have like dozens of questions and the game does not adress one of these.
Originally posted by Emeser:
A full instruction can look like this:
const REG2 2 const REG3 3 const IO 7 add IO REG2 REG3
[...]
I dont understand the code in relation to what you wrote. As far as I undertstand the first 3 are only definitions. so the last line is actually "add 7 2 3"
Why does the add command come first, how would the ALU know it needs to get In and Reg2 and then put it.......... oh i think I just understood a bit more what you mean
Add = !st Byte = Operation
IO = 2nd = Source 1
Reg2 = 3rd = Source 2
Reg3 = 4th = Destination

What I still dont understand is how this all functions simultaniously. It must be simultanious otherwise the Operator wouldnt make any sense to be read first. Am I supposed to work with 4x8bit bus lanes?
Originally posted by Emeser:
[...]
So all linking does is like show the bit values in the programming window?
BoredFlamingo Jul 19, 2022 @ 4:17pm 
Originally posted by Lockenheada:
I dont understand like.... the sequence I guess? if we have two source addresses and pull them in the same action doesnt that jumble up the bit value on my 8bit bus or even create shorts?
Yeah, the puzzle here is You'll need at least two input buses and mechanisms to determine which of your input buses your sources go on
As far as I understand it all these four byte imputs interact with each other on like the same "tick" because going top to bottom would trigger the OP first and that would be counter intuitive if we wanted to use a ALU to add something if we did the ADD action before we pulled values from arguments that follow on bus 2&3.
The tick is long enough for all of your circuits to activate (baring some weird design)
Also do I have to change the Decoder adresses in my ALU? because it says like this level we only do OP 0 which is ADD but my ALU is currently wired so ADD is 4. Or do I decode the first byte and hardwire the 0 output to a 8bit Maker on the 4 and put that into the ALU?
Technically speaking, I don't think there is any requirement to use the opcodes the game suggests, but it's probably more straight forward to re-wire your ALU.
I dont understand the code in relation to what you wrote. As far as I undertstand the first 3 are only definitions. so the last line is actually "add 7 2 3"
Why does the add command come first, how would the ALU know it needs to get In and Reg2 and then put it.......... oh i think I just understood a bit more what you mean
Add = !st Byte = Operation
IO = 2nd = Source 1
Reg2 = 3rd = Source 2
Reg3 = 4th = Destination

What I still dont understand is how this all functions simultaniously. It must be simultanious otherwise the Operator wouldnt make any sense to be read first. Am I supposed to work with 4x8bit bus lanes?
I expect you'll find yourself in a situation where multiple pieces of your circuitry need to process the bytes from the instruction. A 4x8bit bus lanes to carry the instruction around is probably overkill though.
So all linking does is like show the bit values in the programming window?
Yeah but this capability is highly useful when debugging your assembler.
edit:
I guess I should add that in Wire Spaghetti the Program block is already giving 4 8bit outputs, the real choice you are making here is where and how to decode the instruction.
Last edited by BoredFlamingo; Jul 19, 2022 @ 4:28pm
Lockenheada Jul 19, 2022 @ 5:01pm 
Before
https://i.imgur.com/C61MhPq.png
After
https://i.imgur.com/Ln8k1PO.png

Before and after your guys' explination. I still think the game does a poor job easing players into this new structure of computer. There should be at least be one or two levels before that where it shows you how to isolate 2x8Bit busses to calculate in one action. That would only require 2 bytes for the two arguments that get put into an adder and that to the output.

This is quite a hefty jump from the everything previous and very confusingly explained ingame
BoredFlamingo Jul 19, 2022 @ 5:55pm 
Wire Spaghetti is a hefty jump. I wouldn't mind a few more levels in between, or even an third intermediate architecture between OVERTURE and LEG that isolates either not having dedicated registers for your ALU or multi-byte instructions, so you're solving one new complexity at a time.
< >
Showing 1-5 of 5 comments
Per page: 1530 50

Date Posted: Jul 19, 2022 @ 10:32am
Posts: 5