Brainfuck extended

:Please note that this is a single variant, not the Brainfuck extensions page which lists many more extra command classes.
Brainfuck extended is extended Brainfuck, which can do complicated stuff easier than Brainfuck, developed by User:None1.
You can call it Bx for short.
==Memory Model==
Brainfuck stores its memory in a tape, so does Bx. But Bx also has a 8 bit register (which is 0 initially), which means it is more powerful.
==Commands==
There are 8 commands in Brainfuck, but Bx had much more.
===Standard Commands===
Standard commands are derived from brainfuck.
But in Bx, the + and - commands are replaced with / and \, because + and - have other uses.
===Register Commands===
Commands that access the register.
@ Rewrites the register with the pointer value.
% Rewrites the pointer with the register value.
~ Swaps the pointer value with the register value.
+ Add the register and the pointer, and store the result into the register (modulo 256).
- Subtracts the register by the pointer, and store the result into the register (modulo 256).
* Multiplies the register and the pointer, and store the result into the register. (Modulo 256)
| Compares the register value with the pointer value, if the register value is
 greater than the pointer value, store 1 into the register, otherwise 0.
& Bitwise and the register value and the pointer value, and store it into the register.
^ Bitwise or the register value and pointer value, and store it into the register.
! Bitwise not the register value.
; Rewrites the register with a random integer from 0 to the register value before.
The random generator can either be a psuedo random generator or a real random generator.
===Other Commands===
A command that is neither a standard command nor a register command belongs to the 'Other Command' group.
( Reads a decimal integer (unsigned) from standard input, and stores it into the pointer 
(modulo 256).
) Writes the pointer value to standard output as an unsigned decimal integer.
{ Reads a hexadecimal integer (unsigned) from standard input, and stores it into the pointer 
(modulo 256).
} Writes the pointer value to standard output as an unsigned uppercase hexadecimal integer. Reads a hexadecimal integer (unsigned) from standard input, and stores it into the pointer 
(modulo 256). If the hexadecimal integer has less than 2 digits, it is padded to 2 digits (e.g.: 15 prints 0F).
_ Followed by exactly 2 hexadecimal digits (either uppercase or lowercase), rewrites the pointer with 
the value represented by these digits.
?:' Conditional operator, if the pointer value is not zero, then run the code between ? and :
, otherwise run the code between : and '. The ' IS mandatory.
$<string>$ Treats the string as a C-style string, and rewites the tape with it, starting from the pointer.
Each $ matches the nearest $ after it. This command only changes the N+1 consecutive cells starting from the pointer, where N is the length of the string. And it doesn't change the pointer.
# Comment, each # matches the nearest # after it, just like that each /* matches the nearest */ in C++.
==Example Programs==
===Hello World===
 _48._65._6c.._6f._20._57._6f._72._6c._64._21.
===Cat Program===
 /[,.]
===Random Integer Between 1 and 6===
 _05~;/~)
===An easier way to print Hello World===
 $Hello World!$[.>]
===A+B Problem===
 (@(+%)
===Truth Machine (Characters that are not 0 are treated as 1)===
 _30~,~-~?_31[.]:_30.'
===Randomly choose a number from two numbers read from user input===
 (>>(</~;~[>>]<)
===XKCD Random Number===
 $4$.
====Alternative====
 _34.
====Alternative that doesn't use any numbers at all====
 ////)
==Turing Complete?==
This language is certainly turing complete, because Brainfuck is, and this language is a superset of Brainfuck.
==Implementation==
Interpreter in Python
Category:Brainfuck derivatives
Category:Languages
Category:Cell-based
Category:2023
Category:Implemented
Category:Low-level