wmb@sun.UUCP (06/10/83)
The latest FORTH standard is FORTH-83, not FORTH-82. The differences between FORTH-83 and FORTH-79 are more than just the renaming of a few words according to current whim. I will not attempt to give a complete list of differences here, but I want to mention a few important semantic points. The FORTH-83 standard (not yet published, I think) should be consulted for complete information. Also, Forth Dimensions (the magazine of the Forth Interest Group) has been running a column by Bob Smith which details some of the FORTH-83 issues, one issue per Forth Dimensions issue. 1) Mono-addressing. A number of old words (e.g. ' FIND EXECUTE) return or expect the address of a FORTH word. Some of them deal with a parameter field address (PFA), and some with a code field address (CFA). This is both an annoyance and a portability problem, since the relationship between PFA's and CFA's is installation (actually implementation) dependent. FORTH-83 solves this problem by specifying that all these words refer to a "compilation address", which is the same as a CFA for most implementations. 2) DO ... LOOP The old DO ... LOOP has the problem that when the loop index crosses the boundary between 32767 and 32768, unexpected things happen. This makes DO ... LOOP of dubious value for looping over addresses. The new DO ... LOOP fixes this problem. Also, the word LEAVE now causes immediate termination of the loop instead of waiting until LOOP is encountered. This is a lot more intuitive. There are a lot more changes, most of which are widely endorsed by serious FORTH programmers. FORTH-79, while a laudable attempt at standardization, has a number of very serious flaws which make it very frustrating for writing real programs in a portable fashion. I believe that a number of FORTH-83 implementations will be soon forthcoming. I know of several that are in the works. Mitch Bradley