version 1.23, 1995/11/14 22:12:50
|
version 1.24, 1995/11/15 17:29:07
|
Line 36 Copyright @copyright{} 1995 Free Softwar
|
Line 36 Copyright @copyright{} 1995 Free Softwar
|
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} |
Line 558 can also get it from Global Engineering
|
Line 559 can also get it from Global Engineering
|
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 |
Line 1443 laden with restrictions. Therefore, we p
|
Line 1444 laden with restrictions. Therefore, we p
|
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:: |
Line 3209 file:
|
Line 3215 file:
|
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:: |
Line 3610 We used four small benchmarks: the ubiqu
|
Line 3622 We used four small benchmarks: the ubiqu
|
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). |
Line 3647 machine registers by itself and would no
|
Line 3659 machine registers by itself and would no
|
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}. |
Line 3670 to Report Bugs, gcc.info, GNU C Manual}.
|
Line 3690 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 |
Line 3678 mostly by Dietrich Weineck.
|
Line 3699 mostly by Dietrich Weineck.
|
|
|
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 |