Amnesia

From Esolang
Jump to navigation Jump to search
This is still a work in progress. It may be changed in the future.

Amnesia is an esoteric programming language created by User:Padarom in 2014. It is inspired by Malbolge and tries to be extremely hard to understand and to program with, though to be possible.

This page is under construction and details are being added while descriptions about the language are written.

Overview

The basic principle of Amnesia is, that every character in its code only represent its ASCII-code (which changes depending on the position within the program and the length of the programs code). Thus numbers don't represent their values, but instead they represent the result of a weird calculation ("Number transform"). Every character in ASCII between the decimal value of 32 and 126 is usable.

An Amnesia-program contains three stacks: A, B and C

Instructions

Character(s) Decimal Description
cho_ 99 104 111 Select the provided stack (the one that replaces the underscore _)
= 61 Set the value of the selected stack to the value behind
+ 43 Adds the number in stack B with to number in stack A
- 45 Subtracts the number in stack B from the number in stack A
/ 47 Divides the number in stack A by the number in stack B
* 42 Multiplies the numbers in stack A and stack B
% 37 Performs a modulo-operation of stack A with stack B (A mod B)
Nm 78 109 If the value of the selected stack (A, B or C) is not equal to zero
: 58 The same as an opening bracket (Amnesia doesn't differentiate between the normal ( and { )
; 59 The same as a closing bracket (Amnesia doesn't differentiate between the normal ) and } )
disp 100 105 115 112 Display the value of the currently selected stack

Examples

The following program is written using the standard characters, thus not taking the transform into account

choA=BchoB=B*

The same program, written using the Transform function

pucwovcjtny!p

Interpreter

An interpreter for Amnesia has yet to be written. I will be really happy if someone creates one before me.