Sreg

Sreg (Six REGisters) is an esolang by User:ChuckEsoteric08.
==Specification==
Sreg uses six registers as memory:A, B, C, D, E and F.
Note that |A would return value of register A.
Command 	Function
++ A B C	Add value of register B to value of register A, storing result in register C
-- A B C	Subtract value of register B from value of register A, storing result in register C. If value of A is less than value of B then error.
** A B C	Multiply value of register B by value of register A, storing result in register C
// A B C	Divide value of register A by value of register B, storing result in register C. If value of A is not divisible by value B or value of B is zero then error
1+ A 	Increment register A
1- A 	Decrement register A. If value of A is zero then error
!! A 	Declare label A
:: A 	Goto label A
~~ A B C	Set register A to ASCII value of B-th letter in String C with first character being 1, character after it is 2 and so on. If B is bigger than length of string C then set A to 0
.. A 	Output Register A as ASCII character
>> A B 	Skip next instruction if register A is not B
^^ A B 	Set register A to the value of register B
&& A 	Set register A to zero
==Examples==
===Print "HI"===
1+ A
1+ A
1+ A
1+ A
1+ A
1+ A
1+ A
1+ B
1+ B
1+ B
1+ B
1+ B
1+ B
1+ B
1+ B
1+ B
1+ B
** A B A
1+ A
1+ A
.. A
1+ A
.. A
===ALWCIDFEC interpreter===
Replace Your_Program with ALWCIDFEC program.
 !! Interpreter
 1+ D
 ~~ F |D Your_Program
 >> F 0
 :: halt
 >> F 43
 :: +
 >> F 45
 :: -
 >> F 91
 :: [
 >> F 93
 :: ]
 >> F 42
 :: *
 >> F 47
 :: /
 >> F 40
 :: (
 >> F 41
 :: )
 >> F 52
 :: 4
 >> F 49
 :: 1
 >> F 123
 :: {
 >> F 125
 :: }
 :: Interpreter
 !! +
 1+ A
 :: Interpreter
 !! -
 1- A
 :: Interpreter
 !! *
 1+ B
 :: Interpreter
 !! /
 1- B
 :: Interpreter
 !! 4
 1+ C
 :: Interpreter
 !! 1
 1- C
 :: Interpreter
 !! [
 >> A 0
 :: 1nest
 :: Interpreter
 !! 1nest
 1+ D
 ~~ F |D Your_Program
 >> F 91
 :: 1incloop
 >> F 93
 :: 1decloop
 :: 1nest
 !! 1incloop
 1+ E
 :: 1nest
 !! 1decloop
 >> E 0
 :: Interpeter
 1- E
 :: 1nest
 !! ]
 >> A 0
 :: Interpreter
 !! 1nestback
 1- D
 ~~ F |D Your_Program
 >> F 93
 :: 1incloopback
 >> F 91
 :: 1decloopback
 :: 1nestback
 !! 1incloopback
 1+ E
 :: 1nestback
 !! 1decloopback
 >> E 0
 :: Interpreter
 1- E
 :: 1nestback
 !! (
 >> B 0
 :: 2nest
 :: Interpreter
 !! 2nest
 1+ D
 ~~ F |D Your_Program
 >> F 40
 :: 2incloop
 >> F 41
 :: 2decloop
 :: 2nest
 !! 2incloop
 1+ E
 :: 2nest
 !! 2decloop
 >> E 0
 :: Interpeter
 1- E
 :: 2nest
 !! )
 >> B 0
 :: Interpreter
 !! 2nestback
 1- D
 ~~ F |D Your_Program
 >> F 41
 :: 2incloopback
 >> F 40
 :: 2decloopback
 :: 2nestback
 !! 2incloopback
 1+ E
 :: 2nestback
 !! 2decloopback
 >> E 0
 :: Interpreter
 1- E
 :: 2nestback
 !! {
 >> C 0
 :: 3nest
 :: Interpreter
 !! 3nest
 1+ D
 ~~ F |D Your_Program
 >> F 123
 :: 3incloop
 >> F 125
 :: 3decloop
 :: 3nest
 !! 3incloop
 1+ E
 :: 3nest
 !! 3decloop
 >> E 0
 :: Interpeter
 1- E
 :: 3nest
 !! }
 >> C 0
 :: Interpreter
 !! 3nestback
 1- D
 ~~ F |D Your_Program
 >> F 125
 :: 3incloopback
 >> F 123
 :: 3decloopback
 :: 3nestback
 !! 3incloopback
 1+ E
 :: 3nestback
 !! 3decloopback
 >> E 0
 :: Interpreter
 1- E
 :: 3nestback
 !! halt
Category:Languages Category:Turing complete Category:Unimplemented