ALLSCII

From Esolang
Jump to navigation Jump to search

ALLSCII is a stack-based esolang created by Cortex where every printable ASCII character (excluding whitespace (excluding the space)) is (will be) a valid command. I'm somewhat out of ideas for commands, so if you have an idea for a command feel free to add to the table below.

Commands

Character What it does
Push 1 to the stack.
! Increment the top of the stack by 1.
" Increment the top of the stack by 2.
# Increment the top of the stack by 5.
$ Increment the top of the stack by 15.
% Increment the top of the stack by 22.
& Increment the top of the stack by 50.
' Toggle , !, ", #, $, %, & between incrementing and decrementing.
( Print something depending on the top of the stack.
Top of stack Text printed
0 "Hello, World!"
1 "Hello, world!"
2 99 bottles of beer
3 Printable ASCII range
4 One character of string input provided (if no input is left, print 0)
Anything else The top of the stack as a number.
) Print ")". (I'm sorry)
* Multiply top 2 stack values, and push it.
+ Add top 2 stack values, and push it.
, Print the [top of the stack]'th letter of the alphabet. (uppercase)
- Push [second to top stack value]-[top stack value].
. Print the [top of the stack]'th letter of the alphabet. (lowercase)
/ Like -, but with division.
0-9 Multiply the top stack value by that number.
: Pop the top stack value.
; Push the top stack value.
< Pop the top stack value, and reverse the top [original top of stack] stack values.
= Reverse the entire stack.
> Push the ASCII value of one byte of string input from the user to the stack (if no input is left, return 0).
? Print the character which is equal to String.fromCharCode(32+[top value of stack]) (tabs and newlines can be printed by pushing negative numbers to the stack).
@ Begin function declaration.*
A End function declaration.*
B Call a defined function.*
C While the top of the stack is not 0.
D While the top of the stack is 0.
E Find the next character's ASCII value, subtract 32, and begin a loop that runs that many times (ignoring the next character).
F End a loop.
G Toggle C and D between while loops and if statements.
H Prematurely end the program.
I Push 1 if the top of the stack has property X, otherwise push 0. Similar to : in Pizza Delivery, but useful this time. Mainly useful for custom functions.
Next character X
' Prime
2 Even
+ Positive
. Integer
= Equal to the second to top stack value.
> Greater than the second to top stack value.
e Exists; pushes 0 if the stack is empty.
f In the fibonacci sequence
J Pop every value on the stack.
K Pop the top [top stack value] stack values.
L Push number input to the stack.
M Pop the top stack value, and push the top [original top stack value] stack values.
N Push the most recently popped value.
~ Begin or end a comment.
O Increment precision
P Decrement precision
Q Loads the top of the stack into one of the 94 accumulators(All the visible characters)
R Pushes an accumulator onto the stack
S Executes the top of the stack as an ALLSCII program
T Prints the whole stack
U executes an accumulator if 2 values of the stack are greater than.
V executes an accumulator if 2 values of the stack are equal to.
W executes an accumulator if 2 values of the stack are less than.
X executes an accumulator if 2 values of the stack are greater than or equal to.
Y executes an accumulator if 2 values of the stack are less than or equal to.
Z executes an accumulator if 2 values of the stack are not equal to.
\ pops 2 values, pushes the remainder of former divided by latter.
` exit from execution of the "S" command.
_ ignores the next character
^ powers two values of the stack. (The former to the power of the latter)

|

square-roots the top of the stack.
a pushes the precision
b pushes the current stack depth
c runs the rest of the line as a system command.
d bitwise NOT the top of the stack.
e bitwise XOR the top of the stack by the second-top value.
} bitwise AND the top of the stack by the second-top value.
{ bitwise OR the top of the stack by the second-top value.
[ bitwise left shift the top value by the second-top value.
] bitwise right shift the top value by the second-top value.
f Pushes the digital root of the top number of the stack
g Pushes the top number-th number in the Fibonacci sequence.
h Pushes the factorial of the top number-th number.
i Decrement the top of the stack by 1.
j Decrement the top of the stack by 2.
k Decrement the top of the stack by 5.
l Decrement the top of the stack by 15.
m Decrement the top of the stack by 22.
n Decrement the top of the stack by 50.
o starts an infinite loop
p Jump to the top of the stack line in the code.
q Jump to the top of the stack character in the code.
r Pushes the maximum value of the stack.
s Pushes the minimum value of the stack.
t Doubles the top of the stack.
u Pushes a random number from 0 to the top of the stack number.
v Pushes a random number from the top of the stack number to the second top of the stack number.
w Wait the top of the stack seconds.
x Append the top of the stack by the second top of the stack.
y Drop the second top of the stack characters to the top of the stack.
z Cancel out the recent operation in the program.

Function declaration

*In ALLSCII, functions can be defined with this syntax, where * is any character and % is any code: @*%A Whitespace is ignored (except spaces, of course). For example, a function that pushes the number 1000 to the stack could look like this:

@K
	&&&&&&&&&&&&&&&&&&&&
A

It would be called like this:

BK

Examples

Note: The first 4 examples were made when ) was the last command in the list.

Hello, World!

 '!(

99 bottles of beer

 !(

Quine

)

Cat program

 "!(

Truth-machine

 4(>C 35"?F

Print "Antidisestablishmentarianism"

 ,~   A~
$'".~ n~
'#!.~ t~
'##!.~i~
#.~   d~
'#.~  i~

Truth-machine

L~  push number input to the stack ~
C~  while the top of the stack is not 0 ~
 ~  push 1 to the stack ~
44~ multiply it by 4 twice to get 16 ~
!~  increment it by 1 to get 17 ~
?~  print the character with the (for lack of a better term) Unicode value of 32 plus the top of the stack, which is the character 1 (Unicode value 49) ~
F~  end loop ~
~   if the number input is 0, then the while loop was never executed, so if we've gotten this far in the program: ~
44~ multiply the top stack value by 4 twice to get 16
?~  see the previous ? in the code ~
~   end program

Minimized:

LC 44!?F44?

?