Neoff
Jump to navigation
Jump to search
Neoff (Pronounced “Knee off”/niɔf) is an esolang created by User:RainbowDash.
Neoff has 1 stack and an array of cells.
The stack acts as a stack of points that you can "travel" to, meaning that whenever a point is called off the stack the program counter is set to that point like a GOTO command. As for the array of cells it works as ram.
Please note the following. Line numbers are indexed at 1, however the addresses are indexed at 0. Code indents do nothing in this coding language except for making the code look pretty, however new lines are needed.
There are 4 types of variables:
- Number - 8 bit constant
- Address - 8 bit
- Text - No Bit Restriction. (Only used for outputting text)
- Point - Basically like a Label in BASIC. Points are used to save line numbers and traverse to them.
Some commands need to be specified on which variable type needs to be used for example:
Disp Text Hello world // Hello World Disp Address 0 // Prints value at address Disp Number 5 // Prints number 5
Instructions
Instruction | Explanation | Variable type |
---|---|---|
Poke # | Sets the memory pointer to # | Num/Addr |
Set # | Sets the the memory cell at the pointer to # | Num/Addr |
Inc # | Increments the memory cell at the pointer by # if no arguments are passed it increments by 1 | Num/Addr |
Dec # | Decrements the memory cell at the pointer by # if no arguments are passed it decrements by 1 | Num/Addr |
Comefrm # | When the program counter equals # or point jump to the line number of this instruction ; Comefrom | Num/Addr/Point |
Goto # | Sets program counter to # or point | Num/Addr/Point |
If # | If the memory cell at the pointer is not equivalent to # then skip the next line | Num/Addr |
Display | Outputs a variable, if its an Address it will be outputted in ASCII | All |
Input | Reads a character and puts the corresponding character into the memory cell at the pointer | * |
Point [Name] | Sets a point | * |
Push [Point Name] | Pushes a point to the "travel stack" | * |
Delete | Deletes the top point of the stack | * |
Travel | Pops a point off of the stack then goes to the line number of the point | * |
// | Comment | * |
Code examples
Hello World
Display Text Hello World
Truth Machine
Poke Number 0 Input If Number 0 Display Number 0 Comefrom 7 If Number 1 Display Number 1 Comefrom 4
This is a legacy code so the goto commands don’t use points
Deadfish
Poke Number 0 // Instruction address Input Push Loop // This point will be traveled to after an instruction gets completed If Number 105 // Increment Push Increment If Number 100 // Decrement Push Decrement If Number 115 // Square Push Square If Number 111 // Output Push Output Travel // Execute selected instruction Point Increment Poke Number 1 Inc Travel Point Decrement Poke Number 1 Dec Travel Point Square Poke Number 2 Set Address 1 Poke Number 3 Set Address 1 Poke Number 1 Inc Address 2 Poke Number 3 Dec If Number 0 Goto 40 Goto 33 Travel Point Output Poke Number 1 Display Address 0 Travel Point Loop Goto 1