| of in the original English. |
of in the original English. |
| @end ifinfo |
@end ifinfo |
| |
|
| |
@finalout |
| @titlepage |
@titlepage |
| @sp 10 |
@sp 10 |
| @center @titlefont{Gforth Manual} |
@center @titlefont{Gforth Manual} |
| for publication is available electronically and for free in some MS Word |
for publication is available electronically and for free in some MS Word |
| format, and it has been converted to HTML. Some pointers to these |
format, and it has been converted to HTML. Some pointers to these |
| versions can be found through |
versions can be found through |
| http://www.complang.tuwien.ac.at/projects/forth.html. |
@*@file{http://www.complang.tuwien.ac.at/projects/forth.html}. |
| |
|
| @cite{Forth: The new model} by Jack Woehr (Prentice-Hall, 1993) is an |
@cite{Forth: The new model} by Jack Woehr (Prentice-Hall, 1993) is an |
| introductory book based on a draft version of the standard. It does not |
introductory book based on a draft version of the standard. It does not |
| locals wordset, but also our own, more powerful locals wordset (we |
locals wordset, but also our own, more powerful locals wordset (we |
| implemented the ANS Forth locals wordset through our locals wordset). |
implemented the ANS Forth locals wordset through our locals wordset). |
| |
|
| |
The ideas in this section have also been published in the paper |
| |
@cite{Automatic Scoping of Local Variables} by M. Anton Ertl, presented |
| |
at EuroForth '94; it is available at |
| |
@*@file{http://www.complang.tuwien.ac.at/papers/ertl94l.ps.gz}. |
| |
|
| @menu |
@menu |
| * Gforth locals:: |
* Gforth locals:: |
| * ANS Forth locals:: |
* ANS Forth locals:: |
| Reading this section is not necessary for programming with Gforth. It |
Reading this section is not necessary for programming with Gforth. It |
| should be helpful for finding your way in the Gforth sources. |
should be helpful for finding your way in the Gforth sources. |
| |
|
| |
The ideas in this section have also been published in the papers |
| |
@cite{ANS fig/GNU/??? Forth} (in German) by Bernd Paysan, presented at |
| |
the Forth-Tagung '93 and @cite{A Portable Forth Engine} by M. Anton |
| |
Ertl, presented at EuroForth '93; the latter is available at |
| |
@*@file{http://www.complang.tuwien.ac.at/papers/ertl93.ps.Z}. |
| |
|
| @menu |
@menu |
| * Portability:: |
* Portability:: |
| * Threading:: |
* Threading:: |
| matrix multiplication come from the Stanford integer benchmarks and have |
matrix multiplication come from the Stanford integer benchmarks and have |
| been translated into Forth by Martin Fraeman; we used the versions |
been translated into Forth by Martin Fraeman; we used the versions |
| included in the TILE Forth package; and a recursive Fibonacci number |
included in the TILE Forth package; and a recursive Fibonacci number |
| computation for benchmark calling performance. The following table shows |
computation for benchmarking calling performance. The following table shows |
| the time taken for the benchmarks scaled by the time taken by Gforth (in |
the time taken for the benchmarks scaled by the time taken by Gforth (in |
| other words, it shows the speedup factor that Gforth achieved over the |
other words, it shows the speedup factor that Gforth achieved over the |
| other systems). |
other systems). |
| register declarations, giving a 1.3 times slower engine (on a 486DX2/66 |
register declarations, giving a 1.3 times slower engine (on a 486DX2/66 |
| running the Sieve) than the one measured above. |
running the Sieve) than the one measured above. |
| |
|
| |
The numbers in this section have also been published in the paper |
| |
@cite{Translating Forth to Efficient C} by M. Anton Ertl and Martin |
| |
Maierhofer, presented at EuroForth '95. It is available at |
| |
@*@file{http://www.complang.tuwien.ac.at/papers/ertl&maierhofer95.ps.gz}; |
| |
it also contains numbers for some native code systems. You can find |
| |
numbers for Gforth on various machines in @file{Benchres}. |
| |
|
| @node Bugs, Pedigree, Internals, Top |
@node Bugs, Pedigree, Internals, Top |
| @chapter Bugs |
@chapter Bugs |
| |
|
| Known bugs are described in the file BUGS in the Gforth distribution. |
Known bugs are described in the file BUGS in the Gforth distribution. |
| |
|
| If you find a bug, please send a bug report to !!. A bug report should |
If you find a bug, please send a bug report to |
| |
@code{gforth-bugs@@mips.complang.tuwien.ac.at}. A bug report should |
| describe the Gforth version used (it is announced at the start of an |
describe the Gforth version used (it is announced at the start of an |
| interactive Gforth session), the machine and operating system (on Unix |
interactive Gforth session), the machine and operating system (on Unix |
| systems you can use @code{uname -a} to produce this information), the |
systems you can use @code{uname -a} to produce this information), the |
| installation options (!! a way to find them out), and a complete list of |
installation options (send the @code{config.status} file), and a |
| changes you (or your installer) have made to the Gforth sources (if |
complete list of changes you (or your installer) have made to the Gforth |
| any); it should contain a program (or a sequence of keyboard commands) |
sources (if any); it should contain a program (or a sequence of keyboard |
| that reproduces the bug and a description of what you think constitutes |
commands) that reproduces the bug and a description of what you think |
| the buggy behaviour. |
constitutes the buggy behaviour. |
| |
|
| For a thorough guide on reporting bugs read @ref{Bug Reporting, , How |
For a thorough guide on reporting bugs read @ref{Bug Reporting, , How |
| to Report Bugs, gcc.info, GNU C Manual}. |
to Report Bugs, gcc.info, GNU C Manual}. |
| @chapter Pedigree |
@chapter Pedigree |
| |
|
| Gforth descends from BigForth (1993) and fig-Forth. Gforth and PFE (by |
Gforth descends from BigForth (1993) and fig-Forth. Gforth and PFE (by |
| Dirk Zoller) will cross-fertilize each other. Of course, a significant part of the design of Gforth was prescribed by ANS Forth. |
Dirk Zoller) will cross-fertilize each other. Of course, a significant |
| |
part of the design of Gforth was prescribed by ANS Forth. |
| |
|
| Bernd Paysan wrote BigForth, a descendent from TurboForth, an unreleased |
Bernd Paysan wrote BigForth, a descendent from TurboForth, an unreleased |
| 32 bit native code version of VolksForth for the Atari ST, written |
32 bit native code version of VolksForth for the Atari ST, written |
| |
|
| VolksForth descends from F83. It was written by Klaus Schleisiek, Bernd |
VolksForth descends from F83. It was written by Klaus Schleisiek, Bernd |
| Pennemann, Georg Rehfeld and Dietrich Weineck for the C64 (called |
Pennemann, Georg Rehfeld and Dietrich Weineck for the C64 (called |
| UltraForth there) in the midth of the 80th and ported to Atari ST in |
UltraForth there) in the mid-80s and ported to the Atari ST in 1986. |
| 1986. |
|
| |
|
| Laxen and Perry wrote F83 as a model implementation of the |
Laxen and Perry wrote F83 as a model implementation of the |
| Forth-83 standard. !! Pedigree? When? |
Forth-83 standard. !! Pedigree? When? |
| |
|
| A team led by Bill Ragsdale implemented fig-Forth on many processors in |
A team led by Bill Ragsdale implemented fig-Forth on many processors in |
| 1979. Dean Sanderson and Bill Ragsdale developed the original |
1979. Robert Selzer and Bill Ragsdale developed the original |
| implementation of fig-Forth based on microForth. |
implementation of fig-Forth for the 6502 based on microForth. |
| |
|
| |
The principal architect of microForth was Dean Sanderson. microForth was |
| |
FORTH, Inc.'s first off-the-shelf product. It was developped in 1976 for |
| |
the 1802, and subsequently implemented on the 8080, the 6800 and the |
| |
Z80. |
| |
|
| microForth appears to be a downsized version of polyForth from Forth |
All earlier Forth systems were custom-made, usually by Charles Moore, |
| Inc. for the 8080 written in the midth of the 70th. |
who discovered (as he puts it) Forth in the late 60s. |
| |
|
| A part of the information in this section comes from @cite{The Evolution |
A part of the information in this section comes from @cite{The Evolution |
| of Forth} by Elizabeth D. Rather, Donald R. Colburn and Charles |
of Forth} by Elizabeth D. Rather, Donald R. Colburn and Charles |