Mathematical Opcodes
0b0000mdddooooooss (0xUUUUuuuu)
Use ALU(s) to do an operation. If m is 1 then all ALUs will be used, if 0 then only one ALU will be used. The 32-bit argument is optional. It must be included if u is used in the source or destination. It may not be included otherwise.
d (binary) | destination |
---|---|
000 |
(none) |
001 |
ALURAM[U] |
100 |
memory[U] (8-bits) |
101 |
memory[U] (16-bits) |
110 |
memory[U] (32-bits) |
s (binary) | source |
---|---|
00 |
ALU A register |
01 |
Uu |
10 |
RAM[u] |
11 |
ALURAM[u] |
Jumps and Calls
0b001prccc_nnnnnnnn (0xNNNN)
Generic conditional and unconditional relative and absolute(long) call/jump format. p = 1 for call, 0 for jump. r = 1 for relative, 0 for absolute. In a relative call/jump n is added to the PC. In an absolute call/jump, the extra uint16 N is loaded and PC = (N << 8) | n
c (binary) | condition |
---|---|
000 |
always |
001 |
never |
010 |
z flag |
011 |
nz flag |
100 |
g flag |
101 |
ge flag |
110 |
l flag |
111 |
le flag |
Extended
0b11111111_0000rrrr 0xvvvv
Load video control register r with value v
r (binary) | register |
---|---|
0000 |
pixel clock divider * 2 |
0001 |
???? |