SideStacks

SideStacks is a Stack-Based programming language made by User:Myoitzi housing two stacks and two 8-bit registers. 
==Instruction set==
SideStacks uses a multitude of Single-character instructions, similar to brainfuck. A list of instructions is provided below:
Command	Description
^ 	Increment the "A" register.
v 	Decrement the "A" register.
< 	Push the value of the "A" register to the selected stack and set "A" to 0.
> 	Pop the topmost value of the selected stack to "A".
+ 	Pop the topmost value of the selected stack and add it to "A".
- 	Pop the topmost value of the selected stack and subtract it from "A".
s 	Swap the values of the "A" register with the "B" register and vice versa.
b 	Duplicate the value of the "A" register and store it into the "B" register.
. 	Print the "A" register as a decimal number.
@ 	Print the "A" register as an ASCII character.
; 	Take an integer input and store it into "A".
: 	Take an ASCII input and store it's corresponding value into "A".
0 	Set "A" to 0.
( 	Jump past corresponding parentheses if "A" is 0 (similar to [ in brainfuck).
) 	Jump back to the corresponding parentheses if "A" is nonzero (similar to ] in brainfuck).
[ 	Jump past corresponding parentheses if the "A" is nonzero.
] 	Jump back to the corresponding parentheses if "A" is 0.
{ 	Jump past corresponding parentheses if the "A" is equal to "B".
} 	Jump back to the corresponding parentheses if "A" is not equal to "B".
f 	Flip selected stack.
Any character not in this table will be ignored
==Examples==
===Hello World!:===
 ^^^^b(.<f>bbbbbbbbbb.<f>bbbbbbb<svvvvvvvvvvvv@>bbbv@0^^^^^^^^bb
 bbbbv.<f>bbb<
 s<^^^^^^^^^^^^+@vvvvvvv@<^^^^^^^bbbbbbbb)
==Implementation==
Python 3:
 stack = [] 
 stack2 = []
 a = 0 
 b = 0
 sp = 1
 ins = ':@'
 i = 0
 debug = False
 while i < len(ins):
 if ins[i] == 'd':
 if debug == False:
 debug = True
 else:
 debug = False
 elif ins[i] == '^':
 a += 1
 if debug == True:
 print(f'\na = {a}')
 elif ins[i] == 'v':
 a -= 1
 if debug == True:
 print(f'\na = {a}')
 elif ins[i] == '<':
 if sp == 1:
 stack.append(a)
 else:
 stack2.append(a)
 a = 0
 if debug == True:
 print(f'\nStack: {stack}')
 print(f'\nStack2: {stack2}')
 elif ins[i] == '>':
 if sp == 1:
 a = stack.pop()
 else:
 a = stack2.pop()
 if debug == True:
 print(f'\na = {a}')
 print(f'\nStack: {stack}')
 print(f'\nStack2: {stack2}')
 elif ins[i] == '+':
 if sp == 1:
 a += stack.pop()
 else:
 a += stack2.pop()
 if debug == True:
 print(f'\na = {a}')
 print(f'\nStack: {stack}')
 print(f'\nStack2: {stack2}')
 elif ins[i] == '-':
 if sp == 1:
 a -= stack.pop()
 else:
 a -= stack2.pop()
 if debug == True:
 print(f'\na = {a}')
 print(f'\nStack: {stack}')
 print(f'\nStack2: {stack2}')
 elif ins[i] == '.':
 print(a, end=' ')
 elif ins[i] == '@':
 print(chr(a), end="")
 elif ins[i] == 'b':
 b = a
 elif ins[i] == 's':
 stack.append(a)
 a = b
 b = stack.pop()
 elif ins[i] == ';':
 print()
 a = int(input('> '))
 elif ins[i] == ':':
 print()
 a = ord(input('> '))
 elif ins[i] == '0':
 a = 0
 elif ins[i] == ')':
 if a != 0:
 i -= 1
 loop = 1
 while loop > 0:
 if ins[i] == ')' or ins[i] == ']' or ins[i] == '}':
 loop += 1
 i -= 1
 elif ins[i] == '(' or ins[i] == '[' or ins[i] == '{':
 loop -= 1
 if loop != 0:
 i -= 1
 else:
 i -=1
 elif ins[i] == ']':
 if a == 0:
 i -= 1
 loop = 1
 while loop > 0:
 if ins[i] == ')' or ins[i] == ']' or ins[i] == '}':
 loop += 1
 i -= 1
 elif ins[i] == '(' or ins[i] == '[' or ins[i] == '{':
 loop -= 1
 if loop != 0:
 i -= 1
 else:
 i -=1
 elif ins[i] == '}':
 if a != b:
 i -= 1
 loop = 1
 while loop > 0:
 if ins[i] == ')' or ins[i] == ']' or ins[i] == '}':
 loop += 1
 i -= 1
 elif ins[i] == '(' or ins[i] == '[' or ins[i] == '{':
 loop -= 1
 if loop != 0:
 i -= 1
 else:
 i -=1
 elif ins[i] == '(':
 if a == 0:
 i += 1
 loop = 1
 while loop > 0:
 if ins[i] == '(' or ins[i] == '[' or ins[i] == '{':
 loop += 1
 i += 1
 elif ins[i] == ')' or ins[i] == ']' or ins[i] == '}':
 loop -= 1
 if loop != 0:
 i += 1
 else:
 i +=1
 elif ins[i] == '[':
 if a != 0:
 i += 1
 loop = 1
 while loop > 0:
 if ins[i] == '(' or ins[i] == '[' or ins[i] == '{':
 loop += 1
 i += 1
 elif ins[i] == ')' or ins[i] == ']' or ins[i] == '}':
 loop -= 1
 if loop != 0:
 i += 1
 else:
 i -=1
 elif ins[i] == '{':
 if a == b:
 i += 1
 loop = 1
 while loop > 0:
 if ins[i] == '(' or ins[i] == '[' or ins[i] == '{':
 loop += 1
 i += 1
 elif ins[i] == ')' or ins[i] == ']' or ins[i] == '}':
 loop -= 1
 if loop != 0:
 i += 1
 else:
 i +=1
 elif ins[i] == 'f':
 if sp == 1:
 sp = 2
 else:
 sp = 1
 while a > 255 or a < 0:
 if a >= 256:
 a %= 256
 elif a < 0:
 a = (a % 256)+256
 i += 1
Category:Low-level 
Category:Stack-based 
Category:Languages
Category:2022
Category:Turing complete