Decimal

Decimal, also called 09D, is an esoteric stack-based programming language that uses the characters  through   and. Whitespace is ignored. Any other characters in the source code are simply printed.

Syntax
COMMAND&lt;ARGS&gt;[D]  ;COMMENT must be appended to values (arguments that have user-defined length). For example, pushing the string   requires   because the string can have any length.

Commands working with the stack are based on one index, the Default Stack Index (or  for short.) For example, in pseudocode, calling   will print the value at. sets the DSI to the index of the value pushed. sets the DSI to the next value provided.

Types
There are three types in Decimal:,  , and. These are defined by an enumerator:

{INT = 1, CHAR = 2, STRING = 3} …in the interpreter. These integer values are used in  to determine the type of the value to be pushed.

I/O
All input is read and stored/printed as a. is stored as. If no input is waiting,  will pause execution until input is available.

Math
As previously stated, all mathematical operations are performed as.

For example: if  was   and   was , performing the mathematical operation “minus” would compute  , pop   and  , then push the result.

Each conditional will push  if truthy and   if falsy:

Memory
Memory commands:

Builtins
Useful builtins that are ridiculously hard (or even downright impossible) to do with the existing commands.

As builtins kind of ruin the esotericity of a language and lower the complexity to write code in it, I’m only going to write builtins that are unjustifiably difficult to do without them.

Examples

 * - push integer 3 to stack, set DSI to pushed value
 * - infinite loop that does nothing
 * - push integer 50 to stack, push integer 50 to stack, pop both then add together and push result
 * - read user input and print, without doing anything to the stack
 * - read user input into stack
 * - cat program that doesn’t stop at EOF
 * - cat program that stops at EOF
 * push “HELLO, WORLD!” to stack and print