BALAE

From Esolang
Jump to navigation Jump to search
Brainfuck Assembly Language Advanced Edition (BALAE)
Paradigm(s) Imperative
Designed by User:WallGraffiti
Appeared in 2021
Memory system Cell-based
Dimensions One-Dimensional
Computational class Turing complete
Major implementations Python
Influenced by Brainfuck, BAL
File extension(s) .balae


Brainfuck Assembly Language Advanced Edition/BALAE (pronounced like Ballet) is a derivative of both BAL (originally developed by Olus2000) and Brainfuck. It adds four new commands, while squashing the original 8 into half the space.

The Basic Idea

BALAE was designed to extend BAL for better usability, while keeping it to eight total commands. The obvious issue is that if you simply add four commands with no preperation you would have instantly gone over the eight command limit. The way this was solved was by combining each "pair" of commands into one command each. Below is the new set of commands (excluding the four newcomers)

Pair New Description
Arithmetic ("-" "+") "~" Takes argument n, subtracts 16 and applies to current cell.
Pointer ("<" ">") "^" Essentially the same as "~" except applied to the pointer
Loop ("[" "]") "|" Due to the addition of dedicated labels and jumpers, it adds argument n to the Program Counter
User Interaction ("," ".") ";" If argument n is less than 16, output current cell to output n. Otherwise, turn current cell into the value of input n-16.

New Commands

"_"

Doesn't actually do anything by itself, but when used in tandem with "{" and "}", it can be a truly powerful tool.

"{" and "}"

"{" and "}" jump to a label with value n forwards and backwards, respectively ("{" forward, "}" backward).

"@"

Halts program with exit code n.

Examples

Infinite print: (provided output 0 displays text)
~15~15~15~15~05_00;00}00
Broken down:
First we initialise the value 65, or "A" in ASCII: ~15~15~15~15~05
Next, we create the loop. _00 is a label, and }00 jumps back to that same label.
The command inside the loop, ;00, will display the character "A" on the screen only if output 0 is, indeed, displaying text.

External Resources