TapeRun

From Esolang
Jump to navigation Jump to search

TapeRun is a stack-based programming language which aims to take programmers back to a simpler time. The program consists of a tape, the has a command for each line, and one character is used as the alignment character, to ensure everything runs smoothly.

Here is the rundown of the tape commands.

  |# Take character as input onto the stack
# |  Output top of stack as character
##|  Pop top of stack
# |# Clone top of stack
 #|# Add to top of stack
 #|  Run until equal to value (represented in 3 bit binary until next separator, runs until the separator after that)
##|# Close for above statement

Since loops are a bit difficult to explain, here is an example:

 #|  Start loop
##|  6 +
##|  6 +
# |  4 =
##|# 16
 #|# Add one until the top of the stack is 16
##|# Close loop

Note that the binary representation of 6 is used instead of 7 because 7 is ##|#.

For comments the language will only take in the first 4 characters of each line, so any characters afterwards are ignored.

Here is now "Hello World!":

# |# Create initial stack value
 #|  Start loop
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 =
##|# 72
 #|# +1 to top of stack
##|# Run until top of stack is 72 ("H")
# |  Output "H"
 #|  Start loop
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
# |  4 =
##|# 100
 #|# +1 to top of stack
##|# Run until top of stack is 100 ("d")
# |# Clone top of stack
 #|# +1 to top of stack
# |  Output "e"
 #|# +1 to top of stack
 #|# +1 to top of stack
 #|# +1 to top of stack
 #|# +1 to top of stack
 #|# +1 to top of stack
 #|# +1 to top of stack
 #|# +1 to top of stack (It is now at "l")
# |  Output "l"
# |  Output "l"
# |# Clone top of stack
 #|# +1 to top of stack
 #|# +1 to top of stack
 #|# +1 to top of stack (It is now at "o")
# |  Output "o"
# |# Clone top of stack
 #|  Start loop
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
 #|  2 =
##|# 32
 #|# +1 to top of stack (Wraps back around at 255)
##|# Run until top of stack is 32 (" ")
# |  Output " "
 #|  Start loop
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
 #|# 6 =
##|# 87
 #|# +1 to top of stack
##|# Run until top of stack is 87 ("W")
# |  Output "W"
##|  Pop top of stack
# |  Output "o"
 #|  Start loop
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 =
##|# 114
 #|# +1 to top of stack
##|# Run until top of stack is 114 ("r")
# |  Output "r"
##|  Pop top of stack
# |  Output "l"
##|  Pop top of stack
# |  Output "d"
 #|  Start loop
##|  6 +
##|  6 +
##|  6 +
##|  6 +
##|  6 +
 #|# 3 =
##|# 33
 #|# +1 to top of stack
##|# Run until top of stack is 114 ("!")
# |  Output "!"

Here is the python interpreter.