2 trits, 3 trytes
Jump to navigation
Jump to search
2 trits, 3 trytes is an assembly language invented by User:TheBigH that existed for months but he just didn't make an article on it. It is inspired by 2 Bits, 1 Byte.
Commands
Command (Trinary) | Command (Disassembled) | What it does |
---|---|---|
00 | NOP | Do nothing (a NOP) |
01 | ACT | ACTion. Given value in memory, completely mix it up according to the following:
00 -> 12 -> 10 -> 20 -> 01 -> 22 -> 21 -> 02 -> 11 -> 00 |
02 | CJM | Conditional JuMp. Given two addresses, if the value in the first address is nonzero, jump to the second address. |
10 | JMP | Given value in memory, JuMP to that instruction. |
11 | INC | Given value in memory, INCrease given value (wraps) |
12 | DEC | Given value in memory, DECrease given value (wraps) |
20 | TCO | Given three addresses, Tritwise COnfusion** the first two addresses together and store the result in the third. |
21 | OUT | Given a 2 trit number, OUTput the value of that tryte as a char*. If the number is more than 4, 5 gets subtracted from it. |
22 | TEM | TErMinates the program. |
*This uses a 4-trit version of ASCII. Here's a chart: 012345678 0 ○░▒π∞↊↋×÷ 1 ¬µ█/'"\?~ 2 `!@#$%^&* 3 012345678 4 9.,:;=-_+ 5 ()[]{}<>| 6 ▓ABCDEFGH 7 IJKLMNOPQ 8 RSTUVWXYZ **Tritwise confusion uses this table (side is input 1 and top is input 2): 012 0 212 1 022 2 011
The instruction pointer can wrap around, thus allowing more "complicated" programs. Since the memory is 2 trytes, you can represent the entire program with just 5 characters. The last 2 trits of the last character aren't used. For example:
!!!!!
becomes:
02010201020102010201
which, when disassembled, becomes:
CJM 0x1 0x2 ACT 0x2 ACT 0x2 ACT 0x2
Programs
Output any 2 characters
CD○??
where the ??? is replaced with the 2 characters. When disassembled, this becomes:
OUT 0x3 OUT 0x4 NOP NOP ???
Infinite loop
○○○○○
Interpreters
https://snap.berkeley.edu/project?username=lionheart921&projectname=2%20trits%2c%203%20trytes by User:TheBigH