summary refs log tree commit diff
path: root/pc-thing/shit-instruction-set-2
diff options
context:
space:
mode:
Diffstat (limited to 'pc-thing/shit-instruction-set-2')
-rw-r--r--pc-thing/shit-instruction-set-262
1 files changed, 62 insertions, 0 deletions
diff --git a/pc-thing/shit-instruction-set-2 b/pc-thing/shit-instruction-set-2
new file mode 100644
index 0000000..08864fb
--- /dev/null
+++ b/pc-thing/shit-instruction-set-2
@@ -0,0 +1,62 @@
+# the SHIT PC(R) INSTRUCTION SET(TM) 2 #
+
+> format:
+>
+> OPCODE[ARGS] -> (OUT/VOID)
+
+## Math ##
+```
+ADD[REG1, REG2, REG3] -> (REG1) Add
+SUB[REG1, REG2, REG3] -> (REG1) Subtract
+MUL[REG1, REG2, REG3] -> (REG1) Multiply
+DIV[REG1, REG2, REG3] -> (REG1) Divide
+MOD[REG1, REG2, REG3] -> (REG1) Modulo
+SHL[REG1, REG2]       -> (REG1) Shift left
+SHR[REG1, REG2]       -> (REG1) Shift right
+CMP[REG1, REG2]       -> (VOID) Compare
+CMR[REG1, REG2, REG3] -> (REG1) Compare Register
+AND[REG1, REG2, REG3] -> (REG1) Logical AND
+OR[REG1, REG2, REG3]  -> (REG1) Logical OR
+XOR[REG1, REG2, REG3] -> (REG1) Logical XOR
+NOT[REG1, REG2]       -> (REG1) Logical NOT
+```
+## Registers ##
+```
+MOV[REG, VAL]          -> (REG) Move
+SWP[REG1, REG2] -> (REG1, REG2) Swap register
+```
+## Memory ##
+```
+LD[REG1, REG2]   -> (REG1) Load from address
+STR[REG1, REG2] -> ($REG1) Set address
+```
+## Jumping & stuff ##
+```
+JMP[REG] -> (VOID) Jump to address
+JNZ[REG] -> (VOID) Jump if flag is non-zero
+JZ[REG]  -> (VOID) Jump if flag is zero
+JMR[REG] -> (VOID) Jump with return
+RET[]    -> (VOID) Return
+```
+## Stack ##
+> [!NOTE]
+> The stack limit is 256, and it is only enabled once $7000h is set to a stack address
+>
+> $7001h has the pointer
+> 
+> Keep in mind that the stack pointer goes **down** from that address
+```
+PUSH[REG] -> (VOID) Push to stack
+POP[REG]  -> (REG)  Pop from stack
+```
+## System ##
+```
+HALT[] -> (VOID) Halt the processor
+```
+
+#### extra ####
+
+this might get replaced with a thing yin the ram in the future possibly
+```
+SYS[TYPE, ...] -> (VOID) Systemcall
+```
\ No newline at end of file