DUO LIGHT BYTE CODE Note that all floating point numbers are 4 bytes long. Also note that with the exception of WRT, all integer arguments must have a length of 1, 2, or 4. Instruction format: (8 bit opcode) (8 bit argument type) (argument) (8 bit argument type) (argument)... Argument type is further divided into these sections: (4 bit type identifier) (1 bit should load constant as argument) (3 bit size) If argument size is 0, add an extra argument to represent the size. If should load constant as argument is 1, add an extra argument to represent the constant. Function information format: (1 byte address size) (code address) (scope size) (1 byte number of arguments)  Scope format: (1 byte address size) (previous program counter) (previous local scope address) (scope size) (argument pointers) (variables) Program format: (1 byte address size) (global scope size) (bytecode) Argument type identifiers: 0000: Constant number 0001: Absolute address 0010: Offset from global scope 0011: Offset from local scope 0100: Program counter 0101: Global scope address 0110: Local scope address Operations: 0: WRT (data len) (data) (dest) = Write 1: NOT (data len) (data) (dest) = Bitwise NOT 2: WRZ (cond len) (cond) (data len) (src) (dest) = Write if zero 3: WNZ (cond len) (cond) (data len) (src) (dest) = Write if not zero 4: OR (data len) (data) (data) (dest) = Bitwise OR 5: AND (data len) (data) (data) (dest) = Bitwise AND 6: XOR (data len) (data) (data) (dest) = Bitwise XOR 7: BNT (data len) (data) (dest) = Boolean NOT 8: GRE (num len) (num) (num) (dest) = Greater 9: GRES (num len) (num) (num) (dest) = Greater signed 10: EQU (data len) (data) (data) (dest) = Equal 11: ADD (num len) (num) (num) (dest) = Add 12: SUB (num len) (num) (num) (dest) = Subtract 13: BSL (data len) (data) (data) (dest) = Bitshift left 14: BSR (data len) (data) (data) (dest) = Bitshift right 15: INC (num len) (dest) = Increment 16: DEC (num len) (dest) = Decrement 17: SLO (data len) (dest) = Bitshift left once 18: SRO (data len) (dest) = Bitshift right once 19: FNC (info) (arg) (arg)... = Call function; arguments are passed by reference 20: RET = Return from function call 21: FIL (data len) (data) (amount len) (amount) (dest) = Fill 22: FND (data len) (data) (size len) (size) (list) (dest) = Find 23. CII (num len 1) (num) (num len 2) (dest) = Convert integer to integer 24. CIIS (num len 1) (num) (num len 2) (dest) = Convert integer to integer signed 25: MUL (num len) (num) (num) (dest) = Multiply 26: MULS (num len) (num) (num) (dest) = Multiply signed 27: DIV (num len) (num) (num) (dest) = Divide 28: DIVS (num len) (num) (num) (dest) = Divide signed 29: MOD (num len) (num) (num) (dest) = Modulus 30: ADDF (num) (num) (dest) = Add float 31: SUBF (num) (num) (dest) = Subtract float 32: MULF (num) (num) (dest) = Multiply float 33: DIVF (num) (num) (dest) = Divide float 34: CIF (num len 1) (num) (dest) = Convert integer to float 35: CIFS (num len 1) (num) (dest) = Convert integer to float signed 36: CFI (num) (num len 2) (dest) = Convert float to integer 37: CFIS (num) (num len 2) (dest) = Convert float to integer signed 38: CIT (num len) (num) (dest) = Convert integer to text 39: CITS (num len) (num) (dest) = Convert signed integer to text 40: CFT (num) (dest) = Convert float to text 41: CTI (text) (num len) (dest) = Convert text to integer 42: CTIS (text) (num len) (dest) = Convert text to integer signed 43: CTF (text) (dest) = Convert text to float 44: WRTT (text) (dest) = Write text 45: EQUT (text) (text) (dest) = Equal text 46: FNDT (pattern) (text) (idx len) (dest) = Find text 47: LENT (text) (len len) (dest) = Get text length 48: SUBT (text) (idx len) (idx) (idx) (dest) = Get text substring 49: CONT (text) (dest) = Concatenate text 50: SDL (text) (len len) (dest) = Get space delimited text length 51: SDS (text) (idx len) (idx) (dest) = Get space delimited text element 52: RAN (num len) (max) (dest) = Generate random number; exclusive maximum 53: SIN (num) (dest) = Sine of float 54: TWR (num len) (num) = Write time 55: TRD (num len) (dest) = Read time 56: TSL (num len) (num) = Sleep 57: DCL = Clear display 58: DWR (pos len) (posX) (posY) (text) = Write text to display 59: DRD (pos len) (posX) (posY) (size len) (size) (dest) = Read text from display 60: CKT (key) (shift) (dest) = Convert key to text 61: CTK (text) (dest) = Convert text to key 62: KIP (key) (dest) = Key is pressed 63: PKY (dest) = Prompt key 64: PTX (pos len) (posY) (dest) = Prompt text 65: PSL (num len) (num) (text) (dest) = Prompt selection; text must contain null delimited elements 66: PFL (num len) (dest) = Prompt file 67: XSM (mode) (pin) = Set pin mode 68: XDR (pin) (dest) = Digital read pin 69: XDW (src) (pin) = Digital write pin 70: XAR (pin) (dest) = Digital read pin 71: RNF (num len) (dest) = Get number of files 72: RGAI (idx len) (idx) (dest) = Get file entry address by index 73: RGAN (text) (dest) = Get file entry address by name 74: RGAA (addr) (dest) = Get file entry address after file entry address 75: RCR (text) (size len) (size) (dest) = Create file 76: RRD (addr) (dest) = Read file 77: RWR (data) (addr) = Write file 78: RGN (addr) (dest) = Get file name 79: RGS (addr) (size len) (dest) = Get file size 80: RDL (addr) = Delete file 81: RRN (addr) = Run fule 82: QUIT = Quit 83: CTO (text) (dest) = Convert text to opcode 84: CIH (num) (dest) = Convert integer byte to hexadecimal text 85: CHI (text) (dest) = Convert hexadecimal text to integer byte 86: ALLO (size len) (size) (dest) = Allocate memory in heap; stores a pointer 87: FREE (addr) = Deallocate memory in heap 88: DSC (direction) (text) = Scroll video buffer and write row or column of text; 0 = left, 1 = right, 2 = up, 3 = down 89: DDX (num len) (dest) = Get display character width 90: DDY (num len) (dest) = Get display character height 91: GMLF (dim len) (dimX) (dimY) (data) (dest) = Step one generation in Conway's game of life 92: MNDL (real) (imag) (offset) (iter len) (iter) (dest) = Determine whether four points are in Mandelbrot set 93: POW (num) (num) (dest) = Raise number to power 94: LOG (num) (num) (dest) = Take log of number with base