Are you an expert at Intercal?
Can you program Brainf*ck in your sleep?
Have you ported Firefox to Malbolge?
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. 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.
Very Happy
Am I correct in thinking that the ► operation is non-deterministic, and therefore that this language is not strictly Turing-complete?
It will be entirely deterministic, but the function will probably be pretty chaotic.
Qwerty.55 wrote:
It will be entirely deterministic, but the function will probably be pretty chaotic.
Ah, that makes sense. Also, may I be pedantic and point out that you can't properly store or manipulate quinary on a binary device? You'll be doing all your quinary operations in binary. Wink Also, I'm interested to see how you'll be manipulating the output of the SHA-1 hashing function.
The main body of the program will be in BASIC, so I can avoid most of the problems of doing Quinary in Binary. Of course, that would assume that anyone can get that far. The SHA-1 hash would preclude the vast majority of attempts to write anything. You'd have to find a preimage, which is still ridiculously difficult even for a broken hash like SHA-1.
Qwerty.55 wrote:
The main body of the program will be in BASIC, so I can avoid most of the problems of doing Quinary in Binary. Of course, that would assume that anyone can get that far. The SHA-1 hash would preclude the vast majority of attempts to write anything. You'd have to find a preimage, which is still ridiculously difficult even for a broken hash like SHA-1.
Absolutely, which is what I was saying. You definitely have your work cut out for you. Very Happy
I can cheat and bypass the hash. It's much easier when you have the source Razz
Qwerty.55 wrote:
I can cheat and bypass the hash. It's much easier when you have the source Razz
You mean run unhashed code? Smile
Yep.
Qwerty.55 wrote:
Yep.
So at what state is this now? If I'm correctly understanding that you designed this myself, is it indeed Turing-complete? Or did I misunderstand that it's of your own design?
I *think* it's Turing complete, but it would obviously be difficult to demonstrate that.

And yes, it's of my own design. I did take elements from Malbolge, but it's distinct enough to be a language in its own right.
Qwerty.55 wrote:
I *think* it's Turing complete, but it would obviously be difficult to demonstrate that.

And yes, it's of my own design. I did take elements from Malbolge, but it's distinct enough to be a language in its own right.
Excellent, happy to hear it. Smile Any progress on this yet, or is your Prizm hacking taking most of your time?
Well, life is taking most of my time and Prizm hacking another good chunk. Unfortunately, I'm not a multi-core model Qwerty. This is one of three or four projects that need more attention than I can give them.
Qwerty.55 wrote:
Well, life is taking most of my time and Prizm hacking another good chunk. Unfortunately, I'm not a multi-core model Qwerty. This is one of three or four projects that need more attention than I can give them.
I think that happens to most of us; you're probably not as creative of a coder/modder/hacker as you could be if you don't have a bunch of projects vying for your time. Smile
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement