The system features five unsigned 16-bit registers. A and B are for general artithmetic operations while X and Y are for incrementing.
The instruction width is 32-bit with each instruction being comprised of an 8-bit operator and sub-operator followed by a 16-bit operand.
The operator and sub-operator combine in logical ways to form super-operators that can perform complex operations in a single instruction cycle
| operator | description |
|---|---|
| 0x00 - HLT | Immediately halts system |
| 0x01 - PRC | Prints register name and contents to console |
| 0x02 - PVC | Prints register contents as numerical value to console |
| 0x03 - PCC | Prints value as 16-bit unicode character |
| 0x0A - JIF | Jump to specified program line if condition is met |
| 0x0B - JNF | Jump to specified program line if condition is not met |
| 0x40 - LDA | Loads specified value to A register |
| 0x41 - STA | Stores A reigster value to specified location |
| 0x42 - ATA | Adds specified value to A register |
| 0x43 - SFA | Subtract specified value from A register |
| 0x45 - AMA | Multiples A register by specified value |
| 0x47 - ADA | Divides A register by specified value |
| 0x49 - RAA | Divides A register by specified value and returns remainder |
| 0x4A - FAE | Set flag if A register value is equal to specified value |
| 0x4B - FAM | Set flag if A register value is more than specified value |
| 0x4C - FAL | Set flag if A register value is less than specified value |
| 0x51 - STB | Stores B reigster value to specified location |
| 0x52 - ATB | Adds specified value to B register |
| 0x53 - SFB | Subtract specified value from B register |
| 0x55 - BMB | Multiples B register by specified value |
| 0x57 - BDB | Divides B register by specified value |
| 0x59 - RBD | Divides B register by specified value and returns remainder |
| 0x5A - FBE | Set flag if B register value is equal to specified value |
| 0x5B - FBM | Set flag if B register value is more than specified value |
| 0x5C - FBL | Set flag if B register value is less than specified value |
| 0x60 - STR | Store result from accumulator to specified location |
| 0x61 - AAB | Adds A and B registers and outputs to specified location |
| 0x62 - MAB | Multiplies A and B registers and outputs to specified location |
| 0x63 - AMB | Subtracts B register from A register and outputs to specified location |
| 0x64 - BMA | Subtracts A register from B register and outputs to specified location |
| 0x65 - ADB | Divides A register by B register and outputs to specified location |
| 0x66 - BDA | Divides B register by A register and outputs to specified location |
| 0x67 - RAB | Divides A register by B register and outputs remainder to specified location |
| 0x68 - RBA | Divides A register by B register and outputs remainder to specified location |
| 0x70 - LDX | Load specifed value to X register |
| 0x71 - STX | Store X register value to specified location |
| 0x72 - INX | Increment X register by specified value |
| 0x73 - DEX | Decrement X register by specified value |
| 0x7A - FXE | Flag if X register value is equal to |
| 0x7B - FXM | Flag if X register value is more than |
| 0x7C - FXL | Flag if X register value is less than |
| 0x80 - LDY | Load specifed value to Y register |
| 0x81 - STY | Store Y register value to specified location |
| 0x82 - INY | Increment Y register by specified value |
| 0x83 - DEY | Decrement Y register by specified value |
| 0x8A - FYE | Flag if Y register value is equal to |
| 0x8B - FYM | Flag if Y register value is more than |
| 0x8C - FYL | Flag if Y register value is less than |
| 0x90 - PSH | Push value to stack |
| 0x91 - POP | Pop value from stack |
| Sub-operator | Description |
| x00 - MIN | Represents the minimum possible value |
| x01 - MAX | Represents the maximum possible value |
| x02 - ARB | Arbitrary value |
| x04 - ARG | 16-bit A register |
| x05 - BRG | 16-bit B register |
| x06 - ACC | Accumulator stores values of arithmetic operations |
| x07 - XRG | 16-bit X register |
| x08 - YRG | 16-bit Y register |
| x09 - STK | 16-bit stack |
| x0A - CRM | Stores program currently being executed |
| x0B - WRM | Stores values related to program being executed |
