me.gif 110kB Last changed: Mon 30 Jan 1995 : manual ready.
Last changed: Sun 28 May 1995 : Addresses, hardware example code.
Last changed: Wed 12 July 1995 : DPMI, 1.06
Last changed: Sun 17 Sept 1995 : minor updates
Last changed: Mon 13 Nov 1995 : phone number changed, Linux & MMURTL
Last changed: Sat 13 Jan 1996 : Linux pre-announcement, user suggestions.
Last changed: Sat 2 March 1996 : Linux latest changes.
Last changed: Sun 10 March 1996 : Polishing for the homepage.
Last changed: Tue 30 April 1996 : changed to HTML.
Last changed: Tue 10 December 1996 : update for Linux 2.0 and Windows NT.
Last changed: Wed 23 April 1997 : update for Windows NT 4.0, iForth 1.07. Removed MMURTL.
Last changed: Fri 9 May 1997 : removed spelling errors, improved clarity.
Last changed: Thu 17 July 1997 : Changed pricing strategy to fight back soaring sales :-)
Last changed: Mon 4 Aug 1997 : Fixed exceptions, fixed Tcl/Tk for Windows NT
Last changed: Mon 7 Aug 1997 : Tcl/Tk screenshot added
Last changed: Sun 10 Jan 1999 : OpenGL screenshots added
Last changed: Mon 25 Jan 1999 : Two more OpenGL screenshots
Last changed: Mon 30 May 1999 : Exchanged one OpenGL screenshot
Last changed: Mon 2 Aug 1999 : New low prices
Last changed: Tuesday, May 15, 2001 8:28 PM: Windows 2000 reference adjusted
Last changed: Saturday, September 22, 2001 9:58 AM: details for release 1.12
Last changed: Wednesday, December 05, 2001 1:21 PM: Added Kagi on-line order scheme
Last changed: Sunday, June 02, 2002 4:53 PM, iForth vsn 2.0
Last changed: Tuesday, September 18, 2007, 19:46 PM, newest iForth only runs on XP and Linux
Last changed: Friday, January 25, 2008, 19:12 PM, new pricing in Euros, new address
Last changed: Saturday, May 17, 2008, 10:19 AM, update for iForth 3.0, the final 32-bit release
Last changed: Wednesday, January 12, 2011, 22:41, Added link to evaluation version of iForth 4.0.6
Last changed: Thursday, July 31, 2014, 23:47, Added announcement of iForth 5.0
Last changed: Sunday, December 07, 2014, 10:34; Corrected location in announcement of iForth 5.0
Last changed: Thursday, February 09, 2017, 19:33, Marcel Hendrix; PayPal button as KAGI went belly-up
Last changed: Sunday, November 19, 2017, 14:06; Marcel Hendrix; Release iForth 6.0

Buy iForth with PayPal

Is iForth actively supported?

Yes, it is, but these pages are updated quite infrequently (Last changed: Sunday, November 19, 2017, 14:06; Marcel Hendrix; Release iForth 6.0).

Release of iForth vsn 6.0

iForth6 (64-bit only) now compiles itself (thank you Hanno!). The release has been extensively tested and bugs of iForth 5.0, notably in the dynamic linking department, have been fixed. As a result iForth6 runs on Windows (7, 8 and 10), modern Linux, OSX, and some Virtual Machines. The iserver sources are included. In addition, fJack 3.01 is available for 64bit ARM.

Registered users can download the archive (~300MB) from http://www.iforth.org/release. The passwords haven't changed.

Changes

Features

The 6.0 release concentrated on bug fixes, highspeed graphics, improved threading and unified I/O. Coming releases will again focus on speed and high level approaches to optimization.

iForth vsn 5.0

This is a 64bit-only release for Windows/Linux and OSX.

Changes:

  1. We have made the switch to 64bit -- there is no official 32bit iForth 5.0. The open bug and bug/month counters for the kernel/optimizer are now lower than they were for 32bit iForth. A large number of flaws have been corrected, especially for the Windows version.
  2. Knuth-type co-routines supported through PAUSE.
  3. Both Windows and Linux now use the ACML BLAS and LApack libraries.

The 5.0 release concentrates on correct implementation, stability and feature completeness.

The last release of iForth32/64, vsn. 4.0.6, is ready. Shipping started January 2011.

There's a free evaluation version.

iForth64 for Windows, Linux and OSX (November 2009)

The final release of iForth32 (32-bits iForth), and the first release of iForth64 (64-bit) have been combined in version 4.0. This release is available for Windows (XP32, XP64 and Windows 7), Linux x86_32 and x86_64, and Mac OSX (Intel hardware only, 32/64 bit). Starting from November, delivery will be through a secured web-site, typically a few hours after ordering. There is now also a free evaluation version available for download (See above for link).

iForth32 for Windows, Linux and OSX

The final release of iForth32 (32-bits iForth) had version number 3.0.

Because of the truly awesome contributions of two iForth users, very significant improvements were implemented for the final 32-bit release (all of them available for iForth64 also) ...

  1. Hanno Schwalm has worked on the iForth meta source code (thought to be humanly unreadable!) and succeeded to free up a CPU register, without any degradation of execution speed. This free register is used to cache the address of the iForth USER area.

    The result is that iForth has now OS-level threads and callbacks for each supported platform. There is no limit on what threads and callbacks are allowed to do: floating-point arithmetic, execution of complete SPICE jobs, multiple invocations of external programs, even compilation of thread-local Forth code -- it will all work.

    Threads and callbacks have private stacks (data, return, floating-point, system, and locals), plus a private USER area and dictionary. Semaphored I/O is supported for threads, and Forth-level interactive debugging of parallel code (.S ABORT etc.) is possible.

    The iForth parallel constructs (inherited from tForth) have been extensively tested in a real-time application (Linux driver for the AOR 7030 shortwave receiver) that uses the FPU extensively, talks to the PC audio system and radio hardware, and supports a GUI written in Forth. The AOR 7030 code is included as a user contribution (it supports a "dummy" radio as fallback).

  2. Hanno Schwalm rationalized the terminal control sequences used to set attributes (e.g. INVERSE BOLD ITALICS) and colors (red blue etc.) in both text and graphic mode.

  3. Hanno also wrote a truly awesome iForth graphics driver for X-windows that works under both Linux and Mac OSX. Apart from very fast graphics, this driver supports multi-font text output and mouse control. The driver is thread-safe and it is possible (although not necessarily useful ;-) to run any number of iForth graphics programs in parallel.

    iForth graphics run unmodified on all platforms (Windows, X, OSX)

  4. Charles Turner has ported the Linux server "C" codes to Mac OSX and in the process genericized them.

    Yes, iForth32 now works not only on Windows and Linux, but also on Intel Macs (under both Debian Linux and OSX)!

  5. OpenGL driver bugs were removed. OpenGL code now works bugfree on Windows, Linux, and OSX.

  6. A blocking sound driver (OSS/ALSA) for Linux is available, as is an experimental non-blocking sound/MIDI driver. The MANX program runs unchanged on both Windows and Linux. Unfortunately, sound does not work yet for OSX. However, for all platforms a uniform Jack interface is in the design stage.

  7. Extensive floating-point library support (GotoBLAS, NRC, FFTW, GINT, Atlas) is integrated on all platforms. Typical processing speed is around 8 GFLOPS (double precision) for matrix multiplication (1.6 GHz Core Duo). All code follows the extended FSL conventions and Forth native memory layout. Pre-compiled Linux and OSX binaries are available to save some hassle for new users.

    Interfaces to Matlab, Excel, MathCAD, LTSPICE, CONV, Mag_Tool, LeCroy oscilloscopes, BOSS and Roland synthesizers.

  8. At this moment (May 2008) installation programs are being prepared for Windows, Linux and Mac OSX. However, be warned that iForth is definitely not for beginners! Shipping will start end of May. As always, recent users will receive free updates.

  9. iForth32 now comes with 24,552 example and documentation files. Server source code for Linux and OSX is included. The examples work on all platforms, save for some Windows GUI demos, and with a few omissions on OSX because of the still lacking sound driver.

  10. Minor fixes: input of lower-case HEX is now possible and S\" and PARSE-NAME have been added to the kernel. X:deferred, X:defined, X:ekeys, X:extension-query, X:number-prefix, X:parse-name are also available (but not X:required, X:structures, and X:throw-iors). iForth does have NEEDS and structure packages, of course.

    Added EKEY>FKEY and all key constants (ALT SHIFT and CONTROL masks only for Windows).

    iForth tries to reasonably track the Forth20x0 standard.

  11. Path name support has been improved. It is now possible to trace the names of files given only by their handle. iForth remembers the state of the command line buffer and the current path in the user's home directory.

  12. The Forth Foundation library has been ported to iForth.

  13. Some 60 problems of the Euler Project are now available.

  14. New and ugraded library support for
  15. Included the online version of Starting Forth, the original (TM :-).
As from today, main development will concentrate on iForth's 64-bit branch. Support policy is unchanged. (It includes free meals for visitors :-)

The iForth development team

(Marcel Hendrix, Hanno Schwalm and Charles Turner)

iForth for Windows XP

The XP version has a user interface that makes full use of the WIN32 libraries. iForth has three windows: the familiar console window (in a separate thread), the RTF-enhanced editor (calm down, you don't have to use it) and the graphics terminal screen. The graphics terminal does double duty as the application window. Look at the screenshot below for a visual impression

(Screenshot created with iForth)
wizz.jpg 110kB



(Backdrop picture is the graphics window, full-size. On top of it you see the iForth console window, partly overlapped with the RTF editor. The editor has some menus open.) (Screenshot created with iForth) (Backdrop picture is the graphics window, full-size. On top of it you see the iForth console window, partly overlapped with the RTF editor. The editor has some menus open.)

iForth vsn 2.0 (June 2002)

The main new feature in this iForth release is a completely redesigned floating-point and integer optimizer. All high-level stack operations, on all stacks, are completely optimized away. The instruction selection, code generation and register assignment mechanism has improved. Also, the top of the FP stack is now cached on the FPU stack, but this does not have any noticeable effect on the run-time speed. An interesting aside: the compiler became much simpler and easier to retarget, and uses a minimum of direct machine code internally. This means it should be trivial to experiment with reassigned stack pointers and variations on the number of stackpointers kept in registers.

It was observed that on the 900 MHz Athlon and above VFX seems to disproportionally benefit from the increased clockspeed. The new optimizer makes iForth again competitive with MPE's VFX on the faster chips. For some integer benchmarks VFX can still be seen to be between 10% and 30% faster than iForth 2.0. For floating-point there is no valid comparison possible with VFX (VFX doesn't optimize FP code). iForth is (much) faster than VC++ 6.0 for the FLOPS benchmark. The remaining differences between iForth and the competition have been identified as suboptimal stackpointer assignment and alignment problems that will be fixed in the next release.

Systems tested with "MPEBench/benchm.frt"

iForth 1.12 run at 21:47:12, September 30, 2001
iForth 2.00 run at 16:39:57, May 19, 2002

Test time excluding overhead               ms          ms    improvement
------------------------------------------------------------------------
Eratosthenes sieve 1899 Primes            350         266 	1.32
Fibonacci recursion ( 35 -> 9227465 )     504         500	1.00
Hoare's quick sort (reverse order)        244         164	1.49
Generate random numbers (1024 kb array)   155         178	0.87
LZ77 Comp. (400 kb Random Data Mem>Mem)   774         288	2.69
Dhrystone (integer)                       393         300	1.33
Total:                                   2420	     1696	1.43

This is an AMD Athlon 900 MHz machine running Windows 2000. The compilers are iForth 1.12.8351 versus MS VC++ 6.00. Both have their settings customized for speed.

        .------------------------.------------------------.
        |     iForth 1.12.8351   |       MS VC++ 6.0      |
.-------+------------------------+------------------------'
|Module |   Error       MFLOPS   |    Error       MFLOPS  |
|-------+------------------------+------------------------|
|   1   |  4.8317E-13   538.4615 |  1.3358e-012  449.5735 |
|   2   |  1.8135E-13   466.1811 |  2.0517e-013  373.3333 |
|   3   | -9.6647E-15   431.9174 |  1.7542e-014  402.2181 |
|   4   |  1.5201E-13   570.7491 | -5.4512e-014  441.7855 |
|   5   | -1.2225E-13   582.0006 |  3.3307e-016  459.7473 |
|   6   | -6.9949E-15   638.4589 | -1.9040e-014  470.3497 |
|   7   | -1.1880E-11   153.5386 |  2.6034e-011  230.2849 |
|   8   | -8.7737E-14   662.9834 | -5.4068e-014  486.5687 |
`-------'------------------------'------------------------'

Because of the enormous amount of changes in the compiler all of iForth's examples were carefully checked and double checked for problems. All bugs were fixed, and in most cases extra documentation and help words were added. However, the installation procedures on Windows and Linux have not changed much -- let alone improved.

The Linux iForth has been carefully reviewed on a SuSE 8.0 system. This means that you now can run iForth on the Linux console and in X, or over a network with telnet or ssh. The X graphics driver is still rudimentary, but it does work. There were changes in OpenGL since Linux 2.0 and I could not get this to work for iForth 2.0. Postponed! Also, SVGALIB seems to have died, and the framebuffer people have not filled in the gap completely. In the next iForth release the old SVGALIB functionality may have been restored through use of libggi and libgii.

Release 2.0 does not yet fix the old problem with STATE. The next release will redefine the meaning of the iForth xt, and there will be separate routines for interpretation and compilation (and ...)

iForth vsn 1.12 (August 2001)

The main new feature in this iForth release is substantially increased speed for both floating-point and integer operations. The FP code generator has been rewritten with the AMD Athlon CPU in mind (this chip has an extra Load/Store unit compared to Intel products). For some special FP benchmarks an Athlon will be almost 150% faster than a PIII. Extensive tests show that for integer code Intel PIII and AMD Athlon chips get approximately the same speedup.

The x86 seems to be _extremely_ sensitive to aligned data. This was not a problem in the past because the rest of ( FP ) iForth was not fast enough to show it. With all the new optimizations it proves that extended FP is about twice slower than double-precision (64-bit). Also because the 80-bit format does not support optimization fully (you can't combine 80-bit fetch and store with other instructions), I decided to make DP the standard iForth FP format. Also tried a native single precision (as opposed to explicitly using SF@ etc.) iForth but it was only marginally faster and there would be problems with NRC CLAPACK and GAUSSJ.

An x86 has severe stack-alignment problems . Here I found that unaligned stacks slowed down the assembler BLAS by a factor of 2! (verified with the Linux executable). This is fixed for all OS's.

Another problem is accessing data that is in the same cache line as code. This has been fixed for all standard Forth words (VARIABLE CONSTANT VALUE etc.), but user defined data (e.g. with DOES> ) can not automatically be adjusted. When the programmer does not leave a sufficiently wide gap there will be a large slowdown on some codes (factor of 4 was observed). For the Pentium a gap of 32 bytes (cacheline size) between data and code is enough. For the Athlon this must be 64 bytes (worst case). Unfortunately, optimal AMD alignment hurts older Pentia. For best results _calign_ and _align_ should be set up by the user in the iForth.prf file.

iForth can now control and automate MATLAB 5.x.

Added the word PASCAL-CALLBACK so that iForth can now call Visual Basic. See the Neural Net demo in ./examples/nn/nn51.frt for an example of use.

Improved the speed of ALLOCATE FREE and RESIZE . From now on, the iForth memory manager will only be used in case there is no OS.

iForth now allows spaces in file names (using single or double quotes).

Installed a new and much faster READ-LINE library.

Again, I could not complete everything on my wishlist (some Linux X graphics and OpenGL code still isn't ready for prime-time). I decided to release a version 1.12 because (1) I had promised too many people a (free) upgrade over too long a period of time and (2) the current source tree performed decent with respect to current MPE and Forth Inc. native-code products. The projected final version 2.0 will contain a nicely integrated symmetric disassembler/assembler pair and a code generator with register coloring.

iForth for Windows XP (2006)

bezier 3D curve 7kB The new features in this iForth release are WIN32 multiprogramming using transputer-compatible threads, and built-in support for spectacular OpenGL graphics. Look at the screenshots left and below for a visual impression. To be honest, I did not complete everything on the wishlist for version 1.11. However, this release is stable, well-tested and has some nice features, so I postponed a few under-the-hood rough edges to the next (final) release.
(OpenGL object graphics)

What is iForth?


What am I allowed to do with iForth?

iForth is not shareware or freeware and is not distributed under GPL, LGPL or whatever. The rules are that once a developer pays for his or her copy of iForth he or she can do with it whatever they want. This includes using the iForth interpreter inside distributed applications, in fact, I strongly encourage this practice. The above licensing scheme holds for the Windows and DOS iForth. With iForth for Linux the license scheme applies to the iForth binary (completely generated by iForth tools) and also to the bare-bones iForth server. This server is written in 'C' and must be compiled by the user from the supplied source code. I am told that use of gcc, gas etc. does not introduce any GPL/LPGL restrictions. However, I will not take any responsibility for what dependencies are introduced by linking a full-featured iServer. (Carefully note that I'm not saying that any such dependency necessarily would be introduced, I simply don't know).

Now why is iForth not freeware?


Linux

Even at this moment the iForths for MS-DOS, Windows and Linux are exactly equal at the kernel level. Almost everything you can do under MS-DOS you can do under Linux, only faster and better. The Windows versions keep the middle-ground: they are "cleaner" than MS-DOS, but a bit slower for graphics. Because the Windows and Linux versions use a server written in "C" and allow dynamic linking, there is much more you can get accomplished than under MS-DOS.
That being said, I'm contemplating to drop support for MS-DOS. (In preparation to that move I've reduced its price.) MS-DOS will go because I can't directly use that OS anymore on my machines. I do plan to come back on Linux with a killer Forth when I grow tired of XP. The MS-DOS iForth allows reading and writing to special memory locations to: Under Linux and Windows XP,

NEW How to order iForth for Windows, OSX and Linux

The set of three iForths for Windows, OSX and Linux costs 100 Euros.

Buy iForth with PayPal

Additional info on iForth for Windows XP


I'm not so bad! This version was officially released on April 23, 1997 (works for W2K too, official release will be in 1.12). All examples and utilities were adjusted so that they run on all platforms. Still not all of them have been tested (there's over 14 MBytes of examples).

iForth for XP comes in the form of a binary image file and the iServer executable. There is no fancy install program (necessary :) Simply copy the files to a directory tree, setup an icon for the iwserver executable, then add two environment variables. Done.


Contact

email : mhx@iae.nl
home  : Marcel Hendrix
        Bressele-dijk 2
        6024 CA Budel-Dorplein
        The Netherlands
phone : +31-495-541529

Overview of the distribution


 Volume in drive C is FRUNOMAIN
 Volume Serial Number is 3C3C-1AE6

 Directory of C:\DFWFORTH\EXAMPLES

[.]                [..]               [basic]            [benchmar]
[blocks]           [caesar]           [editor]           [expert90]
[games]            [sod]              [audiocd]          [graphics]
[gray-3]           [hawk]             [lisp]             [misc]
[mpascal]          [neural]           [numeric]          [fsl]
[nspice]           [simulati]         [mix]              [orkest]
[pascal]           [modem]            [ansi]             [tcl_tk]
[classes]          [modem2]           [xwindows]         [bignum]
[ethernet]         [fltest]           [fserver]          [grayo]
[magloss]          [mpqss]            [pl1]              [postscri]
[scope]            [transput]         [junky]            [fitting]
[mxf2]             [emcmeas]          [nrc]              [matlab]
[codebase]         [threads]

Home directory is EXAMPLES\

42476544 bytes in 1842 files, contained in 74 sub-directories + Home.

 Volume in drive C is FRUNOMAIN
 Volume Serial Number is 3C3C-1AE6

 Directory of C:\DFWFORTH\INCLUDE

[.]            [..]           eplot.frt      dosmouse.frt   goto.frt
forthpad.h     loadsoun.bat   wingrf.frt     rs232com.frt   matrices.frt
os.frt         sort.frt       elip.frt       expint.frt     ffind.frt
glossary.frt   lmouse.frt     nrc.frt        heaps.frt      now.frt
proced.frt     ibcktrac.frt   imatrix.frt    iwords1.frt    iwords2.frt
graphics.frt   locdef.frt     xmatrix.frt    menus.frt      schema.frt
priq.frt       dialogs.frt    threads.frt    quads.frt      queues.frt
terminal.frt   search.frt     search2.frt    see.frt        fsl_util.frt
servgr16.frt   sets.frt       setstd.frt     dynlink.frt    gnugrafh.frt
speaker.frt    spline.frt     stacks.frt     streams.frt    strings.frt
dde.frt        sketcher.frt   sketch3d.frt   tmouse.frt     tracer.frt
trcount.frt    twords1.frt    twords2.frt    uniq.frt       wc.frt
npipes.frt     words.frt      assertio.glo   chebyshe.glo   glossary.glo
heaps.glo      locdef.glo     priq.glo       sketcher.glo   winconst.frt
pipes.frt      template.prf   sockets.frt    assemble.frt   miscutil.frt
assertio.frt   backtrac.frt   banner.frt     chebyshe.frt   [fonts]
complex.frt    cvfind.frt     pscript.frt    win32gui.frt   servgraf.frt
gnugraf.frt    linuxgrf.frt   cplx_fsl.frt   hpgl.frt       arrays.frt
clapack.frt    arraysx.frt    ix86asm.frt    wmouse.frt     playwav.frt
needs.frt      mouse.frt      assert.frt     esoteric.frt   html.frt
profiler.frt   stroked.frt    textloop.frt   whatenv.frt    pwavdos.frt
pwavewin.frt   pwavlinu.frt   terminal.prf   proced.prf     mci.frt
cliserv.frt    cliserv2.frt   dlstroke.frt   strokedx.frt   html2.frt
help.frt       iforth.prf     [windows]      os.prf         winstrok.frt
forthpad.rc    forthpad.res   wine.emf

             123 File(s)      1,072,244 bytes
                            103,088,128 bytes free

Valid HTML 3.0