diff --git a/README.md b/README.md index 985ef57..a1b7ea4 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ asmTron is a compiler / emulator for a 12-bit cpu (4-bit opcodes, 8-bit adresses), that I started building in Minecraft. I never finished the Minecraft-Build, but this emulator is fully functional and even has integrated debugging capabilities. -This programm is optimized for a very specific terminal-size and a global variable has to be changed to switch between Windows / Linux compatability. +This programm is optimized for a very specific terminal-size and a global variable has to be changed to switch between Windows / Linux compatability. ### asm.py The emulator / debugger... @@ -13,7 +13,55 @@ This compiler compiles from 'tronScript' to a binary save-state of the emulator. I forget, what the difference between normal and beta is... ### mima.py -A variation of asm.py to emulate a MiMa (minimal machine). +A variation of asm.py to emulate a MiMa (minimal machine). No, the compiler can not compile for this architecture. ### asmCust.py Does not work (I think...) + + +## TronScript +tronScript is a stupid assembly-like low level language for my asmTron emulator + + +Available Commands: + +newVar [var] - Initializes new var; not needed most of the time: + Compiler automatically initializes new vars when used +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 diff --git a/asm.pyc b/asm.pyc deleted file mode 100644 index 2e4c5a6..0000000 Binary files a/asm.pyc and /dev/null differ diff --git a/multiply_test.txt b/tests/multiply_test.txt similarity index 100% rename from multiply_test.txt rename to tests/multiply_test.txt diff --git a/pow_test.txt b/tests/pow_test.txt similarity index 100% rename from pow_test.txt rename to tests/pow_test.txt diff --git a/test.asmTron b/tronScript/test.asmTron similarity index 100% rename from test.asmTron rename to tronScript/test.asmTron