Instruction Set
Instruction set of 3niti alpha has 3 groups of commands:
- load register A from other register (opcode starts with P) - LAr (where r is a name of any directly available register used as source);
- save register A to other register (opcode starts with N) - SAr (where r is a name of any directly available register used as destination);
- and other commands (opcode starts with O).
Full instruction set:
- NNN (-13) SAN - save value from register A to register N (memory cell with address DPn);
- NNO (-12) SAO - save value from register A to register O (memory cell with address DPo);
- NNP (-11) SAP - save value from register A to register P (memory cell with address DPp);
- NON (-10) SAF - save value from register A to register F;
- NOO (-9) SPCD - save value from PC (program counter) to current DP (data pointer);
- NOP (-8) SAB - save value from register A to register B;
- NPN (-7) SAL - save value from register A to register L (lower triad of current data pointer);
- NPO (-6) SAM - save value from register A to register M (middle triad of current data pointer);
- NPP (-5) SAH - save value from register A to register H (higher triad of current data pointer);
- ONN (-4) RLA - rotate register A to the left through flag BCF;
- ONO (-3) ADD - add register A with B and flag BCF, save result to A and BCF, modify sign flag RSF;
- ONP (-2) RRA - rotate register A to the right through flag BCF;
- OON (-1) LAI # - load register A from immediate triad;
- OOO (0) ADI # - add register A with immediate triad and flag BCF, save result to A and BCF, modify sign flag RSF;
- OOP (1) OPA # - perform unary "tritwise" operation over register A (function is defined by immediate triad), modify sign flag RSF;
- OPN (2) LDI # # # - load current DP (data pointer) by immediate 3 triads (higher triad, middle triad, lower triad);
- OPO (3) JMP # # # - jump to address (copy to PC) set by immediate 3 triads (higher triad, middle triad, lower triad);
- OPP (4) OPB # # # - perform binary "tritwise" operation over registers A and B, save result to A (function is defined by immediate 3 triads), modify sign flag RSF;
- PNN (5) LAN - load register A by value from register N (memory cell with address DPn);
- PNO (6) LAO - load register A by value from register O (memory cell with address DPo);
- PNP (7) LAP - load register A by value from register P (memory cell with address DPp);
- PON (8) LAF - load register A by value from register F;
- POO (9) LPCD - load PC (program counter) by value from current DP (data pointer);
- POP (10) LAB - load register A by value from register B;
- PPN (11) LAL - load register A by value from register L (lower triad of current data pointer);
- PPO (12) LAM - load register A by value from register M (middle triad of current data pointer);
- PPP (13) LAH - load register A by value from register H (higher triad of current data pointer).
Your Ternary Computer