data stack: used for arguments in functions and arithmetic operations call stack: remembers in what class execution is in right now example: root /\ main /\ print (func) database stack: contains maps which contain all local variables in the current class variables map: stores all global variables code stack: stores the code instruction set: 0x00 add add the 2 numbers on the data stack and pushes the result onto the data stack 0x01 sub subtract the 2 numbers on the data stack and pushes the result onto the data stack 0x02 mul multiply the 2 numbers located on the data stack and pushes the result onto the data stack 0x03 div divide the 2 numbers located on the data stack and pushes the result onto the data stack 0x04 loadl load local variable into data stack 0x05 savel save top of data stack into local variable 0x06 goup goes out of the current attribute 0x07 godown goes into an attribute of the current selected class 0x08 goroot goes to the root of the program 0x09 call call a function (also works for module classes), the function must be first on the data stack, the operand says how many arguments are given to function which in turn decides how many things are poped off the stack 0x0A load loads the specified attribute from the current class into the data stack 0x0B save saves the top of the data stack into the specified attribute of the current class 0x0C loadg loads the specified global variable into the data stack 0x0D saveg saves the top of the data stack into the specified global variable 0x0E loado loads operand on top of the data stack 0x0F copy copy top of the data stack onto specified attribute of current 0x10 ret exits out of the current function 0x11 equal compares the 2 values on the data stack for equality and outputs the result onto the data stack 0x12 less compares the 2 numbers on the data stack if the top one is bigger than the first one and outputs the result onto the data stack 0x13 bigr compares the 2 numbers on the data stack if the top one is lesser than the first one and outputs the result onto the data stack 0x14 bism compares the 2 numbers on the data stack for either equality or if the top one is lesser than the first one and outputs the result onto the data stack 0x15 lesm compares the 2 numbers on the data stack for either equality or if the top one is bigger than the first one and outputs the result onto the data stack 0x16 not inverts value on data stack and outputs on data stack (only integer accepted) 0x17 and and's 2 values on the data stack and outputs on data stack (only integer accepted) 0x18 or or's 2 values on the data stack and outputs on data stack (only integer accepted) 0x19 xor xor's 2 values on the data stack and outputs on data stack (only integer accepted) 0x20 nor nor's 2 values on the data stack and outputs on data stack (only integer accepted) 0x21 callif if number on datastack is 1, executes given bytecode (only integer on stack accepted) 0x22 pop pop top of data stack 0x23 while while loop, executes given bytecode while top of datastack is 1 0x24 for for loop, executes given bytecode trough list or dict on datastack, current element as ELEMENT. list gives element, dict gives key. 0x25 sizeof get size of variable ontop of datastack 0x26 getlvars get a dict of local vars and push it onto datastack, changes transfer 0x27 getgvars get a dict of global vars and push it onto datastack, changes transfer 0x28 getattrs get a dict of attributes of current class and push it onto datastack, changes transfer 0x29 godata goes into the class ontop of the datastack. operand specifying: 0x00 = integer, 4 units 0x01 = float, 8 units split in 2, first 4 units are before comma, and rest are after comma 0x02 = string, units, with a terminating character at the end 0x03 = empty class 0x04 = list, ends with 0xFF byte 0x05 = dictionary, ends with 0xFF byte 0x06 = bytecode, , end indicator state 0 = end, 1 = continue 0x07 = take top of datastack as operand 0xFF = special, shows end of list/dictionary