We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
NINETY SIX
NINETY SIX is an esolang named for its character table of 96 characters, plus a ® sign. I formerly called it "Sakupen" but then I was like "Nah, I want to use that later." It has two variants, NINETYSIX and NINETYSIX.XQ, the former using characters and the latter using colors, but they both have the same commands and logic.
| Instruction | Meaning |
|---|---|
| CJAV | Control flow (2D): left, right, up, down |
| <> | Move the pointer on the tape. |
| ^v | Increment and decrement the current memory cell. |
| X | Push the current number onto a storage stack. |
| O | Pop the top of the storage stack and set the current tape cell to that value. |
| D | Clear the storage stack. |
| +-*/% | Pop the top two stack values as a then b, calculate b (+-*/%) a, and then set the current tape cell to that value. |
| = | Equal-to operator (the current tape cell is compared to a number) |
| ie | If and else statements. |
| Z | Ends the program. |
| ? | Random direction. |
| n | Not (inside an if-statement, so: "If NOT this, do this.") |
| I | Ask for input. (capital i, not lowercase L.) |
| Q | Print the source code and quit. |
Code exists on an 800x800 grid, and you can also use INFINITY MODE if that's not enough. Also, if < or > is inside an if-statement, then they are less-than and greater-than comparers. Placing a . sign (period) after some command in the control flow means "Do it the first time you hit this, and then don't for every subsequent time hitting this particular point." Putting it before a command does the opposite: fails the first time, and never again.
Character space
0123456789ABCDEF 0123456789
0 abcdefghijklmno 0 abcdefghi
1 pqrstuvwxyzABCDE or 1 jklmnopqrs
2 FGHIJKLMNOPQRSTU 2 tuvwxyzABC
3 VWXYZ0123456789! 3 DEFGHIJKLM
4 @#$%^&*()-=_+[]\ 4 NOPQRSTUVW
5 {}|;':",./<>?`~© 5 XYZ0123456
6 ® 6 789!@#$%^&
7 *()-=_+[]\
8 {}|;':",./
9 <>?`~©®
The blank spot at the start represents the space.
Example programs
Hello world program (optimized)
^^^^^^^^XO0V
V0OX^^^^^C
J^^^^^^^^^^^^XO0V
V0OX^^^^^^^^^^^^C
J^^^^^^^^^^^^^^^XO00XO0V Size: 31x10
V0OX^^^^^^^^^^^^^^^^^^^^^^^C
J^^^^^^^^^^^^^^^X0OV
V0OX^^^^^^^^^^^^^^^^^^C
J^^^^^^^^^^^^X0OV
Z^^^^C
The unoptimized version:
JV8i^i8VC J V51i^15VCJ V81i^i18VC X 0 X 0 X O O O O O 0 X 0 X 0 JV5i^i5VCJA21i^12VC0JA51i^i15ACJV21i^i12VCZ Size: 50x9 X 0 X 0 X 0 O O O O O O 0 X 0 X 0 X J A21i^i12VCJA32i^i23 ACJ A4i^i4AC
Q Size: 1x1
AND-gate
01IX01IXiX01nVeV A C Size: 16x3 ZOXeZOX^y11iC
where I'm using X as shorthand for the stack.
Do-nothing
Z
Three different infinite loops:
><
v ^
>v ^<
I2, I3, and so on can be used for multiple inputs.
Math operator
IXI2XII2;DXOZ
or shorthand:
II2;DXOZ the ; sign is where the operation goes.
Calculator
IXI2XI3XiI3+-*/%nDVeiI3+yVeiI3-yVeiI3*yVeiI3/yVeiI3%yV
A C I I I I I
I I I I I
2 2 2 2 2
+ - * / %
D D D D D
X X X X X
O O O O O
Z Z Z Z Z
Computational class
It's almost certainly Turing-complete. It has conditional looping (if (condition): loop) and math and all that good stuff. Even with 800x800 bounds, you can just use INFINITY mode and that limit no longer exists!