ack/lang/a68s
2022-07-17 12:58:48 +02:00
..
aem Distributions are a pain --- let's not bother any more. Instead, we just tag 2016-09-02 23:00:38 +02:00
cpem Distributions are a pain --- let's not bother any more. Instead, we just tag 2016-09-02 23:00:38 +02:00
liba68s Distributions are a pain --- let's not bother any more. Instead, we just tag 2016-09-02 23:00:38 +02:00
test Initial revision 1988-10-05 13:29:42 +00:00
util Lots of binary mode flags. 2022-07-17 12:58:48 +02:00
a68s.1 Initial revision 1988-10-04 10:33:39 +00:00
COPYRIGHT Initial revision 1988-10-04 10:33:39 +00:00
README Initial revision 1988-10-04 10:33:39 +00:00

			The ALGOL 68S System
			********************

1. See a68s.1 in -man format for the goodies on offer.

2. This system is presently exceeding slow (but correct). The reason is that
it calls run-time routines to do absolutely everything. It is known that
significant improvement can easily be made in this state of affairs, but not
in this release.

3. Other developments expected for the future are facilities for separate and
mixed-language compilation (a student will tackle this next year), and a
non-checking run time option which will run faster (but with less security)
(but no student available for this yet).

4. The system should run on any 44 or 24 system, but not on a 22 system as yet
(that is another development in the waiting). It has actually been tested on
sun3, moon3 and vax4.

5. The system was originally delevoped for CDC machines, and then for PERQs
running under PNX. Thus its method of compilation is not particularly suited
to the ACK way of thinking (a compiler designed with ACK in mind from the
start would have been very different). The CDC origin explains why all the
sources are in upper case, and with numbered lines (however, I like numbered
lines, so I have kept them, and a68s will even accept them still).

6. Version control is by a program /util/tailor, which selectively exposes or
hides commented out sections of the sources according to a recipe. See the
start of aem/a68sdec.p for what all the tailoring parameters mean. Every
source text is passed through tailor before being compiled.

7. The system is written in a bastardized version of PASCAL called cpem (see
README in the directory of that name). {This also provides an "improved" method
of separate compilation which might be of benefit in pem.}

8. The directories aem and liba68s have their own private versions of 'make'
(therefore, '.' must precede '/bin' in your PATH). These prepare the tailoring
recipes according to the system given in ack_sys (set environment variable
MACH to override this). Unlike pem, separate versions of the compiler must
exist to generate 44 and 24 (and eventually 22) code. To avoid keeping too
many .o files around, the Makefile will do a clean before changing from a 44
system to a 24 one, etc.

9. Although a runtime library can be made using 'make' in liba68s, this is
really intended for debugging libraries. A more usual system would be to use
the 'compmodule' system in the liba68s directory of the appropriate mach.
However, it is recommended that this be not included automatically in the
'action' of each mach, because compiling an ALGOL 68S library takes over a
hour on a microvax, and to do it for all of the 'mach's provided would use up
a lot of time.

10. To build the complete system requires
	make install	in util
	make all	in cpem
	make install	in aem
	make install	in EM/mach/???/liba68s

11. The programs test/test.8 and test/tp8.8 are the main confidence-checkers.
test.8 produces lots of numbers, with clear error messages interspersed if
anything goes wrong. Its last few lines should contain 5 '.'s, followed by
4'.'s and so on down to 0. There is one test needs commenting out if floating
point is not available. tp8.8 is the transput test. It should print out a long
string in vertical columns spread over two pages. After that, if it says "FYLA
read back OK" it should be all right. tp9.8 is the same thing for systems
without floating point. The other programs in the test directory are just
interesting examples, which should work.