octo
Jump to navigation
Jump to search
Paradigm(s) | String-Rewriting paradigm |
---|---|
Designed by | Asher I |
Appeared in | 2020 |
Memory system | tape-based |
Dimensions | one-dimensional |
Computational class | Turing complete |
Reference implementation | Unimplemented |
Influenced by | Bitwise Cyclic Tag |
File extension(s) | .oct |
OCTO is designed to be as different from any other language (including esoteric language) present. Most programming languages (even esolangs) automatically know which order to execute instructions: left-to-right, top-to-bottom. Instead, this one has each command have a counterpart which tells the pointer where to go. The data itself is the code and it modifies over. "X" is the previous instruction (with wrapping) if the code-pointer direction is right-to-left, otherwise it is the next direction Each instruction goes as follows:
Command | Description |
---|---|
0 | subtract 1 and branch if X is less than 8, go move code/IP back 1 |
1 | add 1 and branch if X is less than 8, go move code/IP back 1 |
2 | subtract 1 and branch if X is greater than 8, go move code/IP back 1 |
3 | add 1 and branch if X is greater than 8, go move code/IP back 1 |
4 | subtract 1 and branch if X is less than 8, go move code/IP forward 1 |
5 | add 1 and branch if X is less than 8, go move code/IP forward 1 |
6 | subtract 1 and branch if X is greater than 8, go move code/IP forward 1 |
7 | add 1 and branch if X is greater than 8, go move code/IP forward 1 |
8 | move data pointer to the right |
9 | move data pointer to the left |
A | increment cell underneath data pointer |
B | decrement cell underneath data pointer |
C | output cell under data pointer |
D | take an input, insert input data to the left or right of data pointer depending on which direction the code is moving |
E | jump to matching F and set code direction to right-to-left if cell under data pointer is less than 128, else skip (if equal to 128, go to furthest left in code, set direction left-to-right) |
F | jump to matching E and set code direction to left-to-right if cell under data pointer is more than 128, else skip (if equal to 128, go to furthest right in code, set direction right-to-left) |
The code is represented as hex data.