                          IMPORTANT CHANGES

This document discusses changes to DX-Forth which may adversely affect
previously written programs.  It is recommended users update their
programs to the latest DX-Forth version.  See WHATSNEW.TXT for a
summary of other changes and additions.

NOTE: Obsolete/deleted words have been moved to OBSOLETE.SCR.  Refer
to OBSOLETE.TXT for further information.

v3.95

   USER variables >IN 'SOURCE STATE changed to normal variables.
   Internal words <MARK >RESOLVE <RESOLVE >MARK substituted with
   BEGIN THEN BACK FORWARD.

v3.93

   Renamed MAP EXCISE HANDLER to FYI BEHEAD CATCHER.

   Changed ( to refill the input stream only if the source was a text
   file.

   Most parsing words are now buffered returning a maximum string of
   255.  Only PARSE returns a string in the input buffer.

   Exception -17 replaced with ABORT" numeric buffer overflow"

v3.91

   WORD's buffer is moved to the system area.  The buffer (255+3 chars)
   is shared with interpretive S".  Programs expecting strings from WORD
   to reside at DP @ or HERE will need modification.

   Attempting to FORGET an alias is now illegal and results in an error
   message.

   Renamed cpu variables regAX..regFLAGS to 'AX..'FLAGS , and +PRUNE to
   REMEMBER

v3.90

   Source files (either text or screen) may be nested with up to six
   open at any one time.  This has resulted in several changes:
   SWAP-FILE is no longer automatic and must be performed explicitly
   if desired; USING closes the current file (not the swap-file as
   previously).  Failure to  close source files will eventually result
   in a "too many files" error.  See CLOSE-ALL.

v3.81

   TAB characters output by EMIT or TYPE in BIOS-IO mode are expanded
   to blanks (like DOS-IO).  PAGE performs 12 EMIT regardless of
   redirection.  Programs that expect 9 EMIT or 12 EMIT to display
   graphic characters will require modification e.g. ( n) 6 BDOS DROP.

   Text interpreter is relaxed to allow floating-point numbers with
   a leading decimal point.  Note: Forth-94 requires at least one
   digit before the decimal point.

   To allow extentions such as locals, EXIT is now an immediate word.
   It compiles the run-time procedure (EXIT).  Applications which
   previously 'ticked' EXIT to gain the run-time procedure XT, should
   be changed to 'tick' (EXIT) instead.  EXIT can no longer be used
   to stop loading of the current screen.  Use \\ instead.

   DO LOOP return stack usage is reduced from three items to two.
   As a consequence LEAVE is now immediate.

v3.80

   ?PAIRS is obsolete.  Verification of conditional structures in a
   definition is now performed with +BAL -BAL.  Control-flow stack
   item size is now 1 cell; previously it was 2 cells.

   USER variables have been re-organized.  BLK SCR WARNING CSP are
   now normal variables.

v3.73

   Compiler security for CASE OF ENDOF ENDCASE has changed.

v3.70

   AT-XY? WINDOW WINDOW? renamed to GET-XY SET-WINDOW GET-WINDOW.
   AT-XY no longer performs bounds checking.

v3.63

   Changed ( to refill input stream and retry if the delimiter is not
   found.

v3.62

   Changed f/p numeric output to always include a decimal point.
   The default state is FDP ON.

v3.56

   Body of USER variables changed from byte to word to permit a user
   area greater than 256 bytes.

v3.55

   REPRESENT now pads the buffer to a minimum of MAX-FLOAT-DIGITS.
   Applications must ensure that buffers have adequate capacity.

v3.52

   Assembler: names of code words are now hidden until the definition
   is completed.

v3.5

   FILENAME -UTIL renamed to FNAME -TOOLS respectively.

   Assembler: JP JNP S) renamed to JPE JPO [].  Label designators
   have reverted to $: $ but L: L# remain for compatibility.

v3.4

   FS. FE. display in compact form.  Formatted modes now round
   correctly.  Trailing decimal point not shown (see FDP).

   Double-numbers must have trailing period and no punctuation.
   >FLOAT and NUMBER? strings may not contain blanks.  Old version
   of NUMBER? is provided in MISC.SCR.

   +EXT -EXT replaces +FILENAME -FILENAME

   SEARCH returns true if search string length is zero.

   ALLOTed memory contents are undefined.  Programs may no longer
   initialize memory at HERE then ALLOT over it.

   Definition names stored in same case as entered.  FIND matches
   according to system case-sensitivity.

   BYE moved to System (non-System apps must use 0 RETURN instead).

v3.3

 1. Separated heads

   Word headers have moved from the System dictionary to their own
   segment.  With near unlimited header space available there is less
   need to conserve space or make headerless objects.  Consequently:

   - anonymous/locals support is removed from the kernel and utilities.
   - [ASM is removed from the assembler and previous number of labels/
     references restored.

 2. Colors

   INVERSE BOLD BRIGHT are deleted.  NORMAL and COLOR-TABLE remain
   but are reserved for forth system use only; their use within user
   applications is discouraged.

   Turnkey applications now inherit the default system colors on
   start-up (previously it was set to NORMAL).

 3. Other

   (KEY) and (EMIT) are deleted.  These and other vectors can now be
   accessed via the SYS-VEC table instead.

v3.2

 1. Assembler

   The assembler is now resident in all forth kernels.  An overhaul of
   the assembler has seen duplicated instructions removed while others
   have been renamed.  The number of local labels per code definition
   has been reduced.  #) S#) have been replaced with ) and S)
   respectively.  See ASM.TXT for details.

   Impact: programs that use assembler definitions may need adjustment.

 2. Multitasker

   A new multitasker is provided.  The structure and operation closely
   matches traditional forth multitaskers.  However it is not compatible
   with the old version.  See MULTI.TXT for details.

   Impact: programs that use multitasking will need to be re-written.

 3. User variables

   User variables have been re-ordered, placing the most important
   at the start.  This permits tasks to define a smaller user area by
   overwriting system variables unused by the application.

   Note: if a program needs to know the offset of a user variable, it
   should be calculated (using UP) rather than assuming a particular
   value.

v3.1

 1. Integer division

   To align with current practice, the default integer division method
   is changed from floored to symmetric.

   Impact: programs that use integer division operators with negative
   arguments.

 2. Error handling

   ABORT and ABORT" now generate a THROW and will be intercepted by
   CATCH.  (ABORT) is consequently redundant and has been deleted.

   Impact: programs that use CATCH or (ABORT).

 3. IOR codes

   The following IOR values are now reserved:

   -1             ABORT
   -2             ABORT"
   -256           reserved
   -257 to -511   MS-DOS error codes

   MS-DOS error codes 1 to 255 are now returned as IOR values in the
   range -511 to -257.

   Impact: programs which expect the IOR value to be the same as the
   MS-DOS error code or which use the reserved range of IOR codes.

   Note: To convert IOR values -257 to 511 to MS-DOS error code, use:
   '255 AND'

 4. Portability

   The following changes have been made to improve portability:

   - /STRING is no longer range checked
   - PLACE ZPLACE source/destination overlap is reduced

 5. Memory management

   - On bootup, DX-Forth and applications now automatically shrink the
     DOS memory they occupy to 64K. Thus, applications no longer need
     to perform this function when memory outside the 64K segment needs
     to be made available.
   - DSEG has been deleted as it is currently redundant in DX-Forth.
     Users should replace instances of DSEG with CSEG.

