FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93) 
Author Message
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

  Hello!

  Welcome to the comp.lang.forth series of Frequently Asked Questions'
  Answers messages.  This is Part 00, the general overview for the rest of
  the FAQ messages.

  Disclaimer(s):
      This organization of the FAQ messages is by no means final.  If you
      have any additions, comments, complaints, corrections, suggestions,
      or ..., please send them to one of the addresses at the end of this
      message.  These messages were created by editting the previous
      version of the FAQ messages, with additional material culled from
      the ForthNet.  Please let me know if I have failed to attribute,
      or have incorrectly used or attributted, any material.

  These messages are designed to provide the answers to commonly asked
  questions about Forth, and are not intended to answer general questions
  about the Internet or Usenet.  For those questions/answers, please
  consult the messages that are periodicly posted to the newsgroups:
            news.announce.newusers
            news.newusers.questions
            news.announce.important

  Below is a list of the currently posted messages, showing the subject
  line and question list for each one.  Please note that the part numbers
  are not sequential.  These messages, including this one, are posted
  regularly on or near the 1st and the 15th of each month.

                FAQ Message Subject Lines and Question Lists:

  FAQ Answers: Part 01 (What is Forth?).
    What is Forth?

  FAQ Answers: Part 02 (organizations/publications).
    What organizations are dedicated to Forth? (and how to contact them)
    What other publications carry information, etc. about Forth?
    What other Internet/UseNet Forth mailing lists are there?

  FAQ Answers: Part 03 (ANS Forth Standard Info).
    What is this dpANS and what happened to BASIS?
    How can I send email to the ANS Forth Technical Committee?
    Where can I get a copy of the dpANS?

  FAQ Answers: Part 04 (Where can I find Forth for...).
    Where can I find a Forth for the 8051/8031?
    Where can I find a Forth for the SUN?
    Where can I find a Forth for the MAC?
    Where can I find a Forth for a DSP?
    Where can I find a Forth for a Transputer?
    Where can I find a Forth for a Tandy TRS-80?
    Where can I find a Forth written in C?
    Where can I find a Forth for playing with Music?
    What if I want to find a PD/ShareWare Forth for the BrouHaHa-7245?

  FAQ Answers: Part 05 (General Internet info).
    How can I find an anonymous FTP or email server that has "foo"? (Or, just
    Where can I find programs for Unix that can read .ARC, .ZOO and .ZIP files?

  FAQ Answers: Part 10 (ForthNet: What and how?).
    What is ForthNet?
    What are the restrictions and guidelines for ForthNet messages?
    How do I send email to some one who has posted a message on ForthNet?
    How do I access ForthNet?

  FAQ Answers: Part 11 (Libraries: Where and how?).
    What Forth libraries are available, and how can I access them?
    Getting Forth files directly from The Forth Interest Group:
    Getting Forth files via FTP:
    How do I use FTP?
    Getting Forth files via EMail:
    Getting Forth files via an EMail interface to FTP:
    Getting Forth files via EMail to FNEAS:

  FAQ Answers: Part 90 (Programmable BBS).

  FAQ Answers: Part 91 (CASE,OF,ENDOF,ENDCASE).

  FAQ Answers: Part 92 (Forth In Print).
    Where can I find "Threaded Interpreted Languages"?
    Write Your Own Programming Language Using C++
    Scientific FORTH: a modern language for scientific computing

---
If you have any questions about ForthNet/comp.lang.forth or any information
to add/delete or correct in this message or any suggestions on formatting or
presentation, please contact Doug Philips at one of the following addresses:

                  Usenet:   ...!uunet!willett.pgh.pa.us!dwp
                  GEnie:    D.PHILIPS3



Fri, 20 Oct 1995 09:18:18 GMT  
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

Where can I find a Forth for the 8051/8031?


    Subject: Re: Finding a Forth for the 8051/8031

    Date: 2 Jan 91 06:23:19 GMT


        ... <stuff> ...
    >using the 8051 for such, since (as I understand it) it is quite flexible,
        ... <stuff> ...
    >I'm a forth novice, but a native forth version of this chip would help

    In reply, I repost:

            In the years that I have been discussing Forth on USENET, one
            of the most frequently-asked questions I have received is:

                    "Where is a PD Forth for the 8051?"

            Dr. C.H. Ting's October 1990 newsletter for his "Offete
            Enterprises" samizdat house (garage, actually) contains
            the following two items:

            2104. eForth Model and 8086 Implementation, Bill Muench and
            C.H. Ting -- $25.00

    >>>>>   2105. 8051 eForth, C. H. Ting -- $25.00  <<<<<
            "A small ROM based Forth system ... Source code is in MASM (!! -jax)
            ... IBM 5.25 disk ... With 8051 eForth Implementation Note."

            The address & phone is:

                    Offete Enterprises, Inc.
                    1306 South "B" Street
                    San Mateo, CA 94402
                    (415) 574-8250

        Alternatively, EFORTH51.ZIP may be downloaded free of charge
    from the RealTime Control and Forth Board (RCFB), ( telephone number
    in the .signature below), or from the GEnie Forth Interest Group
    RoundTable (page 711).
    --


     <JAX on GEnie             >< for ANS  > \\\  /// ///====\\\   ///\\\
     <SYSOP RCFB (303) 278-0364><  Forth   >  \\\/// ///      \\\ ///  \\\

    Elizabeth Rather posted to ForthNet that Forth, Inc. has an 8051
    cross-development system, along with other Forth systems...
    Call 1-800-55FORTH for details.

    [NOTE:  You can also get EFORTH51.ZIP from FIG's library, and other
    places.  See FAQ Part 11 for more info on how to access Forth
    libraries.  -dwp]

Where can I find a Forth for the SUN?


    Subject: Forth for Sun

    Date: 9 Apr 91 01:11:31 GMT

    I know of four Forth's that run on Suns, in increasing order of price:

    a) Open Boot PROM - built-in to the SPARCstation PROMs.  Inaccessible from
      the Unix environment; you have to interrupt the boot process and
      then type "n" to get to Forth.

    b) TILE - shareware, $50 suggested contribution to Mikael Patel.
      Written in C, runs on Suns.  Available from the net, but I'm not
      sure how to get to it from your site.  Maybe somebody else knows.

    c) C Forth 83 - $75 from Bradley Forthware.  Written in C, runs on
      several machines.  Tape or floppy.

    d) Sun Forth - $200 from Bradley Forthware.  Written in metacompiled
      Forth/assembler.  Unix version of the Forth in the SPARCstation PROMs,
      with extensions.  Tape or floppy.


    [TILE is also posted to alt.sources and should be available through any
     of the alt.sources archives.  Also, see FAQ Part 11 for more info
     on accessing other libraries, many of which also have TILE available.
     -dwp]

Where can I find a Forth for the MAC?


    Subject: Forth system for MacClassic

    Date: 18 Mar 91 17:14:29 GMT

    I can recommend Mach2 Forth for the Macintosh.
    Its strong points are:
    1. inexpensive.
    2. stable.
    3. compiles to machine code so its quick.
    4. straightforward access to the Mac toolbox.
    5. menu selected templates mean windows and
      menus etc. are easy to make for the beginner.
    6. standard syntax machine code assembler.
    7. the novice programmer does not have to worry
      about implementing the Mac event loop.

    Weak points are:
    1. a rudimentary built in text editor.
    2. the Mac event loop is handled by an IO task running
      under the multitasker. This makes extensions to
      the event loop conceptually difficult.
    3. development has ceased but it will be
      supported for later Mac System releases.

    This is available mail order from:
    MacTutor,1250 N. Lakeview, Suite O, Anaheim, California 92807
    call (714) 777 1255 for credit cards
    price $90.00


    Subject: Re: Answers to Frequently Asked Questions (version 1.2)
    Date: 19 Apr 91 14:13:49 PDT (Fri)
    [Not posted, but sent by email. -dwp]

    Forthmacs by Bradley Forthware is also available for the Macintosh.
    This is the same Forth that is the basis of Sun's Open Boot firmware.
    Macintosh Forthmacs costs $50 for working disk+manual, and $50 extra for
    source code.

    Forthmacs is available for the following machines:
    Atari ST, Macintosh (I and II), OS-9, Sun (680x0 and SPARC), NeXT.


    [In addition, there are several PD/Shareware MAC Forth's available on
     many BBoard systems and other libraries.  See FAQ Parts 10 and 11 for
     more info on BBoard and library access.  -dwp]

Where can I find a Forth for a DSP?


    Subject: FORTH for DSP's

    Date: 16 Apr 91 16:22:17 GMT

    Being a FIG Contact for the Midwest and being asked about this quite a bit
    lately here'e what I found easily:

    TCOM FORTH Target Compiler by Tom Zimmer and Andrew McKewen
    has been extended for the TMS320.
        It also supports 808X, 80196 and SuperZ8

    Computer Continunun is developing a XT/AT board for the ADSP-2101 running
    FORTH.

    eFORTH has been ported to the Transputer by Bob Barr
        It also is avalable for 32b PC, 8051, 68000,
        A ADSP2100 port is being contempleted.

    Micro-K Systems produce complete AT&T DSP32 boards running FORTH
        Include the AT&T DSP library!

    There is a FORTH for most any class processor.

    Enjoy, Clyde

Where can I find a Forth for a Transputer?


    Subject: Forth for Transputers

    Date: 15 Sep 91 23:41:57 GMT

    CWPJR is interested in Forth for Transputers.

    Yes, MPE does have a Forth system for Transputers. The package
    consists of a PC-hosted (Unix if required) cross compiler (with
    source code), and the target code (all source). The code will
    run on all T2xx, T4xx, and T8xx CPUs. When the T9000 exists ...
    MPE also has compilers for [many other machines. -dwp]

    For more details MPE can be contacted on:
    voice: +44 703 631441
    fax: +44 703 339691


    Stephen

Where can I find a Forth for a Tandy TRS-80?


    Subject: Forth on the TRS-80

    Date: 4 Nov 91 17:21:46 GMT

    James Cameron writes:

    > I've got a copy of F83 for CP/M and the 8080 CPU.
    >
    > I'd like to get it running on my TRS-80's under LSDOS

    Well I know this ant quite what you want.  However, I do know that
    MMSForth is still available for the TRS-80.  Although written for
    NewDos/80 I believe that it works under LS-DOS.

    However, Misosys (Roy Soltoff) definitly does do a (cheap) Forth system
    for the TRS-80 range (including IBM compatiables) called HartFORTH
    (Pro-HartFORTH on the Model IV, HartFORTH'86 for the IBM alikes).



    Peter Knaggs            School of Computing and Maths, Teesside Polytechnic,

   {*filter*} Miller of Miller Microcomputer Services writes:
        >Miller Microcomputer Services still offers MMSFORTH V2.4 and a wide
        >variety of extension wordsets (utilities, games, word processing,
        >database, expert system and more, all parallel to the MMSFORTH
        >versions for IBM PC) for Radio Shack TRS-80 Models 1, 3, or 4/4P.
        >...The TRS-80 versions are only nonDOS.

    Contact them at:

         Miller Microcomputer Services
         61 Lake Shore Road, Natick, MA 01760-2099, USA
         Phone: 617/653-6136, 9am-9pm Eastern TZ

Where can I find a Forth written in C?

    [See some of the answers to the other questions, esp.
        Where can I find a Forth for the SUN?
        -dwp]


    Subject: Re: FORTH for NeXT/unix

    Date: 29 Sep 91 23:54:26 GMT



    >I'm looking for a FORTH interpreter to run on my NeXT.  I pulled a
    >C-FORTH from comp.sources.unix, however I'm having trouble getting
    >block i/o working (LIST, LOAD).  I plan to continue to debug this
    >version (by Allan Pratt, circa 4/85) but if someone knows of a good
    >implementation that will run on my system, I would appreciate the info.
    >Thanks...

    >--
    >Tim Rhodes
    >Sr Systems Engineer
    >{*filter*}ia Tech

    There is a new figFORTH written in C that currently runs under V7 Unix,
    Personal C Compiler, and Mix Power C.  Porting to other platforms
    should be trivial (considering the vast differences of these three
    platforms!).  That other "C-FORTH" looked pretty primitive by
    comparison.  From my recollection the author didn't know how to do
    defining
...

read more »



Fri, 20 Oct 1995 09:18:33 GMT  
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

  [This is a message that I thought deserved to be preserved.
   I invite Mr. Peters or other principles to provide updates to
   replace this message.
   -dwp]


    Subject: Report on Progrmmable BBS in Forth

    Date: 22 Mar 93 05:48:46 GMT

    Q1 How is the "Programmable BBS doing?

    It is fine.  It has graduated to full time operation as "It is    
    easier than remembering to turn it on at the right time" says    
    Levi.  He reports that we are getting about one caller a day and  
    that most of them seem to be first time callers that don't call  
    back.

    Q2 Have there been any suggestions?

    There needs to more substance there for the callers.

    Q3 What can we do to help?

    Help us improve the system, make suggestions, offer help, ask for
    a copy of the current system, set it up on your own system and
    experiment with improvements, send in the updated system.

    Q4 What are you doing to help, John?

    I am exploring a BBS that has been mailed to me by it's author,
    B0b Lee.  It is called B0badell. It is based on the Citadel group
    of BBSes.  It is a full system that is able to answer the phone,
    take a password, record messages and all the usual stuff.  The
    command  !BABY  allows the caller to shell out to another BBS
    program also provided by B0b called Baby.  Baby is a simple
    little BBS written in Forth.  The advantage of switching to
    B0badell from WildCat is that when B0badell runs an application
    like Baby, access to DOS is sealed off.  We have not published
    the passwords that allow the caller to run F-PC based FBBS from
    Boyan on the current system because of that risk.

    Q5  What is the configuration of the current system?

    It is a XT with 40M of hard disk.  It is dedicated to the BBS
    along with a dedicate phone line.  It runs at 1200 and 2400 I
    believe.  There is a chance of it being upgraded to a 386.  The
    electricity and phone bills are paid by the Berkeley Fig Chapter
    and the operation is handled by Levi from his home in Novato, CA.

    Q6  Is it the "Programmable BBS" or is it the "Educational BBS"?

    It is the "Programmable BBS", as the goal is to make the source
    available to the caller so that any one can work on improving the
    system.  If there are several versions submitted we will have a
    menu of up to about 15 or 16 (Hmmm familiar number) versions with
    a method of recording how much time is spent by callers in each
    version as well as the callers votes as to their preferences and
    their reasons and suggestions.  

    This will bring up the challenge of group programming.  That is,
    what is the most workable way to merge several improvements in to
    one project when the programmers are not located in the same city
    or state?  We may need version control software and a utility
    that show the differences between two versions of a program.

    Q7  Can I try out B0badell

    Yes  B0badel' home BBS is the Interface BBS at (707) 544-9661
         The Programmable BBS is at (415) 892-1543 24 hrs
         I am John Peters.  I am at (415) 239-5393 Voice

    Q8 Will the Programmable BBS carry the Forth Net?

    Not right away, as it is not on the critical path between where
    we are today and the goal of becoming better than some of all the
    other systems.  However if we are able to write a Quick packet
    version in Forth then why not...
---
If you have any questions about ForthNet/comp.lang.forth or any information
to add/delete or correct in this message or any suggestions on formatting or
presentation, please contact Doug Philips at one of the following addresses:

                  Usenet:   ...!uunet!willett.pgh.pa.us!dwp
                  GEnie:    D.PHILIPS3



Fri, 20 Oct 1995 09:18:46 GMT  
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

  [This is a message that I thought deserved to be preserved.  -dwp]


    Subject: Re: Wanted .. CASE,OF,ENDOF,ENDCASE

    Date: 25 Nov 92 16:42:55 GMT




    |>
    |>
    |>
    |> >  Can anyone help with source ( masm/forth) to the CASE statement
    |> >  word set. I.E .... CASE OF ENDOF ENDCASE ....
    |>
    |>       Baden's CASE is in FORTH Dimensions VIII/5.
    |>
    |>       Eaker, who wrote and enduring CASE construct, checks into
    |> this newsgroup once and a while. Charles?
    |>
    |>               =jax=
    |> --

    |>  # du!isis!koscej!jax        # # X3J14 TC # #  Forth Interest Group #
    |>  # JAX on GEnie              # # for ANS  # #   P.O. Box 8231       #
    |>  # SYSOP RCFB (303) 278-0364 # #  Forth   # #    San Jose CA 95155  #

    1. FIG-Forth
    Here is the source for FIG-Forth published with the original article
    (Forth Dimensions, Vol. II, No. 3, pp. 37-40.). The ?PAIRS word was
    FIG-Forth's way of implementing a small amount of syntax checking.


         : OF       4 ?PAIRS COMPILE OVER COMPILE = COMPILE OBRANCH
                    HERE 0 ,   COMPILE DROP  5 ; IMMEDIATE
         : ENDOF    5 ?PAIRS COMPILE BRANCH HERE 0 ,
                    SWAP 2 [COMPILE] ENDIF 4 ; IMMEDIATE
         : ENDCASE  4 ?PAIRS COMPILE DROP

                      WHILE 2 [COMPILE ENDIF REPEAT
                    CSP ! ; IMMEDIATE

    1a. Here is additional source for FIG-Forth published in Forth
    Dimensions, Vol. III, No. 6, pp. 187-188 in an article by Alfred J.
    Monroe.  He adds a primitive compiled by OF which reduces the amount
    of code compiled by OF. Use the definitions of CASE, ENDOF, and
    ENDCASE given above.

         : (OF)     OVER = IF DROP 1 ELSE 0 ENDIF ;
         : OF       4 ?PAIRS COMPILE (OF) COMPILE 0BRANCH
                    HERE 0 , 5 ; IMMEDIATE

    Mr. Monroe also gave code for some interesting variants:

         : (<OF)    OVER > IF DROP 1 ELSE 0 ENDIF ;
         : <OF      4 ?PAIRS COMPILE (<OF) COMPILE 0BRANCH
                    HERE 0 , 5 ; IMMEDIATE
         : (>OF)    OVER > IF DROP 1 ELSE 0 ENDIF ;
         : >OF      4 ?PAIRS COMPILE (>OF) COMPILE 0BRANCH
                    HERE 0 , 5 ; IMMEDIATE
         : RANGE    >R OVER DUP R> 1+ < IF SWAP 1- > IF DROP 1 ELSE 0
                    ENDIF ELSE DROP DROP 0 ENDIF ;
         : RNG-OF   4 ?PAIRS COMPILE RANGE COMPILE 0BRANCH
                    HERE 0 , 5 ; IMMEDIATE

    1b. It is quite common to define (OF) as a CODE word and have
    it combine the functions of the run-time (OF) and the compile-time
    0BRANCH in the previous definitions. This reduces the amount of
    compiled code even more.
         CODE (OF) ( 1. Remove the top element of the stack and call it A.
                     2. If A equals the new top element of the stack,
                            remove the new top element of the stack,
                            skip over the branch vector, and execute
                            the code which follows it.
                        Else
                            continue execution at the location indicated
                            by the branch vector.
                    ) END-CODE
         : OF      4 ?PAIRS COMPILE (OF) HERE 0 , 5 ; IMMEDIATE

    2. dpANS-3
    dpANS-3 contains the following definitions (p. 133) to illustrate
    control structure extension. Note that it would be quite easy to
    optimize OF along the lines suggested above. Note also that there is no
    syntax checking.  These words may appear anywhere and not necessarily
    combined with each other. In fact, ENDOF may be dispensed with entirely
    and replaced with ELSE. Compile-time monitoring of the syntax of
    control structure words is a perennial Forth problem.

         0 CONSTANT CASE IMMEDIATE  ( init count of OFs )

         : OF  ( #of -- orig #of+1 / x -- )
            1+    ( count OFs )
            >R    ( move off the stack in case the control-flow )
                  ( stack is the data stack. )
            POSTPONE OVER  POSTPONE = ( copy and test case value )
            POSTPONE IF    ( add orig to control flow stack )
            POSTPONE DROP  ( discards case value if = )
            R> ;           ( we can bring count back now )
         IMMEDIATE

         : ENDOF  ( orig1 #of -- orig2 #of )
            >R    ( move off the stack in case the control-flow )
                  ( stack is the data stack. )
            POSTPONE ELSE
            R> ;  ( we can bring count back now )
         IMMEDIATE

         : ENDCASE ( orig 1..orign #of -- )
            POSTPONE DROP  ( discard case value )
            0 ?DO
              POSTPONE THEN
            LOOP ;
         IMMEDIATE

    --
    Chuck Eaker / P.O. Box 8, K-1 3C12 / Schenectady, NY 12301 USA

---
If you have any questions about ForthNet/comp.lang.forth or any information
to add/delete or correct in this message or any suggestions on formatting or
presentation, please contact Doug Philips at one of the following addresses:

                  Usenet:   ...!uunet!willett.pgh.pa.us!dwp
                  GEnie:    D.PHILIPS3



Fri, 20 Oct 1995 09:18:50 GMT  
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

What is Forth?

 ------------------------------------------------------------

 Philip J. Koopman Jr.
 United Technologies Research Center, East Hartford, CT

 This description is copyright 1993 by ACM, and was developed
 for the Second History of Programming Languages Conference
 (HOPL-II), Boston MA.

 Permission to copy without fee all or part of this material
 is granted, provided that the copies are not made or
 distributed for direct commercial advantage, the ACM
 copyright notice and the title of the publication and its
 data appear, and notice is given that copying is by
 permission of the Association for Computing Machinery.  To
 copy otherwise, or to republish, requires a fee and/or
 specific permission.

 ------------------------------------------------------------

                 A BRIEF INTRODUCTION TO FORTH
                 -----------------------------

      Forth is both an extensible language and an interactive
 program development methodology.  Originally developed for
 small embedded control mini- and micro-computers, Forth
 seems to have been implemented on every major processor
 manufactured.  It has been used in a wide variety of
 applications, including spreadsheets, expert systems, and
 multi-user databases.

 TWO-STACK ABSTRACT MACHINE

      At the most superficial level, Forth is a directly
 executable language for a stack-based abstract machine.  In
 its essential form, the Forth abstract machine has a program
 counter, memory, ALU, data evaluation pushdown stack, and
 subroutine return address pushdown stack.

      Data evaluation in Forth is accomplished on the Data
 Stack using Reverse Polish Notation (RPN), also called
 postfix notation.  For example, the following sequence typed
 from the keyboard:

      3 4 +  5 *  .  __35 ok__

 interactively pushes the value 3 on the stack, pushes the
 value 4 on top of the 3, destructively adds 3 and 4 to get
 7, then multiplies by 5.  The . operation displays the
 single resultant top value on the stack, 35 (computer output
 is underlined).  "ok" is the Forth command prompt.
 Operations such as SWAP and DUP (duplicate) reorder and
 replicate the top few Data Stack elements.

 FACTORING

      At a deeper level, Forth programs use RPN not as an end
 in itself, but rather as a means to achieve simple syntax
 and flexible modularity.  Small, simple programs to perform
 complex functions are written by reusing common code
 sequences through a programming practice known as factoring.

      Subroutine calls and returns are an important part of
 Forth programs and the factoring process.  As an example,
 consider the following function (called a word in Forth)
 which computes the sum of squares of two integers on top of
 the Data Stack and returns the result on the Data Stack:

 : SUM-OF-SQUARES   ( a b -- c )   DUP *   SWAP   DUP *  +  ;

 The Data Stack inputs to the word at run-time are two
 integers a and b.  The Data Stack output is a single integer
 c.  The : denotes a function definition with the name SUM-
 OF-SQUARES.  The ; terminates the definition.  Comments are
 enclosed in parentheses.  This example follows the Forth
 convention of including a stack-effect comment showing that
 a (the second stack element) and b (the top stack element)
 are consumed as stack inputs, with c produced as the stack
 output.

      By the process of factoring, the example program would
 be re-written in Forth using a new definition (a factor)
 called SQUARED to allow sharing the common function of
 duplicating and multiplying a number on the Data Stack.  The
 separation of the Return Stack from the Data Stack in the
 abstract machine allows the values on the Data Stack to be
 cleanly passed down through multiple levels of subroutine
 calls without run-time overhead.  In this new version, Data
 Stack elements are implicitly passed as parameters from SUM-
 OF-SQUARES to SQUARED:

 : SQUARED   ( n -- n**2 )     DUP *  ;
 : SUM-OF-SQUARES   ( a b -- c )  SQUARED  SWAP SQUARED  +  ;

      Good Forth programmers strive to write programs
 containing very short (often one-line), well-named word
 definitions and reused factored code segments.  The ability
 to pick just the right name for a word is a prized talent.
 Factoring is so important that it is common for a Forth
 program to have more subroutine calls than stack operations.
 Factoring also simplifies speed optimization via replacing
 commonly used factors with assembly language definitions.
 In the preceding example, SQUARED could be re-written in
 assembly language for speed while maintaining the same stack
 effects.

      Writing a Forth program is equivalent to extending the
 language to include all functions needed to implement an
 application.  Therefore, programming in Forth may be thought
 of as creating an application-specific language extension.
 This paradigm, when coupled with a very quick
 edit/compile/test cycle, seems to significantly increase
 productivity.  As each Forth word is written, it can be
 tested from the keyboard for immediate programmer feedback.
 For example, the definitions above could be summarily tested
 with:

 3 SQUARED .   __9 ok__
 3 4 SUM-OF-SQUARES .   __25 ok__

 INTERPRETATION, COMPILATION AND EXECUTION

      Forth systems use two levels of interpretation: a text
 interpreter and an address interpreter.  When accepting
 keyboard or file-based input, the text interpreter extracts
 whitespace-separated character strings.  In interpretation
 mode it attempts to execute the corresponding words (numeric
 input is trapped and converted as a special case).  : is a
 word like any other, but creates a new dictionary entry
 containing the word name (symbol) and places the text
 interpreter into compilation mode.  While in compilation
 mode, most words extracted from the input stream are
 compiled to a pointer to the word's definition in the
 dictionary instead of being executed.

      A compiled Forth program is a collection of words, each
 of which contains a statically allocated list of pointers to
 other words.  Ultimately the pointers lead to assembly
 language primitives, some of which are typically user-
 written.  The Forth address interpreter is used to execute
 compiled words, classically using threaded code techniques.
 The Forth text interpreter, while not used in executing
 compiled programs, is often included in applications as the
 basis of a command-line user interface.

      Forth systems use one-pass compilation.  There is no
 explicit Forth parser (and, for practical purposes, no
 formal grammar).  Control flow words have a special
 immediate attribute, and are executed immediately even when
 the text interpreter is in compilation mode.  Immediate
 words, when executed, typically cause compilation of special
 structures.  For example, IF compiles a branch conditional
 upon the top runtime Data Stack value, and the matching THEN
 (the "endif" word) back-patches the branch target address.
 Users can readily create their own immediate words, thus
 extending the compiler by adding new control flow structures
 or other language features.

      Data structures are created by another special class of
 words: defining words.  Defining words have two parts: the
 CREATE clause creates the dictionary entry for the data
 structure instance, while the DOES> clause is a definition
 shared by all data structures created by that defining word.
 For example, an array defining word creates a named array
 and reserves storage with its CREATE clause, and computes an
 address (given indices) in its DOES> clause.  Defining words
 are commonly used to hide data structure implementations and
 to create families of similar words.

      Forth programmers traditionally value complete
 understanding and control over the machine and their
 programming environment.  Therefore, what Forth compilers
 don't do reveals something about the language and its use.
 Type checking, macro preprocessing, common subexpression
 elimination, and other traditional compiler services are
 feasible, but not included in production Forth compilers.
 This simplicity allows Forth development systems to be small
 enough to fit in the on-chip ROM of an 8-bit
 microcontroller.  On the other hand, Forth's extensibility
 allows "full-featured" systems to consume over 100K bytes
 and provide comprehensive window-based programming
 environments.  Forth also allows (and often encourages)
 programmers to completely understand the entire compiler and
 run-time system.  Forth supports extremely flexible and
 productive application development while making ultimate
 control of both the language and hardware easily attainable.

 Philip J. Koopman Jr.
 United Technologies Research Center, East Hartford, CT

 This description is copyright 1993 by ACM, and was developed
 for the Second History of Programming Languages Conference
 (HOPL-II), Boston MA.

 Permission to copy without fee all or part of this material
 is granted, provided that the copies are not made or
 distributed for direct commercial advantage, the ACM
 copyright notice and the title of the publication and its
 data appear, and notice is given that copying is by
 permission of the Association for Computing Machinery.  To
 copy otherwise, or to republish, requires a fee and/or
 specific permission.

---
If you have any questions about ForthNet/comp.lang.forth or any information
to add/delete or correct in this message or any suggestions on formatting or
presentation, please contact Doug Philips at one of the following addresses:

                  Usenet:   ...!uunet!willett.pgh.pa.us!dwp
                  GEnie:    D.PHILIPS3



Fri, 20 Oct 1995 09:18:22 GMT  
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

What is this dpANS and what happened to BASIS?

    dpANS is a draft proposed Ansi National Standard.  The BASIS documents
    were the internal working documents of the Forth Technical Committee
    X3.J14.  Prior to this, to my knowlege, the internal working documents
    of any ANSI Technical Committees were not released to the public.
    X3.J14 broke new ground by not only making those documents available,
    but by making them available electronicly.  X3.J14 has now made the
    Forth dpANS available for public review.  While the first two dpANS
    documents were only available in print form, the 3rd is now available
    electronicly.  See below for more info on dpANS 3.

How can I send email to the ANS Forth Technical Committee?

    You can also submit comments electronicly:
    For those of you worried about mail getting thru to ANSI by Feb.  25,
    I'm happy to report that it is possible to EMAIL public review
    responses.  X3 has a new CompuServ account.  From whatever board you're
    on, it's presumably possible to address CompuServ; having figured out
    how to do that, address your mail to:
        Lynn Barra, X3, c/o Dan Arnold, 75300,2354
    If there's not enuf address space to list both names, just use Dan &
    reference Lynn in the message.  Be sure the message clearly states up
    front that it is a public review response to dpANS Forth.
    [Information supplied by Elizabeth Rather via ForthNet]


    Notice that the ',' changes to a '.' and that there is an
    'e' at the end of compuserve.

Where can I get a copy of the dpANS?


    Subject: Third Public review for dpANS

    Date: Thu, 8 Apr 1993 21:58:46 GMT

    Here is the press release for the third public review period for
    dpANS Forth

    Further information about the experimental electronic review procedures
    will follow in a separate message.
    [Note:  Due to size, that other message is not going to be part of the
            FAQ messages.  It was merely a copy of READMEd5.txt which can
            be obtained as explained below.  -dwp]

    Mitch Bradley, X3J14 acting Vice Chair

         -----------------------------------

    Accredited Standards Committee
    X3, Information Processing Systems*

    Doc No.:        X3/93-0863-X O
    Date:   April 2, 1993
    Project:        610-D
    NEWS RELEASE    Reply To:       Lynn Barra
    (202) 626-5738

    *Operating under the procedures of the American National Standards Institute
    X3 Secretariat, Computer and Business Equipment Manufacturers Association
    (CBEMA)
    1250 Eye Street NW, Suite 200, Washington DC  20005-3922
    Telephone:  (202)737-8888(Press 1 twice)   FAX:  (202)638-4922

    X3 Announces the Third Public Review and Comment Period on
    X3.215:199x, Programming Language FORTH

    Washington, D.C. -- Accredited Standards Committee X3, Information
    Processing Systems announces the two-month public review of
    X3.215-199x, Programming Language FORTH. The comment period
    extends from April 2, 1993 through June 1, 1993.

    The purpose of this standard is to promote portability of Forth
    programs for use on a variety of computing systems, to facilitate
    communication of programs, programming techniques, and ideas among
    Forth programmers, and to serve as a basis for future evolution of
    the Forth language.  The standard specifies the forms that a
    program written in the Forth language may take and the rules for
    interpreting the meaning of a program and its data.

    This third public review is being issued due to technical changes
    in the draft standard as a result of comments received during the
    second pubic review.

    On an experimental basis, an electronic public review of
    X3.215:199x is also being conducted using Internet and CompuServe.
    The dpANS is accessible in each environment, and the review is
    supported by an Internet mail group.  In addition, for the first
    time X3 is permitting the electronic submission of public review
    comments as a part of this experiment.

    To obtain the dpANS using CompuServe you must first be a member of
    OASIS which can be done by contacting Dan Arnold at (202) 626-5738
    to receive a sign-up kit.  Once you are a member, you should type
    GO XCB. The file is located in the X3 Bulletin Board in the X3J14
    dpANS Library.

    On Internet, use anonymous FTP with host playground.sun.com to
    obtain the file/pub/incoming/READMEd5.txt which defines procedures
    that must be used during this review period.  If you are unable to

    notifying the TC of your problem.  The ReadMe file will be sent to
    you.

    Please note the electronic public review and the corresponding
    procedures are experimental.  Comments on this process are also
    welcome.

    The comment period ends on June 1, 1993.  Please send all comments
    to: X3 Secretariat,
        Attn.: Lynn Barra,
        1250 Eye Street NW, Suite 200,
        Washington, DC 20005-3922.
    Send a copy to: American National Standards Institute,
                    Attn.: BSR Center,
                    11 West 42nd St.  13th Floor,
                    New York, NY 10036.

    Purchase this standard in hardcopy format from:

                Global Engineering Documents, Inc.
                15 Inverness Way
                East Englewood, CA 80112-5704
                1-800-854-7179 (within USA)
                303-792-2181 (outside USA)

    Single Copy Price: $50.00 International Price: $65.00

    # # # # #

    Distribution:
      75300,2665


---
If you have any questions about ForthNet/comp.lang.forth or any information
to add/delete or correct in this message or any suggestions on formatting or
presentation, please contact Doug Philips at one of the following addresses:

                  Usenet:   ...!uunet!willett.pgh.pa.us!dwp
                  GEnie:    D.PHILIPS3



Fri, 20 Oct 1995 09:18:29 GMT  
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

  [Note, there are many other entries that could be added here.  I don't
  have the time to type in a bibliography.  Please send me materials that
  you consider worthy of mention.  I would also like to be able to include
  your comments about why a particular selection is worthy.  Remember:
  Some of the readers of this message do not know the "big names", either
  as regards book titles or authors.
  -dwp]

Where can I find "Threaded Interpreted Languages"?

      General consensus seems to be that this book is out of print, but
      sometimes available from booksellers or used book places.  

      G.LEFAVE [Gene] (on GEnie) provides this bibliographic info:

        Threaded Interpretive Languages
         R.G. Loeliger

        BYTE BOOKS, 1981, ISBN:0-07-038360-X

Write Your Own Programming Language Using C++


        provides this info:

        "Write Your Own Programming Language Using C++", by Norman Smith,
        ISBN 1-55622-264-5,
        published by Wordware Publishing, Plano, Texas,
        1-800-229-4949, $15.

        This book presents a minimal Forth implementation called Until, for
        UNconventional Threaded Interpretive Language.  Until is designed
        to be used as a macro language embedded in other applications.  It
        can both call and be called by other C functions.

Scientific FORTH: a modern language for scientific computing


        provides this info:

        The book "Scientific FORTH: a modern language for scientific
        computing" by Julian V. Noble (ISBN 0-9632775-0-2) is
        available from FIG in the USA, as well as directly from the
        publisher,

                    Mechum Banks Publishing
                    P.O. Box 335
                    Ivy, {*filter*}ia 22945
                    USA

        for $49.95 + $3.00 s/h (continental USA).

        In Europe it may be purchased from

                    MicroProcessor Engineering, Ltd
                    133 Hill Lane
                    Shirley, Southampton SO1 5AF
                    United Kingdom
                    fax 44 703 339691

        While not intended for the Forth novice, Scientific FORTH
        contains a good many serious examples of Forth programming
        style, useful programs, as well as innovations intended to
        simplify number crunching in Forth.  It can now be found in
        the libraries of several major universities (Yale, U. of Chi-
        cago, Rockefeller U., e.g.) and government and industrial
        laboratories ( Fermilab, Motorola, e.g.).  It comes with a
        disk containing all the pro- grams discussed in the book.  An
        update file has recently been posted to GEnie/FIG.
---
If you have any questions about ForthNet/comp.lang.forth or any information
to add/delete or correct in this message or any suggestions on formatting or
presentation, please contact Doug Philips at one of the following addresses:

                  Usenet:   ...!uunet!willett.pgh.pa.us!dwp
                  GEnie:    D.PHILIPS3



Fri, 20 Oct 1995 09:18:53 GMT  
 FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

How can I find an anonymous FTP or email server that has "foo"? (Or, just
    what is "archie" anyway?)


    Subject: How to find FTP sites

    Date: 28 May 91 20:44:55 GMT

    The question often arises: where can I get "foo" via anonymous FTP (FTP
    is the Internet File Transfer Protocol)?

    There is a nice database listing Internet archives; you can access it via
    Telnet.  Here's how:

           telnet quiche.cs.mcgill.ca

           login% archie
           (Lots of introductory messages; use "help" to learn more)
           archie> prog forth

    The "prog forth" query lists over 100 Forth things available on various
    FTP sites.  I searched the listing for "atari", and found 2 places where
    Forthmacs is available:

           watserv1.waterloo.edu  /micro/atari-st/forthmac.arc
           terminator.cc.umich.edu  /atari/languages/forth.arc

    Obviously, you can look for other things besides Forth; I have used archie
    to find all sorts of things.


    (Thanks to John Gilmore for telling me about archie)


    Subject: Re: How to find FTP sites

    Date: 30 May 91 12:26:11 GMT
    Organization: STX/GSFC Nasa


    with the word help in the message body or the request prog <what you
    want to look for> in the message body.

    bruce
    --

    NASA/GSFC/STX/Code 664

Where can I find programs for Unix that can read .ARC, .ZOO and .ZIP files?



       >Does unzip and unarc src for unix exist anywhere?
       >or can I get the definitions to write my own?

    You can find them on SIMTEL20 (WSMR-SIMTEL20.ARMY.MIL) and in the
    SIMTEL20 mirror on wuarchive.wustl.edu.  Because the exact file names
    often contain version numbers, I'm not including the file names
    here, only the directory names.  Check out 00-index.txt in the
    directories for specific info and what file is what.  On SIMTEL-20,
    look in directories:
                PD6:<UNIX-C.ARC-PROGS>     (.arc and .zoo)
                PD6:<UNIX-C.FILE-MGMT>       (.zip)
    On wuarchive, look in directories:
                /mirrors/unix-c/arc-progs
                /mirrors/unix-c/file-mgmt

    If you have email only access, please see the other regularly
    posted message for how to access FTP archives via email.

    You might also try using the archie server to find other sites
    that have these programs.  (See previous question).
---
If you have any questions about ForthNet/comp.lang.forth or any information
to add/delete or correct in this message or any suggestions on formatting or
presentation, please contact Doug Philips at one of the following addresses:

                  Usenet:   ...!uunet!willett.pgh.pa.us!dwp
                  GEnie:    D.PHILIPS3



Fri, 20 Oct 1995 09:18:37 GMT  
 
 [ 23 post ]  Go to page: [1] [2]

 Relevant Pages 

1. FAQ Answers: Part 00 (FAQ overview). (V1.4:17.Apr.93)

2. FAQ Answers: Part 00 (FAQ overview). (V1.3:02.Mar.93)

3. FAQ Answers: Part 00 (FAQ overview). (V1.3:02.Mar.93)

4. FAQ Answers: Part 00 (FAQ overview). (V1.2:04.Feb.93)

5. FAQ Answers: Part 00 (FAQ overview). (V1.1:30.Jan.93)

6. Forth FAQ Answers: Part 00 (FAQ overview). (V1.0:01.Jan.93)

7. Forth FAQ Answers: Part 00 (FAQ overview). (V1.0:01.Jan.93)

8. - FAQ.txt [00/02] Smalltalk FAQ

9. FAQ: comp.lang.modula2 - v1.0 93.1.1

10. October, 93 comp.lang.logo FAQ, Part 2 of 2

11. October, 93 comp.lang.logo FAQ, Part 1 of 2

12. FAQ Answers: Part 04 (Where can I find Forth for...). (V1.2:17.Ap

 

 
Powered by phpBB® Forum Software