diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-10-21 00:13:40 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-10-21 00:13:40 +0200 |
| commit | c81e5044a5d609a42407a5e9b0725d22e33cf5fa (patch) | |
| tree | bcdd3ed322f64c8bde316bfaf065fe2248947ef1 /userspace/brainfuck.c | |
| parent | 37ceff93572bba6defd916884999c496108220ee (diff) | |
ported Brainfuck interpreter.
Diffstat (limited to 'userspace/brainfuck.c')
| -rw-r--r-- | userspace/brainfuck.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/userspace/brainfuck.c b/userspace/brainfuck.c index 03ce4f5..c363693 100644 --- a/userspace/brainfuck.c +++ b/userspace/brainfuck.c @@ -25,7 +25,7 @@ // by brainfuck standards (doesn't that sound funny?), the data pointer has // 30,000 bytes at its disposal, but I hate hard-coding such stuff. -#define DATA_SIZE 30000 +#define DATA_SIZE 3000 void usage() { puts( @@ -34,13 +34,14 @@ void usage() { ); } -int main(int argc, char **argv) { - - // ADDED BY FOOLOS: we will show usage anyway - usage(); +int main(int argc, char **argv) +{ + //added by FOOLOS + syscalls_init(); // used by the bf program unsigned char *dataptr = malloc(sizeof(char) * DATA_SIZE); + // position of the data pointer unsigned int datapos = 0; // input file @@ -51,6 +52,8 @@ int main(int argc, char **argv) { // we will read chars from the input into r unsigned char r; + /* uncommented by FOOLOS + // determine input if (argc == 2) { if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-h") == 0) { @@ -69,16 +72,26 @@ int main(int argc, char **argv) { usage(); return EXIT_FAILURE; } - + + */ + + // added by FOOLOS + input=fopen(1,"r"); + puts("Welcome to the BRAINFUCK by Felix Oghina"); + puts("Compiled for FoolOS"); + printf("dataptr: 0x%08X\n",dataptr); + // zero the data pointer for (i=0; i < DATA_SIZE; i++) { dataptr[i] = 0; } - + // start interpreting rewind(input); + while (!feof(input)) { r = (unsigned char) fgetc(input); +// printf("%c",r); switch(r) { case '>': if (datapos < DATA_SIZE - 1) datapos++; @@ -129,5 +142,6 @@ int main(int argc, char **argv) { break; } } + puts("brainfuck: finishing!"); return EXIT_SUCCESS; } |
