cattaratus

From Esolang
Jump to navigation Jump to search
This is still a work in progress. It may be changed in the future.
This article is not detailed enough and needs to be expanded. Please help us by adding some more information.
cattaratus
Designed by User:RixTheTyrunt
Appeared in 2026
Dimensions Two-dimensional
Computational class Unknown
Reference implementation Unimplemented

cattaratus is a two dimensional esoteric programming language by User:RixTheTyrunt. Its name is a portmanteau of "cat" and "apparatus" with "t" instead of "p".

The execution starts in the top left corner. By default, an "auto" movement mode is engaged. The auto mode moves around the entire program's rectangular space counter-clockwise, i.e., down, right, up, then left. If the execution position is not in the edges of the program, it defaults to going up.

Examples

Truth-machine

75012b8
   00 0
7c8 409
c c 1
6c9

Explanation: the program starts and immediately forces movement right and toggles operand sides so for some operations, the left cell becomes the right cell, and the previously right cell becomes the left cell, then performs a no-op, then sets the low and high nybbles to the cells below them (the right side of the execution direction, right). It then gets a single character from the user and writes it into the cells set as the low and high nybbles. The program eventually moves on until it meets the "comparing skip" operation. It normally moves steps in the current movement mode specified by the right cell if the byte to the left is nonzero. However, the sides got swapped earlier on in the program, so this actually skips 1 step to the left (because the program execution is facing left) if the right cell (the low nybble of user input) is nonzero. When it doesn't skip, it continues the program, but then tries to execute the space it's sitting on, but the space character isn't a valid hex character, so the program terminates. When it does skip, the program skips the space straight into a loop, where 7, 8, 9 and 6 is right, down, left, and up (respectfully) and c is the operation to print out an ASCII character formed out of the low and high byte. If the low nybble wouldn't have been specified, it always defaults to 0, so does an unset high nybble.