|
|
@ -16,7 +16,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include "foci.h"
|
|
|
|
#include "foci.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <stdio.h> // puts
|
|
|
|
|
|
|
|
#include <stdlib.h> // strtol
|
|
|
|
#include <stdlib.h> // strtol
|
|
|
|
#include <string.h> // strncmp
|
|
|
|
#include <string.h> // strncmp
|
|
|
|
|
|
|
|
|
|
|
@ -48,8 +47,7 @@ NAKED void compname(void)
|
|
|
|
|
|
|
|
|
|
|
|
STASH;
|
|
|
|
STASH;
|
|
|
|
for (;;) {
|
|
|
|
for (;;) {
|
|
|
|
extern int getchar(void);
|
|
|
|
ch = foci_getchar();
|
|
|
|
ch = getchar();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ch <= 0x20)
|
|
|
|
if (ch <= 0x20)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -105,8 +103,7 @@ N(b, "_b", &w_literal) { ++pp; pp = (intptr_t **)*pp; NEXT; }
|
|
|
|
N(bz, "_bz", &w_literal) { ++pp; if (!*sp++) { pp = (intptr_t **)*pp; } NEXT; }
|
|
|
|
N(bz, "_bz", &w_literal) { ++pp; if (!*sp++) { pp = (intptr_t **)*pp; } NEXT; }
|
|
|
|
I(fif, "if", &w_b) LIT(bz), comma, FTH(here), LIT(0), comma, END
|
|
|
|
I(fif, "if", &w_b) LIT(bz), comma, FTH(here), LIT(0), comma, END
|
|
|
|
I(then, "then", &w_fif) FTH(here), LIT(sizeof(intptr_t)), sub, swap, poke, END
|
|
|
|
I(then, "then", &w_fif) FTH(here), LIT(sizeof(intptr_t)), sub, swap, poke, END
|
|
|
|
I(felse, "else", &w_then) LIT(b), comma, FTH(here), LIT(0), comma, swap,
|
|
|
|
I(felse, "else", &w_then) LIT(b), comma, FTH(here), LIT(0), comma, swap, FTH(then), END
|
|
|
|
FTH(here), LIT(sizeof(intptr_t)), sub, swap, poke, END
|
|
|
|
|
|
|
|
#define LATEST &w_felse
|
|
|
|
#define LATEST &w_felse
|
|
|
|
|
|
|
|
|
|
|
|
void call(void *ptr)
|
|
|
|
void call(void *ptr)
|
|
|
@ -141,7 +138,9 @@ void parse_word(const char *buf, const char *s)
|
|
|
|
*--sp = n;
|
|
|
|
*--sp = n;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
puts("word not found");
|
|
|
|
const char *err = "word not found";
|
|
|
|
|
|
|
|
while (*err)
|
|
|
|
|
|
|
|
foci_putchar(*err++);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
if (state && !(l->attr & ATTR_IMMEDIATE)) {
|
|
|
|
if (state && !(l->attr & ATTR_IMMEDIATE)) {
|
|
|
|