Answers to Frequently Asked Questions (version 1.8, 15-Jan-92) 
Author Message
 Answers to Frequently Asked Questions (version 1.8, 15-Jan-92)

                    Last updated on 15 January 1992.

If you have corrections, clarifications, additions, comments or
updates, please send them to one or more of the addresses at the end
of this note.

This is the second of two regularly posted articles to comp.lang.forth.
Both of these messages are posted on or about the 1st and the 15th of
each month.  The other article's subject is:

        Forth On-line Resource/Technical Help Letter

It describes what ForthNet is and how to access it.  It may be helpful
to read it before reading this message.

List of questions answered, in order of appearance, (*) denotes new or
modified entries:

    How can I contact FIG (Forth Interest Group)?
    What other organizations and publications write about,
            sponsor or promote Forth?
    What other Internet/UseNet Forth mailing lists are there?
    Where can I find the latest BASIS for ANSI Forth?
    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?
    How can I find an anonymous FTP or email server that
        has "foo"?  (Or, just what is "archie" anyway?)
(*) Where can I find programs for Unix that can understand
        .ARC, .ZOO and .ZIP files?
    What if I want to find a PD/ShareWare Forth for the BrouHaHa-7245?

QUESTION:       How can I contact FIG (Forth Interest Group)?

ANSWER:         Forth Interest Group
                P.O Box 8231
                San Jose, CA  95155
                (408) 277-0668
                (408) 286-8988 FAX
                [Information supplied by Dennis Ruffer]

QUESTION:       What other organizations and publications write about,
                sponsor or promote Forth?

ANSWER:         The Computer Journal
                P. O. Box 12
                S. Plainfield, NJ  07080-0012
                - U. S. A. -  
                Phone: (US access) 908-755-6186
                ISSN # ????

                Association for Computing Machinery
                Special Interest Group on Forth (SIGForth)
                11 West 42nd St.
                New York, NY 10036 USA
                (212)869-7440
                ISSN # ????
                [ACM info supplied by Alan T. Furman]

                The Journal of Forth Application and Research [JFAR]
                The Institute for Applied Forth Research, Inc.
                70 Elmwood Avenue
                Rochester, NY  14611 USA
                ISSN #0738-2022
                [JFAR info is from 1989, please correct me if it has
                 changed.  -dwp]

                Dr. Dobb's Journal has the occasional article or two.
                PO Box 56188
                Boulder, CO  80322-6188  USA
                800-456-1215 (USA and Canada)
                303-447-9330 (All other countries)
                ISSN # 1044-789X

                Embedded Systems Programming has the occasional article.
                Embedded Systems Programming
                Miller Freeman Publications
                600 Harrison St.
                San Francisco, CA 94107
                (415) 905-2200

                [E.S.P. info courtesy of Jack Woehr and Paul Zander]

                Mountain View Press
                Box 429 Route 2
                La Honda, CA 94020  USA
                voice/fax/modem (via menu)  (415) 747-0760
                [ MVP info curtesy of Phil Koopman]

QUESTION:       What other Internet/UseNet Forth mailing lists are there?

ANSWER:

Quote:

>Subject: Forth Education List


>Organization: McMaster University, Hamilton, Ontario, Canada
>Date: Thu, 4 Jul 1991 20:12:59 GMT

><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>    
><<<                                                                    >>>
><<<   FFFFF                       H           EEEEE   DDDDD   U   U    >>>
><<<   F                      T    H           E       D    D  U   U    >>>
><<<   F       OOO   R RRR  TTTTT  HHHH        E       D    D  U   U    >>>
><<<   FFFF   O   O  RR       T    H   H  ==   EEEE    D    D  U   U    >>>
><<<   F      O   O  R        T    H   H  ==   E       D    D  U   U    >>>
><<<   F      O   O  R        T    H   H       E       D    D  U   U    >>>
><<<   F       OOO   R        T    H   H       EEEEE   DDDDD    UUU     >>>
><<<                                                                    >>>
><<<   Forth Education Working Group List     Vol. 1  No. 1  July 1991  >>>
><<<                                                                    >>>
><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>    

>The annual Working Group on Forth Education was held at the 1991 Rochester
>Forth Conference.  As chairman of the group, I pointed out that apart from
>some activity resulting from the  1990 Working Group,  notably on the part
>of Jack Brown  of BCIT,  there was very little carry over from one year to
>the next. So, I volunteered to start and administer a Forth Education List
>on Internet.  I have now decided to publish an electronic newsletter--more
>or less regularly--and this is it!

>This issue is being sent to some of the people who attended the 1991 FEWG,
>namely, those who gave me their electronic addresses. You can subscribe to
>the list by sending an e-mail request to


>Contributions to the newsletter can be sent (for editing) to


>Submissions to the list can be sent to


>Topics for both types of submissions that have been suggested at the WG
>include

>     * Forth textbooks
>     * Educational Forth boards
>     * Forth teaching resources
>     * Teaching the ANSI Standard Version of Forth
>     * How to increase programming productivity through education
>     * Boot Prom educational materials
>     * anything else impinging on education and Forth

>Nicholas Solntseff
>Department of Computer Science and Systems
>McMaster University
>Hamilton, Ontario
>Canada
>L8S 4K1
>1-416-525-9140 xtn 3443
>**

QUESTION:       Where can I find the latest BASIS for ANSI Forth?

ANSWER:         As of this writing the latest version of BASIS is 17.
                You can get it from FIG's library on GEnie.
                You can order a printed copy from FIG (see above for
                  how to contact FIG).
                You can FTP a copy from cpsc.ucalgary.ca, anonymous FTP,
                    directory /pub/forth, file basis17.arc.
                You can get a copy emailed from FNEAS:

                    To do so you *MUST* include in the BODY of your message:
                        your email address relative to the Internet
                    AND the name of the file you want
                        (in this case BASIS17.ARC)

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

ANSWER:

- Show quoted text -

Quote:

>Newsgroups: comp.lang.forth
>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   >  \\\/// ///      \\\ ///  \\\


                                    'uunet!willett!fneas'.
To do so you *MUST* include in the BODY of your message:
     your email address relative to the Internet
AND  the name of the file you want (in this case EFORTH51.ZIP).


QUESTION:       Where can I find a Forth for the SUN?

ANSWER:

- Show quoted text -

Quote:

>Newsgroups: comp.lang.forth
>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.


                                        'uunet!willett!fneas'.
To do so you *MUST* include in the BODY of your message:
     your email
...

read more »



Sun, 03 Jul 1994 20:13:40 GMT  
 Answers to Frequently Asked Questions (version 1.8, 15-Jan-92)

writes:
|> Uwe Kloss asks about performance comparisons with various implementation
|> techniques.  According to Guy Kelly's research (published in FD Jan/Feb)
|> there's relatively small (but some!) difference on a PC.  But on "strange"
|> chips such as the Forth processors as well as RISCs, the difference can be
|> very large, as much as x10.

I have done some empirical measurements in order to exorcise another
RISC myth. For the hasty ones, here are the numbers:

                           R3000                   68040
                        Time    Factor          Time    Factor
subroutine threading    19.8s   1.12            38.3s   1.72
direct threading        17.7s   1.00            22.3s   1.00
indirect threading      25.8s   1.46            30.1s   1.35
switch threading        46.5s   2.63            63.5s   2.84

And here are the explanations:

The RISC machine is the DECStation 5000/125 under Ultrix 4.2, which
uses a 25MHz R3000. The CISC is a HP/Apollo 425 under Domain/OS 10.3
(25Mhz 68040). Sorry, I don't have a PC available.

The benchmark consists of a loop that contains nine NEXTs and a
looping instruction (a termination test and a jump back for subroutine
threaded code), i.e. it primarily measures NEXT speed. This loop
is executed 10,000,000 times (resulting in 100,000,000 NEXTs and a bit
of overhead). Note that this measurements are an upper bound for the
performance difference of different threading techniques. I did not
try to measure native code, since it does not make sense using this
benchmark.

The benchmarks were written in GNU C 2.x. GNU C 2.x extends C in
various ways, among them "labels as values" (computed gotos), which
allow the implementation of direct and indirect threading. The
benchmarks were compiled with GNU C 2.2.2 (gcc -O2 -fomit-frame-pointer).

I checked the produced assembly code and was pleasantly surprised, as
I did not find any significant opportunities to improve the compiler's
output. However, I had to unoptimize the assembly code for subroutine
threading on the 68040, since the compiler allocated the address of
the fuction "next" to a register (which is quite unrealistic for real
ubroutine-threaded code).

CONCLUSION:
The differences between the different techniques on a RISC are not
greater than the differences on a CISC.

Appendix
Here I give the GNU C code for the various programs, if you want to
experiment. I can post the assembly language code if somebody is
interested.

/***** subroutine.c *****/
main()
{
 start:
  next(); next(); next(); next(); next();
  next(); next(); next(); next();
  loop(); goto start;

Quote:
}

next(){}

loop()
{
  static int count=10000000;

  if (count<=0)
    exit(0);
  count--;

Quote:
}

/***** direct.c *****/
/* &&label gives you the address of label (as void *) */
/* "goto *&&label" is equivalent to "goto label" */
#define NEXT goto **ip++
main()
{
  static void  *prog[] = {&&next,&&next,&&next,&&next,&&next,
                          &&next,&&next,&&next,&&next,&&loop};
  void **ip=prog;
  int    count = 10000000;

 next:
  NEXT;
 loop:
  if (count>0) {
    count--;
    ip=prog;
    NEXT;
  }

Quote:
}

/***** indirect.c *****/
#define NEXT goto ***ip++
main()
{
  static void *nextp=&&next;
  static void *loopp=&&loop;
  static void  **prog[] = {&nextp,&nextp,&nextp,&nextp,&nextp,
                           &nextp,&nextp,&nextp,&nextp,&loopp};
  void ***ip=prog;
  int    count = 10000000;

 next:
  NEXT;
 loop:
  if (count>0) {
    count--;
    ip=prog;
    NEXT;
  }

Quote:
}

/***** switch.c *****/
#define NEXT break
#define I_NEXT 0
#define I_LOOP 1

main()
{
  static int prog[] = {I_NEXT,I_NEXT,I_NEXT,I_NEXT,I_NEXT,
                       I_NEXT,I_NEXT,I_NEXT,I_NEXT,I_LOOP};
  int *ip=prog;
  int  count = 10000000;

  for (;;) {
    switch (*ip++) {
    case I_NEXT:
      NEXT;
    case I_LOOP:
      if (count>0) {
        count--;
        ip=prog;
        NEXT;
      }
      else
        return;
/* the rest is to get gcc to make a realistic switch statement */
    case 21:
    case 19:
      count=25;
      NEXT;
    case 20:
      count--;
      NEXT;
    }
  }

Quote:
}

--
M. Anton Ertl                    Some things have to be seen to be believed



Tue, 27 Dec 1994 23:15:50 GMT  
 Answers to Frequently Asked Questions (version 1.8, 15-Jan-92)
Some new results on the threading speed of various processors:

                                        gcc     sub-
Machine                 Processor       version routine direct  indir.  switch
DECStation 5000/125     R3000 25MHz     2.2.2   19.8s   17.7s   25.8s   46.5s
HP/Apollo 425           68040 25MHz     2.2.2   38.3s   22.3s   30.1s   63.5s
HP/Apollo 720           HP-PA 50MHz     2.2.2   16.27s  N/A     N/A     27.45s
SPARCStation 1          Cypress 20MHz   2.2.2   31.2s   33.2s   47.9s   73.6s

Thanks to Bernd Paysan for the values on the SPARCStation and the HP 700.
Bernd does not know whether the SPARCStation is a 1 or 2; I guess from
its slowness that it's a SPARCStation 1.

Feel free to send me the results on your machine. You find the

All times are user time. The assembly code generated by the compiler
was inspected and found realistic, with one exception: I had to
unoptimize the assembly code for subroutine threading on the 68040,
since the compiler allocated the address of the fuction "next" to a
register.

The benchmark consists of a loop that contains nine NEXTs and a
looping instruction (a termination test and a jump back for subroutine
threaded code), i.e. it primarily measures NEXT speed. This loop
is executed 10,000,000 times (resulting in 100,000,000 NEXTs and a bit
of overhead).

Andi Krall points out a shortcoming of the benchmarks: The pure NEXT
contains delay slots (depending on machine and threading method), that
will be filled in realistic applications. Since the number of delay
slots may be different for the different threading techniques, the
overhead of threading in realistic applications may be somewhat
different from what you might infer from these numbers. This has
little effect on the original purpose of the benchmarks (giving an
upper bound for the differences between threading techniques), but you
should be cautious when using these numbers for other purposes.

E.g., on the R3000 the next takes 4 cycles for subroutine and direct
threading, but subroutine threading has 2 delay slots, while direct
threading has only one. So, Forths '+', which needs 2 instructions
(when the TOS is held in a register) and NEXT, will need 4 cycles
subroutine threaded and 5 cycles direct threaded.

- anton
--
M. Anton Ertl                    Some things have to be seen to be believed



Mon, 02 Jan 1995 21:36:20 GMT  
 
 [ 5 post ] 

 Relevant Pages 

1. Frequently Asked Question Answers (v1.15, 16-Sep-92)

2. Frequently Asked Question Answers (v1.15, 16-Sep-92)

3. Frequently Asked Question Answers (v1.11, 02-Mar-92)

4. Frequently Asked Question Answers (v1.9, 01-Feb-92)

5. Frequently Asked Question Answers (v1.12, 29-Apr-92)

6. Frequently Asked Question Answers (v1.11, 02-Mar-92)

7. Frequently Asked Question Answers (v1.9, 01-Feb-92)

8. Answers to Frequently Asked Questions (version 1.7)

9. Answers to Frequently Asked Questions (version 1.7)

10. Answers to Frequently Asked Questions (version 1.7)

11. Answers to Frequently Asked Questions (version 1.7)

12. Answers to Frequently Asked Questions (version 1.7)

 

 
Powered by phpBB® Forum Software