Volume Five
- Introduction:
- Number 1 - Lawrence P. Forsley
- Number 2 - Lawrence P. Forsley
- Number 3 - James D. Basile
- Number 4 - James D. Basile
- Letters:
- Nicholas Solntseff
- Articles:
- Fortran is Dead! Long Live Forth
- J. V. Noble
AbstractMany scientists, engineers and others using computers for numerical analysis and various forms of scientific computation have found Forth to be a strong contender as the scientific programming language of the future. One reason is that its extensibility permits Forth to handle floating-point and complex-number arithmetic as expeditiously and transparently as FORTRAN. And Forth has advantages, described below, over FORTRAN's antiquated ways.Although previous reports of FORTRAN's demise have been exaggerated, avant garde number crunchers feel that Forth is poised to displace FORTRAN as the pre-eminent number crunching language. For this to happen, the Forth community will have to accept some standards for floating-point and other "scientific" data types.
- Logarithmic Number Representation in Forth
- Dennis L. Feucht
AbstractThe log-point representation is an alternative to floating point. Whereas floating point combines linear and logarithmic scales, log point is purely logarithmic. It maintains a constant precision over its range, thus minimizing the accumulation of round-off error. Log-point characteristics are demonstrated, compared to floating-point, and a Forth implementation of a log-point word-set is provided. - A Solver for f(x) = 0
- Nathaniel Grossman
Abstract / ErrataA Brent-type solver for real equations f(x) = 0, with enhancements for root bracketing and low resolution curve sketching, is implemented in Forth-83 augmented by floating point words. - Flexible Exception Handling in Forth-83
- John Roye
AbstractThis paper presents a Forth-83 implementation of flexible exception handling. Flexibility is achieved by allowing an exception to pass a value on the data stack so that the exception handling code can determine what to do. This makes selective handling and upward propagation of exceptions easy, without reference to global variables. It also allows many exceptions to be handled by one exception handler. This Forth-83 implementation is designed to be transportable across systems since it relies on only one simple system dependent word (RP@
). - Forth Standards: An Update
- Gerald A. Shifrin
AbstractPerhaps the most important current development in Forth is the effort to develop an ANSI (American National Standards Institute) standard under the auspices of the X3 committee of the Computer and Business Equipment Manufacturers Association (CBEMA). It has been underway since October, 1986. This paper, describing the progress to date, is the first of a series. Future articles will describe future developments.This is in no way an official release from CBEMA or ANSI. The information and any opinions are solely the responsibilities of the author.
- 32 Bit RTX Chip Prototype
- Philip J. Koopman, Jr.
AbstractThis unrefereed paper was presented at the 1988 Rochester Forth Conference and has been included here at the discretion of the editors. It does not appear in the Conference Proceedings.WISC Technologies and Harris Semiconductor have jointly developed a 32-bit member of the Harris Real Time Express (RTX) family. The result is the RTX 32P, a prototype implementation of the WISC Technologies CPU/32 processor that was previously implemented using discrete components. The RTX 32P is now fabricated and operational as a 2-chip microprocessor. It is being used as a research tool for a commercially available implementation now under development.
- An Efficient Algorithm for Locating the Global Maximum of an Arbitrary Univariate Function
- Richard E. Haskell, Gabriel Castelino and Bahram Mirshab
AbstractA Forth implementation of an algorithm for locating the maximum of an arbitrary univariate function using a global search technique is presented. The algorithm is based on a method suggested by Kushner. The method discussed in this paper will not get stuck on local maxima And does not depend on the function being well-behaved or easy to calculate or measure. For the case where the value of the global maximum is known a priori (a not uncommon case) the algorithm becomes very simple and efficient. Using a discrete test function that has two local maxima with values very close to the global maximum and experiment was performed in which the location of the global maximum was shifted to all possible values within a specified fixed range of the independent variable. The average number of search points needed to locate the global maximum was found to be 12% of the total number (compared to 50% for an exhaustive search) and the maximum number of search points needed (worst case) was found to be 25% (compared to 100% for the exhaustive case). - Symbolic Stack Addressing
- Adin Tevet
AbstractData on the stack can be given symbolic names for fetching and storing while not significantly increasing execution times. Symbolic names compile addresses relative to the top of the stack, thereby avoiding the run-time cost of setting up and dismantling stack frames. Data is fetched from the stack byPICK
and stored into the stack by a new wordPOST
. The compiler can know the run-time stack height from the change in stack height induced by each word in the dictionary. - From Russia With Forth – Mahlon G. Kelly
- The Forth Language and Its Implementation
- S. N. Baranoff and N. R. Nozdrunoff
AbstractThis book is the first in Russian on Forth. This language became popular abroad (especially for personal computer programming) and attracted attention for Soviet programmers due to its methodological peculiarities. The Forth language combines the merits of both compiling and interpreting systems and is oriented for dialog usage. The book contains a great number of examples. The book is recommended to a wide community of programming engineers and may be useful for computer users without special training in programming. - Forth in the U.S.S.R.
- S. N. Baranoff
AbstractAlthough the Forth programming language was first introduced to the USSR beginning in the early 80's, several researchers had already developed systems based-upon threaded interpreters, address and text interpreters, and continuous toggling between compiling and interpreting states. The August 1980 Byte magazine issue on Forth and FIG and Laxen-Perry F83 models were the basis for subsequent work. Since then Forth has been written for a variety of computers including ones based-upon the IBM 360, DEC PDP-11 and Intel 8080 processors. It has been used for a variety of applications including symbolic computing, compiler writing, embedded applications and video games. — (Lawrence P. Forsley) - Forth for IBM Mainframe Computers
- S. N. Baranoff
AbstractThe FORTH-ES system is described. It is an implementation of the Forth language (Forth-83 standard) for the ES Ryad 1 and Ryad 2 mainframes (IBM 360 and IBM 370 compatibles). The system is substantially modular, with the same Forth nucleus running in different operating environments. - Symbolic Computations on a Personal Computer
- S. N. Baranoff
AbstractThis paper describes an approach that allowed a rather developed system for symbolic computations, SAC-2, to be moved to an IBM PC XT, with the addition of natural dialog features. The size of the compiled system diminished from 700 to 64K in size while the run-time was only doubled.
- Long Island University's 1987 Computer Technology Symposium: Knowledge Engineering Using Forth – James Basile
- Alternative Knowledge Acquisition: Developing A Pulse-Coded Neural Network
- W. B. Dress
AbstractAfter a Rip-van-Winkle nap of more than 20 years, the ideas of biologically motivated computing are re-emerging. Instrumental to this awakening have been the highly publicized contributions of Jon Hopfield and major advances in the neurosciences. In 1982, Hopfield showed how a system maximally coupled neuron-like elements described by a Hamiltonian formalism (a linear, conservative system) could behave in a manner startlingly suggestive of the way humans might go about solving problems and retrieving memories. Continuing advances in the neurosciences are providing a coherent basis in suggesting how nature's neurons might function.The paper describes a particular model for an artificial neural system designed to interact with (learn from and manipulate) a simulated (or real) environment. The model is based on early work at Sandia Laboratories by Iben Browning. The Browning model, designed to investigate computer-based intelligence, contains a particular simplification based on observations of frequency coding of information in the brain and information flow from receptors to the brain and back to effectors. The ability to act on and react to the environment was seen as an important principle, leading to self-organization of the system.
- List Processing and Object-Oriented Programming Using Forth
- Dennis L. Feucht
AbstractThe list data structure has significant advantages for symbolic computing and can be implemented easily in Forth. Primitive operations in Forth, list-space management, and list structure for object-oriented programming are briefly presented, as well as an overview of semantic networks, some of their logic, and advantages of implementing them in Forth.Some unique advantages of Forth for object-oriented programming are suggested.
- The Prolog Interpreter Algorithm
- Dennis L. Feucht
AbstractProlog is an unusual language in that it has only one procedure, the Prolog interpreter. This interpreter carries out an inference procedure that results in a depth-first search through a database of facts and rules. A Prolog program is a set of these facts and rules, or clauses. By applying the facts to the rules, new facts are generated as conclusions of the rules.
- Language Coprocessor Boosting the Execution Speed of Threaded Code Programs
- Eddy H. Debaere
AbstractThreaded code is an interpretive language implementation technique which favors execution speed and program representation size. However, it causes considerable overhead when executed on standard microprocessors. In this letter we propose a coprocessor accelerating the execution of programs represented in threaded code, while maintaining hardware and software compatibility with the existing microprocessor environment. - Parallel Forth
- John E. Dorband
AbstractThe extension of Forth into the realm of parallel processing on the Massively Parallel Processor (MPP) is described. The extended language, MPP Parallel Forth, is a derivative of Forth-83 with extensions designed by the author as philosophically similar to serial Forth as possible. This paper first discusses the MPP hardware characteristics, as viewed by the Forth programmer, and then presents a description of MPP Parallel Forth along with a detailed example developed by the author showing how the bitonic sort is implemented in this language. - An Arithmetic-Stack Processor for High Level Language Execution
- Rodney M. Goodman and Anthony J. McAuley
AbstractWe describe a 32-bit Arithmetic-Stack Processor, the ASP chip, designed to be a simple, flexible, yet powerful building block for a high level language computer.The ASP is a 3 micron CMOS chip which runs high level programs at 25 Mips, employing Forth as its machine code. It is less sophisticated than a RISC or CISC microprocessor, but when combined with the right hardware and compiler, will run procedural language programs more efficiently. The ASP is similar to a bid-slice or building block CPU, though it has a very different architecture. It therefore requires extra hardware to build a complete system, and so it would be mainly used where speed is critical. However, compared with current bit-slice or building block computers, the hardware and software design are greatly simplified.
- The Architecture of the SC32 Forth Engine
- John R. Hayes and Susan Lee
AbstractWe have designed a 32 bit microprocessor that directly executes the Forth programming language. This is the third in a series of Forth Reduced Instruction Set Computers (FRISCs). The SC32 Forth engine improves on our previous designs in its more efficient load, store, literal, and branching instructions; better support of multiplication and division; and a better approach to stack caching. The processor's instruction set consists of eight instruction types in three formats. The 32 bit wide data path contains two stack caches. The top portion of the parameter and return stacks are cached in the microprocessor to improve performance while retaining a single data path between memory and the CPU. The processor spends less than 1% of its time managing the stack caches on typical Forth programs. - Error-Free Statistics in Forth
- Leonard F. Zettel
AbstractMethods for the one-pass, error-free calculation of the mean and standard deviation of a set of numbers are presented along with code for their implementation in Forth and an accuracy analysis.
- ANS Standard Meetings:
- Minutes of X3J14 Meeting #1
- ANS Forth Technical Committee
August 3-4, 1987, Washington D.C. - Minutes of X3J14 Meeting #2
- ANS Forth Technical Committee
November 11-12, 1987, San Jose, CA - Minutes of X3J14 Meeting #3
- ANS Forth Technical Committee
February 10-12, 1988, Redondo Beach, CA - Minutes of X3J14 Meeting #4
- ANS Forth Technical Committee
May 25-28, 1988, Rochester, NY - Minutes of X3J14 Meeting #5
- ANS Forth Technical Committee
August 10-13, 1988, Portland, Oregon - Minutes of X3J14 Meeting #6
- ANS Forth Technical Committee
October 26-29, 1988, Greenbelt, Maryland
- Conference Abstracts:
- 1987 euroFORML Conference
- 1987 FORML Conference
- 1988 Australian Forth Conference
- 1988 Rochester Forth Conference / Errata
- 1988 euroFORML Conference
- 1988 ASYST International Conference
- Conference Proceedings:
- 1987 Rochester Forth Conference on Comparative Computer Architectures
- Errata
- For Number 2
- For Number 3
- Call for Papers
- 1989 Rochester Forth Conference on Industrial Applications
- 1990 ACM Special Interest Group on Forth