Are you an expert at Intercal?
Do you think Malbolge is for wimps?
Can you program Brainf*ck in your sleep?
Do you not value your sanity?
If you answered yes to any of these questions, congratulations, you are officially insane. You're also a perfect candidate for Antenora. Antenora is a language designed specifically to fix the flaws found in Malbolge that allowed the creation of the famous Hello World program by Andrew Cooke. It attempts to tread the thin line between allowing programs to theoretically be written and being impossible to use, all while making actual programs no more than a pipe dream.
Here is the first language specification that I am currently implementing:
Programs will be run by a very simple process. First, programs must be written in base 5i (that is the imaginary number i, not a variable) and will be converted at load time to quinary. Then, the interpreter will divide the converted source into multiple sections of 160 bits and encrypt each of them using a SHA-1 cryptographic hash. The encrypted data will then be treated as executable code and executed by the interpreter.
Antenora is heavily based on Malbolge and thus has a very similar design. One aspect carried over from Malbolge are the three registers, renamed to A, B, and P. A and B are general purpose registers which can contain any data recognized by the interpreter. The third register, P, is a pointer register and points to the location of the current instruction as well as the current cell in the data array. Unlike in the normal variant of Malbolge, P also has no official limitation on size, although it will due to physical constraints for this implementation. The data array itself is an array of equal size as the program and each cell has a corresponding instruction associated with it.
Any Malbolge programmer should become quickly acquainted with the instruction set, which includes ten instructions:
{ : sets B equal to A
] : Sets the value of the cell currently pointed to by P equal to the quinwise addition of registers A and B.
∫ : Sets P to the value of the cell pointed to by the current value of P. In other words, an absolute jump.
¿ : Sets P to the value of the cell pointed to by the value of the cell currently pointed to. A jump using indirect addressing.
@ : Sets the value of A equal to the value of the current cell pointed to by P.
△ : Stores the value of the next instruction in the cell currently pointed to by P and increments P by 2.
↑ : Sets the value of the instruction currently pointed to by P to the value of the cell currently pointed to by P.
► : Performs a "schizophrenic" operation. Takes the operation of the instruction pointed to by the cell currently pointed to by P, then changes the value of the cell to the location of the original instruction in another array.
⇒ : Reads the value of the current cell in the array and ouputs it into the screen at the location pointed to by the contents of A (Y) and B (x).
° : Rotates the value of the cell right Quinwise a number of times equal to the value of the cell pointed to by P+1, then jumps to the location pointed to by the value of the cell pointed to by P+1, treating the instruction P+1 as a ∫ operation.
Keep in mind that all Antenora operations are done in Quinary and that any invalid instruction will immediately result in a RAM clear or otherwise crash. The only way to end a program is to reach its last instruction, which will exit provided that the instruction is not a jump instruction.
Let me know if anyone thinks I should add anything or if they see any security flaws in Antenora.
It is truly evil