# 9f87m4atttaaaou;

9f87m4atttaaaou; (pronounced Mashed Potatolang) is a Stack-Based esolang by CosmicMan08#1975 (User:CosmicMan08). It was designed to make it look like any program made in it was made by mashing your keyboard.

## Instruction list

Instruction | Use |
---|---|

a | pops two values a and b, then pushes the result of a + b |

d | pops two values a and b, then pushes the result of a / b |

e | pops two values a and b, then pushes the result of a ^ b |

p | increments the value at the top of the stack by 1 |

u | decrements the value at the top of the stack by 1 |

v | pops a value a, then returns the square root of a |

s | pops two values a and b, then pushes the result of a - b |

g | pops two values a and b, if a is greater than b it will push 1, otherwise it will push 0 |

l | pops two values a and b, if a and b have the same value it will push 1, otherwise it will push 0 |

m | pops two values a and b, then pushes the result of a * b |

n | pops a value, if the value is 0 it will push 1, otherwise it will push 0 |

% | pops two values a and b, then pushes the result of a % b |

Instruction | Use |
---|---|

c | duplicates the value at the top of the stack |

r | discards the value at the top of the stack |

x | pops a value a, then moves the value at that point in the stack to the end |

y | pops 2 values a and b, then inserts b into the ath position of the stack |

z | swaps the top two values of the stack |

Instruction | Use |
---|---|

i | gets one byte of ascii input and pushes it |

o | pops a value and prints out the corresponding ascii character |

_ | prints out the memory |

, | gets a number input and pushes it |

. | pops a value and prints it out |

q | gets a string of input and pushes each character in it |

j | pushes the size of the stack |

t | pushes a random value from 1 - 10 |

0 | pushes 0 to the top of the stack |

1 | pushes 1 to the top of the stack |

2 | pushes 2 to the top of the stack |

3 | pushes 3 to the top of the stack |

4 | pushes 4 to the top of the stack |

5 | pushes 5 to the top of the stack |

6 | pushes 6 to the top of the stack |

7 | pushes 7 to the top of the stack |

8 | pushes 8 to the top of the stack |

9 | pushes 9 to the top of the stack |

Instruction | Use |
---|---|

b | pops a value a, then move the pc to a |

f | starts a loop if the top of the stack isn't 0 |

w | starts a loop if the top of the stack is 0 |

; | marks the end of a f loop |

: | marks the end of a w loop |

k | exits a f loop without having to hit a ; |

' | exits a w loop without having to hit a : |

h | halts the program |

^ | toggles whether or not the pc reads non-^ characters |

## Computational Class

It is possible to convert any cyclic tag program to a 9f87m4atttaaaou; program, making 9f87m4atttaaaou; turing complete.

The converted program starts with the datastring, then `_1fr`

, from there it converts the instructions in the program string into 9f87m4atttaaaou; instructions...

CT | 9f87m4atttaaaou; |
---|---|

0 | 0uxf0zk;0y_ |

1 | 0uxf1zk;0y_ |

; | 0xr_jwh:r |

...finally the program ends with `j;`

.

## Examples

### Hello, World!

`98mo5cacm1ao6ca9mcoo5ccaz6am1ao8cacao65a8m1zso5ccaz6am1ao5cacm7caao6ca9mo5cacmo`

### Hello, World! (optimized version)

`98mo29pepco7acoco3ao95muco84mo2muco83maco3aco6zso29pecou3zdo`

### Truth Machine

`,fc.;.`

### 4-operation calculator

`,i,z67mswrm.h:pwra.h:2awrzs.h:2awrzd.h:`

### Fibonacci Sequence

`01fc.48moc0ya;`

### Deadfish

`01fri29peswzuz':5awzpz':6awzc.z9po':4awz2ez':rpfuk;c82eswz':r1;`

### The Name

The name of this esolang (`9f87m4atttaaaou;`

) is a program that generates a keymash-esque string.

## Implementations

- Offline interpreter in Python by CosmicMan08
- Online interpreter in JS by CosmicMan08
- Compiler to JS by User:Challenger5