annotate delvs-master/README.md @ 3555:93e802f87c49

<Roujo> revert
author HackBot
date Thu, 29 Aug 2013 20:30:58 +0000
parents 276f475af97b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3122
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
1 Delvs
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
2 =====
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
3
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
4 Delvs(Pronounced Del-vis) is my own personal variation of brainfuck, the interpreter is written in C.
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
5 File reading was inspired by brainfuck++, and the bit fiddling was inspired by boolfuck(DuckDuckGo them if you have to, I'm not putting links there right now)
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
6
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
7 Additions
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
8 ---------
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
9 - `:` casts the current value to a string and prints it. Code: `printf("%hhd", *p);`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
10 - `;` grabs value from user input and casts to cell value. Code: `scanf("%hhd", p);`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
11 - `#` reads following cells as null-terminating string for filename, then if current cell is != 1, open file for reading, or if 1, open file writing. Code: `f = fopen(p + 1, p == 1 ? "w" : "r");`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
12 - `` ` `` read next char from file, apply to current cell. (`EOF` becomes `0`) Code: `*p = fgetc(f);`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
13 - `!` write char from current cell to file. Code: `fputc(*p, f);`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
14 - `"` increment current bit position by 1. (psuedo)Code: `b++;`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
15 - `'` flip bit at current bit position, then incrment current bit position by 1. Code: `*p ^= (1 << b)`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
16 - `\ ...` ignore EVERYTHING until newline is reached. `while(*c) if(*c++ == '\') return;`
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
17 - `@` prints value of current cell and surrounding 4 cells. Code:
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
18 - `$` sleeps the current cell's value in seconds
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
19
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
20 ### To do
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
21 - implement a working socket system
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
22 - implement an stdout flushing system
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
23 - implement runtime args
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
24 - implement namespaces(seperate arrays of 30000 chars)
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
25 - (maybe) implement better way to divide
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
26 - implement full integers
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
27
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
28 Examples
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
29 --------
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
30 Setting entire cell values with just the bit intructions is as easy as converting 0's to `"`s and 1's to `'`s.
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
31
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
32 01001000 = 72
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
33 "'""'""" . >
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
34 01101001 = 105
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
35 "''"'""' .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
36
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
37 Block comments are very straight forward to use, just plant a `\[` when you start "commenting" and a `]` when you're done.
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
38
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
39 +++++ +++++ [
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
40 > +++++ ++
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
41 > +++++ +++++
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
42 \ This is a well placed comment. See, all these code intrustions aren't messing with the program unlike vanilla Brainfuck
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
43 > +++
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
44 > +
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
45 <<<< -
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
46 ]
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
47 > ++ .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
48 > + .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
49 +++++ ++ . .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
50 \ Another intruding comment.
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
51 +++ .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
52 > ++ .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
53 << +++++ +++++ +++++ .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
54 > . +++ .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
55 ------ . -------- .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
56 > + .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
57 > .
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
58
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
59 How about reading files? Just generate a string as the filename an the use a `#` at the beginning of it. Like so:
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
60
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
61 01101101 m
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
62 "''"''"'
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
63 01111001 y
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
64 "''''""'
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
65 01110100 t
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
66 "'''"'""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
67 01100101 e
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
68 "''""'"'
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
69 01111000 x
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
70 "''''"""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
71 01110100 t
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
72 "'''"'""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
73 01100110 f
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
74 "''""''"
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
75 01101001 i
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
76 "''"'""'
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
77 01101100 l
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
78 "''"''""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
79 01100101 e
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
80 "''""'"'
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
81 00101110\.
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
82 ""'"'''"
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
83 01110100 t
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
84 "'''"'""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
85 01111000 x
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
86 "''''"""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
87 01110100 t
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
88 "'''"'""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
89
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
90 [<] #
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
91 \ standard concatenation loop with file reading(and EOF check)
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
92 `+[-.`+]
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
93
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
94 Want to give the actual value of the cell when printing? Just add a dot above your intruction!
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
95
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
96 01100100 \ 'd' or 100
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
97 "''""'""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
98
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
99 . \ prints "d"
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
100 : \ prints "100"