axiom-developer
[Top][All Lists]
Advanced

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

Re: Axiom musings...


From: Tim Daly
Subject: Re: Axiom musings...
Date: Sat, 3 Oct 2020 22:57:03 -0400

Some Axiom optimizations no longer make sense.

Just so you know, there are pieces of Axiom that
I wrote that no longer make sense. Scratchpad
was a big program for its time but is now smaller
than many image files.

compress.daase was written to enable Scratchpad
to run on floppy disks. It compresses long names
so the main files were smaller.

*.daase is a simple file format that exists to optimize
hard drive access on IBM 360/370 spinning disks.
There is a number at the head of the file which is the
file seek position for the index. The index is a by-name
table whose value is the seek position of the code.
Seeks no longer make sense on electronic media.

Messages have numbers and number lookup
because I had to fit on floppy disks (720k). So
I gathered all the messages, regularized them,
and replaced them with a number in a lookup
table to save space. This is no longer needed.

The various "print-brightly" code piles generate
special terminal codes for terminals which no longer
exist (e.g. 3270s). The idea was to do special effects
like bold fonts. These are ignored.

vmlisp contains macros I wrote to emulate the
semantics of Maclisp (MIT lisp) and VMlisp
(IBM VM/CMS lisp) which reflect the development
history but should disappear.

The expose table was a hack to simplify modemap
lookups so that unlikely matches would not occur.

Special case function lookups exist but should be
replaced by a more formal method. See the work
by Fortenbacher "Efficient type inference and
coercion in computer systems" DISCO 90
LNCS 429 pp56-60 Springer Verlag (1990).

The mnt/(name) makefile structure exists so that I
could use the same sources to build on a dozen
different common lisps. I would, for example, kick
off a build over a token ring network to build the
system on mnt/rs6000 (IBM workstation), or over
ethernet on mnt/symbolics (for a Symbolics machine).
It was my hack to do "out of source builds" before the
idea existed anywhere. It allowed me to build in
parallel on multiple machines at the same time.

boot existed because Dick Jenks liked to play with
languages using a language called "Meta". See
Schorre "META II: A Syntax-Oriented Compiler
Writing Language" 19th National Conference of
the ACM (1964). For the only existing documentation
(http://daly.axiom-developer.org/boot.tgz) The META
compiler was removed before Scratchpad was sent
to NAG.

The function lookup tables in compiled spad files
exists as a space optimization. My biggest machine
had 16K of main memory.

Some of the C code in the graphics subsystem
exists because the original code was for X10,
the prior system to X11.

Common Lisp was (and still is) case insenstive
by default so it helps if all files have unique
names based on case.

Much of the Makefile structure exists because
a lot of the systems were too small to do a
complete system build (which on some systems
took 3 weeks). The Makefiles could be greatly
simplified.

htex files exist because Latex only existed on
the IBM 370. So we had an intermediate format
that we could use to feed the mainframe Latex.
I didn't get a "PC native" Latex until the mid-90s,
long after Axiom was owned by NAG.

I've been collecting (with permission) some of
the early papers that explain Scratchpad. See
https://github.com/daly/PDFS/blob/master/bookvol10.1.pdf
The papers have a lot of interesting details.

Hope this helps.

Tim



reply via email to

[Prev in Thread] Current Thread [Next in Thread]