.vscode | ||
emu | ||
lib | ||
.gitignore | ||
.gitmodules | ||
build.sh | ||
LICENSE | ||
README.md |
r16
number | instruction | argument 1 | argument 2 | fullname | explanation |
---|---|---|---|---|---|
0x00 | HLT | Halt | halts the CPU | ||
0x01 | ADD | value 1 | value 2 | Add | ACU = value 1 + value 2 |
0x02 | SUB | value 1 | value 2 | Subtract | ACU = value 1 - value 2 |
0x03 | MUL | value 1 | value 2 | Multiply | ACU = value 1 * value 2 |
0x04 | DIV | value 1 | value 2 | Divide | ACU = value 1 / value 2 |
0x05 | LBS | value | amount | Left Bit-Shift | ACU = value << amount |
0x06 | RBS | value | amount | Right Bit-Shift | ACU = value << amount |
0x07 | BAN | value 1 | value 2 | Bitwise And | ACU = value 1 & value 2 |
0x08 | BOR | value 1 | value 2 | Bitwise Or | ACU = value 1 \ |
0x09 | BXO | value 1 | value 2 | Bitwise Exclusive Or | ACU = value 1 ^ value 2 |
0x0A | BNO | value | Bitwise Not | ACU = ~ value | |
0x0B | PUS | value | Push | pushes value onto the stack | |
0x0C | POP | Pop | pops a value from the stack and stores it in ACU | ||
0x0D | JMP | address | Jump | jumps to address | |
0x0E | JEQ | address | value | Jump If Equal | jumps to address, if value is equal to ACU |
0x0F | JNZ | address | value | Jump If Not Zero | jumps to address, if value is not zero |
0x10 | CAL | address | Call | pushes PC + 1 to the stack, then jumps to address | |
0x11 | RET | Return | pops value from stack and jumps to it | ||
0x12 | REG | int type | address | Register Interrupt | registers int type to address |
0x13 | INT | int type | Interrupt | interrupts as int type | |
0x14 | INP | Input | inputs a character into ACU | ||
0x15 | OUT | value | Output | outputs value | |
0x16 | DIN | location | Disk In | reads value from disk at location to ACU | |
0x17 | DOT | location | value | Disk Out | writes value to disk at location |
0x18 | MOV | value 1 | value 2 | Move | move value 2 to value 1 |
Number | Register | Usage |
---|---|---|
0x0 | R0 | general usage |
0x1 | R1 | general usage |
0x2 | R2 | general usage |
0x3 | R3 | general usage |
0x4 | ACU | Accumulator |
0x5 | PC | Program Counter |
0x6 | SP | Stack Pointer |
Area of RAM | reserved | Writable | usage |
---|---|---|---|
00000 - 00064 | YES | NO | system header |
00064 - 65023 | NO | YES | executable |
65023 - 65279 | YES | YES | interupt pointers |
65279 - 65535 | YES | YES | stack |
BYTE 1 | BYTE 2 | BYTE 2 | |||
---|---|---|---|---|---|
OPCODE | UNUSED | ARG 1 INFO | ARG 2 INFO | ARGUMENT 1 | ARGUMENT 2 |
8 bits | 4 bits | 2 bits | 2 bits | 16 bits | 16 bits |
State | Argument Interpretation |
---|---|
0x0 | Value in argument |
0x1 | Value in register |
0x2 | Value in RAM |
0x3 | Value in RAM, at address stored in register |