The source code of the Lilith Modula-2 compiler (slightly modified to run
under an M-Code interpreter on the PC) is on my website:
I'd also be interested in seeing the source code of Medos, the linker /
Just a week ago I tripped over some additional Lilith hardware-related
specs. Included amongst these is a Lilith Microcode Assembler listing of the
M-Code Interpreter, Bootstrap / Dump, Display Handling Procedures and Real
Operations. You can download the PDF copies of these from the BitSavers PDF
That all should keep you busy for a while ...
If interested, I can provide on request by email under the terms of the
ETHZ license (code developed at ETHZ) and GPL (my temporary stuff)
- the sources of the Modula-2 compiler for the Lilith architecture,
- its Lilith binaries,
- a Lilith-code interpreter in C which is capable of running the
Modula-2 compiler, and
- some additional tools (likewise in C).
I used them to cross-develop a Modula-2 compiler for another platform.
But beware this stuff is from 1983, i.e. it uses C code from dark
old times, and it was used just temporarily until the new compiler was
able to compile itself on the new platform.
Unfortunately, I have no sources of the Medos operating system or its
tools. I replaced the implementations of low-level modules by traps into
the interpreter which emulated all those interfaces of Medos that
were required to run the compiler. Some Medos libraries like FileSystem,
FileNames, FilePool, and NewStreams are supported in this way.
Last weekend I was able to retrieve the complete sourcecode for Medos, the Lilith operating system. Alas not the latest version ( would be 5.2 ) but the somewhat earlier version 4.2.
All this was found on a disk I loaned from a museum in Berne. It seems to be the standard disk that was delivered with the Lilith systems.
File transfer was done by kermit ( at 9600 bd...) between my Lilith and a laptop running Linux.
Also sourcecode for the Modula compiler itself and for a great number of standard Lilith applications has been saved.
I will do some cleaning up and make i.e. ( the Medos part ) available.
Well done! I would be interested to know once you make it available.
Thank you! Is there a chance of making the others available in the future?
The recovered Medos sources are available on
>> I will do some cleaning up and make i.e. ( the Medos part ) available.
> The recovered Medos sources are available on
> Jos Dreesen
Wonderful -- thank you very much.
I am curious, what cleaning up was needed?
And again: Thank you very much. What license applies to these files?
Replacing EOL characters (0x30) with 0x13, to make them readable in UNIX systems.
And removing those files for which I do not yet have permission to distribute !
( M2 compiler, microcode assembler, Lilith tools & software )
Fantastic! Thank you very much for all your efforts. I really needed these
25 years ago when I was porting the M2MPC compiler but better late than
never ;-) It has been a surprise to me that some of code is much less
complex than I had imagined it to be at the time -something like the feeling
you get when a magician explains his tricks.
BTW thanks to Svend Knudsen for letting me share his code.
Make that "good" software design....
> "Jos Dreesen" <jos...@bluewin.ch> wrote in message
>>The recovered Medos sources are available on
> Fantastic! Thank you very much for all your efforts. I really needed these
> 25 years ago when I was porting the M2MPC compiler but better late than
> never ;-) It has been a surprise to me that some of code is much less
> complex than I had imagined it to be at the time -something like the feeling
> you get when a magician explains his tricks.
I recall many years ago, downloading the source to one of
Wirth experimental languages, that targeted PLD and Hardware design,
and being rather amazed at the simplicity of the code.
I have just looked for it, but cannot find the exact branch.
It must have been later than PL/0 (1975?), and earlier than Lola
(1995?), probably it led to Lola.
Maybe it is Debora that you are thinking of? This was used in the design of
one of Lilith's descendants, the Ceres-3 computer. A specification of
Ceres-3 in Debora is included in the ETH Technical Report 168 - 'Hardware
Description of the Workstation Ceres-3' by B. Heeb and I Noack. You can
download a copy from the ETH Technical Reports site:
Thanks for that link, another one I have not seen before.
Debora looks like a superset, of the one I recal, as I see '=', ".=",
and ":=" assignment options, and have not seen ".=" used before ?.
I have seen '=' for combinatorial and ":=" for 'at the clock' used
before (Abel IIRC).
Others (eg CUPL) use Reg.D =, Reg.T = to infer the clocked transfer.
A separate symbol could make a simulator easier to write, and revise.
The syntax also uses psuedo record constructs, something
that seems to have got lost in modern HDLs.
Register.clk .= ClockNet;
Regoster.D .= Register.Q;
is (to me) quite clear, and reminds the designer they are dealing with
Modern HDLs will include this format in their report files, but
do not allow users to write that way ?