Revaver16

From Esolang
Jump to navigation Jump to search

This is a work in progress. It is not yet complete.

In this programming language, every command is a reverse of itself, so entering a command twice in a row is like a NOP. If you reverse the order of all the lines in the file and give the output of the first program as this program's input, you will get back the original input.

Commands are in a file, one in each line. First, give the input list. The output list is returned. A list entry is 2 bytes, no immediate duplicates like (1,2)(1,2). Main List, Intermediate List, all others Memory Lists (and a infinitely-long number for each).

These symbols can be used in place of numbers:

  • ! = First by

Commands:

  • (TR) TERMINATE: If Inter.List and all Mem.Lists are empty, end program.
  • (PP) PUSHPOP a b: Pushes (a,b) onto Main.List. If (a,b) is already on top, pops instead.
  • (MP) MEMPOINTER a b: If intdiv(p+a,b) (rounding down) is even, increase pointer by 'b', otherwise decrease. (If b=0, assume b=256)
  • (SI) SWAPING: Swaps Main.List with Inter.List.
  • (SM) SWAPMEM a: Swaps Main.List with Mem.List(p+a).