Ragaraja

Ragaraja is created by Maurice Ling and is a derivative and massive extension of Brainfuck. This work is influenced by a large number of Brainfuck derivatives, other esoteric programming languages, and even assembly languages. Probably the most critical difference between Ragaraja and other Brainfuck derivatives is the large number of commands / instructions - 1000 possible commands / instructions, inspired by Lord Nandi (Lord Shiva's mount) who was supposed to be the first author of Kama Sutra and wrote it in 1000 chapters.

Etymology
Ragaraja is the name of a Mahayana Buddhist deity from Esoteric traditions. The Japanese calls him 愛染明王 (simplified Chinese script: 爱染明王). Ragaraja is one of the Wisdom Kings (a group of Bodhisattvas) and represents the state at which sexual excitement or agitation can be channeled towards enlightenment and passionate love can become compassion for all living things. Hence, I name this compilation/derivative/extension of Brainfuck in 1000 commands/instructions/opcode to signify the epitome, a channeling of raw urge to the love and compassion for and towards every being. May really be viewed as Brainfuck attaining enlightenment or Nirvana. Whoever that can remember all 1000 commands and use it, really deserves an award.

References to Biology
One of the main driving force for developing Ragaraja is as instruction set for digital organisms. In other words, to act as genome for digital organism. In natural DNA, only 4 bases are used, resulting in 64 (4³) codons. In Ragaraja, it defined 10 bases; hence, resulting in 1000 instructions (10³). This allows for single digit change to reflect point mutations in DNA.

Influences from Other Works

 * 1) AlPhAbEt: Large number of registers. AlPhAbEt defined a total of 63 registers.
 * 2) Avida: An artificial life simulator.
 * 3) BCDFuck: Accumulator for 1 to 9 (add between 1 to 9 to the current cell).
 * 4) Brains: Break and continue commands.
 * 5) Brainstuck and Hargfak: Stack operations (simulated using registers).
 * 6) D1ffe7e45e and Numberwang (brainfuck derivative): Based on numbers as commands/instructions rather than alphabets and symbols.
 * 7) Extended Brainfuck: Logical (Extended Type I) and arithmetic (Extended Type II) operators.
 * 8) Grin: Common mathematical functions.
 * 9) L00P: Negation (multiply current cell value by -1).
 * 10) Loose Circular Brainfuck (LCBF): The tape or array is circular (a ring list) instead of linear. When the pointer is at the "end" of the tape, an increment (">") will move the tape to the start. Similarly, when the pointer is decremented at the "beginning" of the tape, the pointer goes to the end.
 * 11) Memfuck: Destroy memory stack (emulated by clearing of registers).
 * 12) Minimal: Skip instruction command.
 * 13) NucleotideBF (nBF): Random commands.
 * 14) Self-modifying Brainfuck: Allows a program to modify its own source code.

Interpreter Environment
The interpreter environment consists of the following elements:


 * 1) Tape: A circular tape initialized with 30 thousand cells each with zero. This can be visualized as a 30,000 cell register machine. The number of cells can increase or decrease during run-time.
 * 2) Source: The program
 * 3) Input List: A list of data given to the execution environment at initialization.
 * 4) Output List: A list of output from the execution. This may also be used as a secondary tape.
 * 5) Set of 99 registers: Can be used as temporary storage for writing to and reading cell values from the tape.

When the program terminates, tape, source, input list and output list are returned, and the interpreter terminates itself.