This is my latest and almost my largest project so far. A Basic compiler and VM for the Gamebuino platform.
You can find more information on GitHub (
VM,
Compiler), on
my blog and
my project page.
What is BuinoBasic?BuinoBasic consists of two main parts, which are the BuinoBasic compiler (or short bcc) and the BuinoBasic VM (bvm). The compiler takes your Basic source code and translates it into a memory structure, that your computer can understand. These structures are then compiled into binary tokens and then saved to a file. You then put the file onto your Gamebuino's SD card. Now the VM comes into play. It's job is to execute the binary tokens and perform the operations assigned to them. So you flash the VM's compiled hex file onto the Gamebuino like any other game using the loader. Now you can select a file you want to run. After selecting your file, the VM will validate and start executing it.
What features does BuinoBasic bring?BuinoBasic allows you to use a subset of (Q/GL)Basic for the syntax of your game's source code. Basic is one of the easiest and in this dialekt a very powerful language, supporting functions, 8-64 bit integers, strings and even arrays. It has flow control blocks, I/O, sound, graphics, file management functions. But that is not the end. Using BuiniBasic, you don't have to reflash your Gamebuino to load a new game, making it faster to play or to debug a new game. Just drop it onto the SD and start it in the VM. This will also save you flash-cycles making your Gamebuino's main MPU's memory last longer. There will even be a small compiler on the Gamebuino itself, which allows you to experiment with a limited Basic subset on the fly! But as everything, BuinoBasic also has its drawbacks. It is a some slower than plain C++ and a lot slower than optimized assembly. Also does BuinoBasic not allow you to include any kind of unmanaged code, so any hardware feature must be implemented as a function or it won't work, but you can still request a new feature to be added.
How can I help with Development?Help is always welcome! Below you will find a list of tasks with which you can contribute:
- If you are good at C, I'd be happy to welcome you in our VM team. Together we can make it happen a lot faster!
- If you're good with C# you can help with the compiler and make it more awesome than ever expected.
- If you are good with Basic, you could set some Demo programs up or help with the syntax.
- If you are good at HTML and CSS, we'd love to see what new design, you make for our page.
- If you feel like writing, and know a little Basic you could help writing the Basic documentation and provide some graphics.
- If you are not able to help with the above, you can still beta test on an actual device or emulator.
And don't forget to spread Gamebuino and BuinoBasic to the world!