GForth 0.7.0, for the Zaurus

... or possibly any generic ARM platform (only tested on Zaurus Collie/SL-5500).
-rw-r--r-- 1 lex lex 1023936 2010-07-20 02:45 gforth-0.7.0_arm.ipk
-rw-r--r-- 1 lex lex 1021762 2010-07-20 02:46 gforth-0.7.0_arm.tgz-ipk
-rw-r--r-- 1 lex lex 1021328 2010-07-20 02:21 gforth-0.7.0-arm.tar.gz
-rw-r--r-- 1 lex lex   26012 2010-07-20 02:21 gforth-0.7.0-arm.txt
-rw-r--r-- 1 lex lex   59950 2010-07-20 02:10 gforth-config.log
-rwxr-xr-x 1 lex lex   32163 2010-07-20 02:10 gforth-config.status
-rw-r--r-- 1 lex lex     259 2010-07-20 02:17 index.html
-rw-r--r-- 1 lex lex     379 2010-07-20 02:50 md5sums.txt
This is gforth-0.7.0, compiled on an ARMv4/StrongARM platform (Zaurus SL-5500), using gcc 3.4.4 (the system is OpenZaurus 3.5.4). I have compiled it with libffi support, and libffi is included in the release file (see above). I have put together two IPKs: one 'Debian-format' and one 'Zaurus-format': one was assembled with 'ar' and the other with 'tar' - please rename the .tgz-ipk one with a .ipk suffix. I think that the Zaurus-type IPK is the .tgz type; have a look at 'gforth-0.7.0-arm.txt' to see the contents of the archives. There are no scripts in the IPKs as no post- or pre-install is necessary - just make sure that you have /usr/local/bin in your PATH. If possible, please use the .tar.gz files, as opposed to the IPKs - I'm not sure if I got the Control file right and you may have package-dependency issues because of my inclusion of libffi in the package.

If you want to learn Forth, may I suggest a visit to www.forth.com and in particular, the reading or purchase of the Starting Forth book.

Compilation

I compiled and installed libffi-3.0.9 in /usr/local. I needed to make a few symlinks to the built-in tool 'install-sh', in subdirs of libffi, and to specify the location of libffi's includes, since they installed in /usr/local/lib/libffi-3.0.9/include, instead of /usr/local/include/ or /usr/local/include/libffi-3.0.9.
lex@attraction:gforth-0.7.0$ make check
cp -p kernl32l.fi kernl32l.fi~
cp -p kernl32l.fi- kernl32l.fi
make checkone check-nofast ENGINE="./gforth --no-dynamic" >/dev/null 2>&1
make checkone check-nofast ENGINE="./gforth-itc" >/dev/null 2>&1
make checkone check-nofast ENGINE="./gforth-ditc" >/dev/null 2>&1
make checkone ENGINE="./gforth-fast --no-dynamic" >/dev/null 2>&1
make checkone check-nofast ENGINE="./gforth" >/dev/null 2>&1
make checkone ENGINE="./gforth-fast" >/dev/null 2>&1
*** Check successful ***
./gforth-fast --diag -e bye
*** no performance problems ***
My configure line was:
./configure CFLAGS="-I/usr/local/lib/libffi-3.0.9/include"
During configuration, there was a strange warning with libffi:
checking ffi.h usability... yes
checking ffi.h presence... no
configure: WARNING: ffi.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: ffi.h: proceeding with the compiler's result
checking for ffi.h... yes
checking for ffi_call in -lffi... yes
Binaries provided:
gforth             gforth-fast-0.7.0  gforthmi           vmgen-0.7.0
gforth-0.7.0       gforth-itc         gforthmi-0.7.0
gforth-fast        gforth-itc-0.7.0   vmgen
A brief session follows; 'attraction' is one of my SL-5500/Collies. Input typed by me is in boldface; all other text is from the computer.
[ 20th July 2010 .. 03:20 GMT ]
[ This example is from http://en.wikipedia.org/wiki/Forth_(programming_language) ]

lex@attraction:lex$ uname -a
Linux attraction 2.4.18-rmk7-pxa3-embedix #1 Sun, 12 Mar 2006 16:58:40 +0100 armv4l unknown
lex@attraction:lex$ which gforth
/usr/local/bin/gforth
lex@attraction:lex$ which gforth-fast
/usr/local/bin/gforth-fast
lex@attraction:lex$
lex@attraction:lex$ gforth-fast
Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
0 VALUE ii  ok
0 VALUE jj  ok
CREATE S[] 256 CHARS ALLOT  ok
  ok
: ARCFOUR ( c -- x )  compiled
ii 1+ DUP TO ii 255 AND  ( -- i )  compiled
S[] +  DUP C@  ( -- 'S[i] S[i] )  compiled
DUP jj +  255 AND DUP TO jj  ( -- 'S[i] S[i] 'S[j] )  compiled
S[] + DUP C@ >R  compiled
OVER SWAP C!  compiled
R@ ROT C!  compiled
R> +  compiled
255 AND S[] + C@  compiled
XOR ;  ok
  ok
: ARCFOUR-INIT ( key len -- )  compiled
256 MIN LOCALS| len key |  compiled
256 0 DO  I  S[] I + C!  LOOP  compiled
0 TO jj  compiled
256 0  DO  ( key len -- )  compiled
key I len MOD + C@  compiled
S[] I + C@ + jj + 255 AND TO jj  compiled
S[] I + DUP C@ SWAP ( c1 add1 )  compiled
S[] jj + DUP C@ ( c1 addr1 addr2 c2 ) ROT C! C!  compiled
LOOP  compiled
0 TO ii  0 TO jj ;  ok
  ok
( validation program )  ok
CREATE KEY: 64 CHARS ALLOT  ok
: !KEY ( c1 c2 ... cn n--store the specified key of length n )  compiled
DUP 63 U> ABORT" key too long (<64)"  compiled
DUP KEY: C! KEY: + KEY: 1+ SWAP ?DO  I C!  -1 +LOOP ;  ok
HEX 61 8A 63 D2 FB  5 !KEY  ok
KEY: COUNT ARCFOUR-INIT  ok
CR
 ok
DC ARCFOUR 2 .R SPACE F1  ok
EE ARCFOUR 2 .R SPACE 38  ok
4C ARCFOUR 2 .R SPACE 29  ok
F9 ARCFOUR 2 .R SPACE C9  ok
2C ARCFOUR 2 .R DE ok
CR
 ok
.( Yay!  Validation okay ) Yay!  Validation okay  ok

Legal blurb

This software is supplied without warranty, without guarantee that it will work, fail, do what it's supposed to - or not - and if you choose to download and use this software and it blows up your grandmother, I am not legally- responsible. All software on this page is released under the GPL license. Sorry, Nan.
Quick links:
Contact page
Wordpress blog
Zaurus project page
The public projects page
The site index page