annotate delvs-master/README.md @ 3524:30cefd7025be

<Roujo> learn The Neverending Work is what boily is going through \x16trying\x16 to map entries that are being put in at the same time.
author HackBot
date Thu, 29 Aug 2013 19:09:06 +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"