--- /dev/null
+yForth? - A Forth interpreter written in ANSI C
+Copyright (C) 2012 Luca Padovani
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
floate.h locals.h localse.h macro.h memall.h search.h searche.h \
string.h tools.h toolse.h udio.h ver.h ycore.h yforth.h
-all:
- make div
- make yforth
-
-yforth: $(OBJECTS)
- $(CC) $(MATHLIB) -o yforth $(OBJECTS)
+yforth: div.h $(OBJECTS)
+ $(CC) -o yforth $(OBJECTS) $(MATHLIB)
+div.h: div
+ ./div
+
div: division.c
$(CC) -o div division.c
- div > div.h
.c.o:
$(CC) -c -o $@ $(OPTIMIZE) $<
-yForth? v0.1beta - READ THIS (AND ONLY THIS) TO GET yForth? RUNNING.
+yForth? v0.2+beta - READ THIS (AND ONLY THIS) TO GET yForth? RUNNING.
0) Hello world!
Here's a little file which will help you having yForth? running in few
together in the file "udio.c". If you're using Turbo C, Borland C, or any
compiler which supplies the "conio.h", you can define HAVE_CONIO in
your "config.h" file and go.
-Note that even if in file "udio.c" you'll see some lines telling you:
-#ifdef HAVE_CURSES
-or similar, yForth? actually doesn't support CURSES library. I've decided to
-stop my work as soon as something machine depended that was too messy has
-came around.
2) Where does the name yForth? came from?
I've been charmed by Forth since the first time I "played" with it, but
Below data definition you'll have to change the maximum values of your
system. See "limits.h".
- terminal
-Finally, define HAVE_CONIO if you're using Turbo C, Borland C or GCC for DOS.
-You'll have some nice words such as "page"...
+Finally, define HAVE_CONIO to 1 if you're using Turbo C, Borland C or GCC
+for DOS. You'll have some nice words such as "page"...
- special functions
"asinh", "acosh", "atanh" aren't provided by all the libraries, if you don't
-have them delete the definitions at the end of "config.h".
+have them reset the definitions at the end of "config.h".
-The second thing to do now is configuring the "Makefile". I know, it's rude,
-but yForth? is drifting on my system for too long, I want to finish it
-within 1996.
-At the moment "Makefile" is ready for GCC (under Linux), it's simple and
-you won't find any problem modifying it.
+The second thing to do now is configuring the "Makefile". At the moment
+"Makefile" is ready for GCC (under Linux), it's simple and you won't find any
+problem modifying it.
Third, type "make all". Yes, that's all.
- yForth? is a "beta" release, I think it has bugs, but, most
important, I'm afraid that some words don't behave as the
standard says they have to.
- - yForth? comes with no warranty, I don't make any warranty about it.
- - yForth? is completely free. You can use, modify, doing anything
- you want with it. If you're going to use it in any project,
- I would be grateful if you cite me, but you're no obliged.
- yForth? is NOT a complete ANS Forth.
- yForth? is written in ANSI C. Ok, you could see some warning while
compiling it, and I've to check it with lint, but it
more if you tell me how fo fix it, but I can't pretend so much, even 'cause
my C is not very readable (few comments...).
-8) Who am I?
-Luca Padovani
-v. Cormons, 12
-48100 Ravenna (RA)
-Italy
-
email: lpadovan@cs.unibo.it
Enjoy yForth?
+
+**********************************************************************
+ CONTRIBUTORS
+**********************************************************************
+
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: block.c
* Abstract: Block word set implementation
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: block.h
* Abstract: Block word set header file
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: blocke.c
* Abstract: Block extension word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: blocke.h
* Abstract: Block extension include file
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: config.h
* Abstract: configuration file. Before any compilation please check
* excluded word lists may be linked to final code if used by other words.
*/
+#include <endian.h>
+
#define COREE_DEF 1L
#define DOUBLE_DEF 1L
#define DOUBLEE_DEF 1L
* Note that some compilers have LITTLE_ENDIAN yet defined.
*/
#ifndef LITTLE_ENDIAN
+# if __BYTE_ORDER == __LITTLE_ENDIAN
# define LITTLE_ENDIAN
+# else
+# undef LITTLE_ENDIAN
+# endif
#endif
/* When DCELL_MEM is defined, double cell transfer is realized by memory
* Under Linux, Cell may be "int" and DCell "long long".
*/
-#define Cell int
+/* this might work for other 64 bit architectures, too? */
+#if defined(__alpha__)
+# define Cell long
+#else
+# define Cell int
+#endif /* __alpha__ */
+
#define Char char
-#define Real long double
+#define Real float
#define UCell unsigned Cell
#define DCell long long
#define MAX_F 0.0
/* Some compilers doesn't provide some functions in the standard library.
- * If you don't have, undefine them
- */
-#define HAVE_ACOSH
-#define HAVE_ASINH
-#define HAVE_ATANH
+ * If you don't have, turn 1s into 0s
+ */
+#define HAVE_ACOSH 1
+#define HAVE_ASINH 1
+#define HAVE_ATANH 1
+
+/* Set following define to 1 if you're compiling under Turbo C, Borland C,
+ * or GCC for DOS.
+ */
+#define HAVE_CONIO 0
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: core.c
* Abstract: Core word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: core.h
* Abstract: include file for "core" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: coree.c
* Abstract: Core extension word set
}
void _parse() {
- register Char delim = (Char) *sp;
+ register Char delim = (Char) *sp;
register Char *orig = &_input_buffer[_to_in];
register int i = 0;
while (_to_in < _in_input_buffer && _input_buffer[_to_in] != delim) {
_to_in++;
i++;
}
- *sp = (Cell) orig;
+ *sp = (Cell)orig;
*--sp = i;
+
if (_to_in < _in_input_buffer) _to_in++;
}
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: coree.h
* Abstract: Include file for "core-extension" word set
code(unused, "unused", 0)
code(within, "within", 0)
code(backslash, "\\", IMMEDIATE)
+code(backslash, "#!", IMMEDIATE)
code(bracket_compile, "[compile]", COMP_ONLY)
code(value, "value", 0)
code(to, "to", IMMEDIATE)
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
#include <stdio.h>
-main() { printf("#define FLOORED_DIVISION %d\n", (-10 % 7) > 0 ? 1 : 0); }
+#include <math.h>
+#include <assert.h>
+
+main() {
+ FILE *f = fopen("div.h", "wt");
+ assert(f != NULL);
+ fprintf(f, "#define FLOORED_DIVISION %d\n", (-10 % 7) > 0 ? 1 : 0);
+ fclose(f);
+ return 0;
+}
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: double.c
* Abstract: double-number word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: double.h
* Abstract: include file for "double-numbers" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: doublee.c
* Abstract: double-extension word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: doublee.h
* Abstract: include file for "double-number extension" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: errors.h
* Abstract: definitions for system error codes
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: exceptio.c
* Abstract: exception word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: exceptio.h
* Abstract: include file for "exception" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: facility.c
* Abstract: facility word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: facility.h
* Abstract: include file for "facility" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: file.c
* Abstract: File word set
/**************************************************************************/
Cell truncate_file(FILE *f, UDCell cur, UDCell ud) {
- if (cur == cur && fseek(f, ud, SEEK_SET)) return (errno);
+ if (fseek(f, ud, SEEK_SET)) return (errno);
else return (0);
}
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: file.h
* Abstract: File word-set include file
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: filee.c
* Abstract: File extension word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: filee.h
* Abstract: Include file for "File extension" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: float.c
* Abstract: floating word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: float.h
* Abstract: include file for "floating" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: floate.c
* Abstract: floating-extension word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: floate.h
* Abstract: include file for "floating-extension" word set
--- /dev/null
+#! /usr/bin/yforth
+\
+\ a simple example of a yforth script
+\
+.( Hello World!) cr bye
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: locals.c
* Abstract: locals word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: locals.h
* Abstract: include file for "locals" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: localse.c
* Abstract: locals-extension word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: localse.h
* Abstract: include file for "locals-extension" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: memall.c
* Abstract: Memory allocation word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: memall.h
* Abstract: Include file for "Memory Allocation" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name:
* Abstract:
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name:
* Abstract:
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name:
* Abstract:
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name:
* Abstract:
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name:
* Abstract:
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name:
* Abstract:
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: tools.c
* Abstract: Programming Tools word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: tools.h
* Abstract: Include file for "Programming Tools" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: toolse.c
* Abstract: Programming Tools extension word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: toolse.h
* Abstract: Include file for "Programming Tools extension" word set
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: udio.c
* Abstract: User Device Input/Output functions. Here are enclosed all
*/
#include "yforth.h"
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
# include <conio.h>
-#elifdef HAVE_CURSES
-# include <curses.h>
#endif
#include "udio.h"
/* d_clrscr: clear the screen */
void d_clrscr() {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
clrscr();
-#elifdef HAVE_CURSES
- clear();
#endif
}
/* d_clreol: clear to end of line */
void d_clreol() {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
clreol();
-#elifdef HAVE_CURSES
- clrtoeol();
#endif
}
/* d_setattr: set default attributes */
void d_setaddr(Cell attr) {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
textattr(attr);
-#elifdef HAVE_CURSES
#endif
}
/* d_getattr: get default attributes */
Cell d_getattr() {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
struct text_info ti;
gettextinfo(&ti);
return (ti.attribute);
-#elifdef HAVE_CURSES
#endif
}
/* d_gotoxy: move the cursor to the location (x, y) of the screen */
void d_gotoxy(Cell x, Cell y) {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
gotoxy(x, y);
-#elifdef HAVE_CURSES
- move(y, x);
#endif
}
/* d_wherex: current column position of the cursor */
Cell d_wherex() {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
return (wherex());
-#elifdef HAVE_CURSES
- int x, y;
- getyx(stdscr, y, x);
- return ((Cell) x);
#endif
}
/* d_wherey: current row position of the cursor */
Cell d_wherey() {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
return (wherey());
-#elifdef HAVE_CURSES
- int x, y;
- getyx(stdscr, y, x);
- return ((Cell) y);
#endif
}
* Return
*/
Char d_getch() {
-#ifdef HAVE_CONIO
- return (getch());
-#elifdef HAVE_CURSES
+#if HAVE_CONIO
return (getch());
#endif
}
/* d_kbhit: return True if a character is available */
Cell d_kbhit() {
-#ifdef HAVE_CONIO
+#if HAVE_CONIO
return (kbhit());
-#elifdef HAVE_CURSES
- return (1);
-#endif
+#endif
}
/* d_open: Initialize the Input/Output device */
void d_open() {
-#ifdef HAVE_CURSES
- initscr();
- cbreak();
- noecho();
- nonl();
- /* intrflush(stdscr, FALSE); */
- /* keypad(stdscr, TRUE); */
-#endif
-}
+}
/* d_close: make some work when program finish to restore Input/Output device */
void d_close() {
-#ifdef HAVE_CURSES
- endwin();
-#endif
}
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: udio.h
* Abstract: User device Input/Output functions.
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: ver.h
* Abstract: yForth? version definition
*/
#define VER_HI 0
-#define VER_LO 1
-#define VER_TEST "beta"
+#define VER_LO 2
+#define VER_TEST "+beta"
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: vm.c
* Abstract: The Virtual Machine on which is based the whole
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: ycore.c
* Abstract: Words defined for this particular implementation of
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: ycore.h
* Abstract: YCore word set (non-standard words specific to yForth?. Don't
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: yfinit.c
* Abstract: Allocate memory for the main structures of the
--- /dev/null
+.TH YFORTH 1
+.SH NAME
+yforth \- a small, free Forth implementation
+.SH SYNOPSIS
+.B yforth
+.SH DESCRIPTION
+This is a small implementation of the Forth programming language, somewhat
+easier to read than larger Forth implementations like Gforth.
+
+It is not being actively developed or maintained. If you find it useful,
+great. If not, don't expect much help. The www.forth.org site is a good
+place to get more general information on Forth.
+
+Serious Forth authors would be advised to use Gforth instead of this package.
+
+.SH AUTHOR
+This man page was cobbled up for the Debian distribution by Bdale Garbee.
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
- * ------------------------------------------------------------------------
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+* ------------------------------------------------------------------------
* Module name: yforth.c
* Abstract: Main program
*/
static struct image_header hd;
void print_version() {
- printf("yForth? v%d.%d%s - Written by Luca Padovani (C) 1996.\n\
-This software is Freeware, use it at your own risk.\n",
- VER_HI, VER_LO, VER_TEST);
+ printf("yForth? v%d.%d%s Copyright (C) 2012 Luca Padovani\n\
+This program comes with ABSOLUTELY NO WARRANTY.\n\
+This is free software, and you are welcome to redistribute it\n\
+under certain conditions; see LICENSE for details.\n",
+ VER_HI, VER_LO, VER_TEST);
}
void print_help(void) {
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: yforth.h
* Abstract: definition of constants, data types, prototypes, and so on.
# define GET_DCELL(ptr) get_dcell((Cell *) ptr)
# define PUT_DCELL(ptr, d) put_dcell((Cell *) ptr, (DCell) d)
# else
-# define GET_DCELL(ptr) *((DCell *) ptr)
-# define PUT_DCELL(ptr, d) *((DCell *) ptr) = d
+# define GET_DCELL(ptr) *((DCell *) (ptr))
+# define PUT_DCELL(ptr, d) *((DCell *) (ptr)) = d
# endif
#else
# ifdef LITTLE_ENDIAN
-/* yForth? - Written by Luca Padovani (C) 1996/97
- * ------------------------------------------------------------------------
- * This software is FreeWare as long as it comes with this header in each
- * source file, anyway you can use it or any part of it whatever
- * you want. It comes without any warranty, so use it at your own risk.
+/* yForth? - A Forth interpreter written in ANSI C
+ * Copyright (C) 2012 Luca Padovani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
* ------------------------------------------------------------------------
* Module name: yfvinit.c
* Abstract: Initialize the vocabulary.