Changes between V4.2 Build 671 (TJZ's last release) and 6.05 501B (any
build, this is no longer part of the version/release specification).
Where to get it
---------------
http://groups.yahoo.com/group/win32forth/files/Distros/
select file V605.EXE, a winzipped EXE file.
Installation
------------
Run the file above and unzip to a directory of your choice. Run _MAKEALL.BAT
in the root of the directory, follow the prompts.
** NOTE ** Although the file has been virus scanned, there's no guarantee
that this file may not contain a virus, and that you're advised to use your
own virus checker before executing this file.
End-user changes
----------------
All existing code continues to work, with the following exceptions:
1. Multitasking
MULTITHR.F is now obsolete, and has been replaced by TASK.F.
Impact: Jos vd Ven uses MULTITHR.F in many of his programs. Any code that
uses MULTITHR.F will not work.
2. WINCLOCK.F
This had a subtle bug in it. Fixed in this release.
Architectural changes
---------------------
-- Multiple directories
. addition of multiple directories to store documentation and
applications
. simplifies maintenance and identification of files used over a flat
all-in-one-directory structure
. supports separation of application from system code
-- Fixed loadpoint images can optionally be built
. performance improvements of up to 30% for fixed loadpoint images over
standard relocatable images
-- Performance improvements
. Words rewritten to improve performance. Conditional jumps eliminated
from much of the code, stack juggling reduced to a minimum.
. Code moved out of the kernel that required the assembler, reduces size
of the kernel
. Better use of the stack to support USER variables and large static
allocations of memory, allows simplified multitask support.
-- CALL mechanism simplified and moved to the kernel from WINLIB.F
. allows the kernel to call Windows API without using XCALLs (calls to
the C wrapper).
. permits libraries & procedures to be specified during development &
runtime that do not exist. All CALL errors can optionally be deferred
to run-time, rather than compile time.
-- ANS file words moved to the kernel from ANSFILE.F
. allows the kernel to perfrom I/O without using XCALLs.
. some improved performance
. read-line now supports DOS (CR|LF), UNIX (LF) and MAC (CR) newlines
. I/O supported in multitasking
-- Memory words moved to the kernel form PRIMUTIL.F
. better performance by using heap API calls rather than Win32S
compatability calls
. allows locking during allocation to support multitasking
-- Exception handling improved
. diagnostics improved to allow better determination of the error
. integrated into CATCH/THROW
-- Multitasking support improved
. simplification of requirements for supporting multiple tasks
. USER variables rationalised and unique per-task.
. Still in progress, subject to some changes.
-- Better FORGET support
. correctly forgets all types of entries including libraries, files,
procedure definitions
-- CALLBACKs rationalised
. Callbacks rationalised to support Windows callbacks with a single word
. Efficency improved, standardised use of the stack
. Supported in multitasking
-- File interdependencies reduced
. allows more flexibility about the order of FLOADs in EXTEND.F
. permits assembler to be loaded early if required
-- CLASS changes
. new root class allows simplified and smaller classes that don't require
RECORD: support
-- Disassembler improvements
. better text output identifies labels by name rather than by hex offset
. bug fixes
-- Hidden words in kernel support
. Internal words in the kernel are now hidden, reduces size of the
dictionary.
Bugs fixed
----------
. SEE was generating errors on optimised code in ;CODE sections
. FORGET wasn't forgetting properly certain classes of items, such as
PROCs, WINLIBRARYs and CALLs
. META compile was miscalculating the size of the generated image
. Dialog loading was miscalculating the offsets inside a RES file causing
spurious errors.
. FIND with class support was finding words of the form x.y, even though x
did not exist, or x was not an object.
. Optimiser was generating invalid code and/or generating an exception
for a non-zero origin kernel
. Optimiser assumed that all code ended with NEXT, and generated incorrect
code if not.
. Cosmetic tidy up, some spelling corrected in messages
. FLOAD wouldn't load a file with blanks in its name. Changed to support
quoted filenames
. Disassembler was not recognising some instruction encodings
Known Problems
--------------
. File and folder support is not consistent across all words
. FIND x.y if y is not a method of x returns found
. SEE may overrun code if it doesn't terminate with NEXT
. Communication between WINED (the editor) and a Forth instance is
not good. Depends on the version of Windows in use.
. probably lots of others...
--
Regards
Alex McDonald