BARREN

BARREN is a small output-only imperative language. Most of its specifications came from a hypnopompic state.
==Language overview==
BARREN's memory consists of 64 cells, numbered 0-63. Each cell can be in one of 6 states: VOID, REVEALED, COVERED, STATIC, DYNAMIC, RECKONING. A single pointer is used to manipulate memory. 
A BARREN program halts only if instructed. If a program runs out of instructions, it wraps around and starts executing from the first instruction again. 
All instructions must be written in all-caps, separated by any amount of spaces or newlines. 
Below is the list of available instructions supported by BARREN. 
Instruction 	Description
(address) 	Moves the pointer to a specified cell. The address should be written in binary, with all 6 bits. For example, 000110 will move the pointer to cell 6.
"(address) 	Moves the pointer to a specified cell. If the cell is VOID, skips past a matching " instruction.
" 	Jumps back to the matching "(address) instruction.
(state) 	Beginning of an if-statement. Checks if the current cell is in a specified state.
RENDER 	Else-statement. Optional.
ALTER 	Else-statement. Optional.
VEIL 	Marks the end of an if-statement.
HINDRANCE 	Marks the end of an if-statement.
MERGE (address)	Output a character using the current cell and the specified cell. See MERGE table below.
MERGE 	Output a character using the current cell and itself. See MERGE table below.
PATIENCE 	No-op.
AWAIT 	No-op.
AGAIN 	Output the same character that was output last.
REPEAT 	Output the same character that was output last.
SHIFT 	SHIFTs the current cell. See conversion table below.
MORPH 	MORPHs the current cell. See conversion table below.
TRANSMUTE 	TRANSMUTEs the current cell. See conversion table below.
EMERGE 	Halts the program.
SUBMERGE 	Halts the program.
===MERGE table===
 	 	current cell	current cell	current cell	current cell	current cell	current cell
 	 	VOID 	REVEALED 	COVERED 	STATIC 	DYNAMIC 	RECKONING
specified cell	VOID 	  	M 	Z 	K 	/ 	X
specified cell	REVEALED 	P 	H 	G 	V 	. 	L
specified cell	COVERED 	E 	I 	D 	> 	Q 	U
specified cell	STATIC 	J 	T 	< 	0 	O 	F
specified cell	DYNAMIC 	R 	S 	" 	A 	1 	W
specified cell	RECKONING	C 	Y 	? 	B 	N 	:
===Conversion table===
 	current cell	current cell	current cell	current cell	current cell	current cell
 	VOID 	REVEALED 	COVERED 	STATIC 	DYNAMIC 	RECKONING
SHIFT 	RECKONING 	COVERED 	VOID 	REVEALED 	REVEALED 	DYNAMIC
MORPH 	DYNAMIC 	RECKONING 	STATIC 	DYNAMIC 	COVERED 	COVERED
TRANSMUTE	COVERED 	STATIC 	RECKONING 	VOID 	STATIC 	DYNAMIC
===Error handling===
If a program encounters an illegal instruction, it will print out UNINTELLIGIBLE MUTTERING "(instruction)" AT LINE (line number) and then crash. The line number will be written in binary.
==Sample programs==
===Hello world===
MORPH SHIFT MERGE AWAIT 100011 TRANSMUTE 
011010 MERGE 100011 SHIFT MERGE 000000 
AGAIN TRANSMUTE 100011 MORPH 011010 
MERGE 100011 000011 MERGE SHIFT 
MERGE 011010 011010 MERGE 100011 000100 
MERGE 011010 000011 MERGE 000000 MORPH 
MERGE PATIENCE 000100 MORPH MERGE 000000 
EMERGE
Prints HELLO WORLD.
===Truth machine===
MORPH TRANSMUTE
STATIC
MERGE SUBMERGE
ALTER
DYNAMIC
MERGE "000000 REPEAT "
VEIL HINDRANCE
Set to 0. TRANSMUTE can be erased to set it to 1.
Category:Languages output-only Category:2023 Category:Finite_state_automata Category:Usability_unknown Category:Cell-based