home *** CD-ROM | disk | FTP | other *** search
- I am about 90% complete writing BBL a public domain 32 bit
- Forth-83 compiler. (I still have to write FORGET, WORDS, a
- relocator, a post-fix assembler and finish the editor). If you
- an experienced Forth/Assembler hacker and are willing to test,
- debug, criticize and possibly even write code for BBL in its
- current form, please drop me a line. It is written in Microsoft
- Assembler MASM version 4.0.
-
- BBL will be officially released in October along with a suite of
- other public domain products: Abundance, a Forth Based database
- language; DOIT, an unattended file transfer system that uses the
- international X.25 net with X.3, X.28 async access (written in
- C); and HDTEST, a program to find and map out marginally bad
- tracks on hard disk whether or not they are in use (also written
- in C). Source code will be available for all products. There
- will be an article in the October Byte on BBL/Abundance.
-
- BBL uses hashed (for fast compilation) dictionaries with
- separate disposable headers (so the nfas can be thrown away
- after compilation).
-
- BBL uses 32 bit stack elements, but has 8, 16, 24, 32 and 64 bit
- operators as well. Its NEXT inner interpreter is quick: LODS
- JMP AX, (not JMP [AX]). Colon definitions are compiled to 16
- bit tokens -- the offsets of Cfas in the CS: segment. (all cfas
- live in the first 64K). The sum total of assembler code is
- normally limited to 64K, but high level colon definitions can
- span a megabyte.
-
- For speed, words like @ and CMOVE expect absolute Seg:offset
- addresses. The code was optimized for speed rather than
- compactness. It makes great use of the 8086 string handling
- instructions.
-
- It keeps the top element of the data stack (not a pointer -- the
- actual value) in CX:BX. DI is nearly always kept 0. DS:SI in
- the FORTH IP. SS:SP is the FORTH SP and SS:BP is the forth RP.
-
- The down-side is there are 5 different kinds of HERE. There is
- no >NAME and >BODY is somewhat slow. Because the code uses
- absolute addresses, if overlays are loaded in a different
- location in RAM it needs some weird processing before it will
- work. To have relocatable code, you need to compile twice for
- different base addresses and compare the two memory images to
- create the relocation bit map.
-
- send a disk mailer to:
- Roedy Green
- Canadian Mind Products
- #11 - 3856 Sunset Street
- Burnaby BC CANADA
- V5G 1T3
- (604) 435-2957