Ragaraja

From Esolang
Jump to navigation Jump to search

Ragaraja is created by Maurice Ling and is a derivative and massive extension of Brainfuck. This work is influenced by a large number of Brainfuck derivatives, other esoteric programming languages, and even assembly languages. Probably the most critical difference between Ragaraja and other Brainfuck derivatives is the large number of commands / instructions - 1000 possible commands / instructions, inspired by Lord Nandi (Lord Shiva's mount) who was supposed to be the first author of Kama Sutra and wrote it in 1000 chapters.

Etymology

Ragaraja is the name of a Mahayana Buddhist deity from Esoteric traditions. The Japanese calls him 愛染明王 (simplified Chinese script: 爱染明王). Ragaraja is one of the Wisdom Kings (a group of Bodhisattvas) and represents the state at which sexual excitement or agitation can be channeled towards enlightenment and passionate love can become compassion for all living things. Hence, I name this compilation/derivative/extension of Brainfuck in 1000 commands/instructions/opcode to signify the epitome, a channeling of raw urge to the love and compassion for and towards every being. May really be viewed as Brainfuck attaining enlightenment or Nirvana. Whoever that can remember all 1000 commands and use it, really deserves an award.

References to Biology

One of the main driving force for developing Ragaraja is as instruction set for digital organisms. In other words, to act as genome for digital organism. In natural DNA, only 4 bases are used, resulting in 64 (4³) codons. In Ragaraja, it defined 10 bases; hence, resulting in 1000 instructions (10³). This allows for single digit change to reflect point mutations in DNA. However, it is worth noting that the instructions are implemented sequentially with no thoughts in the range of effects that can be caused by a point mutation.

Influences from Other Works

  1. AlPhAbEt: Large number of registers. AlPhAbEt defined a total of 63 registers.
  2. Avida: An artificial life simulator.
  3. BCDFuck: Accumulator for 1 to 9 (add between 1 to 9 to the current cell).
  4. Brains: Break and continue commands.
  5. Brainstuck and Hargfak: Stack operations (simulated using registers).
  6. D1ffe7e45e and Numberwang (brainfuck derivative): Based on numbers as commands/instructions rather than alphabets and symbols.
  7. Extended Brainfuck: Logical (Extended Type I) and arithmetic (Extended Type II) operators.
  8. Grin: Common mathematical functions.
  9. L00P: Negation (multiply current cell value by -1).
  10. Loose Circular Brainfuck (LCBF): The tape or array is circular (a ring list) instead of linear. When the pointer is at the "end" of the tape, an increment (">") will move the tape to the start. Similarly, when the pointer is decremented at the "beginning" of the tape, the pointer goes to the end.
  11. Memfuck: Destroy memory stack (emulated by clearing of registers).
  12. Minimal: Skip instruction command.
  13. NucleotideBF (nBF): Random commands.
  14. Self-modifying Brainfuck: Allows a program to modify its own source code.

Interpreter Environment

The interpreter environment consists of the following elements:

  1. Tape: A circular tape initialized with 30 thousand cells each with zero. This can be visualized as a 30,000 cell register machine. The number of cells can increase or decrease during run-time.
  2. Source: The program
  3. Input List: A list of data given to the execution environment at initialization.
  4. Output List: A list of output from the execution. This may also be used as a secondary tape.
  5. Set of 99 registers: Can be used as temporary storage for writing to and reading cell values from the tape.

If an error is encountered; such as, dividing a number by zero (for example, instruction 074); a rollback will occur. This will essentially ignore the error causing operation.

When the program terminates, tape, source, input list and output list are returned, and the interpreter terminates itself.

Description of Commands / Instructions

Command Description
000 Move forward by one cell on tape. Equivalent to ">" in Brainfuck. Implemented
001 Move forward by 5 cells on tape. Equivalent to 5 times of "000". Implemented
002 Move forward by 10 cells on tape. Equivalent to 10 times of "000". Implemented
003 Move forward by NxN cells on tape where N is the value of the current cell. If N is a decimal, it will move forward by the floor of NxN. For example, if N is 4.2, this operation will tape pointer forward by 17 cells. As NxN is always a positive number, it does not matter if the value of the current cell is positive or negative. Implemented
004 Move backward by one cell on tape. Equivalent to "<" in Brainfuck. Implemented
005 Move backward by 5 cells on tape. Equivalent to 5 times of "004". Implemented
006 Move backward by 10 cells on tape. Equivalent to 10 times of "004". Implemented
007 Move backward by NxN cells on tape where N is the value of the current cell. If N is a decimal, it will move backward by the floor of NxN. For example, if N is 4.2, this operation will tape pointer backward by 17 cells. As NxN is always a positive number, it does not matter if the value of the current cell is positive or negative. Implemented
008 Increase value of cell by 1. Equivalent to "+" in Brainfuck. Implemented
009 Increase value of cell by 5. Equivalent to 5 times of "008". Implemented
010 Increase value of cell by 10. Equivalent to 10 times of "008". Implemented
011 Decrease value of cell by 1. Equivalent to "-" in Brainfuck. Implemented
012 Decrease value of cell by 5. Equivalent to 5 times of "011". Implemented
013 Decrease value of cell by 10. Equivalent to 10 times of "011". Implemented
014 Start loop. Will only enter loop if current cell is more than "0". If current cell is "0" or less, it will go to the end of the loop (command 015). if the loop is not closed, it will go to the end of the source. Implemented
015 End loop. However, it is possible to have an end loop operator (command 015) without a preceding start loop operator (command 014). In this case, the end loop operator (command 015) will be ignored and execution continues. Implemented
016 Add one cell to the end of the tape. Implemented
017 Add 10 cells to the end of the tape. Implemented
018 Remove one cell from the end of the tape. If original tape pointer is at the last cell before removal operation, the tape pointer will point to the last cell after removal. Implemented
019 Remove 10 cells from the end of the tape. If original tape pointer is at the last cell before removal operation, the tape pointer will point to the last cell after removal. Implemented
020 Output current tape cell value and append to the end of the output list. Equivalent to "." in Brainfuck. Implemented
021 Output current tape cell location and append to the end of the output list. Implemented
022 Output current source location and append to the end of the output list. Implemented
023 Move source pointer forward by one instruction without execution if the source pointer does not point beyond the length of the source after the move, otherwise, does not move the source pointer. Implemented
024 Move source pointer forward by 5 instruction without execution if the source pointer does not point beyond the length of the source after the move, otherwise, does not move the source pointer. Implemented
025 Move source pointer forward by 10 instruction without execution if the source pointer does not point beyond the length of the source after the move, otherwise, does not move the source pointer. Implemented
026 Move source pointer backward by one instruction without execution if the source pointer does not point beyond the length of the source after the move, otherwise, does not move the source pointer. Implemented
027 Move source pointer backward by 5 instruction without execution if the source pointer does not point beyond the length of the source after the move, otherwise, does not move the source pointer. Implemented
028 Move source pointer backward by 10 instruction without execution if the source pointer does not point beyond the length of the source after the move, otherwise, does not move the source pointer. Implemented
029 Replace current source instruction with modulus current tape cell value by 1000. For example, if current tape cell value is "7", the current source instruction will be replaced with "007" but if the current tape cell value is "4022", then the current source instruction will be replaced with "022". Implemented
030 Invert the next source instruction if it is not the end of the source. For example, if the next source instruction is "345", it will be replaced with "765". Implemented
031 Set current tape cell value to modulus current tape cell value by 1000. For example, if the current tape cell value is "4022", it will be replaced with "22". Implemented
032 Double current tape cell value. Implemented
033 Half current tape cell value. Implemented
034 Insert a cell after the current tape cell. For example, if current tape cell is 35, a cell initialized to zero will be added as cell 36. As a result, the tape is 1 cell longer. Implemented
035 Delete the current cell. As a result, the tape is 1 cell shorter Implemented
036 Delete the current and append to the end of the output list. As a result, the tape is 1 cell shorter. Implemented
037 Replace the current tape cell value with the last value of the output list, and delete the last value from the output list. Implemented
038 Replace the current tape cell value with the last value of the output list, without deleting the last value from the output list. Implemented
039 Replace the current tape cell value with the first value of the output list, and delete the first value from the output list. Implemented
040 Replace the current tape cell value with the first value of the output list, without deleting the first value from the output list. Implemented
041 Remove first value from the output list. Implemented
042 Remove last value from the output list. Implemented
043 Move the tape cell pointer to the first cell. Implemented
044 Move the tape cell pointer to the last cell. Implemented
045 Move the tape cell pointer to the location determined by the last value of the output list. If the last value of the output list is more than the length of the tape, it will take the modulus of the length of the tape. For example, the last value of the output list is 5, the tape cell pointer will point to the 5th cell on the tape. Implemented
046 Flip the tape. The original first cell becomes the last cell but the tape pointer does not flip in location. Implemented
047 Flip the output list. Implemented
048 Flip the instruction list (source) but the source pointer does not flip in location. Implemented
049 Randomly replace the current instruction with any of the 1000 instructions. Implemented
050 Randomly execute "008" (increment by 1) or "000" (move forward by 1). Equivalent to "R" in NucleotideBF (nBF). Implemented
051 Randomly execute "011" (decrement by 1) or "004" (move backward by 1). Equivalent to "Y" in NucleotideBF (nBF). Implemented
052 Randomly execute "000" (move forward by 1) or "004" (move backward by 1). Equivalent to "S" in NucleotideBF (nBF). Implemented
053 Randomly execute "008" (increment by 1) or "011" (decrement by 1). Equivalent to "W" in NucleotideBF (nBF). Implemented
054 Randomly execute "000" (move forward by 1) or "011" (decrement by 1). Equivalent to "K" in NucleotideBF (nBF). Implemented
055 Randomly execute "004" (move backward by 1) or "008" (increment by 1). Equivalent to "M" in NucleotideBF (nBF). Implemented
056 Randomly execute "000" (move forward by 1) or "004" (move backward by 1) or "011" (decrement by 1). Equivalent to "B" in NucleotideBF (nBF). Implemented
057 Randomly execute "000" (move forward by 1) or "008" (increment by 1) or "011" (decrement by 1). Equivalent to "D" in NucleotideBF (nBF). Implemented
058 Randomly execute "004" (move backward by 1) or "008" (Increment by 1) or "011" (decrement by 1). Equivalent to "H" in NucleotideBF (nBF). Implemented
059 Randomly execute "000" (move forward by 1) or "004" (move backward by 1) or "008" (increment by 1). Equivalent to "V" in NucleotideBF (nBF). Implemented
060 Randomly execute "000" (move forward by 1) or "004" (move backward by 1) or "008" (increment by 1) or "011" (decrement by 1). Equivalent to "N" in NucleotideBF (nBF). Implemented
061 Move forward by the number of cells signified by the current cell. Implemented
062 Move backward by the number of cells signified by the current cell. Implemented
063 Writes the first value of the input list into the current cell and remove the value from the input list. If input list is empty, "0" will be written. Equivalent to "," in Loose Circular Brainfuck (LCBF). Implemented
064 Writes the first value of the input list into the current cell and without removing the value from the input list. If input list is empty, "0" will be written Implemented
065 Add the value of the current cell (n) and (n+1)th cell, and store the value in the current cell. Array[n] = Array[n] + Array[n+1]. Implemented
066 Add the value of the current cell (n) and first of the input list, and store the value in the current cell. Implemented
067 Add the value of the current cell (n) and last of the input list, and store the value in the current cell. Implemented
068 Subtract the value of the current cell (n) from (n+1)th cell, and store the value in the current cell. Array[n] = Array[n+1] - Array[n]. Implemented
069 Subtract the value of the current cell (n) from the first of the input list, and store the value in the current cell. Array[n] = InputList[0] - Array[n]. Implemented
070 Subtract the value of the current cell (n) from the last of the input list, and store the value in the current cell. Array[n] = InputList[-1] - Array[n]. Implemented
071 Multiply the value of the current cell (n) and (n+1)th cell, and store the value in the current cell. Array[n] = Array[n+1] * Array[n]. Implemented
072 Multiply the value of the current cell (n) and first of the input list, and store the value in the current cell. Implemented
073 Multiply the value of the current cell (n) and last of the input list, and store the value in the current cell. Implemented
074 Divide the value of the current cell (n) from (n+1)th cell, and store the value in the current cell. Array[n] = Array[n+1] / Array[n]. Implemented
075 Divide the value of the current cell (n) from the first of the input list, and store the value in the current cell. Array[n] = InputList[0] / Array[n]. Implemented
076 Divide the value of the current cell (n) from the last of the input list, and store the value in the current cell. Array[n] = InputList[-1] - Array[n]. Implemented
077 Modulus (remainder after division) the value of the current cell (n) from (n+1)th cell, and store the value in the current cell. Array[n] = Array[n+1] % Array[n]. Implemented
078 Modulus (remainder after division) the value of the current cell (n) from the first of the input list, and store the value in the current cell. Array[n] = InputList[0] % Array[n]. Implemented
079 Modulus (remainder after division) the value of the current cell (n) from the last of the input list, and store the value in the current cell. Array[n] = InputList[-1] % Array[n]. Implemented
080 Floor the value of the current cell. For example, if the value of the current cell is 6.7, it will becomes 6. Implemented
081 Swap the value of the current cell (n) and (n+1)th cell. Implemented
082 Skip next instruction if current cell is "0". Equivalent to "/" in Minimal. However, this operation will only execute if there is at least 1 more instruction from the current instruction. Implemented
083 Skip the number of instructions equivalent to the absolute integer value of the current cell if the source pointer does not point beyond the length of the source after the move, otherwise, does not move the source pointer. For example, if current cell is "5.6" or "5", the next 5 instructions will be skipped. Implemented
084 Set current tape cell to "0". Implemented
085 Set current tape cell to "-1". Implemented
086 Set current tape cell to "1". Implemented
087 Negate the value of the current cell. Positive value will be negative. Negative value will be positive. Equivalent to "_" in L00P. Implemented
088 Calculate the sine of the value of the current cell (measured in radians) and replace. Equivalent to "s" in Grin. Array[n] = sine(Array[n]). Implemented
089 Calculate the cosine of the value of the current cell (measured in radians) and replace. Equivalent to "c" in Grin. Array[n] = cosine(Array[n]). Implemented
090 Calculate the tangent of the value of the current cell (measured in radians) and replace. Equivalent to "t" in Grin. Array[n] = tangent(Array[n]). Implemented
091 Calculate the arc sine of the value of the current cell (measured in radians) and replace. Equivalent to "S" in Grin. Array[n] = arcsine(Array[n]). Implemented
092 Calculate the arc cosine of the value of the current cell (measured in radians) and replace. Equivalent to "C" in Grin. Array[n] = arccosine(Array[n]). Implemented
093 Calculate the arc tangent of the value of the current cell (measured in radians) and replace. Equivalent to "T" in Grin. Array[n] = arctangent(Array[n]). Implemented
094 Calculate the reciprocal of the value of the current cell (measured in radians) and replace. Equivalent to "1" in Grin. Array[n] = 1/Array[n]. Implemented
095 Calculate the square root of the value of the current cell (measured in radians) and replace. Equivalent to "q" in Grin. Array[n] = sqrt(Array[n]). Implemented
096 Calculate the natural logarithm of the value of the current cell (measured in radians) and replace. Equivalent to "l" in Grin. Array[n] = ln(Array[n]). Implemented
097 Set the value of the current cell to pi (3.14159265358979323846). Implemented
098 Set the value of the current cell to e (2.718281828459045). Implemented
099 Calculate the hyperbolic sine of the value of the current cell (measured in radians) and replace. Array[n] = sinh(Array[n]). Implemented
100 Calculate the hyperbolic cosine of the value of the current cell (measured in radians) and replace. Array[n] = cosh(Array[n]). Implemented
101 Calculate the hyperbolic tangent of the value of the current cell (measured in radians) and replace. Array[n] = tanh(Array[n]). Implemented
102 Calculate the hyperbolic arc sine of the value of the current cell (measured in radians) and replace. Array[n] = arcsinh(Array[n]). Implemented
103 Calculate the hyperbolic arc cosine of the value of the current cell (measured in radians) and replace. Array[n] = arccosh(Array[n]). Implemented
104 Calculate the hyperbolic arc tangent of the value of the current cell (measured in radians) and replace. Array[n] = arctanh(Array[n]). Implemented
105 Convert the value of the current cell (measured in radians) to degrees and replace. Implemented
106 Convert the value of the current cell (measured in degrees) to radians and replace. Implemented
107 Raise the value of the current cell (n) to e, and store the value in the current cell. Array[n] = Array[n]^e. Implemented
108 Raise e to the value of the current cell (n), and store the value in the current cell. Array[n] = e^Array[n]. Implemented
109 Raise 10 to the value of the current cell (n), and store the value in the current cell. Array[n] = 10^Array[n]. Implemented
110 Raise the value of the current cell (n) to the value of (n+1)th cell, and store the value in the current cell. Array[n] = Array[n]^Array[n+1]. Implemented
111 Calculate the n-th root of the value of the current cell (n) where n is the value of (n+1)th cell, and store the value in the current cell. Array[n] = Array[n]^(1/Array[n+1]). Implemented
112 Calculate the error function of the value of the current cell and replace. Array[n] = erf(Array[n]). Implemented
113 Calculate the complementary error function of the value of the current cell and replace. Array[n] = erfc(Array[n]). Implemented
114 Calculate the factorial of the integer value of the current cell (if the integer value is positive) and replace. Array[n] = factorial(Array[n]). Implemented
115 Calculate the factorial of the absolute integer value of the current cell and replace. Array[n] = factorial(abs(Array[n])). Implemented
116 Calculate the Euclidean distance (hypotenuse) value of the current cell (n) to the value of (n+1)th cell, and store the value in the current cell. Array[n] = sqrt(Array[n]*Array[n] + Array[n+1]*Array[n+1]). Implemented
117 Calculate the logarithm value of the current cell (n) to the base of the value of (n+1)th cell, and store the value in the current cell. Array[n] = log(Array[n], base=Array[n+1]). Implemented
118 Break out of the current loop - jump past the first unmatched "]". Equivalent to "'" in Brains
119 Continue - jump to the first unmatched "]". Equivalent to "`" in Brains
120 AND operator: Given positive numbers (>0) as True and zero or negative numbers (<=0)as False, store Array[current] AND Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
121 OR operator: Given positive numbers (>0) as True and zero or negative numbers (<=0)as False, store Array[current] OR Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
122 NOT operator: Given positive numbers (>0) as True and zero or negative numbers (<=0)as False, store NOT Array[current] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
123 LESS-THAN operator: Store Array[current] < Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
124 MORE-THAN operator: Store Array[current] > Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
125 EQUAL operator: Store Array[current] = Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
126 NOT-EQUAL operator: Store Array[current] != Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
127 LESS-THAN-OR-EQUAL operator: Store Array[current] <= Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
128 MORE-THAN-OR-EQUAL operator: Store Array[current] => Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Implemented
129 NAND operator: Given positive numbers (>0) as True and zero or negative numbers (<=0)as False, store Array[current] NAND Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Array[current] NAND Array[current+1] is equivalent to NOT (Array[current] AND Array[current+1]). Implemented
130 NOR operator: Given positive numbers (>0) as True and zero or negative numbers (<=0)as False, store Array[current] NOR Array[current+1] in the current cell (Array[current]) where "0" is False and "1" is True. Array[current] NOR Array[current+1] is equivalent to NOT (Array[current] OR Array[current+1]). Implemented
131 Flip the tape from the cell after the current cell to the end of the tape (temporarily breaking the circularity of the tape). Implemented
132 Goto next Jump Identifier I if present (instruction '200'). If next Jump Identifier I is not present, continue to next instruction.
133 Goto next Jump Identifier II if present (instruction '300'). If next Jump Identifier II is not present, continue to next instruction.
134 Goto next Jump Identifier III if present (instruction '400'). If next Jump Identifier III is not present, continue to next instruction.
135 Goto next Jump Identifier IV if present (instruction '500'). If next Jump Identifier IV is not present, continue to next instruction.
136 Goto next Jump Identifier V if present (instruction '600'). If next Jump Identifier V is not present, continue to next instruction.
137 Goto next Jump Identifier VI if present (instruction '700'). If next Jump Identifier VI is not present, continue to next instruction.
138 Goto next Jump Identifier VII if present (instruction '800'). If next Jump Identifier VII is not present, continue to next instruction.
139 Goto next Jump Identifier VIII if present (instruction '900'). If next Jump Identifier VIII is not present, continue to next instruction.
140 Move tape pointer to the centre of the tape. If the tape has odd number cells, it will move to the lower cell. For example, this instruction will move the tape pointer to the 500th cell of a 1000-cell tape, or 142nd of a 285-cell tape. Implemented
141 Move tape pointer to 1/4 the of the tape. If the tape has odd number cells, it will move to the lower cell. For example, this instruction will move the tape pointer to the 250th cell of a 1000-cell tape, or 71st of a 285-cell tape. Implemented
142 Move tape pointer to 3/4 the of the tape. If the tape has odd number cells, it will move to the lower cell. For example, this instruction will move the tape pointer to the 750th cell of a 1000-cell tape, or 213rd of a 285-cell tape. Implemented
143 Move tape pointer to the position as the integer value in the current cell. If the value of the cell is larger than the length of the tape, it will move to the modulus of the integer value in the current cell. Implemented
144 Divide current cell value by 10. Implemented
145 Multiply current cell value by 10. Implemented
146 Add all cell values from (n+1)th cell to the end of the tape and store result in current cell (n). Array[n] = sum(Array[n+1:]). Implemented
147 Add all cell values from n-th cell to the end of the tape and store result in current cell (n). Array[n] = sum(Array[n:]). Implemented
148 Add all cell values from first cell to the cell before n-th cell and store result in current cell (n). Array[n] = sum(Array[0:n]). Implemented
149 Add all cell values from first cell to n-th cell (inclusive) and store result in current cell (n). Array[n] = sum(Array[0:n+1]). Implemented
150 Add all cell values in the tape and store result in current cell (n). Array[n] = sum(Array[:]). Implemented
151 Average all cell values from (n+1)th cell to the end of the tape and store result in current cell (n). Array[n] = average(Array[n+1:]). Implemented
152 Average all cell values from n-th cell to the end of the tape and store result in current cell (n). Array[n] = average(Array[n:]). Implemented
153 Average all cell values from first cell to the cell before n-th cell and store result in current cell (n). Array[n] = average(Array[0:n]). Implemented
154 Average all cell values from first cell to n-th cell (inclusive) and store result in current cell (n). Array[n] = average(Array[0:n+1]). Implemented
155 Half every cell value in tape. Implemented
156 Double every cell value in tape. Implemented
157 Divide every cell value in tape by 10. Implemented
158 Multiply every cell value in tape by 10. Implemented
159 Divide every cell value in tape by 100. Implemented
160 Multiply every cell value in tape by 100. Implemented
161 Cut the tape before the current cell (n) and append it to the end of the tape and set tape pointer to 0. <---A--->n<---B---> ==> n<---B---><---A--->. Implemented
162 Cut the tape after the current cell (n) and append it to the start of the tape and set tape pointer to the last cell. <---A--->n<---B---> ==> <---B---><---A--->n. Implemented
163 Cut out the current cell and append it to the front of the tape and set tape pointer to 0. <---A--->n<---B---> ==> n<---A---><---B--->
164 Cut out the current cell and append it to the end of the tape and set tape pointer to the last cell. <---A--->n<---B---> ==> <---A---><---B--->n. Implemented
165 Multiply every cell value in tape by -1. Implemented
166 Square all the cell values in the cells after the current cell (current cell value is not affected). Implemented
167 Square all the cell values in the cells before the current cell (current cell value is not affected). Implemented
168 Square every cell value in tape. Implemented
169 Square root every cell value in tape. Implemented
170 Square root all the cell values in the cells after the current cell (current cell value is not affected). Implemented
171 Square root all the cell values in the cells before the current cell (current cell value is not affected). Implemented
172 Append all the cell values in the cells after the current cell to the end of output list (current cell is not appended to output list). Implemented
173 Append all the cell values in the cells after the current cell to the end of output list (current cell is not appended to output list), then set the values of all the cells after the current cell to "0" (current cell value is not affected). Implemented
174 Append all the cell values in the cells to the end of output list. Implemented
175 Append all the cell values in the cells to the end of output list and set the tape to "0". Implemented
176 Append all the cell values in the cells before the current cell to the end of output list (current cell is not appended to output list).
177 Append all the cell values in the cells before the current cell to the end of output list (current cell is not appended to output list), then set the values of all the cells after the current cell to "0" (current cell value is not affected).
178 Append all cell values from after the current cell to the end of the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
179 Append all cell values from after the current cell to the start of the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
180 Insert all cell values from after the current cell to immediately after the current instruction the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
181 Append all cell values from before the current cell to the end of the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
182 Append all cell values from before the current cell to the start of the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
183 Insert all cell values from before the current cell to immediately after the current instruction the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
184 Append all cell values from the tape to the end of the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
185 Append all cell values from the tape to the start of the source string. Each cell value is floored and modulus of 999 is taken to append to the source
186 Insert all cell values from the tape to immediately after the current instruction the source string. Each cell value is floored and modulus of 999 is taken to append to the source.
187 Set all the cell values in the cells after the current cell to "0" (current cell is not affected). Implemented
188 Set all the cell values in the cells before the current cell to "0" (current cell is not affected). Implemented
189 Set all values in tape to "0". Implemented
190 Set all the cell values in the tape to the value of current cell. Implemented
191 Set all the cell values in the tape to the tape position of current cell. Implemented
192 Set all the cell values in the cells after the current cell to the value of current cell. Implemented
193 Set all the cell values in the cells before the current cell to the value of current cell. Implemented
194 Set all the cell values in the cells after the current cell to the tape position of current cell. Implemented
195 Set all the cell values in the cells before the current cell to the tape position of current cell. Implemented
196 Set the value of the current cell to the standard deviation of the values in the tape. Implemented
197 Set the value of the current cell to the geometric mean of the values in the tape. Implemented
198 Set the value of the current cell to the harmonic mean of the values in the tape. Implemented
199 Set the value of the current cell to the root-mean-square of the values in the tape.
200 Jump identifier I. Implemented
201 Store value of current tape cell to register #1. Implemented
202 Store value of current tape cell to register #2. Implemented
203 Store value of current tape cell to register #3. Implemented
204 Store value of current tape cell to register #4. Implemented
205 Store value of current tape cell to register #5. Implemented
206 Store value of current tape cell to register #6. Implemented
207 Store value of current tape cell to register #7. Implemented
208 Store value of current tape cell to register #8. Implemented
209 Store value of current tape cell to register #9. Implemented
210 Store value of current tape cell to register #10. Implemented
211 Store value of current tape cell to register #11. Implemented
212 Store value of current tape cell to register #12. Implemented
213 Store value of current tape cell to register #13. Implemented
214 Store value of current tape cell to register #14. Implemented
215 Store value of current tape cell to register #15. Implemented
216 Store value of current tape cell to register #16. Implemented
217 Store value of current tape cell to register #17. Implemented
218 Store value of current tape cell to register #18. Implemented
219 Store value of current tape cell to register #19. Implemented
220 Store value of current tape cell to register #20. Implemented
221 Store value of current tape cell to register #21. Implemented
222 Store value of current tape cell to register #22. Implemented
223 Store value of current tape cell to register #23. Implemented
224 Store value of current tape cell to register #24. Implemented
225 Store value of current tape cell to register #25. Implemented
226 Store value of current tape cell to register #26. Implemented
227 Store value of current tape cell to register #27. Implemented
228 Store value of current tape cell to register #28. Implemented
229 Store value of current tape cell to register #29. Implemented
230 Store value of current tape cell to register #30. Implemented
231 Store value of current tape cell to register #31. Implemented
232 Store value of current tape cell to register #32. Implemented
233 Store value of current tape cell to register #33. Implemented
234 Store value of current tape cell to register #34. Implemented
235 Store value of current tape cell to register #35. Implemented
236 Store value of current tape cell to register #36. Implemented
237 Store value of current tape cell to register #37. Implemented
238 Store value of current tape cell to register #38. Implemented
239 Store value of current tape cell to register #39. Implemented
240 Store value of current tape cell to register #40. Implemented
241 Store value of current tape cell to register #41. Implemented
242 Store value of current tape cell to register #42. Implemented
243 Store value of current tape cell to register #43. Implemented
244 Store value of current tape cell to register #44. Implemented
245 Store value of current tape cell to register #45. Implemented
246 Store value of current tape cell to register #46. Implemented
247 Store value of current tape cell to register #47. Implemented
248 Store value of current tape cell to register #48. Implemented
249 Store value of current tape cell to register #49. Implemented
250 Store value of current tape cell to register #50. Implemented
251 Store value of current tape cell to register #51. Implemented
252 Store value of current tape cell to register #52. Implemented
253 Store value of current tape cell to register #53. Implemented
254 Store value of current tape cell to register #54. Implemented
255 Store value of current tape cell to register #55. Implemented
256 Store value of current tape cell to register #56. Implemented
257 Store value of current tape cell to register #57. Implemented
258 Store value of current tape cell to register #58. Implemented
259 Store value of current tape cell to register #59. Implemented
260 Store value of current tape cell to register #60. Implemented
261 Store value of current tape cell to register #61. Implemented
262 Store value of current tape cell to register #62. Implemented
263 Store value of current tape cell to register #63. Implemented
264 Store value of current tape cell to register #64. Implemented
265 Store value of current tape cell to register #64. Implemented
266 Store value of current tape cell to register #66. Implemented
267 Store value of current tape cell to register #67. Implemented
268 Store value of current tape cell to register #68. Implemented
269 Store value of current tape cell to register #69. Implemented
270 Store value of current tape cell to register #70. Implemented
271 Store value of current tape cell to register #71. Implemented
272 Store value of current tape cell to register #72. Implemented
273 Store value of current tape cell to register #73. Implemented
274 Store value of current tape cell to register #74. Implemented
275 Store value of current tape cell to register #75. Implemented
276 Store value of current tape cell to register #76. Implemented
277 Store value of current tape cell to register #77. Implemented
278 Store value of current tape cell to register #78. Implemented
279 Store value of current tape cell to register #79. Implemented
280 Store value of current tape cell to register #80. Implemented
281 Store value of current tape cell to register #81. Implemented
282 Store value of current tape cell to register #82. Implemented
283 Store value of current tape cell to register #83. Implemented
284 Store value of current tape cell to register #84. Implemented
285 Store value of current tape cell to register #85. Implemented
286 Store value of current tape cell to register #86. Implemented
287 Store value of current tape cell to register #87. Implemented
288 Store value of current tape cell to register #88. Implemented
289 Store value of current tape cell to register #89. Implemented
290 Store value of current tape cell to register #90. Implemented
291 Store value of current tape cell to register #91. Implemented
292 Store value of current tape cell to register #92. Implemented
293 Store value of current tape cell to register #93. Implemented
294 Store value of current tape cell to register #94. Implemented
295 Store value of current tape cell to register #95. Implemented
296 Store value of current tape cell to register #96. Implemented
297 Store value of current tape cell to register #97. Implemented
298 Store value of current tape cell to register #98. Implemented
299 Store value of current tape cell to register #99. Implemented
300 Jump identifier II. Implemented
301 Put value from register #1 to current tape cell. Implemented
302 Put value from register #2 to current tape cell. Implemented
303 Put value from register #3 to current tape cell. Implemented
304 Put value from register #4 to current tape cell. Implemented
305 Put value from register #5 to current tape cell. Implemented
306 Put value from register #6 to current tape cell. Implemented
307 Put value from register #7 to current tape cell. Implemented
308 Put value from register #8 to current tape cell. Implemented
309 Put value from register #9 to current tape cell. Implemented
310 Put value from register #10 to current tape cell. Implemented
311 Put value from register #11 to current tape cell. Implemented
312 Put value from register #12 to current tape cell. Implemented
313 Put value from register #13 to current tape cell. Implemented
314 Put value from register #14 to current tape cell. Implemented
315 Put value from register #15 to current tape cell. Implemented
316 Put value from register #16 to current tape cell. Implemented
317 Put value from register #17 to current tape cell. Implemented
318 Put value from register #18 to current tape cell. Implemented
319 Put value from register #19 to current tape cell. Implemented
320 Put value from register #20 to current tape cell. Implemented
321 Put value from register #21 to current tape cell. Implemented
322 Put value from register #22 to current tape cell. Implemented
323 Put value from register #23 to current tape cell. Implemented
324 Put value from register #24 to current tape cell. Implemented
325 Put value from register #25 to current tape cell. Implemented
326 Put value from register #26 to current tape cell. Implemented
327 Put value from register #27 to current tape cell. Implemented
328 Put value from register #28 to current tape cell. Implemented
329 Put value from register #29 to current tape cell. Implemented
330 Put value from register #30 to current tape cell. Implemented
331 Put value from register #31 to current tape cell. Implemented
332 Put value from register #32 to current tape cell. Implemented
333 Put value from register #33 to current tape cell. Implemented
334 Put value from register #34 to current tape cell. Implemented
335 Put value from register #35 to current tape cell. Implemented
336 Put value from register #36 to current tape cell. Implemented
337 Put value from register #37 to current tape cell. Implemented
338 Put value from register #38 to current tape cell. Implemented
339 Put value from register #39 to current tape cell. Implemented
340 Put value from register #40 to current tape cell. Implemented
341 Put value from register #41 to current tape cell. Implemented
342 Put value from register #42 to current tape cell. Implemented
343 Put value from register #43 to current tape cell. Implemented
344 Put value from register #44 to current tape cell. Implemented
345 Put value from register #45 to current tape cell. Implemented
346 Put value from register #46 to current tape cell. Implemented
347 Put value from register #47 to current tape cell. Implemented
348 Put value from register #48 to current tape cell. Implemented
349 Put value from register #49 to current tape cell. Implemented
350 Put value from register #50 to current tape cell. Implemented
351 Put value from register #51 to current tape cell. Implemented
352 Put value from register #52 to current tape cell. Implemented
353 Put value from register #53 to current tape cell. Implemented
354 Put value from register #54 to current tape cell. Implemented
355 Put value from register #55 to current tape cell. Implemented
356 Put value from register #56 to current tape cell. Implemented
357 Put value from register #57 to current tape cell. Implemented
358 Put value from register #58 to current tape cell. Implemented
359 Put value from register #59 to current tape cell. Implemented
360 Put value from register #60 to current tape cell. Implemented
361 Put value from register #61 to current tape cell. Implemented
362 Put value from register #62 to current tape cell. Implemented
363 Put value from register #63 to current tape cell. Implemented
364 Put value from register #64 to current tape cell. Implemented
365 Put value from register #65 to current tape cell. Implemented
366 Put value from register #66 to current tape cell. Implemented
367 Put value from register #67 to current tape cell. Implemented
368 Put value from register #68 to current tape cell. Implemented
369 Put value from register #69 to current tape cell. Implemented
370 Put value from register #70 to current tape cell. Implemented
371 Put value from register #71 to current tape cell. Implemented
372 Put value from register #72 to current tape cell. Implemented
373 Put value from register #73 to current tape cell. Implemented
374 Put value from register #74 to current tape cell. Implemented
375 Put value from register #75 to current tape cell. Implemented
376 Put value from register #76 to current tape cell. Implemented
377 Put value from register #77 to current tape cell. Implemented
378 Put value from register #78 to current tape cell. Implemented
379 Put value from register #79 to current tape cell. Implemented
380 Put value from register #80 to current tape cell. Implemented
381 Put value from register #81 to current tape cell. Implemented
382 Put value from register #82 to current tape cell. Implemented
383 Put value from register #83 to current tape cell. Implemented
384 Put value from register #84 to current tape cell. Implemented
385 Put value from register #85 to current tape cell. Implemented
386 Put value from register #86 to current tape cell. Implemented
387 Put value from register #87 to current tape cell. Implemented
388 Put value from register #88 to current tape cell. Implemented
389 Put value from register #89 to current tape cell. Implemented
390 Put value from register #90 to current tape cell. Implemented
391 Put value from register #91 to current tape cell. Implemented
392 Put value from register #92 to current tape cell. Implemented
393 Put value from register #93 to current tape cell. Implemented
394 Put value from register #94 to current tape cell. Implemented
395 Put value from register #95 to current tape cell. Implemented
396 Put value from register #96 to current tape cell. Implemented
397 Put value from register #97 to current tape cell. Implemented
398 Put value from register #98 to current tape cell. Implemented
399 Put value from register #99 to current tape cell. Implemented
400 Jump identifier III. Implemented
401 Increase value of cell by 2
402 Increase value of cell by 3
403 Increase value of cell by 4
404 Increase value of cell by 6
405 Increase value of cell by 7
406 Increase value of cell by 8
407 Increase value of cell by 9
408 Decrease value of cell by 2
409 Decrease value of cell by 3
410 Decrease value of cell by 4
411 Decrease value of cell by 6
412 Decrease value of cell by 7
413 Decrease value of cell by 8
414 Decrease value of cell by 9
415 Clear all registers
416 Compact registers to the front by removing all null and zero values from the registers and put values from register #1 onwards.
417 Compact registers to the back by removing all null and zero values from the registers and put values from register #99 backwards.
418 Push value of current tape cell to register #1; thereby, shifting all values in register #N to register #N+1. The value in the original register #99 will be lost.
419 Pop value of register #1 to current tape cell; thereby, shifting all values in register #N to register #N-1. Register #99 will have the value of zero.
420 Swap values between register #1 and register #2.
421 not used
422 not used
423 not used
424 not used
425 not used
426 not used
427 not used
428 not used
429 not used
430 not used
431 not used
432 not used
433 not used
434 not used
435 not used
436 not used
437 not used
438 not used
439 not used
440 not used
441 not used
442 not used
443 not used
444 not used
445 not used
446 not used
447 not used
448 not used
449 not used
450 not used
451 not used
452 not used
453 not used
454 not used
455 not used
456 not used
457 not used
458 not used
459 not used
460 not used
461 not used
462 not used
463 not used
464 not used
465 not used
466 not used
467 not used
468 not used
469 not used
470 not used
471 not used
472 not used
473 not used
474 not used
475 not used
476 not used
477 not used
478 not used
479 not used
480 not used
481 not used
482 not used
483 not used
484 not used
485 not used
486 not used
487 not used
488 not used
489 not used
490 not used
491 not used
492 not used
493 not used
494 not used
495 not used
496 not used
497 not used
498 not used
499 not used
500 Jump identifier IV. Implemented
501 Clear register #1 (set to 0). Implemented
502 Clear register #2 (set to 0). Implemented
503 Clear register #3 (set to 0). Implemented
504 Clear register #4 (set to 0). Implemented
505 Clear register #5 (set to 0). Implemented
506 Clear register #6 (set to 0). Implemented
507 Clear register #7 (set to 0). Implemented
508 Clear register #8 (set to 0). Implemented
509 Clear register #9 (set to 0). Implemented
510 Clear register #10 (set to 0). Implemented
511 Clear register #11 (set to 0). Implemented
512 Clear register #12 (set to 0). Implemented
513 Clear register #13 (set to 0). Implemented
514 Clear register #14 (set to 0). Implemented
515 Clear register #15 (set to 0). Implemented
516 Clear register #16 (set to 0). Implemented
517 Clear register #17 (set to 0. Implemented
518 Clear register #18 (set to 0). Implemented
519 Clear register #19 (set to 0). Implemented
520 Clear register #20 (set to 0). Implemented
521 Clear register #21 (set to 0). Implemented
522 Clear register #22 (set to 0). Implemented
523 Clear register #23 (set to 0). Implemented
524 Clear register #24 (set to 0). Implemented
525 Clear register #25 (set to 0). Implemented
526 Clear register #26 (set to 0). Implemented
527 Clear register #27 (set to 0). Implemented
528 Clear register #28 (set to 0). Implemented
529 Clear register #29 (set to 0). Implemented
530 Clear register #30 (set to 0). Implemented
531 Clear register #31 (set to 0). Implemented
532 Clear register #32 (set to 0). Implemented
533 Clear register #33 (set to 0). Implemented
534 Clear register #34 (set to 0). Implemented
535 Clear register #35 (set to 0). Implemented
536 Clear register #36 (set to 0). Implemented
537 Clear register #37 (set to 0). Implemented
538 Clear register #38 (set to 0). Implemented
539 Clear register #39 (set to 0). Implemented
540 Clear register #40 (set to 0). Implemented
541 Clear register #41 (set to 0). Implemented
542 Clear register #42 (set to 0). Implemented
543 Clear register #43 (set to 0). Implemented
544 Clear register #44 (set to 0). Implemented
545 Clear register #45 (set to 0). Implemented
546 Clear register #46 (set to 0). Implemented
547 Clear register #47 (set to 0). Implemented
548 Clear register #48 (set to 0). Implemented
549 Clear register #49 (set to 0). Implemented
550 Clear register #50 (set to 0). Implemented
551 Clear register #51 (set to 0). Implemented
552 Clear register #52 (set to 0). Implemented
553 Clear register #53 (set to 0). Implemented
554 Clear register #54 (set to 0). Implemented
555 Clear register #55 (set to 0). Implemented
556 Clear register #56 (set to 0). Implemented
557 Clear register #57 (set to 0. Implemented
558 Clear register #58 (set to 0). Implemented
559 Clear register #59 (set to 0). Implemented
560 Clear register #60 (set to 0). Implemented
561 Clear register #61 (set to 0). Implemented
562 Clear register #62 (set to 0). Implemented
563 Clear register #63 (set to 0). Implemented
564 Clear register #64 (set to 0). Implemented
565 Clear register #65 (set to 0). Implemented
566 Clear register #66 (set to 0). Implemented
567 Clear register #67 (set to 0). Implemented
568 Clear register #68 (set to 0). Implemented
569 Clear register #69 (set to 0). Implemented
570 Clear register #70 (set to 0). Implemented
571 Clear register #71 (set to 0). Implemented
572 Clear register #72 (set to 0). Implemented
573 Clear register #73 (set to 0). Implemented
574 Clear register #74 (set to 0). Implemented
575 Clear register #75 (set to 0). Implemented
576 Clear register #76 (set to 0). Implemented
577 Clear register #77 (set to 0). Implemented
578 Clear register #78 (set to 0). Implemented
579 Clear register #79 (set to 0). Implemented
580 Clear register #80 (set to 0). Implemented
581 Clear register #81 (set to 0). Implemented
582 Clear register #82 (set to 0). Implemented
583 Clear register #83 (set to 0). Implemented
584 Clear register #84 (set to 0). Implemented
585 Clear register #85 (set to 0). Implemented
586 Clear register #86 (set to 0). Implemented
587 Clear register #87 (set to 0). Implemented
588 Clear register #88 (set to 0). Implemented
589 Clear register #89 (set to 0). Implemented
590 Clear register #90 (set to 0). Implemented
591 Clear register #91 (set to 0). Implemented
592 Clear register #92 (set to 0). Implemented
593 Clear register #93 (set to 0). Implemented
594 Clear register #94 (set to 0). Implemented
595 Clear register #95 (set to 0). Implemented
596 Clear register #96 (set to 0). Implemented
597 Clear register #97 (set to 0). Implemented
598 Clear register #98 (set to 0). Implemented
599 Clear register #99 (set to 0). Implemented
600 Jump identifier V. Implemented
601 not used
602 not used
603 not used
604 not used
605 not used
606 not used
607 not used
608 not used
609 not used
610 not used
611 not used
612 not used
613 not used
614 not used
615 not used
616 not used
617 not used
618 not used
619 not used
620 not used
621 not used
622 not used
623 not used
624 not used
625 not used
626 not used
627 not used
628 not used
629 not used
630 not used
631 not used
632 not used
633 not used
634 not used
635 not used
636 not used
637 not used
638 not used
639 not used
640 not used
641 not used
642 not used
643 not used
644 not used
645 not used
646 not used
647 not used
648 not used
649 not used
650 not used
651 not used
652 not used
653 not used
654 not used
655 not used
656 not used
657 not used
658 not used
659 not used
660 not used
661 not used
662 not used
663 not used
664 not used
665 not used
666 not used
667 not used
668 not used
669 not used
670 not used
671 not used
672 not used
673 not used
674 not used
675 not used
676 not used
677 not used
678 not used
679 not used
680 not used
681 not used
682 not used
683 not used
684 not used
685 not used
686 not used
687 not used
688 not used
689 not used
690 not used
691 not used
692 not used
693 not used
694 not used
695 not used
696 not used
697 not used
698 not used
699 not used
700 Jump identifier VI. Implemented
701 not used
702 not used
703 not used
704 not used
705 not used
706 not used
707 not used
708 not used
709 not used
710 not used
711 not used
712 not used
713 not used
714 not used
715 not used
716 not used
717 not used
718 not used
719 not used
720 not used
721 not used
722 not used
723 not used
724 not used
725 not used
726 not used
727 not used
728 not used
729 not used
730 not used
731 not used
732 not used
733 not used
734 not used
735 not used
736 not used
737 not used
738 not used
739 not used
740 not used
741 not used
742 not used
743 not used
744 not used
745 not used
746 not used
747 not used
748 not used
749 not used
750 not used
751 not used
752 not used
753 not used
754 not used
755 not used
756 not used
757 not used
758 not used
759 not used
760 not used
761 not used
762 not used
763 not used
764 not used
765 not used
766 not used
767 not used
768 not used
769 not used
770 not used
771 not used
772 not used
773 not used
774 not used
775 not used
776 not used
777 not used
778 not used
779 not used
780 not used
781 not used
782 not used
783 not used
784 not used
785 not used
786 not used
787 not used
788 not used
789 not used
790 not used
791 not used
792 not used
793 not used
794 not used
795 not used
796 not used
797 not used
798 not used
799 not used
800 Jump identifier VII. Implemented
801 not used
802 not used
803 not used
804 not used
805 not used
806 not used
807 not used
808 not used
809 not used
810 not used
811 not used
812 not used
813 not used
814 not used
815 not used
816 not used
817 not used
818 not used
819 not used
820 not used
821 not used
822 not used
823 not used
824 not used
825 not used
826 not used
827 not used
828 not used
829 not used
830 not used
831 not used
832 not used
833 not used
834 not used
835 not used
836 not used
837 not used
838 not used
839 not used
840 not used
841 not used
842 not used
843 not used
844 not used
845 not used
846 not used
847 not used
848 not used
849 not used
850 not used
851 not used
852 not used
853 not used
854 not used
855 not used
856 not used
857 not used
858 not used
859 not used
860 not used
861 not used
862 not used
863 not used
864 not used
865 not used
866 not used
867 not used
868 not used
869 not used
870 not used
871 not used
872 not used
873 not used
874 not used
875 not used
876 not used
877 not used
878 not used
879 not used
880 not used
881 not used
882 not used
883 not used
884 not used
885 not used
886 not used
887 not used
888 not used
889 not used
890 not used
891 not used
892 not used
893 not used
894 not used
895 not used
896 not used
897 not used
898 not used
899 not used
900 Jump identifier VIII. Implemented
901 not used
902 not used
903 not used
904 not used
905 not used
906 not used
907 not used
908 not used
909 not used
910 not used
911 not used
912 not used
913 not used
914 not used
915 not used
916 not used
917 not used
918 not used
919 not used
920 not used
921 not used
922 not used
923 not used
924 not used
925 not used
926 not used
927 not used
928 not used
929 not used
930 not used
931 not used
932 not used
933 not used
934 not used
935 not used
936 not used
937 not used
938 not used
939 not used
940 not used
941 not used
942 not used
943 not used
944 not used
945 not used
946 not used
947 not used
948 not used
949 not used
950 not used
951 not used
952 not used
953 not used
954 not used
955 not used
956 not used
957 not used
958 not used
959 not used
960 not used
961 not used
962 not used
963 not used
964 not used
965 not used
966 not used
967 not used
968 not used
969 not used
970 not used
971 not used
972 not used
973 not used
974 not used
975 not used
976 not used
977 not used
978 not used
979 not used
980 not used
981 not used
982 not used
983 not used
984 not used
985 not used
986 not used
987 not used
988 not used
989 not used
990 not used
991 not used
992 not used
993 not used
994 not used
995 not used
996 not used
997 not used
998 not used
999 not used