KEYS: L: Create a line of code. M: Switch to debug mode. R: Replace an line of code. I: Insert a line of code D: Delete a line of code. INSTRUCTION SET REFERENCE: Data Movement: MOV R, R/V : Move data between registers or from value (register or immediate value) STR R, M : Store register value into memory address LDR R, M : Load from memory address into register PUSH R/V : Push register or value onto the stack POP R/V : Pop from stack into register or discard value ASK R TEXT: Ask for input. SAY TEXT: Output text. Arithmetic Operations: ADD R, R/V : Add register and register/value, store in first register SUB R, R/V : Subtract register/value from register MUL R, R/V : Multiply register by register/value DIV R, R/V : Divide register by register/value (integer division) CMP R, R/V : Compare two values (sets flags, no register change) Control Flow: JMP LABEL : Unconditional jump to label JE : Jump if equal (Zero Flag set) JNE : Jump if not equal JL : Jump if less (Sign Flag set) JG : Jump if greater JLE : Jump if less or equal JGE : Jump if greater or equal CALL LABEL : Call function at label RET : Return from function WAIT R/V: Waits a certain number of milliseconds. HALT : Stop program execution Graphics / Drawing: POS R/V, R/V : Set position to X, Y values PNU : Pen Up (stop drawing) PND : Pen Down (start drawing) COL: Set pen color. SAT R/V: Set pen saturation. BRI R/V: Set pen brightness. CLR R/V: Clear the screen Labels :LABEL : Define a label or function start NOTES: R = Register R/V = Register or immediate value M = Memory address or variable name Flags (Zero Flag, Sign Flag) are used internally to control conditional jump. Made by me, myself, and I. #Machine, #Code, #Math, #Cool