Visual VM100 is a port of the VM100 language to a Visual Studio environment with a larger interpreter screen, a text based coding language, and save/load features for programs. I also brought back the negate function or "neg" so older version programs will work too. Instruction Set: LDA Sets Register A to the operand. a = op FLP Swaps the content of registers A and B. a=b; b=a PEK Sets Register A to the content of the RAM address specified by the operand. a = ram(op) POK (address) Sets the content of the RAM address specified by the operand to Register A. ram(op) = a NEG Negates the contents of register A. a = -a ADD Adds Registers A and B and stores the result in A. a = a+b MUL Multiplies Registers A and B and stores the result in A. a = a*b DIV Divides Registers A and B and stores the result in A. a = a/b VPK Sets the content in the VRAM address specified by Register A to Register B. vram(a) = b VCL Clears the contents of the VRAM. vram = 0 VRN Renders the VRAM contents to the screen. screen = vram JPE Jumps to the ROM address specified by the operand if Registers A and B are equal. jump(op) if a = b SLP Halts functions for a number of seconds specified by the operand. halt(op) The arrow key values are stored in the first four slots of RAM if you're looking to make something interactive. Example Program (moving pixel by @n-clue): lda 5 pok 51 lda 5 pok 52 lda 1 pok 53 __66 53 lda 0 pok 54 lda 0 pok 55 pek 3 flp lda 0 jpe 38 pek 53 flp pek 54 add pok 54 pek 4 flp lda 0 jpe 56 pek 53 flp pek 54 flp neg flp add pok 54 pek 1 flp lda 0 jpe 71 pek 53 flp pek 55 add pok 55 pek 2 flp lda 0 jpe 89 pek 53 flp pek 55 flp neg flp add pok 55 pek 54 flp pek 51 add pok 51 pek 55 flp pek 52 add pok 52 pek 52 flp lda 10 mul flp pek 51 add flp pek 53 flp vpk vrn vcl lda 1 flp pek 53 jpe 13