Brainfunk is derivative of Brainfuck language with aims to:
- Unify cell pointer and cell value increment and decrement operations to single + and - operations. Remove > and < operations.
- Introduce fast copy instruction usable between all address spaces.
- Allow macro definition for custom symbol definition and code reduction
- Allow to read/write program space
- Support multiple I/O ports for additional hardware addressing
- Enable brainfuck compatible mode
- Allow absolute integer constants
Base commands
| Command
|
Description
|
^
|
Increment selected object
|
v
|
Decrement selected object
|
(
|
Jump past the matching ) if the object value is zero
|
)
|
Jump back to the matching ( if the object value is nonzero
|
@
|
Set object selection index to 0. This is index means accumulator,
|
$
|
Increment object selection index
|
~
|
Copy value from previous selected object to current selected object
|
:
|
Start macro, first symbol to the right is new defined symbol
|
;
|
End macro started by :
|
Object table
| Index
|
Description
|
| 0 |
A - Accumulator
|
| 1 |
DP - Data pointer
|
| 2 |
(DP) - Data value
|
| 3 |
IP - Interface pointer
|
| 4 |
(IP) - Interface value
|
| 5 |
PC - Program counter
|
| 6 |
PP - Program pointer
|
| 7 |
(PP) - Program value
|
| 8 |
SP - Stack pointer
|
| 9 |
(SP) - Stack value
|
Port address table
| Address
|
Description
|
| 0 |
Null
|
| 1 |
Standard output
|
| 2 |
Standard input
|
| 3 |
Delay [ms]
|
| 4 |
Sound [Hz]
|
Brainfuck compatibility code[editovat]
These are defined as macros for easy brainfuck code inclusion.
| Symbol
|
Code
|
+
|
@$$^
|
-
|
@$$v
|
<
|
@$^
|
>
|
@$v
|
[
|
@$$(
|
]
|
@$$)
|
,
|
@$$$(v)^^@$$@$$$$~
|
.
|
@$$$(v)^@$$$$@$$~
|
Aditional macros[editovat]
| Symbol
|
Code
|
Description
|
#
|
@$ |
Shortcut for data pointer DP object
|
*
|
@$$ |
Shortcut for data value (DP) object
|
&
|
@$$$ |
Shortcut for interface address IP object
|
%
|
@$$$$ |
Shortcut for interface value (IP) object
|
?
|
@$$$$$ |
Shortcut for program counter PC object
|
!
|
(v) |
Clear selected object.
|
| Description
|
Brainfuck
|
Brainfunk
|
| Increment accumulator |
|
@^
|
| Decrement accumulator |
|
@v
|
| Cat |
,[.,] |
,[.,]
|
| Clear accumulator |
|
@!
|
| Move value |
>[-]<[->+<] |
*@~*!#^@*~
|
| Copy value |
>[-]>[-]<<[->+>+<<]>>[-<<+>>] |
*@~#^@*~
|
| Swap value |
>[-]<<[->>+<<]>[-<+>]>[-<+>] |
*@~#^^@*~#v*@~#v@*~#^^*@~#v@*~
|
|
|