MPE VFX Forth for Windows, Linux, Mac & DOS - Release Notes
===========================================================
Copyright (c) 1999-2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
MicroProcessor Engineering Ltd.
133 Hill Lane
Southampton SO15 5AF
England
tel: +44 (0)23 8063 1441
fax: +44 (0)23 8033 9691
net: mpe@mpeforth
tech-support@mpeforth.com
web: www.mpeforth.com
******************************************************
PLEASE READ THIS FILE, YOU MAY REGRET IT IF YOU DO NOT
******************************************************
This file can be found in the installation under the name
RELEASE.VFX.TXT within the DOCS directory. It provides a
reverse chronological list of changes made between released
builds of the VFX Forth system from release 4.00 onwards.
Release notes for earlier versions are in RELHIST.VFX.TXT.
These notes are common for all versions - Windows, Linux,
OS X and DOS. The build numbers refer to the Windows version.
As of VFX Forth v4.0, the Windows executables are named
"VfxBase.exe" and "VfxForth.exe". As of build 2661, 3 Sept 2008,
the configuration files are called VfxForth.ini.
As of 16 July 2012, the directory structure has changed.
As of 20 November 2012, the Linux tarballs have a different
directory structure.
4.72.3541 3 February 2016
==========================
KERNEL
------
Linux/Mac: Updated installer and configuration tools to have a better
chance of setting the VFXPATH and BASEPATH text macros. The default
editor can be drived from the VISUAL and EDITOR environment variables
on the first run.
ARM: Changed cross compiler and code generator so that R8 is used as
the floating point stack pointer in all ARM and Cortex targets.
Updated the start up, coded words and EXTERN mechanism to match.
Note that you should check your own CODE words and remove all use of
R8 or at least preserve it.
Improved the DEFAULT-CONSOLE generic I/O device's use of
multi-tasking during KEY operations.
LIB and STUDIO
--------------
ARM: Updated Lib/ARM/VFP64S.fth to use R8 as the stack pointer.
Corrected the EXTERN: mechanism for float and double arguments and
return values.
Added Lib\Win32\RawDrive.fth which allows applications to
read and write raw sectors on a disc. It's dangerous, but it
allows you to test out new file systems and patch data on
corrupted SD cards.
EXAMPLES
--------
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.72.3540 14 November 2015
===========================
KERNEL
------
Renamed NAME>INTERP to NAME>INTERPRET for Forth-2012
compliance.
Mac OS X: updated Cocoa interface with enhancements for
El Capitan. Thank you, Roelf. Note that OS X binaries are now
placed in /usr/local/bin. Saving binaries in /usr/local/bin
is a privileged operation so sudo is needed.
Corrected code generator for DEFER@ - copy/paste error!
Thank you, Anton.
LIB and STUDIO
--------------
Added Roelf's stack jugglers to Lib/x86/Ndp387.fth and
Lib/x86/Hfp387.
Added x86 specifics to Lib/dshifts.fth for x86 CPUs.
Moved various cryptograhic files to new directory Lib/Crypto.
EXAMPLES
--------
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.72.3532 10 June 2015
=======================
KERNEL
------
Win: Tested on Windows 8.1 and 10.
ARM: Reverted to a simpler CMOVE to avoid faults on Cortex-Ax
CPUs.
ARM: Added a cache flush to DocGen.
ARM: Added the VFP instructions in V7-M in both Thumb-2 and
ARM32 forms to the assembler.
ARM: Added switch to tighten ARM32 code generation for
Cortex-A/R CPUs. This fixes some problems with Cortex-Ax
cores and is the default.
LIB and STUDIO
--------------
ARM: Added floating point packs in Lib/ARM/VFP64S.fth and Lib/ARM/VFP32S.fth.
See manual for details.
Added Lib/SoftFP32.combined.fth and Lib/SoftFP32.separate.fth
which provide software floating point packs that are compatible with
those of embedded targets. These are not ANS or Forth-2012 standards
compliant.
Win: Fixed new bug in Lib/Win32/Genio/Terminal.fth.
EXAMPLES
--------
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.71.3527 8 October 2014
=========================
KERNEL
------
ARM: The simplistic CMOVE has been replaced by a much faster
(but vast) version.
LIB and STUDIO
--------------
x86: Fixed FTANH in Lib/Ndp387.fth, Lib/Hfp387.fth and
Lib/HfpGL32.fth.
Mac OS X: updated Cocoa interface with many enhancements.
Thank you, Roelf.
EXAMPLES
--------
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.71.3523 8 October 2014
=========================
KERNEL
------
Local variables are no longer part of the search order system.
The words FIND and SEARCH-CONTEXT now explicitly search the
LOCALVARS vocabulary first if required to. This change eases
some uses of the search order system and improves standards
compliance.
Enhanced the enum support in the C language header file support.
The VFX cached file mechanism has been rewritten to allow for
memory allocation issues in some operating systems, especially
Linux for ARM CPUs.
ARM systems that follow the EABI calling convention use the
file VFXBase/ExternEABI.fth.
Beta builds of VFX Forth for Linux ARM are available.
LIB and STUDIO
--------------
EXAMPLES
--------
Examples/Lin32/rpi-gpio.fth contains GPIO pin set/clear
routines for the Raspberry Pi. These use a model based on
accessing /dev/mem with root privilege, likely to be the
fastest means of direct I/O without using a kernel driver.
This code can be adapted for other ARM Linux hardware, and
the basic techniques may be applicable to x86 systems.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.62.3505 30 May 2014
======================
KERNEL
------
Added CSPLIT ( caddr len char -- raddr rlen laddr llen ) that
splits a string at the first given character.
Enhanced EXTERN: to cope better with types such as char**.
Added C-style enum parser to aid accessing shared libraries.
LIB and STUDIO
--------------
Added Lib/SharedLibs/libXL for reading and writing Excel-
compatible files.
EXAMPLES
--------
Added Examples/linlist.fth which provides expandable lists
of fixed length records.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.62.3495 12 May 2014
======================
KERNEL
------
DocGen now centres images defined for Texinfo.
Added LDUMP to kernel to display a block of memory as 32 bit
units. This often makes dumping structures more readable.
Win: GUIgen has a new release with graphing and pie controls.
Win: The recommended serial driver is
Lib\Win32\Genio\serialbuff.fth.
Local input and output drivers are provided to reduce the Windows
overheads for code that works on a character-by-character basis.
See the manual and/or source code for details of accessing the
new features.
Win: Updated the terminal display so that it updates itself
with a timer. An IOCTL to set the terminal caption was added.
Many other minor improvements.
Win: Updated RichEdit display to allow for the (rare) case
when a line ending can be more than two characters.
Added the command line switch -ini-exec (must be lower case) to
use the default INI file stored in PrevIni$. This is occasionally
useful when you want multiple copies of an application with
separate INI files.
Made S\" and friends Forth2012 compliant. The hex number option
"\xab" now requires two and only two hex digits after the "\x".
This change makes the behaviour completely predictable.
Fixed CMOVE and CMOVE> when the strings overlap. For overlapping
strings a simple byte by byte copy is used, otherwise the copy
is optimised.
LIB and STUDIO
--------------
Corrected signed-zero display issue in Lib\Ndp387.fth. You can
now choose whether signed zeros are displayed as such. See the
manual for more details.
EXAMPLES
--------
Added Examples\Win32\EnumSerial.fth which provides methods to
enumerate Windows serial ports. It is not pretty!
Added Examples\crc3216.fth which contains 32 bit and 16 bit CRC
generators.
Added Examples\xorshift.fth which contains random number generators
with a good speed/quality trade-off.
DOC
---
Added simplified turnkey generation section.
Manual rebuilt by release script.
TOOLS
-----
4.62.3446 19 November 2013
===========================
KERNEL
------
Forced LOCATE to go to first line of EXTERN:s.
Corrected ARRAY initialisation for IDATA.
Mac: Improved error messages for SAVE.
LIB and STUDIO
--------------
EXAMPLES
--------
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.62.3444 16 August 2013
=========================
KERNEL
------
After an alias is defined, the xt of the original word is
returned by dictionary lookups if the value CHECKSYNONYM? is
true. This behaviour improves the utility of SYNONYM and
friends. CHECKSYNONYM? returns true by default.
The control byte in the dictionary header for a word now
uses 5 bits for header information, with bit 4 being the
synonym bit.
Win32: To avoid problems with certain printer drivers, the DLL
entry point function defined by DLLMAIN: now touches the stack
every 4kb.
Win: Restored the facility to have a local Windows help file.
See the Windows Tools chapter and the Studio IDE.
LIB and STUDIO
--------------
Restored the local Windows Help file options in the Studio
IDE, now that we have found one we can put on our web site.
It's very old and doesn't look pretty on a modern PC, but
it'll have to do.
EXAMPLES
--------
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.61.3422 20 May 2013
======================
KERNEL
------
Corrected moves into EDX, EAX for division. Some moves incorrectly
eliminated code.
Added more protection to >NAME ( xt -- nfs ). A dummy name "???"
is returned if the xt is outside the dictionary area.
Mac/Lin: Updated command line parser to handle spaces better.
Mac: Updated MacForth on VFX to 10.472.
LIB and STUDIO
--------------
Updated Lib/Doubles.fth, mostly CCSisms.
Added debug facilities in Lib/PDFhelp.fth to Linux and Mac
versions as well as Windows.
EXAMPLES
--------
DOC
---
Mac: The Mac manual is now built on the Mac using TexLive2012.
Manual rebuilt by release script.
TOOLS
-----
4.61.3405 9 February 2013
==========================
KERNEL
------
Improved the register load code generator to reduce the number of
stack shuffles when indirect loads are present.
Corrected INSTRING to prevent a potential buffer overlow issue.
Regrouped and rewrote and updated STRRMATCH and friends. The
new code is shorter and faster. A new word
WCMATCH? \ src slen ptn plen -- t/f
is exposed. Our thanks to Graham Smith at Tectime. See the
manual for details of the new code.
Updated documentation for turnkey apps and moved the startup
and shutdown sequence description to it.
Moved some of the words for handling zero-terminated strings.
LIB and STUDIO
--------------
Win: Started interfacing to undocumented functions in NTDLL.DLL.
See Lib\Win32\SharedLibs\ntdll.
Added quad by single divide operators to CCSisms in
Lib/Doubles.fth
EXAMPLES
--------
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.60.3393 8 December 2012
==========================
KERNEL
------
Corrected SUBSTITUTE for single % character.
LIB and STUDIO
--------------
Improved error handling in Lib/FileHacks.fth. SLURP and INHALE
now zero-terminate the memory when a file is read into ALLOCATEd
memory.
EXAMPLES
--------
Added Examples/usenet/Marcel/why2001.fth.
Win: Updated ForthEd2 for file load and text macro problems.
Lin: Corrected use of accept() in PowerNet servers.
Removed Examples/FileHacks.fth; use Lib/FileHacks.fth instead.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.60.3364 23 July 2012
=======================
KERNEL
------
Added more error codes.
Allowed locals to be nested.
Added WID-THREADS ( wid -- addr len ) which is given a wid and
returns the table of threads for that wid.
Improved robustness of locals start required for a truly obnoxious
hack demanded by a client.
Win: Improved close of RichEdit control. Allowed users to supply
their own right-click menus and access the default find operation.
See the manual.
LIB and STUDIO
--------------
Win: Provided more facilities for line control in the serial
driver Lib\Win32\Genio\serial.fth. Improved parameter checking.
Win: Removed Win32 API Help File buttons and tools. The default
file is no longer available and is obsolete. Use the online help
selection instead.
Win: Updated PAUSE in Lib\Win32\MultiWin32 to use EMPTYIDLE rather
than BUSYIDLE. The change allows the message pump to run more often.
Win: Added more to Lib\Win32\TextColour.fth.
Mac: The source code in Lib/Osx32/Cocoa is now released under a
Creative Commons licence. See Lib/Osx32/Cocoa/LICENSE.txt.
Improved robustness of floating point output in Lib/Ndp387.fth.
Thanks, Ed.
EXAMPLES
--------
Added Quotations.fth which permits nested definitions.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.60.3334 30 May 2012
======================
KERNEL
------
If SAVE is used inside a source file, the file's locate
information is now set before the save takes place.
The random number generator word RANDOM has been refactored and
is now a DEFERred word. See the manual for more details.
Win: The following text macros no longer have trailing '\'
characters:
LOAD_PATH BIN LIBRARYDIR LIB
Although this change may break some code, it brings the Windows
and DOS versions into line with the Linux and Mac OS X versions,
as well as being what most of you want and how most of you
actually use the macros.
GET as a synonym for INCLUDE has been removed. Some versions may
now now use GET and RELEASE for mutex variable access in the
classical Forth manner.
Added additional notations to the EXTERN: mechanism for converting
code from other Forth systems. See the manual for more details, e.g.
function: foo3 ( a b c d -- el eh }
Added DEFERred word SourceTrackRename ( zaddr -- ) so that users
can adjust names in the source tracking system to suit their habits.
Added FUNCTION: and friends as compatibility words for converting
code from other systems. See the DLL and Shared library chapter of
the manual.
Added CB: ( xt #in "" -- ; entry ) for compatibility.
Mac: Added Roelf's FRAMEWORK word. See the EXTERN chapter of the
manual.
Mac: Added WORKINGDIR ( -- caddr len ) to return the current working
directory.
LIB and STUDIO
--------------
Added Lib/SharedLibs which contains interfaces to several shared
libraries which are available on most platforms. The initial set
is:
libcurl
libiconv
SQLite3
zlib
Moved the SQLite3 interface from Examples\DataBases to
Lib\SharedLibs.
Moved MD5.FTH, RC4.FTH and SHA.FTH from Examples to Lib.
Win: The ini file that was %LOAD_PATH%\USERIDE.INI is now
%IniDir%\UserIde.ini. If the new file does not exist, the old one
is copied over.
Win: Updated the Blowpipe interface in Lib/Win32/Blowpipe.fth
to include a generic I/O device, which makes Blowpipe much
easier to use. See the manual or the source code for details.
Mac: Added Roelf Toxopeus' Cocoa interface. See
Lib/Osx32/Cocoa
Overhauled the TextView interface. Updated the multitasker
Lib/Osx32/MultiOsx32.fth
with input from Roelf. The multitasker is a major overhaul.
Please see the manual.
EXAMPLES
--------
Moved MD5.FTH, RC4.FTH and SHA.FTH from Examples to Lib.
Moved the SQLite3 interface from Examples\DataBases to
Lib\SharedLibs.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.50.3327 17 April 2012
========================
KERNEL
------
Prevented words containing EXTERNs from being inlined, as was the
practice in previous versions.
Overhauled console pause word HALT?
Mac: Updated support library with more constants.
Mac/Lin: Fixed paste problem in X-terminal.
Added SubstituteC and SubstituteZ
: substituteC \ src slen dest dlen --
\ Expand the source string using text macro substitutions,
\ placing the result as a counted string at dest/dlen.
\ If an error occurred, the length of the counted string
\ is zero.
: substituteZ \ src slen dest dlen --
All versions now provide COPY-FILE.
: copy-file \ src srclen dest destlen nooverwrite -- ior
\ Copy the file named src/srclen to the file named dest/destlen.
\ Macros are expanded. If nooverwrite is non-zero and the
\ destination already exists, no copy occurs and an error is
\ returned.
Made DELETE-FILE and RENAME-FILE expand macros.
Overhauled the INI file default handling to provide a common
interface for all operating systems. See the manual for more
details.
LIB and STUDIO
--------------
Win: Updated the Blowpipe debugger support code so that a Blowpipe
I/O device is available. See
Lib\Win32\BlowPipe.fth
Lin: SocketIo.fth now sets IPaddress to a more reasonable
value on most networks.
EXAMPLES
--------
Lin: PowerNet now defaults to port 5080 for HTTP to avoid some
network permissions problems.
Win: Updated GUIgen so that it can be compiled inside another
vocabulary for isolation from application code. See
Examples\Win32\GUIgen
Win: Updated the ShareServer code so that it can be compiled
inside another vocabulary for isolation from application code.
See
Examples\Win32\PowerNet\Examples\ShareServer
Also improved some error recovery in ShareServer.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.50.3294 26 February 2012
===========================
KERNEL
------
Added better code generation for U< and U>.
Added code generation for WITHIN.
Mac: The ini file is no longer the Unix style
%$home%/.VfxForth.ini
It is now
%$home%/Library/Application Support/VfxForth/VfxForth.ini
The old file will be copied over. Default INI files can be
described. See the manual.
Mac: Added additional operations for directory creation.
Moved more macros into the kernel to reduce differences between
operating systems. Refactored the error handling in INCLUDED and
friends. More resets of the exception stack. Corrected COMP:
Corrected EMPTY and TRIM-DICTIONARY. Added CUT-DICTIONARY.
Added ZAPPEND for consistency in the zero terminated string words.
New code should use ZAPPEND instead of APPENDZ. Both words have
the same behaviour.
Recoded ZMOVE for performance.
Added CMPXCHG BSWAP and INVD to the assembler and disassembler.
Made LOCALS| ... | capable of multi-line operation.
Corrected COMP: for occasions when the word being modified could
be tokenised. This bug affected SAVE operations on custom code
generators.
Added minimal support for varargs calls into shared libraries.
LIB and STUDIO
--------------
Updated Lib/oop/FMS to v4.1b.
Mac: Updated the multitasker in Lib/Osx32/MultiOsx32.fth.
EXAMPLES
--------
Win: Examples\Win32\1Wire - updated tools and added drivers for
DS2413 and DS2450 devices.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.50.3246 28 November 2011
===========================
KERNEL
------
Improved tab parsing in EXTERN: and friends.
Corrected EMPTY.
Improved detection of source file names without an extension.
LIB and STUDIO
--------------
Win: Added the BlowPipe debugger which allows text to be sent
to a separate application outside VFX Forth. See
Lib\Win32\BlowPipe.fth
Bin\BlowPipe.exe
EXAMPLES
--------
GTK - The previous operating system specific folders have been
removed. A considerably enhanced GTK interface with graphics
drawing and more examples, including a simple text editor, may
be found in
Examples/GTK
Note that this code may be run unchanged on Windows, Mac OS X
and Linux once GTK+ has been installed.
Win: Revamped turnkey examples in
\Examples\Win32
turnkey1.fth
turnkey2.fth
turnkey3.fth
DOC
---
Updated the description of the rebuild process.
Manual rebuilt by release script.
TOOLS
-----
Win: Added Tools\BlowPipe
4.44.3243 26 October 2011
==========================
KERNEL
------
Fixed spacing problem in LOCALS|.
Enhanced the dictionary statistics tools in
Examples/DictStats.fth.
Added #BADEXTERNS #BADLIBS and .BADLIBS to the Extern: words.
See the manual for details.
Added StopIncluding and the synonym \\ ( -- ) to provide a comment
to end of file facility.
Win: Added PLONG type to list of Windows types.
Mac: Changed kernel start up code for OS X 10.7 Lion. Also changed
SAVE and friends.
Fixed obscure code generation bug revealed in an implementation
specific OOP prototype.
LIB and STUDIO
--------------
Fixed problem with OUT not being updated in a TYPE operation
in Lib/Genio/file.fth.
Overhauled the ClassVFX intelligent structures package in
Lib/oop/ClassVFX.
Added Doug Hoffman's FMS (Forth Meets Smalltalk) package in
Lib/oop/FMS.
EXAMPLES
--------
Updated Examples/fJACK to v1.13.
Added Examples/GTK which contains an interface to the platform
independent GTK+ GUI and graphics libraries. Application code can
be run unchanged on VFX Forth for Windows, Linux and Mac OS X.
DOC
---
Manual rebuilt by release script.
TOOLS
-----
4.43.3229 14 June 2011
=======================
KERNEL
------
Linux/Mac: RESIZE-FILE corrected and CREATE-FILE updated.
Linux/Mac: Edit on error problems fixed. LOCATE and HELP updated.
Win: Scroll wheel support now works in RichEdit windows.
Changed the default value of the IDIR macro to ".". This value is
also set when including directly from the working directory.
Pointer parsing has been improved in the EXTERN: interface.
LIB and STUDIO
--------------
In Lib/fsl/library, modified FSL routines in VfxLoad.fth and
Vfx4Util.fth for VFX Forth v4.4 onwards.
Overhauled the FP output routines in Lib/Ndp387.fth and
Lib/Hfp387.fth. Additional output words are now available. See
the manual for more details. Thanks to Ed. The old files are
retained as Lib/Ndp387.v442.fth and Lib/Hfp387.v442.fth.
EXAMPLES
--------
Moved goodies.scr and hanoi.fth from the Lib folder. Updated
hanoi.fth to use a terminal window with VFX Forth for Windows.
DOC
---
TOOLS
-----
4.42.3209 26 April 2011
========================
KERNEL
------
Minor tweak to DUP code generator.
Win: Fixed DLL generation problem introduced in build 3180.
The guts of the text macro substitution has been rewritten so that
the primitives can be considered thread-safe. See the manual for
more details.
The EXTERN: interface now supports C comments in declarations.
See the manual for more details.
LIB and STUDIO
--------------
PARSED and DOCONLY in DocGen now set the include directory macro
%IDIR%.
Updated Lib/oop/ClassVFX for v4.4.
EXAMPLES
--------
Win: Added Examples\Win32\1Wire which contains code to access
Dallas/maxim 1-Wire devices on network adapterss connected to a
PC.
Added Examples\DataBases\SQLite3 directory which contains
sqlite3h.fth, a Forth translation of the sqlite3.h C header file.
DOC
---
TOOLS
-----
4.42.3180 11 March 2011
========================
KERNEL
------
Increased the output buffer size in the default character mode
console to improve performance.
Mac: Console mode kernel is done and can rebuild itself.
Minor update to INI file system to correct a limit condition that
is only visible under OS X.
Win: Added more version and company information to all EXE files.
Removed need for make-exe.exe. These changes should reduce the
false positives from anti-virus software, especially for Pro and
Mission version users.
Win: Improved the performance of the console and RichEdit device
output. This is particularly noticeable under Vista and Windows7.
Win: For operating systems other than Win9x, the system INI file
VfxForth.ini is in the Windows local application data folder. If
no file exists, but there is one in the executable directory, that
one is copied over.
Detail configuration changes for the OS X version.
Corrected problem in mixed optimised/unoptimised code at branch
boundaries.
LIB and STUDIO
--------------
Win: Updated Lib\Genio\serial.fth to have 64kb input buffers by
default. The serial structure is exposed for the user.
EXAMPLES
--------
Win: Added "Petzold" style graphics demos
Examples\Win32\AnaClock.fth - analogue clock
Examples\Win32\Bounce.fth - bouncing ball
Examples\Win32\RandRect.fth - random rectangles
Removed the Examples\Win32\frompfw2 folder as it is redundant.
OSX: Added GTK+ demo interface. See
Examples/Osx32/gtk/
DOC
---
TOOLS
-----
4.42.3139 5 October 2010
=========================
KERNEL
------
Started the Forth200x update process. The following accepted CfVs
are implemented:
XCHARs
SYNONYM
Escaped strings
N>R and NR>
2VALUE
Separate FP stack
Number prefixes
Structures
One-time file loading
[DEFINED] and [UNDEFINED]
PARSE-NAME
Deferred words
To be done:
Text substitution
Wordset queries
THROW iors
The ENVIRONMENT system is now extensible.
Tuned DUP again for current CPUs.
Added code generator for 2ROT - just bragging, really.
LIB and STUDIO
--------------
Added a Forth200x XCHARs implementation in Lib/xchar.fth.
EXAMPLES
--------
Added an RPC implementation in
Examples\Win32\PowerNet\Examples\ShareServer
DOC
---
TOOLS
-----
4.41.3127 1 September 2010
===========================
KERNEL
------
Win: As of this release, the Windows 9x operating systems are no
longer officially supported. We'll do what we can, i.e. we will
not deliberately break code, but it may happen. The recommended
base system is now Windows XP, SP3.
Win: You can now set the window backround colour in a RichEdit
device such as the console.
Win: Windows 7 changes for console mode actions.
Win: Corrected exception stack linkage for Win32Catch and and
Win32ExceptThrow. Protected exception handler around callbacks.
Win: Exposed the __CONTEXT__ structure that defined the Windows
EXCEPTION_CONTEXT structure for 32 bit use. Also exposed
getFS:[0] \ -- x
setFS:[0] \ x --
which fetch and store the top of the Windows exception chain. See
http://www.microsoft.com/msj/0197/Exception/Exception.aspx
for the gory details and Lib\Win32\exexcept.fth.
LIB and STUDIO
--------------
Added Lib/Genio/FileBuff.fth. This is a file generic I/O device
with buffered output. When used with small elements such as text,
the new device is very much faster than the previous device in
file.fth. See also Lib/bin2c-b.fth for a usage example.
Win: Removed the dependencies in Lib\Win32\Genio\Serial.fth on the
file device.
Win: Added Lib\Win32\TextColour.fth which contains a dialog and
tools for setting the text colours in an edit control. Updated
the Studio front-end to use this dialog.
Corrected Lib/ConfigTools.fth.
Corrected DLL scanner.
EXAMPLES
--------
The Examples folder for the Win32 version of PowerNet includes
the ShareServer folder which contains a mechanism and examples
of Remote Procedure Calls (RPC) in Forth.
fJACK is now at version 1.01.
Win: Updated GUIgen.
Added Examples\Win32\VMdetect.fth which contains tools to detect
if your application is running under Virtual PC or VMware.
DOC
---
TOOLS
-----
4.41.3092 4 April 2010
=======================
KERNEL
------
Enhanced robustness of the build numbering system.
Added PROC to the assembler. PROC behaves like LBL:, except that
it initialises local labels. Use in the form:
proc
end-code
When executes, it returns the address of the start of the
code.
Added macros for Forth200x proposal testing:
IDIR - the current include file directory
RD - as IDIR
WD - working directory, ".".
Win: Enhanced the default exception handler to resume safely from
faults caused by MOVE and COMPARE.
Win: Corrected CPU hogging problem in RichEdit console.
Added syntax check to { ... } local variable parser.
Added output buffering to the first-stage console to improve
the cross-compiler performance with redirected I/O.
LIB and STUDIO
-------------
EXAMPLES
--------
DOC
---
TOOLS
-----
4.40.3048 28 February 2010
===========================
KERNEL
------
Win: Added optional protection mechanism to EXTERNs and CALLBACKs.
Updated the default exception handler to permit recovery from
protected EXTERNs and CALLBACKs.
Added CS-DROP.
Improved error recovery in ASSESS.
LIB and STUDIO
-------------
Lin: improved interpretation of serial configuration strings
in Lib/Lin32/Genio/Serial.fth.
EXAMPLES
--------
DOC
---
TOOLS
-----
4.40.3007 21 December 2009
===========================
KERNEL
------
Added words to ease extending the assembler:
dxb $55 \ lay a byte
dxw $7788 \ lay a 16-bit item
dxl $11223344 \ lay a 32 bit item
$ \ -- ; gives HERE (start of opcode)
The previous wordset has been withdrawn because it caused too many
conflicts with HEX numbers.
Added CS-PICK and CS-ROLL.
Added .\" (like .") to handle escaped strings.
Win: Performance enhancement to API calls.
LIB and STUDIO
-------------
Updated DocGen for stricter HTML compliance.
Updated FATAN2 in Lib/Ndp387.fth for Forth200x.
EXAMPLES
--------
DOC
---
TOOLS
-----
4.40.2996 7 December 2009
==========================
KERNEL
------
Added support for LongLong return valies in EXTERN: calls.
Improved performance of some EXTERN: calls.
Ensured that the following instructions are visible in the
assembler:
CPUID RDTSC RDMSR WRMSR EMMS RDPMC RSM
Lin: Added more libc calls.
Win/Lin: Improved performance of callback entry code.
LIB and STUDIO
-------------
EXAMPLES
--------
Release 113 of Hanno Schwalm's fJACK interface to the JACK Audio
Connection Kit is in Examples/fJACK.
DOC
---
TOOLS
-----
4.40.2939 23 October 2009
==========================
The 4.4 release is the result of many changes in the v4.3 "rapid
technology development" releases. All the changes during the v4.3
process have been consolidated into the v4.3 notes below. Please
read them.
KERNEL
------
Fixed cross-compiled kernel issue affecting headerless words.
Changed numeric input handling to remove problems when compiling
strict ANS code. The previous variables DP-CHAR and FP-CHAR are
now byte arrays that hold up to four characters that can be used
as indicators. The default contents for DP-CHAR are ',' and '.'.
The default contents for FP-CHAR are '.'. IGN-CHAR is now also a
byte array. The primary impact of this change is that double number
conversion works with either ',' or '.' as the double number
indicator.
Moved the xxxIDLE words into the kernel build. The words are
defer IDLE ( -- ) \ Windows: wait for event/message
defer WAITIDLE ( -- ) \ DOS/Lin: wait for event/message
defer BUSYIDLE ( -- ) \ process one message if present and continue
defer EMPTYIDLE ( -- ) \ process all present messages and continue
Lin: Improved terminal detection and set up so that GUI systems
can be run in the background or detached.
Win: Changed name of RECOVER or RECOVERY to XCALL-FAULT in the
external call mechanism.
Win: improved buffer handling in RichEdit devices.
Fixed some corner cases in the tokeniser which only occurred for
users switching between OPTIMISED and UNOPTIMISED.
Removed the FASTDO switches from the code generator, now using the
previous +FASTDO selection. Recoded the unoptimised versions of
DO, LOOP, I and friends to match the FASTDO handling. These
changes reduce problems for people who still use UNOPTIMISED.
Added U>= and U<= to the kernel.
Added [INTERP] which behaves like [COMPILE] but compiles the
interpretation behaviour of the word.
Added HOLDS ( caddr len -- ) which adds a string to the current
pictured output.
String words such as S" are no longer IMMEDIATE or state-smart.
Chidren of SYNONYM are no longer IMMEDIATE or state-smart.
LIB and STUDIO
-------------
Added missing FLNP1 to Lib\Ndp387.fth.
Win: Added +CRASHSCREEN to Lib\Win32\exexcept.fth to restore the
default crash screen as the current debugger.
Corrected BLOCKS.FTH for initialisation under Linux.
EXAMPLES
--------
Lin: A new release of the Minos/Theseus GUI system by Bernd Paysan
may be found in Examples/Lin32/Minos. The documentation is still
minimal, but a first draft is in the main Minos directory.
Release 105 of Hanno Schwalm's fJACK interface to the JACK Audio
Kit is in Examples/fJACK.
DOC
---
TOOLS
-----
4.30.2887 9 June 2009
======================
The v4.3x releases are preparation for the v4.4 release. All v4.3x
releases are subject to changes in the internal mechanism for
shared library interfacing. The source inliner has been replaced
by the tokeniser. In consequence, you will have to modify your
production code on v4.3x releases if you make any assumptions
about the shared library interface or tokeniser. In some cases you
may also have to replace the almost obsolete [COMPILE] by POSTPONE
(see below).
KERNEL
------
Added additional checks for when the optimiser is turned off.
Some words with carnal knowledge make direct references to their
code generators, and hence indirectly to the optimiser. Despite
the VFX code generator being mature, some users have portions of
code that still turn off the code generator. If you have code
which still breaks the code generator, we really want to hear
from you!
Added #! ( -- ) as a line comment for compatibility with Unix shells.
Added -WHITE ( caddr len -- caddr' len' ) which removes leading
and trailing white space from a string.
Lin: Restored OS_RENAME-FILE.
Win: More detail changes to the Extern: interface. Declarations
involving floating point data now work better.
Win: Added FROMC ( -- ) to the callback interface to specify a C-
style callback that does not clean up the calling stack, e.g.
fromC 4 1 CallBack: CalledFromC
Added ASSESS which behaves as EVALUATE but forces interpretation
first and restores state afterwards.
Changed S" and friends so that a second use does not overwrite
the first string, e.g.
s" Henrietta" s" Hello " type type
will display
Hello Henrietta
Removed uses of PAD in the Forth kernel.
Many words (such as IF and DO) involved in control flow are no
longer IMMEDIATE. This will not affect you unless you use
[COMPILE] with them. In these cases replace [COMPILE] by POSTPONE.
The source inliner has been replaced by a tokeniser. The change
was made to improve ANS and Forth200x standards compliance, and to
reduce issues with particularly "guru" code. To prevent breaking
your existing code, the tokeniser uses the same word names for its
control words. See the manual for more details.
Added GET-COMPILER SET-COMPILER and INTERP> to reduce the number
of state-smart words in the system. Operators such as TO and
children of VALUE are no longer IMMEDIATE or state-smart.
Code/data separation with the +IDATA switch is now the default.
See the VFX code generator section of the manual for more details.
Note that phrases such as
Variable foo 100 allot
will fail to do what you expect, as ALLOT refers to dictionary
space, and VARIABLE reserves a cell in a separated data region.
If you are not already using the +IDATA switch, you should observe
some performance gains. If your application fails with +IDATA,
recompile it with -IDATA. Note that with +IDATA, use of >BODY
and BODY> still refers to the dictionary area, not the IDATA
region.
The EXTERN: interface has been rewritten and provides
support for the following additional data types:
LongLong - 64 bit signed/unsigned integers
Float - 32 bit floats
Double - 64 bit Floats
Existing declarations will be unaffected, except that the default
calling convention is that of the operating system, rather than "C".
Floats are taken from and returned to the NDP stack. In practice
this means that only Lib/Ndp387.fth is appropriate for use with
shared library routines.
LongLongs are passed in and out in Forth format (TOS is the most
significant portion). Conversion to and from the C/native format
is performed by the EXTERN: mechanism. Note that the EXTERN:
mechanism does not use the NXCALL interface below.
LOCALEXTERN: behaves as ALIASEDEXTERN: except that the Forth word
is built into the CURRENT vocabulary. The function of LOCALEXTERN:
is superceded by INCURRENT and INEXTERNALS ( -- ) which force
the new definition to be placed in the CURRENT wordlist or the
EXTERNALS vocabulary (default).
To support portable code that must be compiled on several different
Forth systems with a support harness for each Forth, we have
introduced L>R and R>L. By default, arguments are assumed to be
on the Forth stack with the top item rightmost in the declaration
so that the Forth parameter order matches the C declaration. R>L
reverses this, and is provided for writing portability harness
for code that is used by several different Forth systems. We
strongly recommend that R>L only be used with
LOCALEXTERN: to prevent interference with previous
declarations of the same external function, e.g.
LocalExtern: MyFooBar int R>L FooBar( int a, int b);
This produces
MyFooBar \ b a -- res
User extensibility of the EXTERN: mechanism has changed. You can
install your actions in the deferred words PREEXTCALL and
POSTEXTCALL. The deferred word RECOVER is now called RECOVERY and
is intended for use in the action of POSTEXTERN. See the manual
for details and examples.
Code generation for shared library calls has changed to allow
for future releases on various operating systems with different
call conventions. As a result, the previous XCALL mechanism:
XCALL \ n1 .. nn addr -- result
has been replced by NXCALL
NXCALL \ n1 .. nn addr n -- result
where (as before) nn is the topmost argument on the Forth stack,
addr is the address to call, and (new) n is the number of arguments.
The arguments are always removed from the Forth stack, regardless
of the call conventions in the operating system. NXCALL treats
everything as cells, and nn is always topmost on the receiving
function's stack.
The layout of the stacks in memory has changed, so that the Forth
return stack is lowest. One consequence is that memory consumption
is reduced.
Fixed corner cases in D< D> DMIN DMAX.
Added floating point locals to the { ... } notation. See the
manual for the details. FP arguments and locals are preceeded
by F:. Local arrays are as before. FP arguments and locals accept
the operators TO, ADDR, ADD or +TO, SUB or -TO.
Win: The raw reason code after an exception is saved in the
variable ExcReasonCode.
Fixed code generation bug for M* with literals.
Lin: ARGC and ARGV[ now just extract the data passed by the Linux
shell. COMMANDLINE ( -- caddr len ) returns a reconstructed complete
command line. Note that on most Linux implementations you can use
single quotes to denote a literal string:
vfxlin s" foo bar" type
will fail, but following is accepted:
vfxlin 's" foo bar"' type
1 ARGV[ will return
s" foo bar"
and 2 ARGV[ will return
type
Win: Fixed paste to console for text that uses LF line endings.
LIB and STUDIO
--------------
Fixed long-standing (back to 1999) bug in XREF.FTH for floating
point literals.
Updated FLITERAL in Ndp387.fth and Hfp387.fth for the tokeniser,
and added disassembly support.
As of this release, the NDP387.fth float pack is the supported
floating point package. HFP387.FTH and HFPGL32.FTH are still
provided, but will only be minimally maintained.
Changed FVALUEs to use the new compiler and tokeniser mechanisms.
As of this release, the NDP387.fth float pack is the supported
floating point package. HFP387.FTH and HFPGL32.FTH are still
provided, but will not be further maintained.
After discussion on comp.lang.fth, FATAN2 in NDP387.FTH has been
modified to return the principal angle in the range -PI..+PI. This
matches other trig words and the behaviour in other languages. Our
thanks to Rafael Gonzalez.
Lin: Added test code in Lib/Ndp387.fth to demonstrate calling
shared library functions that use floating point data.
Win: Updated the display in LIB\Exexcept.fth.
Lin: Added test code in Lib/Ndp387.fth to demonstrate calling
shared library functions that use floating point data.
EXAMPLES
--------
Win/Lin: Added Hanno Schwalm's fJACK interface to the JACK Audio
Connection Kit for low-latency audio handling. Thank you, Hanno,
for an example of a substantial piece of Forth code that is not
only cross-platform but also cross-Forth - the supplied code runs
on more than one Forth!
DOC
---
TOOLS
-----
4.22.2718 19 January 2009
==========================
KERNEL
------
Win: Updated Richedit device backspace handling for Vista.
Fixed obscure code generation issue for OF. Improved code generator
for OF and other conditions of severe register pressure.
Forced local buffers to an aligned size. This prevents problems
with operating system calls that require aligned addresses.
EXAMPLES
--------
LIB and STUDIO
--------------
DOC
---
TOOLS
-----
4.21.2669 2 October 2008
=========================
KERNEL
------
SHOWERRORLINE does nothing if LINE# contains -1.
ShowSourceOnError does nothing if >IN contains -1.
The interpreted version of 4/ is signed.
Added DU< and DU> to the kernel.
Added the ANS words FILE-STATUS and RENAME-FILE to the kernel.
The new INI file mechanism is now used by both the Windows and
Linux versions. The previous code is in Lib\Win32\PROFILE.FTH
and the new INI file handler has moved to VFXBase\IniParser.fth.
New extensions are documented in the manual. For Windows users
the benefit is more facilities and increased speed at system
start up and shutdown. Note that mpeparser.dll is needed and
should be copied from the Bin folder to Windows\System32. The new
mechanism will read your previous .INI files, but you should
check all the entries in the Options menu as some may require
minor edits. INI files are plain-vanilla text files which can
be edited by any text editor.
Win: The name of the Windows configuration file has changed from
PFWVFX.INI
to
VfxForth.ini
If you want to preserve your previous screen position and command
history, rename the old file before launching VFX Forth.
Added the deferred word QUITHOOK ( -- ) which is run when a
THROW is caught in QUIT. You can assign any additional clean
up actions you need. The default action is NOOP.
Win: The RichEdit I/O device now handles the WM_GETFONT and
WM_SETFONT messages - the Windows API does not handle them.
Exposed ConsoleDev ( -- sid ), the default RichEdit I/O device
and added hConsoleFont ( -- hFont ) to allow initialisation
routines in the cold chain to define their own fonts for the
console.
Moved (.) ( n -- caddr len ) to the kernel.
Added optimiser for ?NEGATE. Note that ?NEGATE now produces much
better code than the phrase:
0< IF NEGATE THEN
Improved optimiser for ABS.
Fixed DMIN. DMAX was already correct.
Removed unused words OnCompilation and Saved>Here. Removed code
that managed them.
LIB and STUDIO
--------------
Win: Added USERACTION1 to the Tools menu. USERACTION1 ( -- ) is a
DEFERred word (see Studio\XTB.FTH) to which you can assign an
action.
Fixed rounding errors during display of floating point numbers,
( NDP387.FTH and HFP387.FTH), and improved FACOS, FASIN, and
FEXPM1.
Win: The Options -> Set Console Font menu item now saves state
and restores it correctly. See Studio\XTB.FTH for the gory
details.
Moved all the OOP packages to the new Lib\OOP directory. Version
2.0 of the Neon distribution by Doug Hoffman is in the v2.x
folder, but is not yet fully optimised for VFX Forth. The previous
1.x version is in the v1.x folder.
Corrected INI.WRITEINT in Lib\IniParser.fth for negative numbers.
Linux: Lib/Lin32/Serial.fth overhauled to improve raw mode over a
wider range of boxes and distributions.
EXAMPLES
--------
Win: Added Examples\Win32\WorkerTask.fth which illustrates how
to use a background worker task to avoid delay and to avoid the
"Not Responding" Windows message during time-consuming actions
(e.g. network file open) in a winproc.
Win: Added the Examples\Win32\FCOM folder, which contains Thomas
Dixon's FCOM library ported to VFX Forth. This supports COM and
ActiveX interfacing. Provided examples are:
ExcelTest1.fth launches and exchanges data with Excel
Flash.fth play a Shockwave Flash movie in a window
MSCAL.fth Use the MS ActiveX calendar control in a window
SAPItest.fth Text to speech translation
Win: Added Examples\Win32\SplitWins.fth which shows how to create
a window with splitter bars and four child windows which can be
adjusted by dragging the bars.
DOC
---
TOOLS
-----
4.12.2599 12 May 2008
======================
KERNEL
------
Replaced MIN and MAX in the kernel by UMIN and UMAX as
appropriate.
Moved TICKS and friends to the kernel, and removed them from
Lib//TimeBase.fth. This allows the standard delay wordset to
be used without compiling TimeBase.fth.
Added BUIDFILE for cross compiler compatibilty. Use in the form:
BuildFile
The file path/name is obtained using GETPATHSPEC.
Added table generation and image file handling to DocGen. See the
manual for more details.
Added some string words. See the manual for more details.
$Null \ -- caddr 0
extractNum \ caddr len base -- caddr' len' u
ExtractText \ caddr len char -- raddr rlen laddr llen
Linux: Overhauled the system INI file handling and state
save/restore. See the manual installation chapter for more
details.
Enhanced Lib\iniparser.fth with save and restore chains.
The kernel is now compiled using the Forth 7 cross compiler.
Added EXPAND, which performs text macro expansion on caddr/len
strings.
: Expand \ caddr len -- caddr' len'
Win: Added SHELL functions compatible with the Linux version.
LIB and STUDIO
--------------
Win: Improved startup and accuracy in Lib\Win32\Timebase.fth.
Linux: Added Lib\Lin32\Genio\SocketIo.fth, a socket device.
Added Lib\PDFhelp.fth, which allows you to type HELP and
view the relevant page of the PDF manual. The source code is
documented in the Tools chapter of the manual.
For Windows, configuration can be performed in the Options menu.
For Linux, you must do this manually, where %p% and %h% are page
number and base help file name macros, e.g.
S\" &" HelpCmd$ place
S\" /usr/share/doc/VfxForth/PDFs/VfxLin" HelpBase$ place
#13 HelpPage0 ! \ adjust to get correct page display
Note that some Linux distributions require compressed files in the
/usr/share directory.
Win: Added more dialog helper functions in Lib\Win32\Helpers.fth.
EXAMPLES
--------
Linux: Added GTK interface example.
Linux: (Professional) Added Powernet with Telnet, web server and
SOAP.
DOC
---
Removed release notes for versions before 4.00 and moved them to
the release history file.
TOOLS
-----
4.05.2556 12 February 2008
===========================
The directory format has changed so that Lib and Examples now have
subdirectories for the operating system specific files. To ease
portability, some conditional compilation has been used in the
common files.
KERNEL
------
Linux: Added shared library for Linux constants. Added a serial
driver in *\i{Lib/Lin32/Genio/Serial.fth}.
Win/Linux: Added environment variable support. See the operating
system specific tools chapter of the manual.
Win: Added PROFILE::Close ( -- ; a NOOP ) to provide compatibility
with the new IniParser mechanism. We strongly recommend that every
use of PROFILE::SetFileName is matched with a PROFILE::Close. This
will avoid problems when the PROFILE mechanism is replaced by the
IniParser mechanism added to the Lib folder. The PROFILE words
will then only be available using a compatibility harness.
Linux: Added Timebase system in Lib/Lin32/TimeBase.fth. Added
critical section handlers. See the manual for details.
Linux: Added multitasker in Lib/Lin32/MultiLin32.fth.
Linux: Corrected CPU hogging problems.
Linux: Added vfxlin386 which only requires a 386 class CPU. This
version is suitable for embedded applications. We can supply Puppy
Linux for the Ebox2300SX.
Linux: Corrected SAVE for new code size.
DOS: Added missing CD functions. Added additional DOS functions.
See the DOS functions section of the manual.
Improved performance of S" and C" runtime.
Corrected EVALUATE to prevent source inliner problems.
The words ] and IMMEDIATE now prevent source inlining of the
affected words. This change reduces problems with "guru" code and
OOP extensions.
Added FLUSH-FILE from the FILE EXT wordset.
LIB and STUDIO
--------------
Win: Reduced CPU usage in Lib\Win32\Genio\Serial.fth.
WIN/Linux: Added Lib/IniParser.fth which is another configuration
file system that can be used with source compatibility under both
operating systems. The generated files are compatible with Window
INI files. This sytem is much faster than the Windows INI file
mechanism. It will replace the current Windows PROFILE mechanism
in a future release. For Linux, this is the default configuration
file mechanism and the file is compiled as part of the second
stage build.
DOS: Added an ANSI.SYS compatible console with cursor positioning,
colours, line editing and session line history. This is the
default for the second stage build. See the Generic I/O section of
the manual.
Linux: Added XTERM console driver with positioning, colours, line
editing and persistent line history. This code is compiled as part
of the second stage build. See the Generic I/O section of the
manual.
EXAMPLES
--------
DOC
---
TOOLS
-----
Added Nicholas Devilla's iniParser system in both Linux and
Windows builds. Note that this has been extended for MPE use.
4.05.2532 14 December 2007
===========================
KERNEL
------
Corrected Extern: and friends for void parameter list in C style
APIs. This did not affect Windows users unless calling a DLL that
used a "caller cleans up" convention and the argument list was
void.
WIN: Changed default action of double click in console to LOCATE.
Improved ANS and Forth 200x compatibility by converting name
headers to upper case during the moves. This should lead to a
small improvement in compilation speed as well. Added the
following words which convert the strings to upper case on the
fly.
UMOVE \ src dest len --
UCMOVE \ src dest len --
UCMOVE> \ src dest len --
Added SEARCH-CONTEXT ( caddr len -- 0 | xt 1 xt -1 ) by analogy
with SEARCH-WORDLIST.
Added PARSE-NAME ( -- caddr len ) from the upcoming Forth 200x
standard. This is equivalent to BL WORD COUNT but does *not*
perform a copy to a temporary location and returns a string in the
input buffer. This string must not be modified.
Added EMPTY ( -- ) to clear the dictionary without reloading the
system.
Linux: The Linux version is now built from the same source tree.
It has been tested under White Box 4 and Suse 9. Ubuntu will be
next.
DOS: PowerNet has been ported to VFX Forth for DOS and is
available separately. Depending on the version of DOS and your
Ethernet hardware, you may need to write (or ask MPE to write) an
Ethernet driver. Some standard Ethernet drivers do not work
correctly with some embedded DOS products.
DOS: SAVE now produces a true EXE file with the DOS extender
included. The use of STUBIT.EXE is only required after the kernel
has been cross-compiled.
DOS: Forced kernel build and optimisation to 386 instruction set.
You can select the Pentium 2 and above instructions, e.g. CMOVcc,
using CPU=P4. However, many embedded 586 class CPUS, e.g. AMD
SC520, do not include the CMOVcc instructions.
DOS: Overhauled the DOS interrupt and exception handling
mechanism. See the manual for more details.
Added handling of OUT to EMIT/TYPE for the File device in
Lib\Genio\File.fth.
Improved Lib\Genio\Buffer.fth so that EMIT? returns number of free
bytes, and updated documentation.
WIN: Improved update performance of the GENIO terminal device to
reduce flicker during rapid updates. Enhanced terminal redraw when
window is overlaid by other application windows.
WIN: Significantly improved Windows message handling performance
in the RichEdit and default console devices.
WIN: Added width option to separators in toolbars. This makes it
easier to replace separators with controls.
WIN: Fixed paste problem using Ctrl-V in RichEdit windows. Note
that the Windows GetKeyState function returns the state in bit 15,
not in bit 31.
Added case insensitive string compares IS= and ISTR=. Changed
PARSEUNTIL to be case insensitive.
Improved code generation for MIN and MAX. Added UMIN and UMAX to
the kernel. These words use the CMOVcc instructions if CPU=P4 or
above is selected, and so require at least a Pentium Pro CPU. In
practice, this means a Pentium 2 or above. If CPU=386 is selected,
jumps and moves are used.
LIB and STUDIO
--------------
Forced >FLOAT in the floating point packs to convert in decimal
regardless of the base set by the user. This behaviour is ANS
compliant and removes problems in future Forth Scientific Library
releases.
EXAMPLES
--------
DOC
---
Rebuilt with some formatting improved, mostly for the assembler.
TOOLS
-----
4.02.2441 29 August 2007
========================
KERNEL
------
WIN: Increased default stack to 4 Mbytes.
LIB and STUDIO
--------------
WIN: TERMINAL.FTH has been upgraded to enhance use as a child
window. Resizing is now supported.
EXAMPLES
--------
DOC
---
Rebuilt with some formatting improved.
TOOLS
-----
4.02.2437 14 August 2007
========================
KERNEL
------
Added MACROEXISTS? ( caddr -- xt nz | 0 ) to determine whether a
macro is already defined and MACROSET? ( caddr -- flag ) which
only returns true if the macro exists and text has been set for
it.
Corrected obscure bugs in mixed magnitude multiply and divide code
generator operations.
WIN: Added a delay in the console-mode version of KEY if no
characters are available to reduce CPU usage.
WIN: Made a special case of
BUTTON , TBSTYLE_SEP
in TOOLBAR definitions. This done to allow separators to be
converted into other controls.
WIN: Added cursor positioning and colour setting facilities to the
RichedEdit control driver, and hence to the console. See the GENIO
section of the manual for details.
WIN: Enhanced the startup code for systems using the -IDE and
-CONSOLE command line switches. The default console-mode driver
now behaves correctly when piped and runs the Windows message-pump
while waiting for keyboard input so that additional windows can be
run by these applications.
LIB and STUDIO
--------------
WIN: Added INITTERMINALSID ( sid -- ) to initialise a terminal.
See Lib\GenIO\Terminal.fth.
Forth Scientific Library: Updated Vfx4Util.fth, Dates.seq, and
Amoeba.seq.
WIN: Added colour setting facilities to the Terminal control
driver. See the GENIO section of the manual for details.
Overhauled the startup code for launching windows from
comsole-mode applications.
Fixed space and quotes problem in the Studio IDE: File -> Compile
and Edit menu items.
EXAMPLES
--------
DOC
---
Rebuilt with some formatting improved.
TOOLS
-----
4.01.2393 16 March 2007
========================
Corrected installer link generation.
KERNEL
------
Added M*/ to the kernel.
WIN: Corrected save of resources in .rsrc section when dictionary
size is changed.
Added RANDOM ( -- u ) and CHOOSE ( +n -- u ). RANDOM generates a
32 bit unsigned random number and CHOOSE generates a random number
in the range 0..n-1.
Added ReadEx-gxx to the GENIO system. This replaces the Reserved
function 21. The stack effect is:
caddr len sid -- #read ior
This change has been made to make ReadEx-gxx match the Read-File
operation and so that additional error checking can be provided
when data is available, but not as much as was requested.
LIB and STUDIO
--------------
Updated REPRESENT in the floating point packs.
DOS: Added the CLEARSCREEN function to the graphics TSR. Added
Lib\Graphics\GDemo.fth which provides more usage examples for the
graphics package.
WIN: Added a "tip of the day" option to the front end. See
Studio\TipOfTheDay.fth for the code. The tips file is TipOfDay.txt
in the Bin folder, and you can edit this yourself.
WIN: Changed Genio files SocketIo.fth and Buffer.fth to support
the Genio READEX function. Some functionality in Buffer.fth has
changed. See the manual for more details.
WIN: Corrected the DLL Scanner. These changes were required
because the previous changes to the heap mechanism revealed
faults.
EXAMPLES
--------
WIN: PowerNet: Revamped PNmisc.fth to reduce code size and to
support hex numbers without case sensitivity. In
Services\HTTP.fth, CGI variable data is now decoded before
storage. CGI variable names are not decoded. The CGI variable
string sizes have been increased to 256 bytes. The PDF manual now
has an index.
WIN: Added a GUI front end dialog in
Example\FTPinterface\WinFTP.fth.
This provides FTP upload and download for applications.
DOC
---
TOOLS
-----
4.03.2370 24 November 2006
===========================
KERNEL
------
Fixed installer links problem.
Fixed problem in initialisation of Eval version on some machines.
This change also permits the evaluation version to use the faster
heap mechanism introduced in v4.00 build 2356.
Corrected a problem in S= which only affected compares for which
the byte/word at the end of the second string was inaccessible,
e.g. in a guard block.
LIB and STUDIO
--------------
EXAMPLES
--------
WIN: Added an interface to the FTP client DLL provided by
MarshallSoft Computing (www.marshallsoft.com).
DOC
---
TOOLS
-----
4.00.2356 2 October 2006
=========================
KERNEL
------
Improved dictionary hash system. The impact of this change will be
seen in large applications.
The CASE ... NEXTCASE control structure must now be implemented as
BEGINCASE ... NEXTCASE.
The heap system for ALLOCATE, FREE and RESIZE is new and these
words are now directly DEFERred. The new heap is much faster but
is far less tolerant of programming errors. In particular,
releasing the same block twice may/will lead to a crash with the
crash screen showing a fault outside VFX Forth. The SYSTEM
vocabulary contains INITVFXHEAP ( -- ) and TERMVFXHEAP ( -- )
which initialise and destroy the heap. They are in the cold and
exit chains. Note that if you are generating a DLL, these words
must be explicitly run as the cold and exit chains are not run
automatically before DLLMAIN.
The v4.0 code generator produces code that benchmarks about 12%
faster overall than that of v3.9. Some code, especially that
involving array indexing, may see an improvement of 33% or more,
e.g. the Dhrystone benchmark. If you have written custom
optimisers, the EAX register is no longer free for use, but must
be requested like any other working register. CODE definitions
require no changes.
Added +MUSTLOAD and -MUSTLOAD compiler switches. +MUSTLOAD forces
indirect memory loads to be fetched into a register rather than
delayed. For some applications (mostly calculations with array
indexing) this can lead to a performance gain.
+MustLoad \ -- ; force loads
-MustLoad \ -- ; loads are delayed
MustLoad? \ -- flag ; returns true if +MUSTLOAD is set
Improved performance of CMOVE, CMOVE>, S= and FILL again.
i32 Assembler: Allowed scaled index without base register;
Corrected DR1? and DIR2? for SIB byte usage.
LIB and STUDIO
--------------
Overhauled REPRESENT in all floating point packs for correct
rounding and to fit upcoming proposals in the Forth200x standards
process.
EXAMPLES
--------
UseNet\FPout.fth has extended tests enabled.
DOC
---
TOOLS
-----