tronScript is a stupid and pretty assembly-like low level language for my asmTron emulator Available Commands: newVar [name] - Initializes new var; not needed most of the time: Compiler automatically initializes new vars when used, so this is no longer necessary... newArray [name] [len] - Initializes a new array with length len. jumpMark [jumpMark name] - Sets an JumpMark to jump to using the "jump" command jump [jumpMark name] - Jumps to an JumpMark getVarAddress [var A] [var B] - Saves [var A]'s memory-address into [var B] getArrayAddress [array] [index] [var] - Saves [array][[index]]'s memory-adress into [var] exec [func name] - Executes function with name [func name] setVar [var] [value] - Sets var [var] to [value] (decimal) setVar [var] b[value] - Sets var [var] to [value] (binary) setArrayIndex [array] [index] [value] - Sets [array][[index]] to [value] (decimal) setArrayIndex [array] [index] b[value] - Sets [array][[index]] to [value] (binary) getArrayIndex [array] [index] [var] - Stores the content of [array][[index]] into var [var] copyVar [var A] [var B] - Copies to value of [var A] to [var B] (B=A) write [var] - Writes value of [var] to console read [var] - Reads input from console into [var] add [var A] [var B] [var OUT] - Adds [var A] + [var B] = [var OUT] subtract [var A] [var B] [var OUT] - Subtracts [var A] - [var B] = [var OUT] if [var A] [??] [var B] [cmd] [pars] - ?? = [==,!=,>,<,>=,<=] if clause is true, executes [cmd] with [pars] for [goal] [counter] [step] [cmd] [pars]- Sets [counter] = 0; Executes [cmd] with [pars] and adds [step] to [counter], until [goal]==[counter] :[asm] v#[var] - Executes [asm]-assembler command with par [var] :[asm] d#[par] - Executes [asm]-assembler command with par [par] (decimal) :[asm] b#[par] - Executes [asm]-assembler command with par [par] (binary) :[asm] - - Executes [asm]-assembler command with par b#00000000 / d#0 :[asm] ~ - Executes [asm]-assembler command with par b#11111111 / d#255 shellcode [code] - Executes binary code [code] nop - Nothing; sleep one cycle halt - Stops execution of program; automatically added to the end of your program if not present function [funcName] { - Defines function [funcName] with code [funcCode] [funcCode line 1] ! Every function can only have one instance at a time: [funcCode line 2] ! A function shall not call itself and a sub function shall [funcCode line 3] ! not call any of its root functions !!! . ! If you need this functionality, implement it in assembly... . . Why is that so? This is a stupid compiler, which does not use [funcCode line n] a stack to return from functions, but a function-specific variable } to store the jump-back-address... :P Fun Fact: Pascal used to do a similar thing, which is why you couldn't do recursion in early versions of Pascal.