Muddle, later renamed MDL, was a programming language created by the Dynamic Modeling group (also known as the Programming Technology Division) at MIT. The most famous application written in this language is the Zork interactive fiction game. The influental CLU programming language was bootstrapped from Muddle.
Muddle is a dialect of Lisp, but with the distinct difference that
forms are bracketed by <
and >
instead of parentheses. (
and
)
still denote lists and are occasionally present in the language
syntax. The language is case sensitive, and all standard names must
be entered in upper case. To submit an expression to the interpreter,
type the Escape key which echoes as $
.
A common way to develop applications in Muddle, is to build a program
in the interpreter and write out a SAVE
image file. This file can
later be recalled using RESTORE
.
To make a "hello world" application, create a file called HELLO MUD with this content:
<DEFINE HELLO ()
<PRINC "Hello, muddled world!">
<TERPRI>
<QUIT>>
<DEFINE SAVE-IT ()
<COND (<=? <SAVE "HELLO SAVE"> "SAVED"> <QUIT>)>
<HELLO>>
HELLO
is the main program which prints a message and terminates.
SAVE-IT
is used to create a SAVE
file and arranges to call HELLO
when it's restored.
Now start :mud55
and type <FLOAD "HELLO MUD">
and
Escape. Next, type <SAVE-IT>
Escape.
It should look like this:
:mud55
MUDDLE 55 IN OPERATION.
LISTENING-AT-LEVEL 1 PROCESS 1
<FLOAD "HELLO MUD">$
"DONE"
<SAVE-IT>$
:KILL
A HELLO SAVE
file has been created with the HELLO
procedure in it.
To run it, start :mud55
again and type <RESTORE "HELLO SAVE">
:
*:mud55
MUDDLE 55 IN OPERATION.
LISTENING-AT-LEVEL 1 PROCESS 1
<RESTORE "HELLO SAVE">$
Hello, muddled world!
:KILL
The sample program can be found in the HELLO directory.
Any serious Muddle program would be compiled. To do this, invoke the
PCOMP
program which is Muddle with the compiler built in. Then call
the procedure FILE-COMPILE
to compile the source file. The compiler
will work in the background.
:pcomp
MUDDLE COMPILER NOW READY.
<FILE-COMPILE "HELLO MUD">$
Toodle-oo.
:PROCED
*
Job PCOMP wants the TTY
When the compiler is done, it leaves the compiled file HELLO NBIN
in
your directory. Start Muddle again, and this time load the compiled
file. Then make the SAVE
file:
:mud55
MUDDLE 55 IN OPERATION.
LISTENING-AT-LEVEL 1 PROCESS 1
<FLOAD "HELLO NBIN">$
"DONE"
<SAVE-IT>$
:KILL
The new SAVE
file can be restored like before, but it can also be
used to make a standalone executable. This is done by having the
MIDAS assembler process the file SUBSYS MAKER. The assembler will
request information to locate your SAVE
file. The file name is
HELLO SAVE
, which is the "Subsystem name" and "Second Name" below.
The directory is the last question about the "Sname".
:MIDAS TS HELLO_MUDSYS;SUBSYS MAKER
Muddle Subsystem Bootstrap
Type in Subsystem (Save File) name: HELLO
Type Y if you wish to have Save File directly restored: Y
Type Second Name of Save File: SAVE
Type Sname of Save File: HELLO
:KILL
This will produce an exectutable file called TS HELLO.
For more information, see these documents: