Opcode table - ackerman2001/OpenCDK GitHub Wiki
Data is stored in little-endian format
| Opcode | Explanation | Byte length |
|---|---|---|
| 0x00 | mov R[A], b8b7b6b5b4b3b2b1 | 9 |
| 0x01 | mov R[B], b8b7b6b5b4b3b2b1 | 9 |
| 0x02 | mov R[C], b8b7b6b5b4b3b2b1 | 9 |
| 0x03 | mov R[D], b8b7b6b5b4b3b2b1 | 9 |
| 0x04 | mov R[E], b8b7b6b5b4b3b2b1 | 9 |
| 0x05 | mov R[F], b8b7b6b5b4b3b2b1 | 9 |
| 0x06 | mov memory[R[A]], b8b7b6b5b4b3b2b1 | 9 |
| 0x07 | mov memory[R[B]], b8b7b6b5b4b3b2b1 | 9 |
| 0x08 | mov memory[R[C]], b8b7b6b5b4b3b2b1 | 9 |
| 0x09 | mov memory[R[D]], b8b7b6b5b4b3b2b1 | 9 |
| 0x0A | mov memory[R[E]], b8b7b6b5b4b3b2b1 | 9 |
| 0x0B | mov memory[R[F]], b8b7b6b5b4b3b2b1 | 9 |
| 0x0C | inc R[A] | 1 |
| 0x0D | inc R[b1] | 2 |
| 0x0E | dec R[A] | 1 |
| 0x0F | dec R[b1] | 2 |
| 0x10 | add R[A], R[b1] | 2 |
| 0x11 | add R[A], b8b7b6b5b4b3b2b1 | 9 |
| 0x12 | call b8b7b6b5b4b3b2b1 | 9 |
| 0x13 | call R[A] | 1 |
| 0x14 | ret | 1 |
| 0x15 | mul R[A], R[b1] | 2 |
| 0x16 | skip next instruction if R[b1] == R[b2] | 3 |
| 0x17 | skip next instruction if R[b1] != R[b2] | 3 |
| 0x18 | mov R[A], memory[R[B]] | 1 |
| 0x19 | mov R[b1], R[b2] | 3 |
| 0x20 | mov memory[R[A]], R[b1] | 2 |
| 0x21 | mov memory[R[b1]], R[b2] | 3 |
| 0x22 | jmp b8b7b6b5b4b3b2b1 | 9 |
| 0xFA | scan decimal from keyboard and put it in R[b1] | 1 |
| 0xFB | print decimal at memory address R[b1] | 2 |
| 0xFC | Create a window (width, height) = (b4b3b2b1, b8b7b6b5) with title from address R[A] in the memory(terminated by 0-byte) | 9 |
| 0xFD | scan string from keyboard and put it into memory at address R[A] | 1 |
| 0xFE | print string from address R[A] in the memory. It's terminated by 0-byte | 1 |
| 0xFF | terminate program | 1 |