{ "SETPIN": { "opcode": "0x01", "firmware": "1.0.0", "category": "Core IO", "description": "Set a digital pin HIGH or LOW.", "usage": "SETPIN ", "params": [ { "name": "Pin Number", "description": "Digital I/O pin index" }, { "name": "Level", "description": "0 = LOW, 1 = HIGH" } ], "examples": [ "SETPIN 0x03 0x01", "SETPIN 0x03 0x00" ], "notes": "Used for digital output control." }, "SETIN": { "opcode": "0x02", "firmware": "1.0.0", "category": "Core IO", "description": "Configure a pin as input.", "usage": "SETIN ", "params": [ { "name": "Pin Number", "description": "Digital I/O pin index" } ] }, "SETOUT": { "opcode": "0x09", "firmware": "1.0.0", "category": "Core IO", "description": "Configure a pin as output.", "usage": "SETOUT ", "params": [ { "name": "Pin Number", "description": "Digital I/O pin index" } ] }, "RDPIN": { "opcode": "0x03", "firmware": "1.0.0", "category": "Core IO", "description": "Read digital pin state into a register.", "usage": "RDPIN ", "params": [ { "name": "Pin Number", "description": "Digital I/O pin index" }, { "name": "Out Register", "description": "Destination register" } ], "examples": [ "RDPIN 0x05 R1" ] }, "MULTIO": { "opcode": "0x05", "firmware": "1.0.0", "category": "Core IO", "description": "Perform multi-pin output operation.", "usage": "MULTIO ", "params": [ { "name": "Pin Number", "description": "First pin" }, { "name": "Pin Number", "description": "Second pin" }, { "name": "Pin Number", "description": "Third pin" } ] }, "MULTII": { "opcode": "0x06", "firmware": "1.0.0", "category": "Core IO", "description": "Perform multi-pin input operation.", "usage": "MULTII ", "params": [ { "name": "Pin Number", "description": "First pin" }, { "name": "Pin Number", "description": "Second pin" }, { "name": "Pin Number", "description": "Third pin" } ] }, "MULTIHI": { "opcode": "0x07", "firmware": "1.0.0", "category": "Core IO", "description": "Set multiple pins HIGH.", "usage": "MULTIHI ", "params": [ { "name": "Pin Number", "description": "First pin" }, { "name": "Pin Number", "description": "Second pin" }, { "name": "Pin Number", "description": "Third pin" } ] }, "MULTILO": { "opcode": "0x08", "firmware": "1.0.0", "category": "Core IO", "description": "Set multiple pins LOW.", "usage": "MULTILO ", "params": [ { "name": "Pin Number", "description": "First pin" }, { "name": "Pin Number", "description": "Second pin" }, { "name": "Pin Number", "description": "Third pin" } ] }, "ASAFE": { "opcode": "0x0B", "firmware": "1.0.0", "category": "Core IO", "description": "Apply safe-state configuration.", "usage": "ASAFE", "params": [] }, "GOSTRT": { "opcode": "0x0D", "firmware": "1.0.0", "category": "Core IO", "description": "Go/start execution or sequence.", "usage": "GOSTRT", "params": [] }, "ALLDIR": { "opcode": "0x0E", "firmware": "1.0.0", "category": "Core IO", "description": "Set direction for side A and side B.", "usage": "ALLDIR ", "params": [ { "name": "Side A", "description": "Direction value for side A" }, { "name": "Side B", "description": "Direction value for side B" } ] }, "ALLEVEL": { "opcode": "0x0F", "firmware": "1.0.0", "category": "Core IO", "description": "Set output levels for side A and side B.", "usage": "ALLEVEL ", "params": [ { "name": "Side A", "description": "Level value for side A" }, { "name": "Side B", "description": "Level value for side B" } ] }, "SETADDR": { "opcode": "0x21", "firmware": "1.0.0", "category": "Addressing", "description": "Set an address value with bit-width and direction.", "usage": "SETADDR
", "params": [ { "name": "Number Bits", "description": "Bit-width of address" }, { "name": "Address", "description": "Address value" }, { "name": "In/Out", "description": "Direction/select mode" } ] }, "GETADDR": { "opcode": "0x27", "firmware": "1.0.0", "category": "Addressing", "description": "Read address lines into an output register.", "usage": "GETADDR ", "params": [ { "name": "Number Bits", "description": "Bit-width of address" }, { "name": "Out Register", "description": "Destination register" } ] }, "ADDRBIT": { "opcode": "0x20", "firmware": "1.0.0", "category": "Addressing", "description": "Map/set a specific address bit to a pin.", "usage": "ADDRBIT
", "params": [ { "name": "Address Bit", "description": "Address bit index" }, { "name": "Pin Number", "description": "Digital I/O pin index" } ] }, "DEFADDR": { "opcode": "0x22", "firmware": "1.0.0", "category": "Addressing", "description": "Define base and low/high bit ranges for addressing.", "usage": "DEFADDR ", "params": [ { "name": "Base", "description": "Base address" }, { "name": "Lo-Bits (LSB)", "description": "Low bits" }, { "name": "Hi-Bits (MSB)", "description": "High bits" } ] }, "ADDRCLR": { "opcode": "0x02", "firmware": "1.0.0", "category": "Addressing", "description": "Clear an address bit mapping.", "usage": "ADDRCLR
", "params": [ { "name": "Address Bit", "description": "Address bit index" }, { "name": "Pin Number", "description": "Digital I/O pin index" } ] }, "LOOP": { "opcode": "0x10", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Begin a loop for a fixed number of iterations.", "usage": "LOOP ", "params": [ { "name": "Number of Loops", "description": "Loop count" } ] }, "ENDLOOP": { "opcode": "0x11", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "End a LOOP block.", "usage": "ENDLOOP", "params": [] }, "BRKLOOP": { "opcode": "0x13", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Break out of current loop.", "usage": "BRKLOOP", "params": [] }, "DELUS": { "opcode": "0x16", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Delay in microseconds.", "usage": "DELUS ", "params": [ { "name": "Microseconds", "description": "Delay duration" } ] }, "DELMS": { "opcode": "0x17", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Delay in milliseconds.", "usage": "DELMS ", "params": [ { "name": "Milliseconds", "description": "Delay duration" } ] }, "WHILE": { "opcode": "0x18", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Begin a WHILE conditional loop.", "usage": "WHILE ", "params": [ { "name": "Operator", "description": "Comparison operator" }, { "name": "Left Value", "description": "Left operand" }, { "name": "Right Value", "description": "Right operand" } ] }, "ENDWHL": { "opcode": "0x19", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "End a WHILE block.", "usage": "ENDWHL", "params": [] }, "JMP": { "opcode": "0x1A", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Jump to a line or opcode location.", "usage": "JMP ", "params": [ { "name": "Line/Opcode Number", "description": "Jump target" } ] }, "DOUNTIL": { "opcode": "0x1B", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Begin a DO...UNTIL block.", "usage": "DOUNTIL", "params": [] }, "ENDUNTIL": { "opcode": "0x1C", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "End a DO...UNTIL block with condition.", "usage": "ENDUNTIL ", "params": [ { "name": "Operator", "description": "Comparison operator" }, { "name": "Left Value", "description": "Left operand" }, { "name": "Right Value", "description": "Right operand" } ] }, "CLKST": { "opcode": "0x1D", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Start clock output on a pin at specified KHz.", "usage": "CLKST ", "params": [ { "name": "Pin Number", "description": "Digital I/O pin index" }, { "name": "KHz", "description": "Clock frequency" } ] }, "CLKSTP": { "opcode": "0x1E", "firmware": "1.0.0", "category": "Flow Control / Timing", "description": "Stop the generated clock output.", "usage": "CLKSTP", "params": [] }, "IF": { "opcode": "0x50", "firmware": "1.0.0", "category": "Conditionals", "description": "Begin IF conditional block.", "usage": "IF ", "params": [ { "name": "Operator", "description": "Comparison operator" }, { "name": "Left Value", "description": "Left operand" }, { "name": "Right Value", "description": "Right operand" } ] }, "ENDIF": { "opcode": "0x51", "firmware": "1.0.0", "category": "Conditionals", "description": "End IF conditional block.", "usage": "ENDIF ", "params": [ { "name": "Operator", "description": "Comparison operator" }, { "name": "Left Value", "description": "Left operand" }, { "name": "Right Value", "description": "Right operand" } ] }, "SHOSTR": { "opcode": "0x60", "firmware": "1.0.0", "category": "UI / Screen", "description": "Show a string at screen coordinates.", "usage": "SHOSTR ", "params": [ { "name": "String Index", "description": "String table index" }, { "name": "X Position", "description": "Horizontal position" }, { "name": "Y Position", "description": "Vertical position" } ] }, "FILSCR": { "opcode": "0x61", "firmware": "1.0.0", "category": "UI / Screen", "description": "Fill screen with an RGB565 color.", "usage": "FILSCR ", "params": [ { "name": "RGB565 Colour", "description": "Fill color" } ] }, "TXTCOL": { "opcode": "0x63", "firmware": "1.0.0", "category": "UI / Screen", "description": "Set text foreground/background colors.", "usage": "TXTCOL ", "params": [ { "name": "RGB565 Colour", "description": "Text color" }, { "name": "RGB565 Colour", "description": "Background color" } ] }, "PROG": { "opcode": "0x64", "firmware": "1.0.0", "category": "UI / Screen", "description": "Render/update progress indicator.", "usage": "PROG ", "params": [ { "name": "Percent", "description": "Progress percentage" }, { "name": "Fill Colour", "description": "Bar fill color" }, { "name": "Background Colour", "description": "Bar background color" } ] }, "UDSCRN": { "opcode": "0x6F", "firmware": "1.0.0", "category": "UI / Screen", "description": "Update/refresh screen.", "usage": "UDSCRN", "params": [] }, "BTNPR": { "opcode": "0x6A", "firmware": "1.0.0", "category": "LEDs / Buttons", "description": "Jump when a button is pressed.", "usage": "BTNPR