MUSS Restoration

I am now working to get MUSS running once again. The work is being done on GitHub. You can find the project here.

The approach is first to hand build a processor to implement the Flocoder FLIP (Form LInear Program) program to extract the MUSL from the documentation, and then build a MUSL compiler that cross compiles to C. This will allow me to bootstrap the building of MUSS. It looks like it may be possible to get MUSS built for PDP-11 and VAX. I also have some floppy disk images for a Motorola 68K system, if I can build an emulator for that system, then this is another avenue for getting MUSS to run once again. I hope one day to be able to get it running on my MU5 Emulator as well.

The sections below explain the current state of the restoration.

Flocoder

I have now got a crude implementation of the Flocoder FLIP program written using Flex and Bison. It can take a Flocoder file from the MUSS sources and extract MUSL code. I have run it successfully over all the Flocoder files for Flocoder itself.

MUSL

I also have the beginnings of a MUSL compiler. So far it can parse the output from my own implementation of FLIP for several of the Flocoder source files. It does not do any code generation yet. It can’t process all the Flocoder source files for a couple of reasons.

The first is that some of the source files appear to have too many END statements. I need to look into this to see if my understanding of the grammar is incorrect. However, these problems occur in files that I don’t think I need in order to re-create FLIP, so I will defer investigation. I may hit problems again when I try to build the MUSL compiler sources.

The second is that there are some elements of the syntax that are context-sensitive and can’t be parsed with Bison without some additional work. There are actually a couple of areas where this does not currently work. First, one of the Flocoder modules declares both a type and variable with the same name. The second is where addresses of procedures are declared, these create a syntax ambiguity which needs additional semantic processing. These problems are solvable, but I have not looked at them yet.