# Amnesia

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.

## 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.