---=|=--- This is the TUNES LLL subproject ---=|=---
README,v 1.2 1998/12/03 17:32:13 fare Exp

   It uses no more the traditional macropreprocessor+assembler/compiler model
as it used to do (with as86/C and m4),
but a but uses a full meta-programming language instead,
which is much cleanlier and more powerful.
   The meta-programming language is currently a s-exp syntaxed
subset of the HLL, known as HLL-.

   Subprojects may still use a traditional assembler as a target
language, or may directly compile to binary code;
however, all the "intelligence" of the code-generation will be
expressible and eventually expressed in the HLL.

   The underlying model for the code-generation target is currently
a virtual processor based on a stack and a heap.
   Preemptive multithreading is achieved by a real-time safe-point mechanism,
which allows various levels of GC (real-time or not)
to be done as a just usual threads.

   Each subproject defines its own mappings
from the virtual instructions to real ones.
Registers of the actual CPU, if taken into account,
will be compiler-controlled caches for the above.
   This implementation should thus be fairly generic.
A simple choice mechanism is provided to choose the best
of multiple versions of some code,
which should illustrate how things are done
using annotations and tactic-based dynamic reflective meta-programming.

   Current subprojects are the i386 subproject and the OTOP subproject
(see corresponding directories).



############################# INSTALLATION ###################################
* Have the HLL- working for the HLL subproject.
* Enter the subproject for your target architecture (OTOP or i386),
 and follow instructions in the according README.


################################ FILES #######################################
README		is this very file !

i386/		is the i386 subproject
OTOP/		is the OTOP subproject, to implement Tunes "on top of POSIX"
generic/	contains shared files used to build all implementations


Filename extensions:
*.config	configuration files
*.hlm		HLL- programs that constitute the (cross) compiler
*.lll		metaprograms that produce the target LLL environment



################################# NOTE #######################################

   All the as86+m4 i386 code and C+m4 OTOP code has been deleted
from the distribution, but hasn't been completely translated
for use with the new development tools. Get it on release 0.0.0.25
of Tunes; it also includes useful patches to as86 and linux,
for those who'd use these tools.


############################## DEPENDENCIES ##################################
   Depends on a HLL- implementation (see the HLL subproject above).
   For target-architecture dependencies, see according subproject.

   We still depend on GNU make (or perhaps another make utility)
to glue things together, which can be found on any GNU repository
(i.e. mirrors of the prep.ai.mit.edu ftp site), with binaries for
your favorite cross-development platform at the usual places.

   If you're masochistic enough to port to some other tool, you're welcome,
but don't count on me to do that: the only tool I'll port it too will be
TUNES itself when it's fully bootstrapped.


################################## TODO ######################################
   We need help to port the TUNES LLL to all existing computer platforms.

Architectures we are currently porting TUNES to:
- The i386 architecture, because it is just largely widespread, relatively
 powerful, versatile and cheap, even though its design is a technical horror.
- any POSIXly correct architecture (using -yuk- C), because it's standard.
 To begin with, we'll assume Linux and GCC.

Architectures we eventually want to port TUNES to (no taker yet for these):
- The MuP32 FORTH processor (if available), because it'll have the bestest
 power/price ratio: ideal for parallelism, extra-light portable computers &
 "PDA's", etc.
- The ARM architecture, because it is nice, powerful and cheap (?),
 the best thing if the MuP32 is not available.
- The PowerPC architecture, because it is even more powerful, and will
  become hopefully cheap and perhaps the new standard.
- The Alpha architecture because it's very powerful.
- The sun4 architecture because it's widespread on the Internet.
- The M68K architecture because there are a lot of these old stuff just
 sitting there uselessly (i.e. not running a true OS like AmigaDOS)
- The MuP21 FORTH processor if the MuP32 is not available, because even if its
 21 bit ALU is not standard at all, it remains a great *cheap* CPU, ideal for
 cheap powerful parallel or handy computers; plus it would be a good testbed
 for portability, scalability, and parallelizability of the system.
- *Anything* someone is willing to write it for, including MIPS, HP/PA,
 plain old 8088 PC, HP48 calculators, etc.
