aboutsummaryrefslogtreecommitdiffstats
This is a version of Mitch Bradley's C Forth system that
has been optimized for embedded use in semi-constrained
systems such as System On Chip processors.

To port it to a new system, you will need to add some or all
of the following new directories and files:

a) CPU-dependent code and compiler definitions in src/cpu/*
b) Platform-dependent code in src/platform/*
c) Application-specific code in app/*
d) Build directories for your versions in build/*

There is a test build directory build/template .  You can
copy that template directory to a new name as a starting
point for your version.

Typing "make" in build/template will make a test version.
It builds a host image and a target image for the same
CPU as the host.  The target image contains stub routines
for system I/O and startup, so it probably won't run,
but host image should work:

   $ cd build/template
   $ make
   $ ./forth app.dic
   $ C Forth  Copyright (c) 2008 FirmWorks
   ok bye
   $ 

The "forth" executable program is a version of the Forth core kernel
(the equivalent of "code words") that runs on the compilation host
system.  It loads a "dictionary file" like "app.dic", which is a
machine-independent representation of a Forth dictionary containing
compiled colon definitions and other objects.

The target executable "app.elf" (or its raw-binary equivalent
"app.img") contains both a target version of the executable program
and an embedded copy of "app.dic".  To make it run on a real
target system, you would have to link it with appropriate startup
code and other necessary CPU and platform I/O routines for your
specific target.

The host and target systems need not use the same CPU - the
target can be cross-compiled.

Read the Makefile in the build/template to see how to configure
the CPU, the platform code, and the application code.

There is some ARM-specific code in cpu/arm and subdirectories
thereof.  At one point that code worked on an AT91SAM7 system,
but the build is currently broken as a result of a tree reorg.