User:Elronnd/Fell

From Esolang
Jump to navigation Jump to search

Fell is a new esolang I made up. It takes place on a grid, similarly to brainfuck, but unlike in brainfuck, the grid is 5-dimensional; it should be 11x11x11x11x11. Each command in Fell is an opcode, similar to binary, or assembly. Each opcode takes a certain number of arguments, but the number and order of the arguments doesn't always reflect what they do. It takes place in base 11, but instead of using digits 0-9, and a, it uses jF93f6rY[+l. Each cell holds 2 base-11 digits, and thus can store values from 0-120. For the purposes of this documentation, all opcodes will be presented both in base 10, and base 11.

Syntax and grammar

Any valid Fell program contains any number of lines of the following form, separated by a newline (ASCII 10):

   opcode arguments (in varying numbers)

each argument should be a base 11 number of precisely 2 digits, unless it is prefixed with $. The $ prefix should be used to indicate that the value is a pointer and should be dereferenced. Thus, if the cell at (6, [, +, j, r) held the value rF, something like ADD $6[+jr +f $6[+jr might add rF to +f and store the result in (6, [, +, j, r). It might not, of course, depending on how ADD is defined. Cells can hold pointers, but since three cells are required to hold a single pointer, the following syntax is used: ${$Ylr69, $jF96f, +} would refer to the point (first digit at Ylr69, second digit at Ylr69, first digit at jF96f, second digit at jF96f, +). $. refers to the current cell pointed to. There are also various arithmetic operations that can be performed on cell pointers. The syntax of these is as follows: axis referred to, as a 1-digit number from j-f designating whether the jump is positive or negative, an op: = (add) or - (subtract), another 1-digit number representing the size of the jump. For example, F=9$. would refer to the current cell, +2 along the second axis.