[comp.lang.forth] ANS TC Magnet for ROMability

ForthNet@willett.pgh.pa.us (ForthNet articles from GEnie) (05/13/91)

Category 10,  Topic 22
Message 34        Fri May 10, 1991
JAX                          at 22:32 PDT
 
ANSI ASC X3/X3J14 Forth Technical Proposal     Page     1 of     1

===============================================================

Title: Commercial Implementation of A.2 Leads to Preliminary Conclusions

Related Proposals: none

Keyword(s): Mixed RAM/ROM systems

Forth Word(s): RAM ROM HERE ALLOT C, , ALIGN ALIGNED CREATE UNUSED

Abstract:

        Vesta Technology is already using RAM and ROM modality keywords in a
very successful 83-STANDARD-style product.

Proposal:

        1) We suggest adding UNUSED to the list of words affected by the RAM
ROM keywords. We further suggest that any text effecting the above be
supplemented with the cautionary "while ROM UNUSED may in a particular
implementation be useful in determining the quantity of dictionary space
remaining in a system, the Standard Program may not depend on such."

        2) We suggest changing the status of RAM ROM from "informative" to
"normative" by whatever means to be determined by more procedurally-aware
members of the TC.

Rationale:

        Vesta's Forth-83i96 was in development shortly after the RAM ROM
keywords were added to Appendix A.2. As Forth-83i96 generates truly ROMmable
code, we adopted the committee's suggestion. A variable called: " RAM/ROM " is
set TRUE by RAM and set FALSE by ROM. Affected keywords (A.2) read this
variable before performing their respective duties. The added Vesta utilities
RAM? and ROM? return boolean flags indicating current system state, but are
not necessary to the implementation. "Colon" : VARIABLE and other important
definers which implicitly reference one address space or the other all push
the modality, perform their operation in the appropriate address space and
subsequently pop the modality so that the action of CREATE in such context
conforms to the expectation of the user. ( "Colon" : of course in ANS Forth
will not implicitly call CREATE as our 83-STANDARD Forth-83i96 does.)

        Our conclusion is that the RAM ROM modality works excellently.

        The list of keywords for the RAM/ ROM modality should be extended to
include UNUSED 8.2.2395: it's often as important to know how much ROM data
space is left as to know how much RAM data space is left.

       The material set forth in A.2 should be given normative weight,
rendering portable otherwise incompatible ROMmable applications and increasing
the readability of the Standard ROMmable Program.

        RAM ROM turns out to be very good Forth. We complement Martin Tracy on
his suggestion which has proved its merit in the ease with which our customers
have assimilated the concept.

=====================================================================

Submitted by:   Jack Woehr, Vesta Technology Inc.     Date:  05/10/90
     Address:   7100 W. 44th Ave., Suite #101
                Wheat Ridge, CO 80033
       Phone:   (303) 422-8088 FAX: (303) 422-9800 BBS: (303) 278-0364
-----
This message came from GEnie via willett.  You *cannot* reply to the author
using e-mail.  Please post a follow-up article, or use any instructions
the author may have included (USMail addresses, telephone #, etc.).
Report problems to: dwp@willett.pgh.pa.us _or_ uunet!willett!dwp

ForthNet@willett.pgh.pa.us (ForthNet articles from GEnie) (05/15/91)

Category 10,  Topic 22
Message 35        Mon May 13, 1991
B.RODRIGUEZ2 [Brad]          at 23:25 EDT
 
Re. Jack's proposals for ROMability: I agree, and disagree.

We've found this capability very useful in embedded systems. However, we
usually need more than just two address spaces (RAM and ROM).  For this reason
our metacompiler includes the defining word
 DICTIONARY, which resembles VOCABULARY in some respects:

    start-adr end-adr DICTIONARY name

defines a named dictionary with its own dictionary pointer, and then later
invocation of 'name' makes that dictionary current.  Rather than set a flag,
we define a "dictionary-pointer-pointer" 'DP which holds the address of the
current DP.  Thus,

    : DP 'DP @ ;

and HERE, ALLOT, and such will follow.  Of course, 'DP can be a user variable,
but all of the dictionary pointers should be in common RAM (shared among
tasks).  This scheme can conform to the RAM and ROM usage, e.g.,

HEX 0 8000 DICTIONARY ROM
 8000 FFFF DICTIONARY RAM       \ or any other address limits

but is much more powerful.  It is very nice for supporting paged memory
systems.  We're even working on parallel compilation of separate programs
(where two CPUs need to know each other's symbol tables) using this technique.
There are refinements for extended addressing and physically separate memory
spaces.

Jack's right...this concept is VERY useful, and good Forth.  But I hope this
example shows that it's too soon to move RAM and ROM into the "normative"
status.

- Brad
 Brad Rodriguez        | brad%candice@maccs.uucp      (God willing)
 B.RODRIGUEZ2 on GEnie | brad%candice@maccs.dcss.mcmaster.ca
 "Shoes for industry!" | bradford@maccs.dcss.mcmaster.ca  (archaic)

-----
This message came from GEnie via willett.  You *cannot* reply to the author
using e-mail.  Please post a follow-up article, or use any instructions
the author may have included (USMail addresses, telephone #, etc.).
Report problems to: dwp@willett.pgh.pa.us _or_ uunet!willett!dwp