SYSCALL is currently not functional
under Cygwin. It is only a stub for possible future implementation.
MOVE in the x86-linux version
was noticed during the port. The problem has been fixed in
this x86-cygwin release, and we expect to release a patch for
the 1.4.1 x86-linux distribution. For additional information,
please refer to the
README.SNAP file in the
1.4.x development directory.
#! (synonymous with \)
to allow Forth source (.4th) files to be run as executable scripts.
M*/ in
the x86 version.
#! (synonymous with \)
to allow Forth source (.4th) files to be run as executable scripts.
MOD
and /MOD from v 1.3.2 have been incorporated
into v 1.4.1. Added checks for division by zero and
division overflow errors in UM/MOD and
UTM/. Also added checks for division by zero
for FM/MOD and SM/REM.
These changes provide consistent behavior with the
ppc-osx version.
STS/REM fail at present on
the x86-linux version. Also, tests with a negative divisor for
M*/, an ambiguous condition, give different results
than the ppc-osx version.DU<,
DMAX, DMIN, DS*,
UTM/, UTS/MOD,
STS/REM, UDM*, MOVE,
F0>, and SYSCALLMOVE,
DMAX, and DMIN in ans-words.4th,
since these words are now intrinsic.
>NUMBER in
ans-words.4th to use UDM* instead of
M*/.
M*/
fails in some test cases in the x86 versions of kForth.
D<>,
D>, D>=, D<=,
D0<), and to add tests to catch certain errors
in the implementation of D<. The modified file
remains ANS Forth compatible.
SOURCE in core.4th,
since kForth implementation of SOURCE does not conform
to ANS.
FORTH-SIGNAL ( xt n -- xtold | install word as handler for signal n )
RAISE ( n -- ior | assert signal n )
SET-ITIMER ( type aval aoldval -- error | set up timer signals )
GET-ITIMER ( type aval -- error | get timer countdown count )
The file signal.4th defines the various signals, and the file signals-ex.4th
provides examples of how to install and use a signal handler from
Forth. The current implementation allows periodic tasks to be accomplished
in the background through the timer signals, but, as yet, there is no
way to handle exceptions like SIGFPE and SIGSEGV due to the absence of
a longjmp in the handler.
FTRUNC>S.EVALUATE which were causing problems with
defining macros using S" ..." EVALUATE.
WORD: two subsequent
calls to WORD, such as
"BL WORD BL WORD",
would drop the first character of the second word.
F>S to FROUND>S.
The word F>S has been implemented inconsistently
in different Forth systems in the past. In some systems
F>S represented truncation to an integer
while in others it rounded to an integer. It has been
decided to implement explicit words for these two distinct
operations and to remove F>S to avoid
ambiguity. In addition to FROUND>S, the
complementary word FTRUNC>S provides
truncation to a single length integer. For consistency,
the word FTRUNC has also been added. It complements
the existing word FROUND. The
Portable Forth
Environment (PFE) also provides these new words, as of version
0.32.94, but PFE also retains F>S with
the meaning of truncation to integer.
SOURCE and REFILL.
WORD. For a
non-blank delimiter, WORD was not removing the
delimiting character from the input stream. WORD
now consumes the delimiting character.
.S. Also,
a check for stack underflow is performed upon return from the
virtual machine, whether or not a VM error has occured.
IMMEDIATE has been fixed.
EVALUATE;
however, users should consider this release to be unstable due to
insufficient testing or burn-in with real use. For Linux, a new source
package is provided. For Windows, a new executable is provided.
POSTPONE which would not work
for non-immediate words in previous versions.
EVALUATE which could not be used to
define inline words, due to reentrancy problems in previous versions.
FM/MOD which did not handle negative divisor properly in previous versions.
CMOVE> which did not work for zero count.
ABORT" which printed garbage prior to message.
VARIABLE,
CONSTANT, FVARIABLE, FCONSTANT. Such words could
previously not be ticked.
include file, rather than the cumulative
line number. Also, previously, multiline comments or
.( output would not increment the line
counter. This problem has been fixed. Error reporting has been
improved considerably.
SEARCH,
COMPARE, and STATE.
MS@ which returns the number of
milliseconds elapsed since starting up the kForth environment.
EVALUATE and
[ and ].
.( -- this word
now behaves properly.
IMMEDIATE and NONDEFERRED. More
information about precedence in kForth will be
given in the Technical Information section of the User's Guide.
>BODY, POSTPONE, IMMEDIATE, NONDEFERRED,
<#, #, #S, SIGN, HOLD, #>.
FIND to return code pointer
(execution token) instead of parameter field address (data field).
The two fields are the same for words not created with
defining words.
.R and U.R to not
print a space following the output field.
WORD to not include space immediately
following WORD when delimiter is not a space.
ACCEPT to allow backspace editing of input line.
?DO.
2>R, 2R>, 2R@, D+, D-, D<, D=, D0=, D., .(.
DNEGATE bug for double-length zero.
F0<, KEY, and
KEY?.
DABS and DNEGATE.
F0<
was resolved to allow proper build under as 2.10.90.
USLEEP is implemented
differently to provide more accurate time
delays for short intervals. USLEEP no
longer makes use of the system usleep function.
DABS and DNEGATE are implemented.
CASE...OF...ENDOF...ENDCASE control
structure has been added.
CASE...OF...ENDOF...ENDCASE control
structure has been added.
INCLUDE. This
is done through the environment variable KFORTH_DIR.
+LOOP bug for negative increment.
ROLL.
LITERAL, M*, UM*, S",
C", FM/MOD, SM/REM.
CHAR behavior to conform to ANS standard,
and added [CHAR]. Removed the word ASCII
from the dictionary.
0<>, .R, U.R, ?ALLOT.
?ALLOT is a non-standard word.
F0= to handle negative zero value.
CELLS, CELL+, DFLOATS, DFLOAT+,
SFLOATS, SFLOAT+, CHAR+, S>D, F>D, D>F, F0=, F0<, U> .
>FILE, CONSOLE, RECURSE.
WORD and ' (tick).
NUMBER? to give same results as PFE and UR/FORTH.