Quell

From Esolang
Jump to navigation Jump to search

Quell (Queue call) - is an esolang by User:ChuckEsoteric08. It was created as a compilation target for high-level languages which use Call Queue that could be compiled into Sque bytecode

Specification

Quell uses infinte tape which can hold unbounded values. It also uses Call Queue for subroutines.
*x returns value in cell x

Commands

SET x y - set cell x to y
ADD x y - add cell x and cell y and store in x
SUB x y - subtract cell y from cell x and store in x
JMP x - jump to subroutine x
JNZ x y - if cell x is not zero jump to subroutine y
JZ x y - if cell x is zero jump to subroutine y
JEQ x y z - if cell x is y jump to subroutine z
RET - return from subroutine
INP x - input one byte and store it in x
OUT x - output x as ASCII character
abc: - subroutine called abc

Additional commands

If the language would be compiled to Quell and then to Sque, then following commands can be used, but they are optional and examples would only use instructions above:

STR x y - set x to string y
INT x y - set x to integer y
BOOL x y - set x to boolean y
JGT x y z - jump if greater than
JLT x y z - jump if less than
MUL x y - multiply
DIV x y - divide
MOD x y - modulo
ADD x y - if at least one of the cell is a string, then concatenate
INP x - input string and set cell x to it
OUT x - output cell x
CHR x y z - set cell x to y-th chatacter in string z

Examples

Cat

loop:
	INP 0
	OUT 0
	JNZ 0 loop