BIO
BIO (Binary IO) is an esoteric programming language designed by Emil Svensson (User:fr34k) in 2008. BIO was inspired by ABCDXYZ by ais523
Overview
BIO works using 3 memory blocks (known as x, y and z). Each of the blocks are at start set to 0. BIO understands two letters (I and O) and two numbers (1 and 0), which combined, creates various commands. Due to the limited amount of memory blocks, one must use a function for resetting the blocks in order to continue with his or her calculations etc.
Commands
The language is not case-sensitive, meaning that a command can look like this: 1O or this; 1o
0 | 1 | |
---|---|---|
O | Increment the specified block | Decrement the specified block |
I | While the block is not 0 | Output the block |
Note that the command 0i, is built up like this: 0i{ do something }; Every command is ended by a ';'.
Examples
Hello, world!
0ox; //Increment the block x by 1 9 times 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ //While block x is not 0 0oy; //Increment the block y by 1 8 times 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; //Decrement block x by 1 }; 1iy; //Output block y (H) 0iy{ //Reset block y to 0 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 0oy; 1iy; //Output block y (e) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 1iy; //Output block y (l) 1iy; //Output block y again 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 0oy; 1iy; //Output block y (o) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 1iy; //Output block y (space) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 1oy; 1iy; //Output block y (W) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 0oy; 1iy; //Output block y (o) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 0oy; 0oy; 1iy; //Output block y (r) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 1iy; //Output block y (l) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 1iy; //Output block y (d) 0iy{ 1oy; }; 0ox; 0ox; 0ox; 0ox; 0ix{ 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 0oy; 1ox; }; 0oy; 1iy; //Output block y (!) 0iy{ 1oy; };
This program outputs
Hello World!
(This program was a pain to code, so if you find any errors feel free to correct them, since I don't have any debugger)
Mathematics
Addition
0ox; 0oy; 0ix{ 1ox; 0oy; }; 1iy;
Subtraction
0ox; 0ox; 0oy; 0iy{ 0ox; 1oy; }; 1ix;
Multiplication
0ox; 0ox; 0ox; 0ox; 0ox; 0ix{ 1ox; 0oy; 0oy; 0oy; 0oy; 0oy; }; 1iy;
99 Bottles of Beer
Too long to post :P Commented or Not Click here to see source-code
Implementations
BIO to Skull written in Thutu
(this implementation is not tested yet)
/=1/:ASC:=n=x/ /\/\/.*$// /=;// /0[Oo][Xx]/={0=[=+1=]%/ /1[Oo][Xx]/={0=[=-1=]%/ /0[Oo][Yy]/={1=[=+1=]%/ /1[Oo][Yy]/={1=[=-1=]%/ /0[Oo][Zz]/={2=[=+1=]%/ /1[Oo][Zz]/={2=[=-1=]%/ /0[Ii][Xx]/={0/ /0[Ii][Yy]/={1/ /0[Ii][Zz]/={2/ /1[Ii][Xx]/=|0=|/ /1[Ii][Yy]/=|1=|/ /1[Ii][Zz]/=|1=|/ /=}/%%/ /=n/=9/! /=x/=n=x/ . /%/@ /%/=}/ .
Implementation written by ais523