TISolang

TISolang (or simply, "TIS-o-lang") is a esoteric programming language that created by McDude73 in 2021 that was implemented based on the game TIS-100 by Zachtronics.
==Basic idea==
The main idea behind this language is that there are 12 accumulators, each having a backup accumulator alongside them.
Values, which are between -999 and 999 inclusive, that are usually taken from an input are moved into these accumulators and modified in a way where you are able to send the output based on what instructions you are giving the program.
One could say that this is a modified version of a TIS-100 program.
==Architecture==
===Basic commands===
TIS-100 and TISolang have their many commands. TISolang is to extend the amount of commands that TIS-100 has in order to make it an esoteric language.
The table below will mention which commands are related and how they work.
TIS-100 Command	TISolang Command	Description 	TISolang Difference
MOV A B 	MOV A B 	Moves value A to location B. 	Moves value A to accumulator B.
ADD A 	ADD A B 	Adds value A to the accumulator. 	Adds A to accumulator B.
SUB A 	SUB A B 	Subtracts value A from the accumulator. 	Subtracts A from accumulator B.
NEG 	NEG A 	Negates the value in the accumulator. 	Negates the value in accumulator A.
SAV 	SAV A 	Saves the value in the accumulator into the backup accumulator. 	Saves the value from accumulator A to the backup.
SWP 	SWP A 	Swaps the backup and accumulator values. 	Swaps the values from the accumulator and backup at accumulator A.
# 	# 	While not an actual command, it allows the user to add comments in the program.	
===Conditional commands===
Here is where changes in code start to appear significantly. The following codes act as 'if' statements.
TIS-100 Command	TISolang Command	Description 	TISolang Difference
JEZ A 	AEZ A 	Goes to label A if the accumulator's value is 0. 	If the accumulator at A == 0, run code until END is reached.
JNZ A 	ANZ A 	Goes to label A if the accumulator's value is not 0. 	If the accumulator at A != 0, run code until END is reached.
JGZ A 	AGZ A 	Goes to label A if the accumulator's value is greater than 0.	If the accumulator at A > 0, run code until END is reached.
JLZ A 	ALZ A 	Goes to label A if the accumulator's value is less than 0. 	If the accumulator at A < 0, run code until END is reached.
===TISolang exclusive commands===
While TISolang is related to TIS-100, there are special commands, such as END as mentioned earlier. The following are TISolang specific commands that you can run.
TISolang Command	Description
INP A 	Lets the user input any value, then send it to accumulator A.
Any existing input at accumulator A will be overwritten.
OUT A 	Outputs the value from accumulator A. The value in accumulator A remains the same.
SND A B 	Send value A to accumulator B without requiring user input.
MUL A B 	Multiply accumulator B's value by A.
DIV A B 	Divide accumulator B's value by A using integer division.
WHL A 	Creates a loop running the code based on condition A.
CTA A 	Converts the integer at accumulator A to an ASCII character.
CTI A 	Converts the ASCII character at accumulator A to an integer.
END 	Declares the end of an if statement or a loop.
NLN 	Creates a new line in the console for printing.
==Positives, negatives, and other notes==
===Positives===
* Values can be moved wherever they want.
* You can input anything you want and send the value to any accumulator.
* You can print values from any accumulators at any time.
* Using SAV can allow you to keep any values in the backup for any future use later on.
===Negatives===
* The only way to access 'if' statements are using AEZ, ANZ, AGZ, and ALZ, where 0 is the main factor.
* The only way to access the backup data in an accumulator requires you to use SWP.
===Notes===
* When only one character is entered, except for numbers, it is treated as an ASCII character.
* Spaces must be used accordingly based on the given commands above.
* You can not write values to the backup accumulator.
* Entire strings cannot be converted to ASCII at once.
==Computational class==
The computational class for TISolang is Turing-complete.
The reason behind this is because data can be overwritten with different values either from an input or from different accumulators. Data is able to be printed out as a type of ASCII character, or, on demand, an integer given inside an accumulator.
==Example programs==
===Hello, world!===
*
 SND Hello, 1
 SND 32 2
 SND World! 3
 CTA 2
 OUT 1
 OUT 2
 OUT 3
===Truth-machine===
*
 INP 1
 AEZ 1
 OUT 1
 END
 WHL ANZ 1
 OUT 1
 END
===Infinite loop===
*
 WHL AEZ 1
 END
==Interpreters==
Currently none
Category:2021
Category:Turing complete
Category:Languages