An economic use of resources is achieved by compiling the Algol source into code for a virtual machine, which is implemented in assembly language. The complete system has two compilers and two virtual machines, an integer only subset and the full version. Both compilers are written in the Algol subset, the subset compiler is self compiling. In order to make it as small and fast as possible, the subset virtual machine interpreter has very little error checking. Devoid of floating point, nested procedure declarations, stack checking and a few other things, the subset compiler is ultra lean. The full compiler at 17K bytes is only just larger than the full virtual machine interpreter. The output of the subset compiler is code for the subset virtual machine, but expressed in assembly language. The compilers are one pass and very fast. They use the method of recursive descent.
In education, the Algol-60 system can be used as an example of a compiler and how the best use was made of very limited resources. It is a real world compiler which was a commercial success, now available in source code form.
The download includes the full user manual, which contains a description of the generated code and details of the stack layout.
The RHA (Minisystems) Ltd Algol-60 system began life in the early 1970s and was sold until the mid 1980s. The first incarnation ran in 8K words of 12 bits each on the Digital Equipment Corporation PDP8. At the time compilers for high level level languages were more or less confined to mainframes. Many people considered it impossible to implement virtually the whole of the Algol-60 language in such a small machine. The next version was for the PDP11 under both RT11 and RSX. Then followed an implementation for the Zilog Z80 to run under CP/M, in which the maximum memory available was 64Kb including all the operating system. As soon as 16 bit processors became available it was implemented on the Intel 8086/8088, to run under both CP/M86 and MSDOS. Today the same MSDOS executables run in a Windows DOS box.
The Algol60 components distributed in Algol60.zip are Copyright by RHA (Minisystems) Ltd, but permission is granted free for personal use. For any other use, including educational, please ask RHA (Minisystems) Ltd. first. Although there is no ban on distributing Algol60.zip for personal use, we would much rather that everyone downloaded it from the web site. That way, you will get the latest version and we do expect to be updating it from time to time.
Only the downloaded ZIP file may be distributed, do not distribute individual files.
The software and documentation is provided "as is" without any warranty. We know that present day coding standards would insist on better layout and more comments. Please do not criticise the "Magic numbers" used where symbolic constants would be used today. Algol-60 does not have symbolic constants of any sort.
Contact us if you require more information about using the system commercially or for educational use.
Miniaturization has progressed to such an extent that the system may well have another lease of life in microprocessor controls. For this reason we are not releasing the virtual machine sources.
The Z80 version for CP/M is available now. It would not be difficult to change the front end of the compiler to make it compile something more modern looking than Algol-60. The virtual machines are simple and easily ported. The input/output system is modular, uses a generic way of dropping down to machine code, and is isolated from the rest of the virtual machine.
If your requirement is for a substantial program to be squeezed into a small memory, we think you will not be able to find anything more compact. Contact us with your ideas.
All the files should be unzipped into the same directory. The filing system is written for pre-subdirectory MSDOS, although it is possible to write Algol code which allows full pathnames. The Microsoft Windows help files algol60.hlp and algol60.cnt can of course be moved anywhere as long as they stay together.