Talk:Burn

Some other notes I remembered that may help people reconstruct the language: Unfortunately, that's not much to go on. --ais523 20:26, 16 December 2010 (UTC)
 * Upon loading the program, it's used to tile an entire infinite plane (possibly disrupted slightly; I can't remember); the program was the initial state for a certain algorithm for updating cells (making it a cellular automaton).
 * Cell updates were irreversible; if a cell were ever changed, it was never changed back to its original value (although it might be changed again).

I'm going to take a guess, but even if I'm right it won't be exact yet. I'll use the notation (row, column) where row and column are indices starting at zero for the instruction pointer. It has a stack, a direction pointer similar to piet, and data pointer similar to brainfuck where each address in memory can store one bit. The program starts at (0, 3) and each iteration goes one pixel in the direction currently held in the direction pointer, I'm assuming it's initialized to down. If the color changes, it will do an operation depending on the new color. Black (notated 00) is a special color. If the instruction pointer is about to enter a black pixel, it doesn't change the instruction pointer and instead changes the direction pointer. In this case:

Going into this instruction VV 00 01 00 00 01 01 00 00 00

The direction pointer will be set to right. In this case:

00 00 00 00 01 01 < Going into this instruction 00 01 00

The direction pointer will be set to down. If there are two directions the direction pointer can be set to, it will pop a value from the stack, and the direction pointer will be set accordingly. In this case:

Going into        00 01 00 this instruction > 01 01 00 00 01 00

If it pops a zero, the DP will be set to up. Otherwise, it will be set to down.

Here is a table of the color I think I've figured out so far.

01 = NOP 11 = PUSH 02 = POP 10 = Pop a value x and push (not x) 30 = Duplicate the top of the stack

With this table, the example program sets address 0x0000 to 1 and exits the top half of the program. Hope this helps. --aithecomputerguy


 * FWIW, I think this guess is inconsistent with the additional information ais523 gave above. --Ørjan (talk) 11:32, 2 December 2014 (UTC)