Betul Betul BetulLang

Betul Betul BetulLang or just BetulLang is an esolang made by IkenusDisnem (talk) in 05/03/2022. The idea for Betul Betul BetulLang came from an iconic line of "Betul Betul Betul!" in the Malaysian animated TV show, Upin & Ipin. The commands are similar to Length (but instead how many charaters, it's how many Betuls). The language is both stack based and cell based as it has both a tape and a stack.
== Syntax ==
Here is how you type a command:
 Betul Betul Betul!
Here is how you type a comment:
 Tak this is a comment
For readability, use something to seperate Tak from the comment's content:
 Tak | this comment is more readable
Here is how you write arguments for a command (The command's argument is always a number, to write numbers, you just write how many Betuls based of your number, eg: if you want to write 3, you write Betul Betul Betul. to write zero, simply write nothing):
 Betul Betul Betul Betul Betul Betul: Betul.
For negative numbers use Tak:
 Betul Betul Betul Betul Betul Betul Betul: Tak Betul Tak Betul Tak Betul.
== Commands ==
Here are the list of commands in Betul Betul BetulLang
 Commands
Amount of Betuls	Command Name	Amount of Arguments	Description
1 	goto 	1 	jumps to a line in the code with the first argument being the line to jump to (note: it can not jump into a line with no command in it)
2 	gotoif 	2 	similar to goto, but comapares the popped element of the stack and the cell of the tape that the pointer is pointing to, with the second argument (-1 to 1) being how to compare (-1 = less than, 0 = equals, 1 = greater than). if the comparison is not true, it will not jump to the given line.
3 	output 	0 	pops every element in the stack and outputs it.
4 	input 	0 	recieves input and pushes it into the stack.
5 	asciimode 	1 	by default is not active. If so, then the input command will turn any ASCII characters into ASCII decimal numbers, and the output command will display numbers as ASCII characters. if the first argument is 0, it will deactivate asciimode. Else if 1, it will activate it
6 	move 	1 	moves the tape pointer, the first argument can be anything but 0. Any positve numbers will move the pointer by 1 and any negative numbers will move the pointer by -1.
7 	set 	2 	will set the pointed cell on the tape to the value of the first argument, the second argument will decide what the command will do:
* 0 just sets the value of the cell to the value of the first argument
* 1 will sets the value of the cell as the result of the value of the cell + (addition) the value of the first argument
* 2 will sets the value of the cell as the result of the value of the cell - (subtraction) the value of the first argument
* 3 will sets the value of the cell as the result of the value of the cell * (multiplication) the value of the first argument
* 4 will sets the value of the cell as the result of the value of the cell / (division) the value of the first argument
* 5 will sets the value of the cell as the result of the value of the cell % (modulus) the value of the first argument
8 	store 	1 	pushes the value of the pointed cell of the tape to the stack and setting the value of the pointed cell of the tape to 0
9 	stash 	1 	pops an element from the stack, then sets the value of the pointed cell of the tape to the value of the popped element of the stack
10 	clear 	0 	pops all of the elements off of the stack
11 	reverse 	0 	reverses the stack (putting the first element to the last, first second to last second and so on.)
12 	duplicate 	0 	pops the last element of the stack and pushes it 2 times into the stack.
== Some Examples ==
=== A Truth-machine program ===
 Tak | A truth-machine program
 Betul Betul Betul Betul Betul Betul: Betul.
 Betul Betul Betul Betul Betul Betul Betul: Betul, .
 Betul Betul Betul Betul Betul Betul: Tak Betul.
 Tak | Recieving input
 Betul Betul Betul Betul!
 Tak | Jumps to line 19
 Betul Betul: Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul, .
 Tak | the 1 part
 Betul Betul Betul Betul Betul Betul: Betul.
 Betul Betul Betul Betul Betul Betul Betul Betul!
 Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul!
 Betul Betul Betul Betul Betul Betul Betul Betul Betul!
 Betul Betul Betul!
 Tak | Jumps to line 11
 Betul: Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul. 
 
 Tak | the 0 part
 Betul Betul Betul Betul Betul Betul Betul Betul!
 Betul Betul Betul!
== Computational class ==
This language is Turing-complete since it can simulate BF.
BF	BetulLang
> 	
Betul Betul Betul Betul Betul Betul: Betul.
Betul Betul Betul Betul Betul Betul: Betul.
< 	
Betul Betul Betul Betul Betul Betul: Tak Betul.
Betul Betul Betul Betul Betul Betul: Tak Betul.
+ 	
Betul Betul Betul Betul Betul Betul Betul: Betul, Betul.
- 	
Betul Betul Betul Betul Betul Betul Betul: Betul, Betul Betul.
. 	
Betul Betul Betul Betul Betul Betul Betul Betul{": ." or "!" (it's unclear whether the 8 command was meant to have an unused argument as specified by the 1 in the Amount of Arguments column)}
Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul Betul!
Betul Betul Betul!
Betul Betul Betul Betul Betul Betul Betul Betul Betul{": ." or "!" (it's unclear whether the 9 command was meant to have an unused argument as specified by the 1 in the Amount of Arguments column)}
, 	
Betul Betul Betul Betul!
Betul Betul Betul Betul Betul Betul Betul Betul Betul{": ." or "!" (it's unclear whether the 9 command was meant to have an unused argument as specified by the 1 in the Amount of Arguments column)}
[ 	
Betul Betul Betul Betul Betul Betul: Betul.
Betul Betul Betul Betul Betul Betul Betul Betul{": ." or "!" (it's unclear whether the 8 command was meant to have an unused argument as specified by the 1 in the Amount of Arguments column)}
Betul Betul Betul Betul Betul Betul: Tak Betul.
Betul Betul: {line number in Betuls representing the command right after the matching "]", compensating for commands that take up multiple BetulLang lines}, .
] 	
Betul: {line number in Betuls representing the first line of the matching "[" BetulLang translation}
== External Sources ==
# Compiler
Category:Languages Category:Stack-based Category:Cell-based Category:Implemented Category:2022 Category:Turing complete