Examine individual changes

Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)
Jump to navigation Jump to search

This page allows you to examine the variables generated by the Abuse Filter for an individual change.

Variables generated for this change

VariableValue
Edit count of the user (user_editcount)
9
Name of the user account (user_name)
'Waffelz'
Age of the user account (user_age)
24449025
Page ID (page_id)
0
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'81'
Full page title (page_prefixedtitle)
'81'
Action (action)
'edit'
Edit summary/reason (summary)
''
Old content model (old_content_model)
''
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
''
New page wikitext, after the edit (new_wikitext)
'{{Distinguish/Confusion|8}} :''Note that 81 is always italicized.'' {{infobox proglang |name=''81'' |paradigms=Imperative |author=[[User:Waffelz|waffelz]] |year=[[:Category:2025|2025]] |memsys=[[:Category:Cell-based|Cell-based]] |dimensions=one-dimensional |class=[[:Category:Turing complete|Turing complete]] |files=<code>*.81</code> }} == About == ''81'' is an esolang created by [[User:Waffelz|waffelz]] during class because he was bored. It is entirely based on base-81 literals, whose digits are listed in the table below: {|class=wikitable style="font-family: Monospace; font-size: 12px" |- style="background: black; color: white"; align="center" | || X0 || X1 || X2 || X3 || X4 || X5 || X6 || X7 || X8 || X9 |- align="center" | style="background: black; color: white" | 0X || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 |- align="center" | style="background: black; color: white" | 1X || A || B || C || D || E || F || G || H || I || J |- align="center" | style="background: black; color: white" | 2X || K || L || M || N || O || P || Q || R || S || T |- align="center" | style="background: black; color: white" | 3X || U || V || W || X || Y || Z || a || b || c || d |- align="center" | style="background: black; color: white" | 4X || e || f || g || h || i || j || k || l || m || n |- align="center" | style="background: black; color: white" | 5X || o || p || q || r || s || t || u || v || w || x |- align="center" | style="background: black; color: white" | 6X || y || z || ! || @ || # || $ || % || ^ || & || * |- align="center" | style="background: black; color: white" | 7X || + || / || &vert; || \ || < || > || ~ || ` || ? || = |- align="center" | style="background: black; color: white" | 8X || _ || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | |} In ''81'' code, number literals are surrounded in brackets (<code>[...]</code>), and memory addresses are surrounded in braces (<code>{...}</code>). It has a set of 28 opcodes, which are Turing-complete. == Memory == There are 43,046,721 memory cells, indexed from [0] to [&thinsp;_&thinsp;_&thinsp;_&thinsp;], all initialized as 0. They can store integers from 0–15,009,4635,296,999,120, or [0] to [&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;]. It has built-in 5 registers — an accumulator (<code>A</code>), 3 general-purpose registers (<code>RX</code>/<code>RY</code>/<code>RZ</code>), and an overflow flag (<code>V</code>). == Commands == ''(<code>M1</code>/<code>M2</code> represent arbitrary memory addresses, <code>C1</code>/<code>C2</code> represent arbitrary number literals, and <code>label</code> represents an arbitrary label.)'' {|class=wikitable |- | style="font-family: Monospace; font-size: 12px" | CPY C1 M1 || Copies the value of C1 to M1. |- | style="font-family: Monospace; font-size: 12px" | INC M1 || Increment the value of M1. |- | style="font-family: Monospace; font-size: 12px" | DEC M1 || Decrement the value of M1. |- | style="font-family: Monospace; font-size: 12px" | ADD C1 C2 || Add the values of C1 and C2 and store it in the accumulator. |- | style="font-family: Monospace; font-size: 12px" | SUB C1 C2 || Subtract the values of C1 and C2 and store it in the accumulator. |- | style="font-family: Monospace; font-size: 12px" | MUL C1 C2 || Multiply the values of C1 and C2 and store it in the accumulator. |- | style="font-family: Monospace; font-size: 12px" | DIV C1 C2 || Divide the values of C1 and C2 and store it in the accumulator, rounding down if necessary. |- | style="font-family: Monospace; font-size: 12px" | POW C1 C2 || Raise the value of C1 to the value of C2 and store it in the accumulator. |- | style="font-family: Monospace; font-size: 12px" | CLR M1 || Reset the value of M1 to 0. |- | style="font-family: Monospace; font-size: 12px" | SWP M1 M2 || Swap the values of M1 and M2. |- | style="font-family: Monospace; font-size: 12px" | EQL C1 C2 || Store 1 in the accumulator if C1 is equal to C2, else 0. |- | style="font-family: Monospace; font-size: 12px" | NEQ C1 C2 || Store 1 in the accumulator if C1 is not equal to C2, else 0. |- | style="font-family: Monospace; font-size: 12px" | GRT C1 C2 || Store 1 in the accumulator if C1 is greater than C2, else 0. |- | style="font-family: Monospace; font-size: 12px" | LSS C1 C2 || Store 1 in the accumulator if C1 is less than C2, else 0. |- | style="font-family: Monospace; font-size: 12px" | ) label || Define a label for use with JMP or related commands. |- | style="font-family: Monospace; font-size: 12px" | JMP label || Move code execution to the specified label. |- | style="font-family: Monospace; font-size: 12px" | JEQ C1 C2 label || Move code execution to the specified label if C1 is equal to C2, else continue normally. |- | style="font-family: Monospace; font-size: 12px" | JNQ C1 C2 label || Move code execution to the specified label if C1 is not equal to C2, else continue normally. |- | style="font-family: Monospace; font-size: 12px" | JGR C1 C2 label || Move code execution to the specified label if C1 is greater than to C2, else continue normally. |- | style="font-family: Monospace; font-size: 12px" | JLS C1 C2 label || Move code execution to the specified label if C1 is less than C2, else continue normally. |- | style="font-family: Monospace; font-size: 12px" | JCD C1 label || Move code execution to the specified label if C1 is 1, else continue normally. |- | style="font-family: Monospace; font-size: 12px" | RET || Move code execution to the instruction after the last executed JMP (or related) command. |- | style="font-family: Monospace; font-size: 12px" | OUT C1 || Output the Unicode character whose codepoint is stored in C1. |- | style="font-family: Monospace; font-size: 12px" | INP || Take one character as input and store its Unicode codepoint in the accumulator. |- | style="font-family: Monospace; font-size: 12px" | †NOU C1 || Output the number in C1 in base 10. |- | style="font-family: Monospace; font-size: 12px" | †NIN || Take one base-10 number as input and store it in the accumulator. |- | style="font-family: Monospace; font-size: 12px" | HLT || Halt the program. |- | style="font-family: Monospace; font-size: 12px" | NOP || No-op (does nothing). |} ''†This operator exists solely for user-friendliness. The programmer must use base 81 internally.'' <br> ''Note: A <code>HLT</code> command is not required for a program.'' == Syntax/Semantics == The syntax of ''81'' is very simple. Every command is on its own newline, followed by its arguments separated by one space. <br> ''81'' has two types of comments — a normal (inline) comment, and a header. Inline comments are delimited via <code>@</code>, and everything after is ignored by the runtime. A header comment must be on its own line, and is surrounded by three equal signs (<code>=== ... ===</code>). == Example Programs == :''Note: These programs contain the original comments from the draft of 81.'' === “Hello, World!” === OUT [/] @ H (72) OUT [1K] @ e (101) OUT [1R] @ l (108) OUT [1R] @ l (108) OUT [1U] @ o (111) OUT [i] @ , (44) OUT [W] @ (32) OUT [16] @ W (87) OUT [1U] @ o (111 OUT [1X] @ r (114) OUT [1R] @ l (108) OUT [1J] @ d (100) OUT [X] @ ! (33) HLT === Fibonacci Numbers === === input collection === NIN @ iteration count CPY A G0 === edge cases === JEQ G0 [0] _ JEQ G0 [1] c1 JEQ G0 [2] c2 === prepare memory == CPY [0] {0} CPY [1] {1} DEC G0 DEC G0 === set up output === OUT {0} OUT [D] OUT {1} === main loop === ) loop ADD {0} {1} @ calculate the next number based on @ the current ones in memory JCD V err @ jump to )err on an overflow OUT [D] @ output a space, then the number NOU A @ this stops trailing spaces in the CPY {0} A @ program’s output. SWP {0} {1} @ keep only what’s needed for the next DEC G0 @ iteration JGR G0 0 loop === 0 edge case === ) _ HLT === 1 edge case === ) c1 NOU {0} HLT === 2 edge case === ) c2 NOU {0} OUT [D] NOU {1} HLT === overflow error === ) err OUT [*] @ E (69) OUT [1X] @ r (114) OUT [1X] @ r (114) === Primality Check === === input collection === NIN @ the number to check CPY RX A === handle n = 0 or 1 edge cases === JLS RX [2] N/A === prepare memory === CPY RY [2] @ the current integer being divided === main loop === ) loop @ if RY^2 > RX, and the loop is still going (meaning @ it passed), stop the program MUL RY RY JGR A RX p @ if RX % RY != 0, stop the program DIV RX RY MUL A RY SUB RX A JEQ A [0] _ @ increment RY and loop INC RY JMP loop === primality check indeterminant === ) N/A OUT [?] @ N (78) OUT [l] @ / (47) OUT [$] @ A (65) HLT === primality check passed (prime) === ) p OUT [_4] @ T (84) HLT === primality check failed (not prime) === ) _ OUT [+] @ F (70) HLT [[Category:Low-level]] [[Category:Cell-based]] [[Category:Unimplemented]] [[Category:Languages]] [[Category:2025]] [[Category:Turing complete]]'
Unified diff of changes made by edit (edit_diff)
'@@ -1,0 +1,243 @@ +{{Distinguish/Confusion|8}} +:''Note that 81 is always italicized.'' + +{{infobox proglang + |name=''81'' + |paradigms=Imperative + |author=[[User:Waffelz|waffelz]] + |year=[[:Category:2025|2025]] + |memsys=[[:Category:Cell-based|Cell-based]] + |dimensions=one-dimensional + |class=[[:Category:Turing complete|Turing complete]] + |files=<code>*.81</code> +}} + +== About == +''81'' is an esolang created by [[User:Waffelz|waffelz]] during class because he was bored. It is entirely based on base-81 literals, whose digits are listed in the table below: + +{|class=wikitable style="font-family: Monospace; font-size: 12px" +|- style="background: black; color: white"; align="center" +| || X0 || X1 || X2 || X3 || X4 || X5 || X6 || X7 || X8 || X9 +|- align="center" +| style="background: black; color: white" | 0X || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 +|- align="center" +| style="background: black; color: white" | 1X || A || B || C || D || E || F || G || H || I || J +|- align="center" +| style="background: black; color: white" | 2X || K || L || M || N || O || P || Q || R || S || T +|- align="center" +| style="background: black; color: white" | 3X || U || V || W || X || Y || Z || a || b || c || d +|- align="center" +| style="background: black; color: white" | 4X || e || f || g || h || i || j || k || l || m || n +|- align="center" +| style="background: black; color: white" | 5X || o || p || q || r || s || t || u || v || w || x +|- align="center" +| style="background: black; color: white" | 6X || y || z || ! || @ || # || $ || % || ^ || & || * +|- align="center" +| style="background: black; color: white" | 7X || + || / || &vert; || \ || < || > || ~ || ` || ? || = +|- align="center" +| style="background: black; color: white" | 8X || _ || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | +|} + +In ''81'' code, number literals are surrounded in brackets (<code>[...]</code>), and memory addresses are surrounded in braces (<code>{...}</code>). It has a set of 28 opcodes, which are Turing-complete. + +== Memory == +There are 43,046,721 memory cells, indexed from [0] to [&thinsp;_&thinsp;_&thinsp;_&thinsp;], all initialized as 0. They can store integers from 0–15,009,4635,296,999,120, or [0] to [&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;]. It has built-in 5 registers — an accumulator (<code>A</code>), 3 general-purpose registers (<code>RX</code>/<code>RY</code>/<code>RZ</code>), and an overflow flag (<code>V</code>). + +== Commands == +''(<code>M1</code>/<code>M2</code> represent arbitrary memory addresses, <code>C1</code>/<code>C2</code> represent arbitrary number literals, and <code>label</code> represents an arbitrary label.)'' + +{|class=wikitable +|- +| style="font-family: Monospace; font-size: 12px" | CPY C1 M1 || Copies the value of C1 to M1. +|- +| style="font-family: Monospace; font-size: 12px" | INC M1 || Increment the value of M1. +|- +| style="font-family: Monospace; font-size: 12px" | DEC M1 || Decrement the value of M1. +|- +| style="font-family: Monospace; font-size: 12px" | ADD C1 C2 || Add the values of C1 and C2 and store it in the accumulator. +|- +| style="font-family: Monospace; font-size: 12px" | SUB C1 C2 || Subtract the values of C1 and C2 and store it in the accumulator. +|- +| style="font-family: Monospace; font-size: 12px" | MUL C1 C2 || Multiply the values of C1 and C2 and store it in the accumulator. +|- +| style="font-family: Monospace; font-size: 12px" | DIV C1 C2 || Divide the values of C1 and C2 and store it in the accumulator, rounding down if necessary. +|- +| style="font-family: Monospace; font-size: 12px" | POW C1 C2 || Raise the value of C1 to the value of C2 and store it in the accumulator. +|- +| style="font-family: Monospace; font-size: 12px" | CLR M1 || Reset the value of M1 to 0. +|- +| style="font-family: Monospace; font-size: 12px" | SWP M1 M2 || Swap the values of M1 and M2. +|- +| style="font-family: Monospace; font-size: 12px" | EQL C1 C2 || Store 1 in the accumulator if C1 is equal to C2, else 0. +|- +| style="font-family: Monospace; font-size: 12px" | NEQ C1 C2 || Store 1 in the accumulator if C1 is not equal to C2, else 0. +|- +| style="font-family: Monospace; font-size: 12px" | GRT C1 C2 || Store 1 in the accumulator if C1 is greater than C2, else 0. +|- +| style="font-family: Monospace; font-size: 12px" | LSS C1 C2 || Store 1 in the accumulator if C1 is less than C2, else 0. +|- +| style="font-family: Monospace; font-size: 12px" | ) label || Define a label for use with JMP or related commands. +|- +| style="font-family: Monospace; font-size: 12px" | JMP label || Move code execution to the specified label. +|- +| style="font-family: Monospace; font-size: 12px" | JEQ C1 C2 label || Move code execution to the specified label if C1 is equal to C2, else continue normally. +|- +| style="font-family: Monospace; font-size: 12px" | JNQ C1 C2 label || Move code execution to the specified label if C1 is not equal to C2, else continue normally. +|- +| style="font-family: Monospace; font-size: 12px" | JGR C1 C2 label || Move code execution to the specified label if C1 is greater than to C2, else continue normally. +|- +| style="font-family: Monospace; font-size: 12px" | JLS C1 C2 label || Move code execution to the specified label if C1 is less than C2, else continue normally. +|- +| style="font-family: Monospace; font-size: 12px" | JCD C1 label || Move code execution to the specified label if C1 is 1, else continue normally. +|- +| style="font-family: Monospace; font-size: 12px" | RET || Move code execution to the instruction after the last executed JMP (or related) command. +|- +| style="font-family: Monospace; font-size: 12px" | OUT C1 || Output the Unicode character whose codepoint is stored in C1. +|- +| style="font-family: Monospace; font-size: 12px" | INP || Take one character as input and store its Unicode codepoint in the accumulator. +|- +| style="font-family: Monospace; font-size: 12px" | †NOU C1 || Output the number in C1 in base 10. +|- +| style="font-family: Monospace; font-size: 12px" | †NIN || Take one base-10 number as input and store it in the accumulator. +|- +| style="font-family: Monospace; font-size: 12px" | HLT || Halt the program. +|- +| style="font-family: Monospace; font-size: 12px" | NOP || No-op (does nothing). +|} + +''†This operator exists solely for user-friendliness. The programmer must use base 81 internally.'' +<br> +''Note: A <code>HLT</code> command is not required for a program.'' + +== Syntax/Semantics == +The syntax of ''81'' is very simple. Every command is on its own newline, followed by its arguments separated by one space. +<br> +''81'' has two types of comments — a normal (inline) comment, and a header. Inline comments are delimited via <code>@</code>, and everything after is ignored by the runtime. A header comment must be on its own line, and is surrounded by three equal signs (<code>=== ... ===</code>). + +== Example Programs == +:''Note: These programs contain the original comments from the draft of 81.'' +=== “Hello, World!” === + OUT [/] @ H (72) + OUT [1K] @ e (101) + OUT [1R] @ l (108) + OUT [1R] @ l (108) + OUT [1U] @ o (111) + OUT [i] @ , (44) + OUT [W] @ (32) + OUT [16] @ W (87) + OUT [1U] @ o (111 + OUT [1X] @ r (114) + OUT [1R] @ l (108) + OUT [1J] @ d (100) + OUT [X] @ ! (33) + HLT + +=== Fibonacci Numbers === + === input collection === + NIN @ iteration count + CPY A G0 + + === edge cases === + JEQ G0 [0] _ + JEQ G0 [1] c1 + JEQ G0 [2] c2 + + === prepare memory == + CPY [0] {0} + CPY [1] {1} + DEC G0 + DEC G0 + + === set up output === + OUT {0} + OUT [D] + OUT {1} + + === main loop === + ) loop + ADD {0} {1} @ calculate the next number based on + @ the current ones in memory + + JCD V err @ jump to )err on an overflow + + OUT [D] @ output a space, then the number + NOU A @ this stops trailing spaces in the + CPY {0} A @ program’s output. + + SWP {0} {1} @ keep only what’s needed for the next + DEC G0 @ iteration + JGR G0 0 loop + + === 0 edge case === + ) _ + HLT + + === 1 edge case === + ) c1 + NOU {0} + HLT + + === 2 edge case === + ) c2 + NOU {0} + OUT [D] + NOU {1} + HLT + + === overflow error === + ) err + OUT [*] @ E (69) + OUT [1X] @ r (114) + OUT [1X] @ r (114) + +=== Primality Check === + === input collection === + NIN @ the number to check + CPY RX A + + === handle n = 0 or 1 edge cases === + JLS RX [2] N/A + + === prepare memory === + CPY RY [2] @ the current integer being divided + + === main loop === + ) loop + @ if RY^2 > RX, and the loop is still going (meaning + @ it passed), stop the program + MUL RY RY + JGR A RX p + + @ if RX % RY != 0, stop the program + DIV RX RY + MUL A RY + SUB RX A + JEQ A [0] _ + + @ increment RY and loop + INC RY + JMP loop + + === primality check indeterminant === + ) N/A + OUT [?] @ N (78) + OUT [l] @ / (47) + OUT [$] @ A (65) + HLT + + === primality check passed (prime) === + ) p + OUT [_4] @ T (84) + HLT + + === primality check failed (not prime) === + ) _ + OUT [+] @ F (70) + HLT + +[[Category:Low-level]] +[[Category:Cell-based]] +[[Category:Unimplemented]] +[[Category:Languages]] +[[Category:2025]] +[[Category:Turing complete]] '
New page size (new_size)
9465
Old page size (old_size)
0
Lines added in edit (added_lines)
[ 0 => '{{Distinguish/Confusion|8}}', 1 => ':''Note that 81 is always italicized.''', 2 => '', 3 => '{{infobox proglang', 4 => ' |name=''81''', 5 => ' |paradigms=Imperative', 6 => ' |author=[[User:Waffelz|waffelz]]', 7 => ' |year=[[:Category:2025|2025]]', 8 => ' |memsys=[[:Category:Cell-based|Cell-based]]', 9 => ' |dimensions=one-dimensional', 10 => ' |class=[[:Category:Turing complete|Turing complete]]', 11 => ' |files=<code>*.81</code>', 12 => '}}', 13 => '', 14 => '== About ==', 15 => '''81'' is an esolang created by [[User:Waffelz|waffelz]] during class because he was bored. It is entirely based on base-81 literals, whose digits are listed in the table below:', 16 => '', 17 => '{|class=wikitable style="font-family: Monospace; font-size: 12px"', 18 => '|- style="background: black; color: white"; align="center"', 19 => '| || X0 || X1 || X2 || X3 || X4 || X5 || X6 || X7 || X8 || X9', 20 => '|- align="center"', 21 => '| style="background: black; color: white" | 0X || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9', 22 => '|- align="center"', 23 => '| style="background: black; color: white" | 1X || A || B || C || D || E || F || G || H || I || J', 24 => '|- align="center"', 25 => '| style="background: black; color: white" | 2X || K || L || M || N || O || P || Q || R || S || T', 26 => '|- align="center"', 27 => '| style="background: black; color: white" | 3X || U || V || W || X || Y || Z || a || b || c || d', 28 => '|- align="center"', 29 => '| style="background: black; color: white" | 4X || e || f || g || h || i || j || k || l || m || n', 30 => '|- align="center"', 31 => '| style="background: black; color: white" | 5X || o || p || q || r || s || t || u || v || w || x', 32 => '|- align="center"', 33 => '| style="background: black; color: white" | 6X || y || z || ! || @ || # || $ || % || ^ || & || *', 34 => '|- align="center"', 35 => '| style="background: black; color: white" | 7X || + || / || &vert; || \ || < || > || ~ || ` || ? || =', 36 => '|- align="center"', 37 => '| style="background: black; color: white" | 8X || _ || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" | || style ="background: black; color: white" |', 38 => '|}', 39 => '', 40 => 'In ''81'' code, number literals are surrounded in brackets (<code>[...]</code>), and memory addresses are surrounded in braces (<code>{...}</code>). It has a set of 28 opcodes, which are Turing-complete.', 41 => '', 42 => '== Memory ==', 43 => 'There are 43,046,721 memory cells, indexed from [0] to [&thinsp;_&thinsp;_&thinsp;_&thinsp;], all initialized as 0. They can store integers from 0–15,009,4635,296,999,120, or [0] to [&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;_&thinsp;]. It has built-in 5 registers — an accumulator (<code>A</code>), 3 general-purpose registers (<code>RX</code>/<code>RY</code>/<code>RZ</code>), and an overflow flag (<code>V</code>). ', 44 => '', 45 => '== Commands ==', 46 => '''(<code>M1</code>/<code>M2</code> represent arbitrary memory addresses, <code>C1</code>/<code>C2</code> represent arbitrary number literals, and <code>label</code> represents an arbitrary label.)''', 47 => '', 48 => '{|class=wikitable', 49 => '|-', 50 => '| style="font-family: Monospace; font-size: 12px" | CPY C1 M1 || Copies the value of C1 to M1.', 51 => '|-', 52 => '| style="font-family: Monospace; font-size: 12px" | INC M1 || Increment the value of M1.', 53 => '|-', 54 => '| style="font-family: Monospace; font-size: 12px" | DEC M1 || Decrement the value of M1.', 55 => '|-', 56 => '| style="font-family: Monospace; font-size: 12px" | ADD C1 C2 || Add the values of C1 and C2 and store it in the accumulator.', 57 => '|-', 58 => '| style="font-family: Monospace; font-size: 12px" | SUB C1 C2 || Subtract the values of C1 and C2 and store it in the accumulator.', 59 => '|-', 60 => '| style="font-family: Monospace; font-size: 12px" | MUL C1 C2 || Multiply the values of C1 and C2 and store it in the accumulator.', 61 => '|-', 62 => '| style="font-family: Monospace; font-size: 12px" | DIV C1 C2 || Divide the values of C1 and C2 and store it in the accumulator, rounding down if necessary.', 63 => '|-', 64 => '| style="font-family: Monospace; font-size: 12px" | POW C1 C2 || Raise the value of C1 to the value of C2 and store it in the accumulator.', 65 => '|-', 66 => '| style="font-family: Monospace; font-size: 12px" | CLR M1 || Reset the value of M1 to 0.', 67 => '|-', 68 => '| style="font-family: Monospace; font-size: 12px" | SWP M1 M2 || Swap the values of M1 and M2.', 69 => '|-', 70 => '| style="font-family: Monospace; font-size: 12px" | EQL C1 C2 || Store 1 in the accumulator if C1 is equal to C2, else 0.', 71 => '|-', 72 => '| style="font-family: Monospace; font-size: 12px" | NEQ C1 C2 || Store 1 in the accumulator if C1 is not equal to C2, else 0.', 73 => '|-', 74 => '| style="font-family: Monospace; font-size: 12px" | GRT C1 C2 || Store 1 in the accumulator if C1 is greater than C2, else 0.', 75 => '|-', 76 => '| style="font-family: Monospace; font-size: 12px" | LSS C1 C2 || Store 1 in the accumulator if C1 is less than C2, else 0.', 77 => '|-', 78 => '| style="font-family: Monospace; font-size: 12px" | ) label || Define a label for use with JMP or related commands.', 79 => '|-', 80 => '| style="font-family: Monospace; font-size: 12px" | JMP label || Move code execution to the specified label.', 81 => '|-', 82 => '| style="font-family: Monospace; font-size: 12px" | JEQ C1 C2 label || Move code execution to the specified label if C1 is equal to C2, else continue normally.', 83 => '|-', 84 => '| style="font-family: Monospace; font-size: 12px" | JNQ C1 C2 label || Move code execution to the specified label if C1 is not equal to C2, else continue normally.', 85 => '|-', 86 => '| style="font-family: Monospace; font-size: 12px" | JGR C1 C2 label || Move code execution to the specified label if C1 is greater than to C2, else continue normally.', 87 => '|-', 88 => '| style="font-family: Monospace; font-size: 12px" | JLS C1 C2 label || Move code execution to the specified label if C1 is less than C2, else continue normally.', 89 => '|-', 90 => '| style="font-family: Monospace; font-size: 12px" | JCD C1 label || Move code execution to the specified label if C1 is 1, else continue normally.', 91 => '|-', 92 => '| style="font-family: Monospace; font-size: 12px" | RET || Move code execution to the instruction after the last executed JMP (or related) command.', 93 => '|-', 94 => '| style="font-family: Monospace; font-size: 12px" | OUT C1 || Output the Unicode character whose codepoint is stored in C1.', 95 => '|-', 96 => '| style="font-family: Monospace; font-size: 12px" | INP || Take one character as input and store its Unicode codepoint in the accumulator.', 97 => '|-', 98 => '| style="font-family: Monospace; font-size: 12px" | †NOU C1 || Output the number in C1 in base 10.', 99 => '|-', 100 => '| style="font-family: Monospace; font-size: 12px" | †NIN || Take one base-10 number as input and store it in the accumulator.', 101 => '|-', 102 => '| style="font-family: Monospace; font-size: 12px" | HLT || Halt the program.', 103 => '|-', 104 => '| style="font-family: Monospace; font-size: 12px" | NOP || No-op (does nothing).', 105 => '|}', 106 => '', 107 => '''†This operator exists solely for user-friendliness. The programmer must use base 81 internally.''', 108 => '<br>', 109 => '''Note: A <code>HLT</code> command is not required for a program.''', 110 => '', 111 => '== Syntax/Semantics ==', 112 => 'The syntax of ''81'' is very simple. Every command is on its own newline, followed by its arguments separated by one space.', 113 => '<br>', 114 => '''81'' has two types of comments — a normal (inline) comment, and a header. Inline comments are delimited via <code>@</code>, and everything after is ignored by the runtime. A header comment must be on its own line, and is surrounded by three equal signs (<code>=== ... ===</code>).', 115 => '', 116 => '== Example Programs ==', 117 => ':''Note: These programs contain the original comments from the draft of 81.''', 118 => '=== “Hello, World!” ===', 119 => ' OUT [/] @ H (72)', 120 => ' OUT [1K] @ e (101)', 121 => ' OUT [1R] @ l (108)', 122 => ' OUT [1R] @ l (108)', 123 => ' OUT [1U] @ o (111)', 124 => ' OUT [i] @ , (44)', 125 => ' OUT [W] @ (32)', 126 => ' OUT [16] @ W (87)', 127 => ' OUT [1U] @ o (111', 128 => ' OUT [1X] @ r (114)', 129 => ' OUT [1R] @ l (108)', 130 => ' OUT [1J] @ d (100)', 131 => ' OUT [X] @ ! (33)', 132 => ' HLT', 133 => '', 134 => '=== Fibonacci Numbers ===', 135 => ' === input collection ===', 136 => ' NIN @ iteration count', 137 => ' CPY A G0', 138 => ' ', 139 => ' === edge cases ===', 140 => ' JEQ G0 [0] _', 141 => ' JEQ G0 [1] c1', 142 => ' JEQ G0 [2] c2', 143 => ' ', 144 => ' === prepare memory ==', 145 => ' CPY [0] {0}', 146 => ' CPY [1] {1}', 147 => ' DEC G0', 148 => ' DEC G0', 149 => ' ', 150 => ' === set up output ===', 151 => ' OUT {0}', 152 => ' OUT [D]', 153 => ' OUT {1}', 154 => ' ', 155 => ' === main loop ===', 156 => ' ) loop', 157 => ' ADD {0} {1} @ calculate the next number based on', 158 => ' @ the current ones in memory', 159 => ' ', 160 => ' JCD V err @ jump to )err on an overflow', 161 => ' ', 162 => ' OUT [D] @ output a space, then the number', 163 => ' NOU A @ this stops trailing spaces in the', 164 => ' CPY {0} A @ program’s output.', 165 => ' ', 166 => ' SWP {0} {1} @ keep only what’s needed for the next', 167 => ' DEC G0 @ iteration', 168 => ' JGR G0 0 loop', 169 => ' ', 170 => ' === 0 edge case ===', 171 => ' ) _', 172 => ' HLT', 173 => ' ', 174 => ' === 1 edge case ===', 175 => ' ) c1', 176 => ' NOU {0}', 177 => ' HLT', 178 => ' ', 179 => ' === 2 edge case ===', 180 => ' ) c2', 181 => ' NOU {0}', 182 => ' OUT [D]', 183 => ' NOU {1}', 184 => ' HLT', 185 => ' ', 186 => ' === overflow error ===', 187 => ' ) err', 188 => ' OUT [*] @ E (69)', 189 => ' OUT [1X] @ r (114)', 190 => ' OUT [1X] @ r (114)', 191 => '', 192 => '=== Primality Check ===', 193 => ' === input collection ===', 194 => ' NIN @ the number to check', 195 => ' CPY RX A', 196 => ' ', 197 => ' === handle n = 0 or 1 edge cases ===', 198 => ' JLS RX [2] N/A', 199 => ' ', 200 => ' === prepare memory ===', 201 => ' CPY RY [2] @ the current integer being divided', 202 => ' ', 203 => ' === main loop ===', 204 => ' ) loop', 205 => ' @ if RY^2 > RX, and the loop is still going (meaning', 206 => ' @ it passed), stop the program', 207 => ' MUL RY RY', 208 => ' JGR A RX p', 209 => ' ', 210 => ' @ if RX % RY != 0, stop the program', 211 => ' DIV RX RY', 212 => ' MUL A RY', 213 => ' SUB RX A', 214 => ' JEQ A [0] _', 215 => ' ', 216 => ' @ increment RY and loop', 217 => ' INC RY', 218 => ' JMP loop', 219 => ' ', 220 => ' === primality check indeterminant ===', 221 => ' ) N/A', 222 => ' OUT [?] @ N (78)', 223 => ' OUT [l] @ / (47)', 224 => ' OUT [$] @ A (65)', 225 => ' HLT', 226 => ' ', 227 => ' === primality check passed (prime) ===', 228 => ' ) p', 229 => ' OUT [_4] @ T (84)', 230 => ' HLT', 231 => ' ', 232 => ' === primality check failed (not prime) ===', 233 => ' ) _', 234 => ' OUT [+] @ F (70)', 235 => ' HLT', 236 => '', 237 => '[[Category:Low-level]] ', 238 => '[[Category:Cell-based]] ', 239 => '[[Category:Unimplemented]] ', 240 => '[[Category:Languages]]', 241 => '[[Category:2025]]', 242 => '[[Category:Turing complete]]' ]
Unix timestamp of change (timestamp)
'1760061683'