summaryrefslogtreecommitdiff
path: root/userspace/brainfuck.c
diff options
context:
space:
mode:
Diffstat (limited to 'userspace/brainfuck.c')
-rw-r--r--userspace/brainfuck.c28
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;
}