143 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Org Mode
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Org Mode
		
	
	
	
	
	
| #+title: Bito
 | |
| #&summary
 | |
| A poor but simple programming language along with an interpreter
 | |
| #&
 | |
| #+license: cc0, text
 | |
| #+license: bysa, logo
 | |
| #+license: gpl 3+, interpreter
 | |
| 
 | |
| * Bito
 | |
| 
 | |
| #&img;url=img/bito-logo.png,center
 | |
| 
 | |
| *Bito* is a programming language. I already wrote a readme about it, which you
 | |
| can either see below or download [[README][here]]. To run Bito
 | |
| programs, you will need a Bito interpreter.
 | |
| 
 | |
| [[bitopret.tar.gz][Download Bito interpreter, Bito interpreter README and Bito code examples]].
 | |
| 
 | |
| ** Bito README
 | |
| 
 | |
| #&pre
 | |
|             ▄▄▄▄▄    ▀   ▄               █   ▄█▀█▄ ▀▀▄ ▀▀█▀▀ ▄▀▀▀▀█
 | |
|             █    █ ▄▄▄ ▄▄█▄▄  ▄▄▄       █    █   █   █   █   █    █
 | |
|             █▄▄▄▄▀   █   █   █▀ ▀█     █     █▄ ▄█   █   █   ▄▀▀▀▀█
 | |
|             █    █   █   █   █   █    █       ▀▀▀  ▀▀█▀▀ ▀▀▀ █    █
 | |
|             █▄▄▄▄▀ ▄▄█▄▄ ▀▄▄ ▀█▄█▀   █               ▀   ▄    ▀▀▀▀▀
 | |
| 
 | |
| 
 | |
| Bito is a programming language that aims to be easy to work with. Bito only
 | |
| accepts ones and zeroes. All other characters will be ignored. A command in
 | |
| Bito consists of two parts, the first part consisting of 1 bit and the second
 | |
| part consisting of three bits. All first parts must be written from left to
 | |
| right, while all last parts must be written from right to left. A last part
 | |
| consisting of 011 must thus be written 110.
 | |
| Bito saves data in a list containing an infinite numbers of memory cells. A
 | |
| cell can hold only any number above or equal to 0. There are no limits on how
 | |
| large numbers can be.
 | |
| 
 | |
| Tip: Writing comments with ones and zeroes will make code more difficult to
 | |
|      understand. Try to replace ones with uppercase "i"s and zeroes with
 | |
|      uppercase "o"s.
 | |
| 
 | |
| Available commands:
 | |
| 0 xxx Append xxx to current memory cell (as a string)
 | |
| 1 000 Print current number
 | |
| 1 001 Print current number as ASCII
 | |
| 1 010 Increment memory cell index
 | |
| 1 011 Decrement memory cell index
 | |
| 1 100 Start loop
 | |
| 1 101 Restart or end loop
 | |
| 1 110 Add value of previous cell to current cell (as an integer)
 | |
| 1 111 Write input from stdin to next cells and write length to current cell
 | |
| 
 | |
| Trying to print an unset number will result in an error. Trying to print a
 | |
| number not in the ASCII range as ASCII text will also result in an error.
 | |
| Loops will run the times specified by the current cell. If the value of the
 | |
| current cell is either unset, 0 or 1, the loop will run only once, i.e. it will
 | |
| not act as a loop. Specifying the value 2 or above will thereby make it a loop.
 | |
| Because infinite loops are not possible in Bito, Bito does not suffer from the
 | |
| Halting Problem.
 | |
| Ending a loop when no loop has been started will not result in an error, nor
 | |
| will starting a loop without ending it do so (though the loop will, in those
 | |
| cases, not function as a loop). Also, nested loops cannot exist. When a loop
 | |
| has been started, all subsequent attempt to start a new loop will be ignored,
 | |
| until the loop has ended.
 | |
| Trying to add the value of a previous cell to the current cell will result in
 | |
| an error if the current cell is unset. If a previous cell is unset, its value
 | |
| is -1, which makes it ideal for use in subtracting numbers.
 | |
| 
 | |
| How to print an "N" (ASCII 78, binary ASCII 1001110):
 | |
| Short version:
 | |
| 0001100011100100
 | |
| Long version:
 | |
| 0 Current cell: OOI
 | |
| 0 Current cell: OOIOOI
 | |
| 0 Current cell: OOIOOIIIO (i.e. IOOIIIO)
 | |
| 1 Print ASCII 78 (N)
 | |
| 100
 | |
| 011
 | |
| 100
 | |
| 100
 | |
| 
 | |
| Saving ones and zeroes as ASCII is meaningless, as it takes up much more space
 | |
| than needed. It is therefore recommended to convert every 8 characters into a
 | |
| byte. This will greatly reduce filesizes. If the number of characters in a file
 | |
| isn't directly dividable with 8 (4, 12, 132, etc.), just append a command that
 | |
| does not affect the the script too much --- like ending a loop (1 101). If this
 | |
| command is called outside a loop, nothing will happen.
 | |
| The above N-printing program would, in byte-form, take up two bytes instead of
 | |
| its current 16 bytes. It would save the first byte with 24 as its value and the
 | |
| second byte with 224 as its value (this is theoretically speaking -- as
 | |
| compressed Bito files are basically still text files, it is normal to have a
 | |
| newline character appended at the end of a file).
 | |
| 
 | |
| To run Bito programs, you can use the bitopret.py interpreter found in the
 | |
| 'interpreter' directory. This interpreter also functions as a Bito file packer,
 | |
| i.e. it can compress Bito files.
 | |
| You will find a set of example programs in the 'examples' subdirectory.
 | |
| 
 | |
| 
 | |
| The Bito programming language was created by Niels Serup (metanohi.org). You
 | |
| can contact Niels at <[[mailto:ns@metanohi.name][ns@metanohi.name]]>.
 | |
| Updates to Bito are likely to appear at <[[http://metanohi.name/projects/bito/]]>.
 | |
| 
 | |
| This readme was written by Niels and was put into the public domain by him.
 | |
| Date: 27 July 2009
 | |
| #&
 | |
| 
 | |
| ** Bito interpreter README
 | |
| 
 | |
| #&pre
 | |
|                 █       ▀    ▄                             ▄
 | |
|                 █▄▄▄  ▄▄▄  ▄▄█▄▄  ▄▄▄  ▄▄▄▄  ▄ ▄▄   ▄▄▄  ▄▄█▄▄
 | |
|                 █▀ ▀█   █    █   █▀ ▀█ █▀ ▀█ █▀  ▀ █▀  █   █
 | |
|                 █   █   █    █   █   █ █   █ █     █▀▀▀▀   █
 | |
|                 ██▄█▀ ▄▄█▄▄  ▀▄▄ ▀█▄█▀ ██▄█▀ █     ▀█▄▄▀   ▀▄▄
 | |
|                                        █
 | |
|              An interpreter for the Bi ▀ to programming language
 | |
| 
 | |
| Though a creating a compiler might have been the best way to be able to run
 | |
| files written in the Bito programming language, it's easier to create an
 | |
| interpreter. The standard interpreter for Bito files, bitopret, works
 | |
| flawlessly, though naturally it's not lightning fast. To use bitopret, run
 | |
| bitopret.py. If you run bitopret.py without any arguments, it will display some
 | |
| hopefully historically helpful help.
 | |
| 
 | |
| To understand the Bito language, you should have a look at the original README
 | |
| describing it. You can fetch a copy at <[[http://metanohi.name/projects/bito/]]>.
 | |
| 
 | |
| There are example programs in the 'examples' directory.
 | |
| 
 | |
| Niels Serup (metanohi.name) created this interpreter along with the Bito
 | |
| language. You can contact Niels at <[[mailto:ns@metanohi.name][ns@metanohi.name]]>.
 | |
| 
 | |
| Version information:
 | |
| bitopret 0.9
 | |
| Copyright (C) 2009 Niels Serup
 | |
| License GPLv3+: GNU GPL version 3 or later <[[http://gnu.org/licenses/gpl.html]]>
 | |
| This is free software: you are free to change and redistribute it.
 | |
| There is NO WARRANTY, to the extent permitted by law.
 | |
| #&
 | |
| 
 | 
