Version 2.32 of Fig-Forth v2 is backward compatible with most versions of this software with the following concerns and adjustments to source programs;
Starting with Fig-Forth version 2.20, multiple vocabularies and the ONLY-ALSO concept was introduced. Source programs before this release will have difficulty with the search process for many of the dictionary symbols. Correction must be undertaken in a case by case process. This includes the EDITOR program for such versions.
The ststus of the following words has been changed, discontinued or outdated. Outdated words may be eliminated in any future release, so their use is discouraged;
Word: +-
Prior Use: 0< if abs minus else abs then
Status: Reinstated
Word: D+-
Prior Use: 0< if dabs dminus else dabs then
Status: Reinstated
Word: LIMIT
Use: -1
Status: Discontinued.
Word: RETRACE
Use: VSYNC
Status: Discontinued.
Word: Z"
Use: ,"
Status: Discontinued.
Word: (Z")
Use: (,")
Status: Discontinued.
Word: @!
Use: ->
Status: Outdated.
Word: 2@!
Use: TO
Status: Outdated.
Word: (OPEN)
Use: ," 20 OPEN FILE" RUN$
Status: Outdated.
Word: CASE:
Use: equivalent to n OVER = IF
Status: Syntaxt restriction lifted
Word: :END
Use: equivalent to THEN
Status: Syntax restriction lifted
Word: (FIND)
Use: FIND
Status: Discontinued
Word: -FIND
Use: 32 WORD FIND
Status: Discontinued
For all versions of Fig-Forth v2 prior to release 2.25, the VMODE system variable has been radically altered making the use of prior source programs that access this value terminal to the kernel unless modified. This change is a reversal of the upper and lower bytes of this variable for the use of graphic display control, removing the 1+ from the sequence VMODE 1+ C! Source text should be modified to reflect this change. This includes the MIDI Maker, the BREAK-OUT game demo, and other package software.
As with VMODE, all source prior to version 2.25 should remove the 1+ when accessing the ATTR variable for character display control, for the kernel function now returns the address of the current ink or character attributes used for printing. This eliminates the need to use the offset for one mode and not use it in another, meaning that user programs attempting to adjust the ASCII code-wheel should add a 1- command when operating in Text mode and accessing the character offset value. This includes the EDITOR program as of version 2.22 and later.
CODE ;CODE and END-CODE have changed their fragment foot-prints as of 2.25, causing changes in the manner in which user code sections are defined. See Appendix C for details.
>FONT >EMIT and TEXT have changed their interface structure to the BIOS character display device, causing some modes to not display text on the screen without the use of the Font Printer. The TEXT word now contains an implicit execution of the >EMIT word, so its use is no longer restricted.
The Input Processor has changed as of 2.25, see chapters 2 and 6 of the Reference manual for details. This change could effect user defined symbols in which the default "hot character" has been employed.
The NUMBER word for versions prior to 2.25 required that all counted strings used for processing be terminated by an ending ASCII Space character contrary to the forced Null used by EXPECT. This restriction has been removed.
The EXPECT function as of version 2.25 places the count of characters saved to the targeted buffer in the system variable HLD.
Division operations as of 2.26 have changed their output values, with the introduction of the OV word and overflow indicator. Source expecting an overflow value of negative infinity (all bits equal to 1) should be changed to use the OV flag as the logical indicator of the overflow, since the new division routine returns an overflow as zero.
While the old EXIT word was equivalent to RDROP or ;S (depending on the version), in 2.26 the word is immediate and compile only to include control stack balancing. EXIT will scan the compiler flags structure and add the UNLOOPs necessary to clear any DO-LOOP parameters in the current definition, causing an immediate and clean un-nesting of the token subroutine at execution time. See also ?EXIT in Flow Control chapter.
Source programs prior to version 2.26 should not be immediately updated to use the new ?DO word, unless the exact text being replaced is <n> DUP IF 0 DO ... LOOP ELSE DROP THEN or equivalent. This is because where 0 0 DO ... LOOP will execute the words of the loop once before exit, a 0 0 ?DO ... LOOP will jump around the words of the loop entirely.
The Font Printer now recognizes the Mask mode of operation, causing user programs which expect backward erasure to fail when this mode is selected. Such source should be modified to switch to normal mode when backward character erasure is required.
2.27 added the UNLOOP word for Return Stack balancing when exiting DO-LOOPs, which replaces RDROP RDROP in that it discards two return stack words.
Version 2.28 corrects a previously un-reported error in the pixel read operation, adds an extra digit to the sound card addressing for cards not located in the 220-270 Sound Blaster range. (E.g., 5000 Hex and such.)
2.30 changes the philosophy behind the video mode interface, expecting a VESA connection first and then doing individual video card checks in the event that VESA is not found. This interface allows a limited access to the video system providing the hardware can support the new modes, returning a false flag if the mode selection was successful. Source from previous versions should function normally without errors and hopefully, this will solve the single bank error we've been seeing. This process has expanded the internal address table inside the kernel segment, setting up a maximum of 2048 lines of access.
As of 2.30, the VSTART word has changed operation in the HGR modes, requiring both an X and Y single word offset as opposed to the byte count used in lower resolutions. If the source program uses HGR and expects access to this value, it will need to be corrected.
2.31 corrects a missing count byte error in the library operation, adds another case to optimizer.
2.32 removes -FIND & (FIND) in favor of the ANS compliant FIND, correcting an error of the input processor for decimal digits containing constants. User variables are now defined as constants to take advantage of the optimizer.
Version 2.30 and above contains a peephole optimizer for all token thread fragments, meaning the one-to-one correspondence of generated code is broken. Any source program expecting to access the token thread directly or indirectly may be affected by this change, as well as that source expecting to modify the Return Stack control word for Program Counter adjustment. Corrections for this must be handled case-by-case. (See Optimizer.)
Return to Contents. Next Chapter. Previous Chapter.