home *** CD-ROM | disk | FTP | other *** search
- COMPAT.TXT Compatibility problems in FF by Tom Zimmer
-
-
- FF is a Forth system which moves the LIST portion of a ":" COLON
- definition into another segment. The technique used in Ff to
- accomplish this causes very few problems with compatibility, but
- there are a few, so here are the ones I know about.
-
- EXECUTION ARRAYS
-
- A popular F83 programming technique for creating a table of
- execution vectors is as follows:
-
- CREATE mytable ]
- func0 func1 func2 func3 func4 func5 func6
- func7 func8 func9 func10 [
-
- : domytable ( n1 --- )
- 2* mytable + PERFORM ;
-
- It works like this, a number n1 is passed to DOMYTABLE, which
- causes function number n1 to be performed from the table MYTABLE.
-
- FF has a problem with the above technique, as the CREATE creates
- MYTABLE in CODE space, and the FUNC's are compiled in LIST space.
- That is, in another segment. Since MYTABLE will return an address in
- CODE space, DOMYTABLE will misfunction.
-
- To deal with this type of problem, FF provides a function called
- EXEC: which I obtained from Charles Curley with this definition:
-
- : EXEC: ( n1 --- )
- 2* R> + XPERFORM ;
-
- EXEC: is used as follows:
-
- : domytable ( n1 --- )
- EXEC:
- func0 func1 func2 func3 func4 func5 func6
- func7 func8 func9 func10 ;
-
- I think you will agree that this is a reasonable solution, The word
- EXEC: can infact be implimented on a normal F83 system, using PERFORM
- instead of XPERFORM, to provide the same functionality with complete
- portability of code across systems. As you can see the definiton
- MYTABLE was not even needed, and the definition above is just a
- normal COLON definition which can be debugged, decompiled ect.
-
-