r16/README.md
2024-04-19 09:05:10 +00:00

4.0 KiB

r16

number instruction argument 1 argument 2 explanation
0x00 HLT halts the CPU
0x01 ADD value 1 value 2 ACU = value 1 + value 2
0x02 SUB value 1 value 2 ACU = value 1 - value 2
0x03 MUL value 1 value 2 ACU = value 1 * value 2
0x04 DIV value 1 value 2 ACU = value 1 / value 2
0x05 LBS value amount ACU = value << amount
0x06 RBS value amount ACU = value << amount
0x07 BAN value 1 value 2 ACU = value 1 & value 2
0x08 BOR value 1 value 2 ACU = value 1 \
0x09 BXO value 1 value 2 ACU = value 1 ^ value 2
0x0A BNO value ACU = ~ value
0x0B PUS value pushes value onto the stack
0x0C POP pops a value from the stack and stores it in ACU
0x0D JMP address jumps to address
0x0E JEQ address value jumps to address, if value is equal to ACU
0x0F JNZ address value jumps to address, if value is not zero
0x10 CAL address pushes PC + 1 to the stack, then jumps to address
0x11 RET pops value from stack and jumps to it
0x12 REG int type address registers int type to address
0x13 INT int type interrupts as int type
0x14 INP inputs a character into ACU
0x15 OUT value outputs value
0x16 DIN location reads value from disk at location to ACU
0x17 DOT location value writes value to disk at location
0x18 MOV value 1 value 2 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