MPE VFX Forth for Windows, Linux, DOS - Release Notes ===================================================== Copyright (c) 1999-2005, 2006, 2007, 2008 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 3.60 onwards. Release notes for earlier versions are in RELHIST.VFX.TXT. The file does not contain many CR/LF pairs. This was done so that the file can be better displayed by the installer. Because users continually refer to this product as VFX Forth, it has been officially renamed "VFX Forth". Please note that the source inliner does not handle definitions typed in at the keyboard! These notes are common for all versions, including DOS and Linux. The build numbers refer to the Windows version. As of VFX Forth v4.0, the executables are named "VFXBASE.xxx" and "VFXFORTH.xxx". The build numbers given in this file are for the Windows version. 4.10.2583 26 March 2008 ======================== KERNEL ------ 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 -------------- 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 -----