summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--readme.md8
-rw-r--r--src/interpreter.c5
-rw-r--r--src/main.c1
-rw-r--r--src/program.c2
-rw-r--r--src/types.h1
5 files changed, 16 insertions, 1 deletions
diff --git a/readme.md b/readme.md
index f741485..87ed15a 100644
--- a/readme.md
+++ b/readme.md
@@ -41,6 +41,8 @@ Just like brainfuck, cells wrap from 0 to 255, and vice versa, and also the tape
`%` Clear screen
+`$` Zero n cells where n is the value of the current cell
+
`\` Comment out the rest of the line
## Usage
@@ -52,6 +54,12 @@ For example:
$ brainfucked helloworld.bfd
```
+Brainfucked can also read from standard in, so the following would also work.
+
+```
+$ cat helloworld.bfd | brainfucked
+```
+
## License
This project is Licensed under the [WTFPL](http://www.wtfpl.net/)
diff --git a/src/interpreter.c b/src/interpreter.c
index 273d985..982108e 100644
--- a/src/interpreter.c
+++ b/src/interpreter.c
@@ -62,8 +62,8 @@ next:
break;
}
case EnterTape: {
- memcpy(&tape, tape_ptr(tape), sizeof(Tape*));
stack_push(&tape_stack, tape);
+ memcpy(&tape, tape_ptr(tape), sizeof(Tape*));
break;
}
case LeaveTape: {
@@ -82,6 +82,9 @@ next:
case Clear:
printf("\033c");
break;
+ case Zero:
+ memset(tape_ptr(tape), 0, tape_get(tape));
+ break;
case Eof:
goto end;
}
diff --git a/src/main.c b/src/main.c
index c51a88f..7032ca5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -20,6 +20,7 @@
/// ` Output null terminated string at current cell
/// ~ Input string into current cells with max length in current cell
/// % Clear screen
+/// $ Set n cells to 0 where n is the count of the current cell
int main(int argc, char** argv) {
diff --git a/src/program.c b/src/program.c
index 0fac9d5..c839461 100644
--- a/src/program.c
+++ b/src/program.c
@@ -48,6 +48,8 @@ retest:
return GetString;
case '%':
return Clear;
+ case '$':
+ return Zero;
case '\n':
case '\t':
case ' ':
diff --git a/src/types.h b/src/types.h
index 413d313..9241787 100644
--- a/src/types.h
+++ b/src/types.h
@@ -19,6 +19,7 @@ typedef enum {
PutString,
GetString,
Clear,
+ Zero,
Eof
} Symbol;