summaryrefslogtreecommitdiff
path: root/readme.md
blob: 2d4c2769637594b7583da5df2a62d6750e305379 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Brainfucked

Its brainfuck but with manual memory allocation :3

All normal brainfuck is valid brainfucked. Though your tape only starts with as much memory that can hold a pointer. In other words, if you're on a 64 bit computer you get 8 cells, and if you're on a 32bit computer you get 4 cells. 

Pointers in brainfucked span as many cells as they are bytes.

Just like brainfuck, cells wrap from 0 to 255, and vice versa, and also the tape wraps from front to end and end to front. The tape will not wrap though if you are inputting a string.

## Commands

`<` Move pointer left

`>` Move pointer right

`+` Increment cell by one

`-` Decrement cell by one

`[` Jump past the matching ] if the cell at the pointer is 0

`]` Jump back to the matching [ if the cell at the pointer is nonzero

`.` Output ascii at current cell

`,` Input ascii into current cell

`*` Allocate new tape size of current cell and replace with pointer

`!` Free allocated pointer in current cell

`(` Go to tape at pointer in current cell

`)` Leave tape last entered

`` ` `` Output null terminated string at current cell

`~` Input string into current cells with max length in current cell

`%` Clear screen

`\` Comment out the rest of the line

## Usage

The `brainfucked` command expects only one argument which is the path to a file containing brainfucked.

For example:
```
$ brainfucked helloworld.bfd
```

## License

This project is Licensed under the [WTFPL](http://www.wtfpl.net/)

## Compilation

Brainfucked only runs on Linux systems because im too lazy to make other makefiles. Though it can compile if they are made.

Make sure to have `gcc` and `make` installed, and then run

```shell
$ make # compiles the program
$ sudo make install # installs the binary
```

If you wish to remove the program, you can run

```shell
$ sudo make uninstall # removes the binary
```