Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!zephyr.ens.tek.com!tekcrl!tekgvs!toma From: toma@tekgvs.LABS.TEK.COM (Tom Almy) Newsgroups: comp.lang.forth Subject: Re: Mini History Keywords: FIG Message-ID: <6467@tekgvs.LABS.TEK.COM> Date: 5 Dec 89 16:09:52 GMT References: <5565@sdcc6.ucsd.edu> Reply-To: toma@tekgvs.LABS.TEK.COM (Tom Almy) Organization: Tektronix, Inc., Beaverton, OR. Lines: 92 In article <5565@sdcc6.ucsd.edu> ir230@sdcc6.ucsd.edu (john wavrik) writes: >Leo Brotzman replied: ># I presume that you are referring to FIG Forth here. The FIG model was ># precedant setting, but is no longer in widespread use. It has been quite a ># while since I used FIG Forth, but I believe that even it had certain ># implementation differences between processors. >The Forth Interest Group did a very interesting thing at about this time.They >defined a language by a model rather than a standard. Their model included a >suggested implementation. As a result, they defined, in fact, a tightly mixed >blend of language, operating system, language implementation,and mapping to a >host processor. Forth is actually the name for Siamese quadruplets! And an excellent idea! I found figFORTH to be the most portable version I ever used because the implementation was defined! Prior to figFORTH I had brief brushings with URTH (University of Rochester forTH) and STOIC, but these (along with Forth Inc's products and MMS Forth -- another early commercial entrant) were totally non portable. I used figForth implementations for 8080, Z-80, 6502, 6809, PDP-11 (and VAX using 11 emulation mode), 8086, and 68000, from different vendors, with complete code portability. I can't say the same for any Standard since. The closest I've been is to treat "F-83" as a standard (which many people do, anyway) in which case there is portability but no large group of vendors. Even with the kernel tied down there was still room for vendor value-added enhancements. A good editor, floating point, graphics, strings, decompilers, an assembler... Also good documentation. And performance could be enhanced. I switched to direct threaded (slight cost in portability) for a 20% speed improvement, as well as changing from name-first to link-first headers which halved compile time. Also, the implementation of multiplication and division (at least for the 8080) was extremely poor. >Kitt Peak VAX-Forth was a "professional" version of Forth. It had to be >installed by the computer center -- but it was equivalent in all respects >(performance, documentation, etc.) to any of the other languages we had >available. Yes, it had a lot of excellent ideas. I thought its implementation of arrays and handling of different sized data types was well thought out and to this day unequaled by any other implementation I have seen. >As it turns out, Forth-79 differed from FIG-Forth in only a few words: > > WORD -- in FIG it did not leave an address (but the address > was the end of the dictionary) > VARIABLE -- required an initial value in FIG-Forth > NUMBER -- I no longer remember the precise difference Also DO/LOOP CREATE LITERAL, there were about three packed screens of changes. I converted most of my systems to 79 Standard, too. With clever use of vocabularies (another thing that differed between fig and 79) you could run a bi-version system! >The 1983 Standards Team tried to improve the language by "fixing" things they >felt were wrong. As a result, they changed the actions of important words -- >some in subtle ways. The change in ' (tic) was up front and visible but I can >vouch for hours spent trying to track down why some '79 code did not run on >'83 (EXPECT-83 does not put a 0 at the end of input the way EXPECT-79 did). Interestingly enough, tic was originally "dumb" like it is in the 83 standard. As far as I know, fig-Forth introduced the "smart" tic. I fully agree with the elimination of state smart words since they are confusing and can lead to errors. On the other hand, the change in the definition of division was a major mistake since it made Forth different than any other language as well as any processors divide instruction! That and the ignorance of 32 bit word environments shows the 6502/8080 orientation of the 83 Standard Team. >The fact of the matter is that a good many versions of Forth, including Laxen >and Perry's F83 (which may be one of the best Forths ever written) are direct >descendants of FIG-Forth. An incredible effort. The only unfortunate aspect is that they had to cripple the multitasker so that it couldn't be used in a multi-user environment. You have to balance that against they stole the multitasking technique from the company that didn't want them to issue it multi-user. I hacked on my 8080 version to make it multi-user and ended up with a terrific 3 user version on my 5 Mhz Z-80 system. I even had a printer spooler task so that all users could share the printer (they would print by sending a command line to the printer task), and printing would then progress in the background. Each user had its own "termcap", and the CP/M 3 O.S. had disk cashing which minimized disk thrashing. Of course, nobody really cares about multi-user systems these days, but it was facinating to see it in action. Tom Almy toma@tekgvs.labs.tek.com Standard Disclaimers Apply