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)
0
Name of the user account (user_name)
'Gorbit99'
Age of the user account (user_age)
718
Page ID (page_id)
13390
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'GORBITSA'
Full page title (page_prefixedtitle)
'GORBITSA'
Action (action)
'edit'
Edit summary/reason (summary)
'fixed some incorrect info'
Old content model (old_content_model)
'wikitext'
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
'{{infobox proglang |name=GORBITSA |paradigms=imperative |author=David Barr |year=[[:Category:2020|2020]] |memsys=[[:Category:Cell-based|Cell-based]] |class=[[Finite-state_automaton|Finite-State Automaton]] |refimpl=[[:Category:Implemented|Implemented]] |files=<code>.gbt</code>, <code>.bgbt</code> }} '''GORBITSA''' is a novelty [[esoteric programming language]] created by David Barr (aka javidx9) as a programming challenge for One Lone Coder community. It's jokingly named after one of community moderators Gorbit. It first appeared in OLC Discord server on 17th June 2020. ==Complete description of the language as initially provided== Memory = 256 unsigned 8-bit cells X = unsigned 8-bit register Program counter starts at 0 256 program "instruction" slots G = GRAB X, N // Read X from mem[N] O = OFFER X, N // Write X to mem[N] R = RECEIVE X // Reads from input stream into X B = BRANCH X == 0, N // If X == 0, goto instruction N I = INCREASE X, N // Adds N to X register T = TRANSMIT X // Writes X to output stream S = SET X <- N // Set X explicitly to N A = ADD X, N // Adds mem[N] to X register g = GRAB X, [N] // Read X from mem[mem[N]] o = OFFER X, [N] // Write X to mem[mem[N]] r = RECEIVE [N] // Reads from input stream into mem[N] b = BRANCH X == 0, [N] // If X == 0, goto instruction mem[N] i = INCREASE [N], X // mem[N] = mem[N] + X t = TRANSMIT [N] // Writes to output stream mem[N] s = SET X <- X XOR [N] // Performs logic X XOR mem[N], stores in X a = ADD X, [N] // Adds mem[mem[N]] to X register GORBIT-ROM - Program stream is in external memory GORBIT-RAM - Program stream is in memory, each instruction is 2 bytes, therefore PC+=2 per op Example syntax R O201 R O202 S0 O203 G202 A202 O202 G201 I255 O201 B6 G202 T ==Specification== Following section uses the words: * '''MUST''' - Means it is part of the standard and must be implemented by any given runtime/parser * '''SHOULD''' - Same as '''UNDEFINED''' but describes the most commonly used behavior. * '''UNDEFINED''' - Means that actual behavior is not defined in the language and support may vary. * '''MAY''' - Same as '''UNDEFINED''' but serves as a way that (may) helps implementors during implementation. * '''MUST NOT''' - Means the standard forbids it and it must be ensured that this may not happen. to describe the Features. {| class="wikitable sortable" |- !ROM !RAM !Category !Classification !Description |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | 256 unsigned byte (8-bit) Cells, serving as Memory |- | bgcolor="#99ff99" | Yes | bgcolor="#ff9999" | No | Technical | MUST | 256 instruction slots. If instruction is 2 bytes large, instruction slots MAY be 512 unsigned bytes (8-bit) to support up to 256 instruction slots. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | Single Register unsigned byte (8-bit) called '''X''' |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) '''MIN SIZE''' 0 |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) '''MAX SIZE''' 255 |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) roll over to '''MIN SIZE''' (0) if ''255 + 1'' is performed |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) roll over to '''MAX SIZE''' (255) if ''0 - 1'' is performed |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | SHOULD | Instruction size SHOULD be 2 bytes. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | UNDEFINED | Initial values of Memory slots are UNDEFINED. Behavior when acessing it is up to implementor. |- | bgcolor="#99ff99" | Ye | bgcolor="#ff9999" | No | Technical | UNDEFINED | Initial values of Instruction slots are UNDEFINED. Behavior when acessing them is up to implementor. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MAY | GORBITSA runtimes MAY use a Program Counter (PC) to track the current progress. For this specification, it is expected that the implementor uses a PC. If you do not use a PC, adjust the specification readings to your needs. |- | bgcolor="#99ff99" | Yes | bgcolor="#ff9999" | No | Technical | MUST | PC MUST increase by 1 after non-branching instructions executed. |- | bgcolor="#ff9999" | No | bgcolor="#99ff99" | Yes | Technical | MUST | PC MUST increase by 2 after non-branching instructions executed. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST NOT | Branching instructions MUST NOT modify the Program Counter (PC) after they executed. |- | bgcolor="#99ff99" | Yes | bgcolor="#ff9999" | No | Technical | MUST | Branching instructions MUST address absolute instruction slot (eg. <code>B5</code> addresses instruction slot ''5''). |- | bgcolor="#ff9999" | No | bgcolor="#99ff99" | Yes | Technical | MUST | Branching instructions MUST address absolute Memory slot (eg. <code>B5</code> addresses memory slot ''5''). |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Format | MUST | A single instruction is made out of single-letter command code and up to 1 number parameter |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Format | UNDEFINED | There are no format requirements to GORBITSA code. Code MAY look like <code>S 0 T</code> or <code>S0 T</code> or <code>S0T</code> or <code>S 0T</code>. Implementors are RECOMMENDED to support all of those. Implementors SHOULD support <code>S0 T</code>. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Input | UNDEFINED | GORBITSA MAY use ascii characters as input or SHOULD use numbers as input. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Output | UNDEFINED | GORBITSA MAY use ascii characters as output or MAY use numbers as output. They MAY print a ''newline'' after output. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | UNDEFINED | When PC points at invalid instruction, it is UNDEFINED wether execution stops or continues. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | UNDEFINED | When PC points at (hypothetical) 256s instruction, it is UNDEFINED wether execution stops or continues at 0. |} <!-- GORBITSA operates on array of 256 8-bit cells (Memory) and single 8-bit register (X).<br> Instruction are provided in linear format, up to 256 instructions (slots 0-255). Current instruction is tracked by instruction counter (IC). At the beginning IC is 0. In each step instruction pointed by IC is read and executed. If instruction doesn't modify IC, the IC is incremented.<br> If IC points after last instruction, it is implementation-defined whether execution halts or continues.<br> If IC increments from 255, it is implementation-defined whether execution halts, or IC rolls over to 0. Whether input and/or output are in a form of a number or ascii character is implementation-defined. All instructions are made out of single-letter command code and up to 1 number parameter. --> ==Language overview== ===Base Instructions (GORBITSA)=== {| class="wikitable" !Command code !Parameter !Description |- | style="text-align:center"| <code>G</code> |Yes: N |X = Memory[N] |- | style="text-align:center"| <code>O</code> |Yes: N |Memory[N] = X |- | style="text-align:center"| <code>R</code> |No |Read input into X |- | style="text-align:center"| <code>B</code> |Yes: N |if X == 0, IC = N |- | style="text-align:center"| <code>I</code> |Yes: N |X += N |- | style="text-align:center"| <code>T</code> |No |Write X into output |- | style="text-align:center"| <code>S</code> |Yes: N |X = N |- | style="text-align:center"| <code>A</code> |Yes: N |X += Memory[N] |} ===Expanded Instructions (gorbitsa)=== After limitations of base language were recognized, the instruction set was expanded to lower case letters.<br> New set allows direct I/O with memory, runtime computed goto destination and XOR. {| class="wikitable" !Command code !Parameter !Description |- | style="text-align:center"| <code>g</code> |Yes: N |X = Memory[Memory[N]] |- | style="text-align:center"| <code>o</code> |Yes: N |Memory[Memory[N]] = X |- | style="text-align:center"| <code>r</code> |Yes: N |Read input into Memory[N] |- | style="text-align:center"| <code>b</code> |Yes: N |if X == 0, IC = Memory[N] |- | style="text-align:center"| <code>i</code> |Yes: N |Memory[N] += X |- | style="text-align:center"| <code>t</code> |Yes: N |Write Memory[N] into output |- | style="text-align:center"| <code>s</code> |Yes: N |X = X xor Memory[N] |- | style="text-align:center"| <code>a</code> |Yes: N |X += Memory[Memory[N]] |} ==Computational class== Due to limited amount of cells and limited possible values in cells and register, it's assumed to be [[finite-state automaton]]. ==Programs== Here are a few example programs that can be written in the GORBITSA language ===[[Hello World]]=== S72 T S101 T S108 T T S111 T S32 T S87 T S111 T S114 T S108 T S100 T ===[[Cat program]]=== R T ===[[Cat program]] until EOF=== Assumes 0-based command indexing. R T B5 S0 B0 S0 ===[[Truth-machine]]=== R O0 I255 O1 G0 T G1 B4 R B6 S1 T S0 B2 T R T B255 S1 T S0 B3 ===[[Quine]]=== Runs in '''GORBITSA-RAM''' mode S0 O255 g255 B22 g255 T G255 I1 O255 S0 B4 G255 I1 O240 g240 B36 S0 B10 B200 ===Subtraction=== R O0 R O1 G0 I255 O0 G1 I255 O1 B13 S0 B4 G0 T S255 O255 r0 R s255 I1 A0 T ===Multiplication=== R O0 O1 R I255 O2 G0 A1 O0 G2 I255 O2 B15 S0 B6 G0 T r201 R B17 I255 B16 O0 G201 O202 G202 i201 G0 I255 O0 B16 S0 B8 G201 T ===Modulus=== Runs on '''GORBITSA-ROM''' with '''int output''' and '''int input''' R O0 O1 R O2 O3 S255 O255 S0 B11 B19 G3 s255 I1 A1 O1 O5 S0 B10 G2 O10 G5 A10 B35 G5 B37 G10 B35 I255 O10 G5 I255 O5 S0 B21 S0 B8 G1 T ===Byte Swap=== It swaps the values of Memory[0] and Memory[1]: G0 s1 O0 G1 s0 O1 G0 s1 O0 ===For loop=== '''The first parameter'''(In this program, 5) is the number of times the loop will be executed S5 O0 S35 T G0 I255 O0 B10 S0 B2 S0 T ===Guessing Game (by [[User:Geek Joystick]])=== Runs on '''GORBITSA-ROM''' with '''char output''' and '''int input''' (the python interpreter by [[User:Geek Joystick]] & TwistedLlama works for this program) S0 S252 O0 S71 T S117 T S101 T S115 T T S32 T S40 T S48 T S45 T S57 T S41 T S63 T S32 T R O1 I48 T S12 T G0 A1 B50 S87 T S114 T S111 T S110 T S103 T S12 T S0 B0 S82 T S105 T S103 T S104 T S116 T S33 T ===Self Interpreter (by [[User:ZippyMagician]])=== Runs on '''GORBITSA-ROM''' with '''int output''' and '''int/ascii input'''. Interpreted code is in '''GORBITSA-RAM''', 99 commands maximum due to limitations of the memory. Each command and argument are inputted one after the other, with commands that take no arguments still requiring any number. Code will immediately be execute once the user enters "D". Only capital letter commands supported. S255 O253 R O255 I188 B13 G255 o200 G200 I1 O200 S0 B0 S82 O255 S19 O252 S0 B87 G254 B94 S84 O255 S27 O252 S0 B87 G254 B97 S71 O255 S35 O252 S0 B87 G254 B101 S79 O255 S43 O252 S0 B87 G254 B110 S66 O255 S51 O252 S0 B87 G254 B119 S73 O255 S59 O252 S0 B87 G254 B131 S83 O255 S67 O252 S0 B87 G254 B139 S65 O255 S75 O252 S0 B87 G254 B147 G201 s253 I1 A200 B255 G201 I2 O201 S0 B13 g201 s253 I1 A255 O254 S0 b252 r230 S0 B77 G230 T S0 B77 G201 I1 O220 g220 O220 g220 O230 S0 B77 G201 I1 O220 g220 O220 G230 o220 S0 B77 G201 I1 O220 G230 B122 S0 B77 g220 a220 O201 S0 B77 G201 I1 O220 G230 a220 O230 S0 B77 G201 I1 O220 S0 a220 O230 S0 B77 G201 I1 O220 G230 a220 O230 S0 B77 ===Pseudo Random Number Generator (by dandistine)=== Runs on '''GORBITSA-ROM''' with '''int or ascii input''' and '''int output'''. Takes three seeds as input, outputs a PRNG sequence until terminated S255 O0 S0 o0 S255 i0 G0 B10 S0 B3 r10 r11 r12 S1 O13 S1 i13 G13 A12 s10 O10 A11 O11 I1 s11 I255 B33 G11 I255 O20 O21 S0 B36 G11 O20 O21 G21 I255 O21 A21 s20 B44 S0 B36 G21 O11 s10 A12 O12 T S0 B15 ===A '''10x10 Box''' (By Megarev)=== The first ''S10'' and the third ''S10'' define the size of the box S10 O0 G0 I255 O0 B19 S10 T S10 O1 G1 I255 O1 S35 T G1 B2 S0 B10 S10 T ==Implementations== {| class="wikitable" |- ! Name !! Meaning |- | PC || Parse Input Supports Characters (eg. <code>Sa</code> gets read as <code>S97</code>; <code>S1</code> gets read as <code>S49</code>) |- | PM || Parse Input Supports Mixed (eg. <code>Sa</code> gets read as <code>S97</code>; <code>(char)1</code> gets read as <code>S1</code>) |- | PN || Parse Input Supports Numbers (eg. <code>Sa</code> gets rejected; <code>S1</code> gets read as <code>S1</code>) |- | PNN || Parse Input Supports Negative Numbers (eg. <code>Sa</code> gets rejected; <code>S-1</code> gets read as <code>S255</code>) |- | IC || Input Supports Characters (eg. <code>(char)a</code> gets read as <code>(uint8)97</code>; <code>(char)1</code> gets read as <code>(uint8)49</code>) |- | IM || Input Supports Mixed (eg. <code>(char)a</code> gets read as <code>(uint8)97</code>; <code>(char)1</code> gets read as <code>(uint8)1</code>) |- | IN || Input Supports Numbers (eg. <code>(char)a</code> gets rejected; <code>(char)1</code> gets read as <code>(uint8)1</code>) |- | INN || Input Supports Negative Numbers (eg. <code>(char)a</code> gets rejected; <code>(char)-1</code> gets read as <code>(uint8)255</code>) |- | OC || Output Supports Characters (eg. <code>(uint8)97</code> gets outputted as <code>(char)a</code>; <code>(uint8)49</code> gets outputted as <code>(char)1</code>) |- | ON || Output Supports Numbers (eg. <code>(uint8)97</code> gets outputted as <code>(string)97</code>) |} {| class="wikitable sortable" |- ! Language !! Base (ROM/RAM/BOTH) !! PC !! PM !! PN !! PNN !! IC !! IM !! IN !! INN !! OC !! ON !! Authors !! Link |- | Python | bgcolor="#9999ff" | ROM | bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | *[[User:Geek_Joystick]] *TwistedLlama || [https://py3.codeskulptor.org/#user305_jVW4bJkLBXz9HE9.py codeskulptor] |- | Node.JS | bgcolor="#ff99ff" | BOTH | bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | *[[User:ZippyMagician]] || [https://repl.it/@ZippyMagician/GORBITSA repl_it] |- | JavaScript | bgcolor="#9999ff" | ROM | bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y | *Sir Felix Delazar || [https://sirfelixdelazar.github.io/GORBITSA/ Site] |- | C | bgcolor="#ff99ff" | BOTH | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | *[[User:X39]] || [https://repl.it/@killerx29/EsoLang-GORBITSA#main.c repl_it] |- | Brainfuck | bgcolor="#9999ff" | ROM | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | *Gorbit99 || [https://esolangs.org/wiki/GORBITSA/bf-interpreter /bf-interpreter] |} [[Category:Languages]] [[Category:2020]] [[Category:Implemented]] [[Category:Low-level]] [[Category:Unknown computational class]]'
New page wikitext, after the edit (new_wikitext)
'{{infobox proglang |name=GORBITSA |paradigms=imperative |author=David Barr |year=[[:Category:2020|2020]] |memsys=[[:Category:Cell-based|Cell-based]] |class=[[Finite-state_automaton|Finite-State Automaton]] |refimpl=[[:Category:Implemented|Implemented]] |files=<code>.gbt</code>, <code>.bgbt</code> }} '''GORBITSA''' is a novelty [[esoteric programming language]] created by David Barr (aka javidx9) as a programming challenge for One Lone Coder community. It's jokingly named after one of community moderators Gorbit. It first appeared in OLC Discord server on 17th June 2020. ==Complete description of the language as initially provided== Memory = 256 unsigned 8-bit cells X = unsigned 8-bit register Program counter starts at 0 256 program "instruction" slots G = GRAB X, N // Read X from mem[N] O = OFFER X, N // Write X to mem[N] R = RECEIVE X // Reads from input stream into X B = BRANCH X == 0, N // If X == 0, goto instruction N I = INCREASE X, N // Adds N to X register T = TRANSMIT X // Writes X to output stream S = SET X <- N // Set X explicitly to N A = ADD X, N // Adds mem[N] to X register g = GRAB X, [N] // Read X from mem[mem[N]] o = OFFER X, [N] // Write X to mem[mem[N]] r = RECEIVE [N] // Reads from input stream into mem[N] b = BRANCH X == 0, [N] // If X == 0, goto instruction mem[N] i = INCREASE [N], X // mem[N] = mem[N] + X t = TRANSMIT [N] // Writes to output stream mem[N] s = SET X <- X XOR [N] // Performs logic X XOR mem[N], stores in X a = ADD X, [N] // Adds mem[mem[N]] to X register GORBIT-ROM - Program stream is in external memory GORBIT-RAM - Program stream is in memory, each instruction is 2 bytes, therefore PC+=2 per op Example syntax R O201 R O202 S0 O203 G202 A202 O202 G201 I255 O201 B6 G202 T ==Specification== Following section uses the words: * '''MUST''' - Means it is part of the standard and must be implemented by any given runtime/parser * '''UNDEFINED''' - Means that actual behavior is not defined in the language and support may vary. * '''MAY''' - Same as '''UNDEFINED''' but serves as a way that (may) helps implementors during implementation. * '''MUST NOT''' - Means the standard forbids it and it must be ensured that this may not happen. to describe the Features. {| class="wikitable sortable" |- !ROM !RAM !Category !Classification !Description |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | 256 unsigned byte (8-bit) Cells, serving as Memory |- | bgcolor="#99ff99" | Yes | bgcolor="#ff9999" | No | Technical | MUST | 256 instruction slots. If instruction is 2 bytes large, instruction slots MAY be 512 unsigned bytes (8-bit) to support up to 256 instruction slots. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | Single Register unsigned byte (8-bit) called '''X''' |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) '''MIN SIZE''' 0 |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) '''MAX SIZE''' 255 |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) roll over to '''MIN SIZE''' (0) if ''255 + 1'' is performed |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | unsigned byte (8-bit) roll over to '''MAX SIZE''' (255) if ''0 - 1'' is performed |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST | Instruction size MUST be 2 bytes. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | UNDEFINED | Initial values of Memory slots are UNDEFINED. Behavior when acessing it is up to implementor. |- | bgcolor="#99ff99" | Ye | bgcolor="#ff9999" | No | Technical | UNDEFINED | Initial values of Instruction slots are UNDEFINED. Behavior when acessing them is up to implementor. |- | bgcolor="#99ff99" | Yes | bgcolor="#ff9999" | No | Technical | MUST | PC MUST increase by 1 after non-branching instructions executed. |- | bgcolor="#ff9999" | No | bgcolor="#99ff99" | Yes | Technical | MUST | PC MUST increase by 2 after non-branching instructions executed. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | MUST NOT | Branching instructions MUST NOT modify the Program Counter (PC) after they executed. |- | bgcolor="#99ff99" | Yes | bgcolor="#ff9999" | No | Technical | MUST | Branching instructions MUST address absolute instruction slot (eg. <code>B5</code> addresses instruction slot ''5''). |- | bgcolor="#ff9999" | No | bgcolor="#99ff99" | Yes | Technical | MUST | Branching instructions MUST address absolute Memory slot (eg. <code>B5</code> addresses memory slot ''5''). |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Format | MUST | A single instruction is made out of single-letter command code and up to 1 number parameter |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Format | MUST | Instructions must be separated by spaces, an instruction consists of a valid letter and a number joined together: <code>S97 T R T</code> |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Input | UNDEFINED | GORBITSA MAY use ascii characters as input or MAY use numbers as input. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Output | UNDEFINED | GORBITSA MAY use ascii characters as output or MAY use numbers as output. They MAY print a ''newline'' after output. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | UNDEFINED | When PC points at invalid instruction, it is UNDEFINED wether execution stops or continues. |- | bgcolor="#99ff99" | Yes | bgcolor="#99ff99" | Yes | Technical | UNDEFINED | When PC points at (hypothetical) 256s instruction, execution halts. |} <!-- GORBITSA operates on array of 256 8-bit cells (Memory) and single 8-bit register (X).<br> Instruction are provided in linear format, up to 256 instructions (slots 0-255). Current instruction is tracked by instruction counter (IC). At the beginning IC is 0. In each step instruction pointed by IC is read and executed. If instruction doesn't modify IC, the IC is incremented.<br> If IC points after last instruction, execution halts.<br> Whether input and/or output are in a form of a number or ascii character is implementation-defined. All instructions are made out of single-letter command code and up to 1 number parameter. --> ==Language overview== ===Base Instructions (GORBITSA)=== {| class="wikitable" !Command code !Parameter !Description |- | style="text-align:center"| <code>G</code> |Yes: N |X = Memory[N] |- | style="text-align:center"| <code>O</code> |Yes: N |Memory[N] = X |- | style="text-align:center"| <code>R</code> |No |Read input into X |- | style="text-align:center"| <code>B</code> |Yes: N |if X == 0, IC = N |- | style="text-align:center"| <code>I</code> |Yes: N |X += N |- | style="text-align:center"| <code>T</code> |No |Write X into output |- | style="text-align:center"| <code>S</code> |Yes: N |X = N |- | style="text-align:center"| <code>A</code> |Yes: N |X += Memory[N] |} ===Expanded Instructions (gorbitsa)=== After limitations of base language were recognized, the instruction set was expanded to lower case letters.<br> New set allows direct I/O with memory, runtime computed goto destination and XOR. {| class="wikitable" !Command code !Parameter !Description |- | style="text-align:center"| <code>g</code> |Yes: N |X = Memory[Memory[N]] |- | style="text-align:center"| <code>o</code> |Yes: N |Memory[Memory[N]] = X |- | style="text-align:center"| <code>r</code> |Yes: N |Read input into Memory[N] |- | style="text-align:center"| <code>b</code> |Yes: N |if X == 0, IC = Memory[N] |- | style="text-align:center"| <code>i</code> |Yes: N |Memory[N] += X |- | style="text-align:center"| <code>t</code> |Yes: N |Write Memory[N] into output |- | style="text-align:center"| <code>s</code> |Yes: N |X = X xor Memory[N] |- | style="text-align:center"| <code>a</code> |Yes: N |X += Memory[Memory[N]] |} ==Computational class== Due to limited amount of cells and limited possible values in cells and register, it is a [[Linear bounded automaton]]. ==Programs== Here are a few example programs that can be written in the GORBITSA language ===[[Hello World]]=== S72 T S101 T S108 T T S111 T S32 T S87 T S111 T S114 T S108 T S100 T ===[[Cat program]]=== R T ===[[Cat program]] until EOF=== Assumes 0-based command indexing. R T B5 S0 B0 S0 ===[[Truth-machine]]=== R O0 I255 O1 G0 T G1 B4 R B6 S1 T S0 B2 T R T B255 S1 T S0 B3 ===[[Cheat Quine]]=== Runs in '''GORBITSA-RAM''' mode S0 O255 g255 B22 g255 T G255 I1 O255 S0 B4 G255 I1 O240 g240 B36 S0 B10 B200 ===Subtraction=== R O0 R O1 G0 I255 O0 G1 I255 O1 B13 S0 B4 G0 T S255 O255 r0 R s255 I1 A0 T ===Multiplication=== R O0 O1 R I255 O2 G0 A1 O0 G2 I255 O2 B15 S0 B6 G0 T r201 R B17 I255 B16 O0 G201 O202 G202 i201 G0 I255 O0 B16 S0 B8 G201 T ===Modulus=== Runs on '''GORBITSA-ROM''' with '''int output''' and '''int input''' R O0 O1 R O2 O3 S255 O255 S0 B11 B19 G3 s255 I1 A1 O1 O5 S0 B10 G2 O10 G5 A10 B35 G5 B37 G10 B35 I255 O10 G5 I255 O5 S0 B21 S0 B8 G1 T ===Byte Swap=== It swaps the values of Memory[0] and Memory[1]: G0 s1 O0 G1 s0 O1 G0 s1 O0 ===For loop=== '''The first parameter'''(In this program, 5) is the number of times the loop will be executed S5 O0 S35 T G0 I255 O0 B10 S0 B2 S0 T ===Guessing Game (by [[User:Geek Joystick]])=== Runs on '''GORBITSA-ROM''' with '''char output''' and '''int input''' (the python interpreter by [[User:Geek Joystick]] & TwistedLlama works for this program) S0 S252 O0 S71 T S117 T S101 T S115 T T S32 T S40 T S48 T S45 T S57 T S41 T S63 T S32 T R O1 I48 T S12 T G0 A1 B50 S87 T S114 T S111 T S110 T S103 T S12 T S0 B0 S82 T S105 T S103 T S104 T S116 T S33 T ===Self Interpreter (by [[User:ZippyMagician]])=== Runs on '''GORBITSA-ROM''' with '''int output''' and '''int/ascii input'''. Interpreted code is in '''GORBITSA-RAM''', 99 commands maximum due to limitations of the memory. Each command and argument are inputted one after the other, with commands that take no arguments still requiring any number. Code will immediately be execute once the user enters "D". Only capital letter commands supported. S255 O253 R O255 I188 B13 G255 o200 G200 I1 O200 S0 B0 S82 O255 S19 O252 S0 B87 G254 B94 S84 O255 S27 O252 S0 B87 G254 B97 S71 O255 S35 O252 S0 B87 G254 B101 S79 O255 S43 O252 S0 B87 G254 B110 S66 O255 S51 O252 S0 B87 G254 B119 S73 O255 S59 O252 S0 B87 G254 B131 S83 O255 S67 O252 S0 B87 G254 B139 S65 O255 S75 O252 S0 B87 G254 B147 G201 s253 I1 A200 B255 G201 I2 O201 S0 B13 g201 s253 I1 A255 O254 S0 b252 r230 S0 B77 G230 T S0 B77 G201 I1 O220 g220 O220 g220 O230 S0 B77 G201 I1 O220 g220 O220 G230 o220 S0 B77 G201 I1 O220 G230 B122 S0 B77 g220 a220 O201 S0 B77 G201 I1 O220 G230 a220 O230 S0 B77 G201 I1 O220 S0 a220 O230 S0 B77 G201 I1 O220 G230 a220 O230 S0 B77 ===Pseudo Random Number Generator (by dandistine)=== Runs on '''GORBITSA-ROM''' with '''int or ascii input''' and '''int output'''. Takes three seeds as input, outputs a PRNG sequence until terminated S255 O0 S0 o0 S255 i0 G0 B10 S0 B3 r10 r11 r12 S1 O13 S1 i13 G13 A12 s10 O10 A11 O11 I1 s11 I255 B33 G11 I255 O20 O21 S0 B36 G11 O20 O21 G21 I255 O21 A21 s20 B44 S0 B36 G21 O11 s10 A12 O12 T S0 B15 ===A '''10x10 Box''' (By Megarev)=== The first ''S10'' and the third ''S10'' define the size of the box S10 O0 G0 I255 O0 B19 S10 T S10 O1 G1 I255 O1 S35 T G1 B2 S0 B10 S10 T ==Implementations== {| class="wikitable" |- ! Name !! Meaning |- | PC || Parse Input Supports Characters (eg. <code>Sa</code> gets read as <code>S97</code>; <code>S1</code> gets read as <code>S49</code>) |- | PM || Parse Input Supports Mixed (eg. <code>Sa</code> gets read as <code>S97</code>; <code>(char)1</code> gets read as <code>S1</code>) |- | PN || Parse Input Supports Numbers (eg. <code>Sa</code> gets rejected; <code>S1</code> gets read as <code>S1</code>) |- | PNN || Parse Input Supports Negative Numbers (eg. <code>Sa</code> gets rejected; <code>S-1</code> gets read as <code>S255</code>) |- | IC || Input Supports Characters (eg. <code>(char)a</code> gets read as <code>(uint8)97</code>; <code>(char)1</code> gets read as <code>(uint8)49</code>) |- | IM || Input Supports Mixed (eg. <code>(char)a</code> gets read as <code>(uint8)97</code>; <code>(char)1</code> gets read as <code>(uint8)1</code>) |- | IN || Input Supports Numbers (eg. <code>(char)a</code> gets rejected; <code>(char)1</code> gets read as <code>(uint8)1</code>) |- | INN || Input Supports Negative Numbers (eg. <code>(char)a</code> gets rejected; <code>(char)-1</code> gets read as <code>(uint8)255</code>) |- | OC || Output Supports Characters (eg. <code>(uint8)97</code> gets outputted as <code>(char)a</code>; <code>(uint8)49</code> gets outputted as <code>(char)1</code>) |- | ON || Output Supports Numbers (eg. <code>(uint8)97</code> gets outputted as <code>(string)97</code>) |} {| class="wikitable sortable" |- ! Language !! Base (ROM/RAM/BOTH) !! PC !! PM !! PN !! PNN !! IC !! IM !! IN !! INN !! OC !! ON !! Authors !! Link |- | Python | bgcolor="#9999ff" | ROM | bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | *[[User:Geek_Joystick]] *TwistedLlama || [https://py3.codeskulptor.org/#user305_jVW4bJkLBXz9HE9.py codeskulptor] |- | Node.JS | bgcolor="#ff99ff" | BOTH | bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | *[[User:ZippyMagician]] || [https://repl.it/@ZippyMagician/GORBITSA repl_it] |- | JavaScript | bgcolor="#9999ff" | ROM | bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | bgcolor="#ff9999" | N || bgcolor="#99ff99" | Y | *Sir Felix Delazar || [https://sirfelixdelazar.github.io/GORBITSA/ Site] |- | C | bgcolor="#ff99ff" | BOTH | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | bgcolor="#99ff99" | Y || bgcolor="#99ff99" | Y | *[[User:X39]] || [https://repl.it/@killerx29/EsoLang-GORBITSA#main.c repl_it] |- | Brainfuck | bgcolor="#9999ff" | ROM | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N || bgcolor="#ff9999" | N | bgcolor="#99ff99" | Y || bgcolor="#ff9999" | N | *Gorbit99 || [https://esolangs.org/wiki/GORBITSA/bf-interpreter /bf-interpreter] |} [[Category:Languages]] [[Category:2020]] [[Category:Implemented]] [[Category:Low-level]] [[Category:Unknown computational class]]'
Unified diff of changes made by edit (edit_diff)
'@@ -46,5 +46,4 @@ Following section uses the words: * '''MUST''' - Means it is part of the standard and must be implemented by any given runtime/parser -* '''SHOULD''' - Same as '''UNDEFINED''' but describes the most commonly used behavior. * '''UNDEFINED''' - Means that actual behavior is not defined in the language and support may vary. * '''MAY''' - Same as '''UNDEFINED''' but serves as a way that (may) helps implementors during implementation. @@ -104,6 +103,6 @@ | bgcolor="#99ff99" | Yes | Technical -| SHOULD -| Instruction size SHOULD be 2 bytes. +| MUST +| Instruction size MUST be 2 bytes. |- | bgcolor="#99ff99" | Yes @@ -118,10 +117,4 @@ | UNDEFINED | Initial values of Instruction slots are UNDEFINED. Behavior when acessing them is up to implementor. -|- -| bgcolor="#99ff99" | Yes -| bgcolor="#99ff99" | Yes -| Technical -| MAY -| GORBITSA runtimes MAY use a Program Counter (PC) to track the current progress. For this specification, it is expected that the implementor uses a PC. If you do not use a PC, adjust the specification readings to your needs. |- | bgcolor="#99ff99" | Yes @@ -164,7 +157,6 @@ | bgcolor="#99ff99" | Yes | Format -| UNDEFINED -| There are no format requirements to GORBITSA code. Code MAY look like <code>S 0 T</code> or <code>S0 T</code> or <code>S0T</code> or <code>S 0T</code>. -Implementors are RECOMMENDED to support all of those. Implementors SHOULD support <code>S0 T</code>. +| MUST +| Instructions must be separated by spaces, an instruction consists of a valid letter and a number joined together: <code>S97 T R T</code> |- | bgcolor="#99ff99" | Yes @@ -172,5 +164,5 @@ | Input | UNDEFINED -| GORBITSA MAY use ascii characters as input or SHOULD use numbers as input. +| GORBITSA MAY use ascii characters as input or MAY use numbers as input. |- | bgcolor="#99ff99" | Yes @@ -190,5 +182,5 @@ | Technical | UNDEFINED -| When PC points at (hypothetical) 256s instruction, it is UNDEFINED wether execution stops or continues at 0. +| When PC points at (hypothetical) 256s instruction, execution halts. |} @@ -198,6 +190,5 @@ In each step instruction pointed by IC is read and executed. If instruction doesn't modify IC, the IC is incremented.<br> -If IC points after last instruction, it is implementation-defined whether execution halts or continues.<br> -If IC increments from 255, it is implementation-defined whether execution halts, or IC rolls over to 0. +If IC points after last instruction, execution halts.<br> Whether input and/or output are in a form of a number or ascii character is implementation-defined. @@ -287,5 +278,5 @@ ==Computational class== -Due to limited amount of cells and limited possible values in cells and register, it's assumed to be [[finite-state automaton]]. +Due to limited amount of cells and limited possible values in cells and register, it is a [[Linear bounded automaton]]. ==Programs== @@ -308,5 +299,5 @@ R T B255 S1 T S0 B3 -===[[Quine]]=== +===[[Cheat Quine]]=== Runs in '''GORBITSA-RAM''' mode S0 O255 g255 B22 g255 T G255 I1 O255 S0 B4 G255 I1 O240 g240 B36 S0 B10 B200 '
New page size (new_size)
15184
Old page size (old_size)
15897
Lines added in edit (added_lines)
[ 0 => '| MUST', 1 => '| Instruction size MUST be 2 bytes.', 2 => '| MUST', 3 => '| Instructions must be separated by spaces, an instruction consists of a valid letter and a number joined together: <code>S97 T R T</code>', 4 => '| GORBITSA MAY use ascii characters as input or MAY use numbers as input.', 5 => '| When PC points at (hypothetical) 256s instruction, execution halts.', 6 => 'If IC points after last instruction, execution halts.<br>', 7 => 'Due to limited amount of cells and limited possible values in cells and register, it is a [[Linear bounded automaton]].', 8 => '===[[Cheat Quine]]===' ]
Unix timestamp of change (timestamp)
1592587142