From: decwrl!decvax!genrad!panda!talcott!harvard!seismo!mcvax!ukc!mf1

Article 178 of net.lang.forth:
Relay-Version: version B 2.10.2 9/18/84 SMI; site sun.uucp
Posting-Version: version B 2.10.1 5/3/83; site ukc.UUCP
Path: sun!decwrl!decvax!genrad!panda!talcott!harvard!seismo!mcvax!ukc!mf1
>From: [email-masked] (M.Fischer)
Newsgroups: net.lang.forth
Subject: Re: Why FORTH screens?
Message-ID: <[email-masked]>
Date: 23 Mar 85 19:08:56 GMT
Date-Received: 26 Mar 85 22:13:22 GMT
References: <[email-masked]>
Reply-To: [email-masked] (Michael Fischer)
Organization: Computing Laboratory, U of Kent at Canterbury, UK
Lines: 30
Summary: 

There is some truth to the suggestion that it maintains compatability,
but there are more important reasons for having screens.
After many years of FORTH programming, I suggest the ideal format for
storing FORTH source code would be by definition.  The least ideal
format is to have a particular set of source definitions all collected
into one file with no partitions.  I have tried both (and many others),
and still end up with screens in the end.
I think this is a consequence of the way I use FORTH.  FORTH definitions
are very transportable between applications.  Just load it in, no linking
etc.  Because of this, screens typically have one or two related definitions
with perhaps a constant or even a variable.  If the application is a
collection of source definitions it is more difficult to hunt down and
find what you are looking for, and extract it for further use.  Also 
noteworthy is that FORTH is often used where disk resources are small
and slow.  By the way, the following is a handy way to keep track of
the source block a particular word is located in, although it uses
two bytes per definition.

( Redefine :)
: : BLK @ , [COMPILE] : ; IMMEDIATE

( BLK? aaaa .... block number)
: BLK? -FIND 0= 0 ?ERROR DROP NFA 2 - @ ( Convert to SCR#) B/SCR / ;

( WLIST aaaa     lists screen with aaaa source)
: WLIST BLK? LIST ;

These could be extended to CODE VARIABLE etc.

Michael Fischer  mf1@ukc