fix bug and add zero instruction

This commit is contained in:
Freya Murphy 2023-04-15 01:04:50 -04:00
parent cb76bcf7d2
commit 1b3c67ba06
5 changed files with 16 additions and 1 deletions

View file

@ -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/)

View file

@ -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;
}

View file

@ -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) {

View file

@ -48,6 +48,8 @@ retest:
return GetString;
case '%':
return Clear;
case '$':
return Zero;
case '\n':
case '\t':
case ' ':

View file

@ -19,6 +19,7 @@ typedef enum {
PutString,
GetString,
Clear,
Zero,
Eof
} Symbol;