[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

TLisp to T conversion

                 Status report: Good news and Bad news.

The good news is that I managed to get Micro-TaleSpin (from Schank
and Riesbeck, Inside Computer Understanding; source code in
[RES]<A.KP>TEN.LSP) sort of running on the Apollo.  It took basically
a day and a half.  Half a day to upgrade TLISP_TO_T to handle everything
in Micro-TaleSpin and another day to fix everything that TLISP_TO_T

The conversion was fairly easy, even though Micro-TaleSpin makes very
heavy use of EVAL to do a form of data-driven programming.  Some simple
LAMBDA-wrapping took care of this.  But it should be remembered that
Micro-TaleSpin, like all the programs in the book, was written in a
very restricted subset of Lisp, intended to be relatively portable.
E.g., it took me a day and a half to get the much smaller Micro-Eli
parser going in John Allen's TLC-Lisp on a Z-80.  Real programs will
be a lot worse, not because they are biggger, but because there are
an awful lot of functions in TLisp.

The bad news is that Micro-TaleSpin doesn't run that well.  It's a
cons-intensive program, and T doesn't really seem to be able to handle
it.  There are four demonstration examples and it can't do all of them
without getting a HEAP-OVERFLOW crash.  In fact, it can't do the last
example at all, which surprised me, because it didn't seem like it
was that big a deal.  Can the boundaries be extended?  Would that help?
I hear a lot of disk head movement as it is.

Running time was also pretty bad.  The interpreted version (with macros
expanded) on the 20 took about 12 seconds real time for the first
example, with a load average of 3.  The Apollo version took 71 seconds,
with no other process running.

Since Micro-TaleSpin uses a number of utility macros (LOOP, FOR, and
some readmacros), I can't compile it to see how things would improve.