BasketMC

Signal Amplifier, Episode 1: TIS-100

  • Published on

Episode 1 is the first look at TIS-100. After the game's welcome box suggests printing the reference manual, Basket works through the first four segments on the segment map: Self-Test Diagnostic, Signal Amplifier, Differential Converter and Signal Comparator. All four pass by the end, though three of the result screens show more cycles than the friends' scores listed beside Basket's.

Manual first

The "Welcome to TIS-100" box strongly suggests printing the manual. The commentary says it is printed and read. Self-Test Diagnostic asks for a value from IN.X written to OUT.X, and the same from IN.A to OUT.A. The left column of nodes already holds "MOV UP, DOWN" in each, so the X side works as given. Basket routes the A side through the right-hand nodes with lines like "MOV UP, LEFT", "MOV RIGHT, DOWN" and "MOV LEFT, DOWN", around red nodes marked "Communication Failure." Every test passes in 83 cycles.

The Self-Test Diagnostic screen running test 1: input and output number columns on the left, and a grid of nodes where each working node holds one MOV line such as "MOV UP, DOWN" or "MOV UP, LEFT", between three red nodes marked "Communication Failure"

Doubling a number

Signal Amplifier reads: "Read a value from IN.A, double the value, write the value to OUT.A." The node under IN.A gets "MOV UP, ACC", "ADD ACC" and "MOV ACC, RIGHT", and the commentary explains that adding the register to itself doubles it. Three more nodes carry the value down to OUT.A. It passes in 160 cycles with 4 nodes and 6 instructions, while the friends' scores sit at 84 and 86 cycles. "So my cycles are a lot higher."

The Signal Amplifier screen after "Test 1 passed in 160 cycles", running test 2: the top node under IN.A holds "MOV UP, ACC", "ADD ACC" and "MOV ACC, RIGHT", and three nodes in the next column pass the value down to OUT.A, with the output column filling with doubled numbers

A column of zeros

Differential Converter wants IN.A minus IN.B on OUT.P and IN.B minus IN.A on OUT.N. The IN.B node sends its value left, the IN.A node runs "MOV UP, ACC" and "SUB RIGHT", and a node lower down sends the result to OUT.P, then applies "NEG" and passes it right. On the first run the whole OUT.N column turns red and fills with zeros. "Stop, stop, stop." The commentary brings up breakpoints and steps through the program, then finds it: the node above OUT.N said "MOV ACC, DOWN." "This is supposed to be left." With "MOV LEFT, DOWN" every test passes in 240 cycles.

The Differential Converter screen running test 1 with the whole OUT.N output column shown in red and filled with zeros, while the node above OUT.N holds "MOV ACC, DOWN" and the node beside it holds "MOV UP, ACC", "MOV ACC, DOWN", "NEG" and "MOV ACC, RIGHT"

Labels and jumps

Signal Comparator writes 1 to OUT.G, OUT.E or OUT.L when the input is greater than, equal to or less than zero, and "when a 1 is not written to an output, write a 0 instead." Each of the three bottom nodes gets START, SUCCESS and FAIL labels: it takes the value with "MOV LEFT, ACC", jumps with JGZ, JEZ or JLZ, and sends a 1 or a 0 down. The first two also pass the value right. "I feel like this is a lot of code." It passes in 297 cycles with 25 instructions, against 278 and 20 on the friend's line.

The Signal Comparator screen running test 1: three nodes along the bottom row each hold a short program with "START:", "SUCCESS:" and "FAIL:" labels and a JGZ, JEZ or JLZ jump, above the outputs OUT.G, OUT.E and OUT.L, with columns of ones and zeros on the left

Where it ends

Back in the Signal Comparator editor, the commentary says Basket will think about using fewer instructions and either start the next episode with that or move on to the next puzzle. The video then cuts to the end card with all four segments passed.