# Instruction Set Instructions are bits long and are split into a `card number`, an `instruction`, and a `register`. All values starting with `0b` are binary bit representations (`-` indicates that a bit is "don't care" and a letter indicates a numeric field). All cards are provided the full instruction, an enable signal, the current state of the ACC register (ACC_IN), and the state of the register given by the `Register` section. No requirements are made on individual boards other than that they do not pull the bus high or low when their card is not enabled. UPPER_SNAKE_CASE words are values on the bus, _x indicates the register index, and _n indicates the bit index. ```extended-markdown-table | Instruction Bit Representation | Instruction | |--------------------------------------|----------|-------------------------------------------------------------------------------------------| | Card Number | Instruction | Register | Mnemonic | Description | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00000 | 0b------ | NOP | ACC_FB_n = ACC_IN_n where n <= word size | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00001 | 0b------ | INC | ACC_FB = ACC_IN + 1 | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00010 | 0b------ | ASL | ACC_FB_n = ACC_IN_n+1 where 0 < n < word size, ACC_FB_msb = ACC_IN_msb | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00011 | 0b------ | ASR | ACC_FB_n = ACC_IN_n-1 where n < word size - 1, ACC_FB_msb = ACC_IN_msb | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00100 | 0b------ | LSL | ACC_FB_n = ACC_IN_n+1 where n > 0, ACC_FB_lsb = 0 | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00101 | 0b------ | LSR | ACC_FB_n = ACC_IN_n-1 where n < word size - 1, ACC_FB_msb = 0 | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00110 | 0b------ | ROL | ACC_FB_n = ACC_IN_n-1 where n > 0, ACC_FB_0 = ACC_IN_msb | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b00111 | 0b------ | ROR | ACC_FB_n = ACC_IN_n+1 where n < word size - 1, ACC_FB_msb = ACC_IN_0 | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01000 | 0bxxxxxx | NAND | ACC_FB_n = !(ACC_IN_n * REG_x_n) | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01001 | 0bxxxxxx | OR | ACC_FB_n = ACC_IN_n + REG_x_n | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01010 | 0bxxxxxx | XOR | ACC_FB_n = ACC_IN_n ^ REG_x_n | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01011 | 0bxxxxxx | ADD | ACC_FB = ACC_IN + REG_x_n | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01100 | 0bxxxxxx | AND | ACC_FB_n = ACC_IN_n * REG_x_n | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01101 | 0bxxxxxx | NOR | ACC_FB_n = !(ACC_IN_n + REG_x_n) | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01110 | 0bxxxxxx | XNOR | ACC_FB_n = !(ACC_IN_n ^ REG_x_n) | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b01111 | 0bxxxxxx | NADD | ACC_FB = ~(ACC_IN + REG_x) | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b000 | 0b1---- | 0bxxxxxx | RESERVED | RESERVED | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b00111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b01111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b10111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b001 | 0b11111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b00111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b01111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b10111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b010 | 0b11111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b01111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b10111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11000 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11001 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11010 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11011 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11100 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11101 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11110 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b11111 | 0b000000 | TODO | TODO | |-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------| | 0b100 | 0b00000 | 0b000000 | TODO | TODO | ```