MPE Forth v6.2-6.4, v7.0, 7.1, 7.2, 7.4, 7.5 Common Target Code Release Notes: Common\Release.ker.txt Copyright (c) 2000..2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018 MicroProcessor Engineering 133 Hill Lane Southampton SO15 5AF England tel: +44 (0)23 8063 1441 fax: +44 (0)23 8033 9691 net: mpe@mpeforth.com tech-support@mpeforth.com web: www.mpeforth.com From North America, our telephone and fax numbers are: 011 44 23 8063 1441 011 44 23 8033 9691 4 January 2019 ============== Added equate DEFERPROMPT? which allows the use of a deferred prompt called .PROMPT. 21 June 2018 ============ Updated Lib/USB for STM32F0 hardware drivers and retested. 22 March 2016 ============= The kernel now has Z" if the target contains (Z"). This provides support for zero-terminated strings. These are required by many uses of the ARM/Cortex Sockpuppet API system. Updated Common/sfp32com.fth. Errors are now reported by THROWs whose number is the address of a counted string. More factors are INTERNAL again. 28 May 2015 =========== Updated the kernel for the floating point stack user variables if the equate FP-SIZE is non-zero. Included Common/SoftFP32X.fth and SoftFP32SX which contain software floating point for 32 bit targets. The CX version is for a combined data and floating point stack. The SX version uses separate data and flating point stacks. These files allow us to take more advantage of the VFX code generators. They also contain additional code for CPUs in which shifts beyond 31 bits do not return zero, e.g. 386. 25 April 2014 ============= Integer numbers handled by the target's interpreter may now include the ':' character which is simply ignored. This change matches the behaviour of the host Forth. See Common/ROMFORTH/TEXTFILE.FTH. This file contains additional words such as the (( ... )) comment and EQU to improve compatibility with the cross compiler. 15 April 2013 ============= Updated PowerView to include code for the Nokia 6100 and the 16 bit QVGA displays on ST evaluation boards. Updated the FAT file system to support the new FTP server in PowerNet. See the FATfiler release notes and manual for more details. 28 January 2013 =============== Replaced UPC in kernel62.fth with a version that is shorter and faster on most CPUs. Added Examples\wcmemb.fth, which implements wild card matching of strings. Compatibility with the most recent VFX Forths for Win, Lin and Mac is available. Updated the FAT file system code to be able to delete directories recursively and hence to delete a complete drive. 29 October 2012 =============== The version of (TO-DO) in Common\Kernel62.fth is conditionally compiled to allow for special cases such as Cortex CPUs in which the target may be aligned, but code is on two-byte units. 3 March 2011 ============ Common/DebugTools.fth contains ShowColdChain ( -- ) which will display the AtCold start-up chain. 10 January 2011 =============== Added KEY timeouts in Common/XmodemTxRx.fth. >NUMBER in kernel62.fth is now case-insensitive. 30 June 2010 ============ The 32 bit floating point package in sfp32com.fth has been updated to provide more support for internationalisation in applications. 11 August 2009 ============== Updated Cqueues.fth with added words to copy strings to/from queues. These words are faster than words based on single byte operations. The extensons are used when your control file contains 1 equ extCQ? Updated Examples\USB\CdcDrv.fth so that the hardware-dependent parts of the UART simulation are now in VCOMdev.fth. 30 May 2009 - v7.05 =========== Changed FREE ( addr -- ior) to do nothing and return 0 when addr=0. See Heap32.fth and Heap16.fth. The master file for the documentation is now Heap32.fth. Changed Heap32.fth to use .DWORD rather than .HEAP# and removed .HEAP#. 31 March 2009 ============= Updated documentation of Common\sfp32com.fth for FARRAY. Added FBUFF ( u -- ; -- addr ) to create data arrays. See the manual for more details. 20 February 2009 ================ Updated test code in Common\Tests\MPE and Common\Tests\ANS. Added these to the common code manual. Added IEEE conversion routines to the 32 bit float pack. Thank you, Alberto Pasquale. 18 December 2008 ================ Removed [IODEV and IODEV] from Common\kernel62.fth and replaced them by [IO ( R: -- ipvec opvec ) and IO] ( R: ipvec opvec -- ). 19 November 2008 ================ The USB driver code has been much overhauled with MSC, CDC and composite CDC/MSC examples. See Examples\USB\Release.USB.txt for more details. To allow better integration with USB, the FAT file system has also been updated. 3 November 2008 =============== Added CQROOM? ( +n queue -- flag ) in Common\Cqueues.fth to return true if the queue has room for u more characters. Added CDC (Virtual COM port) class driver to Examples\USB. Use the descriptor file CDCconfig.fth. Added hardware drivers for LPC23xx CPUs and an OTG interface for an ISP1301. 8 August 2008 ============= Added DSQRT ( d -- n ) to Examples\math.fth. Added Common\FracMath.fth which provides fractional maths and an example biquad filter. Fractional maths can be also be used for integer trig functions. 8 May 2008 - v6.4/7.0 ========== Updated Examples\UnixTime.fth for easier integration with NTP and SNTP timestamps produced by PowerNet. 21 January 2008 =============== Modified Common\Targend.fth for systems that have in-application Flash write routines. If you provide the words C!F W!F and L!F (32 bit targets only) before you compile Targend.fth the Umbilical Forth system will use them, enabling interactive programming. These words are Flash analogues of C! W! and and friends. If your code space is split into Flash and RAM, you should set these words up appropriately so that they are sensitive to the address ranges. 5 November 2007 - v 6.4 =============== The version of >FLOAT in Common\SFP32com.fth now converts in base 10 regradless of BASE. The FAT filing system has been updated to include a template SD/MMC card driver and SDHC support as well as the demo Windows system. See Examples\FATfiler\Manual\FATcode.pdf for more details. Note that a 32 bit Forth target is required. 17 May 2007 =========== Changed METHODS.FTH to avoid problems with writes to Flash. In the long term, the use of UPPER and friends in the kernel will change. Added the FAT filing system to the Professional versions of the compilers. See Examples\FATfiler. 1 March 2007 ============ The PDF manual is now indexed. 1 Nov 2006 ========== Corrected M*/ in code files. 8 August 2006 ============= Corrected date string in DATE$, and friends. 6 July 2006 =========== Moved Triples.fth (extended math operators) from the Common folder to the Examples folder. Added I2C driver in Examples folder for CAT1025 reset/EEPROM device. Added additional generic i/o functions to KERNEL62.FTH for 32 bit target CPUs. : iodev] \ ipdev opdev -- \ *G Set the input and output devices. : [iodev \ newip newop -- oldip oldop \ *G Set new i/o devices, returning the previous input and output \ ** devices. : SetConsole \ device -- \ *G Sets *\fo{KEY} and *\fo{EMIT} and friends to use the given \ ** device for terminal I/O. Compiled for 32 bit systems, but is \ ** also part of *\i{LIBRARY.FTH}. Added 1k block and CRC Xmodem facilicities to Examples\XmodemTxRx.fth. The original code is still available as XmodemTxRx128.fth. 7 Nov 2005 ========== Improved error handling in RomForth\TextFile.fth. 4 July 2005 - v 6.3 =================== Improved FVARIABLE for optimised systems in COMMON\SFP32COM.FTH. 7 April 2005 - v6.3 ============ The filing system, previously in the EXAMPLES\FILESYS folder, has been overhauled, refactored and documented. It is now in the EXAMPLES\POWERFILE folder. See the separate manual FileSys.pdf for more details. Added NETBOOT.FTH and NETCODE.FTH to the EXAMPLES folder. These provide a simple TFTP Ethernet boot loader system. For an Ethernet driver use EXAMPLES\SMC91C9x.FTH as a model. For Flash programming, use EXAMPLES\29F040B.FTH as a model. Added EXAMPLES\SERBOOT.FTH which provides Flash management and program loading using a serial line and Xmodem file transfer. The folder EXAMPLES\POWERVIEW contains the PowerView embedded GUI system with menus, buttons, text boxes and images. See the manuals in COMMON\MANUAL for more details. Added a fuzzy logic handler in EXAMPLES\FUZZY.FTH. Added more Flash memory drivers to EXAMPLES\DRIVERS. The words LATER, EXPIRED, TIMEDOUT? and MS have been moved into a separate file called DELAYS.FTH to make it easier to produce small systems. 4 January 2005 ============== Updated the ACK handling in the 8574 I2C driver in the EXAMPLES folder. Added ARCFOUR (RC4 clone) and SHA-1 cipher code to the EXAMPLES folder. The SHA-1 code is as yet untested with the cross compiler. 8 November 2004 ============== Restored compiler macros in COMMON\CQUEUES.FTH. Added EXAMPLES\BENCHMARKS\XBENCH32.FTH. This is a conversion of the benchmark suite supplied with MPE's VFX Forth for Windows. Note that it it tests your compiler, CPU and memory systems; it should not be relied on as a test of any one item unless the other two are unchanged. Added cut down Xmodem receiver MINXMODEMRX.FTH and added Xmodem documentation XMODEM.TXT. Updated Examples\Drivers\Smc91C9x Ethernet driver. 1 April 2004 ============ Added NEXTCASE to KERNEL.FTH for target use. Note that ?OF END-CASE and NEXTCASE are now only available in the target if the equate FULLCASE? is set non-zero in the control file. 27 February 2004 ================ Updated PLACE in KERNEL62.FTH to fix an ordering problem when the strings overlap. 18 February 2004 ================ Merged LIB.FTH into LIBRARY.FTH and deleted LIB.FTH. Please replace any references to LIB.FTH by LIBRARY.FTH. This was done to reduce maintenance costs and to provide a single place for DOCGEN comments which generate the code manual. KERNEL62.FTH: Added SETCONSOLE ( device -- ) which sets the Generic I/O device for both input and output. For 32 bit targets only. 11 February 2004 ================ KERNEL62.FTH: Replaced the ugly factor HEADER ( caddr -- ) by MAKEHEADER ( caddr len -- ). This simplifies CREATE and colon and other defining words. $CREATE has been removed but may be defined as follows: : $CREATE \ caddr -- COUNT MAKEHEADER DOCREATE, ; METHODS.FTH: Refactored to maintain compatibility with both KERNEL.FTH and KERNEL62.FTH. Note that this file replaces LOCALCOM.FTH for new code. 11 September 2003 ================= Added a PDF manual to the MANUAL directory. 3 May 2003 - v6.20 ========== The compiler and target code are now at version 6.2 with a new compiler manual, and a DOCGENned target code glossary in the COMMON\MANUAL folder. KERNEL.FTH is retained for v6.1 compatibility, but new code should be built using KERNEL62.FTH, which has all error handling performed using CATCH and THROW and has improvements for the PowerNet 3 TCP/IP stack. 20 March 2003 ============= Added FLUSHKEYS ( -- ) for 32 bit systems to clear pending input which might be returned by KEY. Modified ACCEPT and HALT? to ignore LF characters totally. Updated ALLOCATE in HEAP32.FTH to reduce fragmentation and to improve performance. 20 January 2003 =============== Added key flushing in WORDS because of Telnet. Similarly changed HALT? to prevent LF characters causing a halt. The new file KERNEL62.FTH is used instead of KERNEL.FTH for the high level kernel. The new file will be used for the upcoming version 6.2 release and should be used for all new work. Added the MANUAL directory which contains an HTML manual for the common kernel code. This manual is generated by DOCGEN in VFX Forth for Windows from the source code. 15 September 2002 ================= Fixed DUMP ( addr len -- ) in DEVTOOLS.FTH to do nothing if len=0. For 32 bit systems, added WDUMP and LDUMP which display 16 and 32 bit words. 11 September 2002 (XTS release) ================= Added the cold chain system to the common kernel. The phrase: ' AtCold causes to be executed during the initialisation sequence by the kernel word WALKCOLDCHAIN. The stack action of must be null ( -- ). The cold chain is executed so that the last word added is executed last. To enable use of the cold chain, add the phrase: 1 equ ColdChain? to your control file. If this equate is not defined, KERNEL.FTH will define a default: 0 equ ColdChain? For systems with caches, the word FLUSHCACHE is now executed by ";" if it exists. Note that the cache enable routine can be added to the cold chain. Because KERNEL.FTH requires FLUSHCACHE to be already defined, and because ATCOLD is only defined in KERNEL.FTH, the cache code must be compiled before KERNEL.FTH and cache initialisation can only be added to the cold chain after KERNEL.FTH has been compiled. 10 June 2002 ============ The definition of S0 has been changed so that the contents of S0 should point to the last free cell in the data stack. This change prevents problems with some layouts of the user and task areas. 12 November 2001 ================ Added INIT-IO to LIBRARY.FTH. : init-io \ addr -- \ *G Copy the contents of an I/O set up table to an I/O device. \ ** Each element of the table is of the form addr (cell) \ ** followed by data (cell). The table is terminated by \ ** an address of 0. A table of a single 0 address performs \ ** no action. 1 August 2001 ============= Added CQUEUE.FTH character queue handling in circular buffers. 14 July 2000 ============ Added conditional compilation of FLUSHCACHE in KERNEL.FTH. Systems that enable the cache must provide a word FLUSHCACHE that flushes both the instruction and data caches. The file containing FLUSHCACHE must be compiled before KERNEL.FTH. Cached CPUs *will* fail while interpreting on the target if this is not done. If you are using Umbilical Forth, you should execute FLUSHCACHE after compiling new definitions. Renamed DINT to F>D for consistency. F>D is the ANS word. The original F>D was just a synonym. Similarly SINT was renamed to F>S. The kernel code includes the directives -SHORT-BRANCHES and +SHORT-BRANCHES which are used by the VFX optimisers to control the size of branches for CPUs which have both short and long forms of branch instructions, e.g. 68xxx and I32. Some code has been rewritten with early EXITs to avoid long branches. 32 bit targets: software floating point --------------------------------------- Overhauled 32 bit software floating point and incorporated improvements contributed by Hiden Analytical. These include more complete special case detection, faster high level code, and more accurate number input and output. The F-PACK vocabulary has been removed as no one liked it, and it could be considered contrary to the ANS Forth specification. If you wish to retain the F-PACK vocabulary, add the following lines before and after the compilation of the floating point code: only forth definitions \ *** added *** vocabulary f-pack \ *** added *** also f-pack definition \ *** added *** include %CommonDir%\Sfp32Hi \ primitives, or coded version in %CpuDir% include %CommonDir%\Sfp32Com \ common high level code previous definitions \ *** added *** Removed all use of global variables except PLACES to make the floating point code usable in interrupt routines and in multitasked systems. If the output routines are to be multitasked, change the definition of PLACES from: VARIABLE PLACES 8 PLACES ! to: CELL +USER PLACES and remember to initialise PLACES before using the floating point output routines. The mode switch DEGREES? has been commented out in the source code as it conflicts with ANS. The commented out code may be uncommented if you need backward compatibility. Many words that are only useful as factors have been made headerless to save target memory space. 16 bit targets: software floating point --------------------------------------- Renamed SINT to F>S and DINT to F>D to improve ANS compatibility. Note that the 16 bit floating point pack is not re-entrant. If you need to use the floating point pack in a multitasking system, you should convert the global variables to USER variables. The word +USER can be used +USER to define a USER variable of a given size (normally a CELL) at the next free offset in the USER area. Only PLACES will need initialisation. 21 June 2000 ============ Added/moved COMPILER directives for Harvard model compatibility. Updated Harvard (e.g. 8051) model code for VARIABLE and VALUE. Added TESTS directory which contains automatic test systems for ANS and MPE model code. Added HEAP16 and HEAP32 files for dynamic memory allocation. Added compiler extension code to increase commonality between one and two address space targets. Added ?THROW (flag throwcode --) which THROWS if the flag is non-zero Added TIMEBASE.FTH, which provides multiple timers slaved from a master timer. See TIMEBASE.FTH and the v6.1 PDF manual for documentation. Added Generic I/O handling. This is documented in the v6.1 PDF manual.