The pymdl book
27. Overview
Part III explains how to organize, share, and debug MDL programs. Its tools build on the language facilities introduced in Part II. Many of these tools are themselves MDL programs, loaded and interpreted by pymdl from the archived sources.
Begin with the package system, which uses OBLISTs
to separate a program's public names from its internal names. Then turn to
editing and debugging for interactive
work, or the library system to understand how
packages are found and loaded. Chapter 31
explains the historical optimization tools; chapter 32
covers listings, comparisons, and inquiries to other MDL sessions.
Compilation and assembly are covered in Part IV: chapter 34 explains the compilers, and chapter 35 explains the assembler. These chapters include both the historical facilities and pymdl's additions.
The environment provides these tools:
| topic | packages | pymdl has |
|---|---|---|
| the package system | PKG (PACKAGE, ENTRY, USE, DROP, L-UNUSE, USE-DATUM ...) |
the era's own definitions, MIT's libmud/npck.26, loaded at boot as the manual says PKG was preloaded |
| writing and debugging | PP (pretty printing), EDIT, DEBUGR, TRACE, MONITOR, FINDATOM, PINFO, DFL, UNLINK, CRITIC, GRLOAD, FRMSP, FR&, ENV, CLEAN, CURSOR, EMONIT, MEND, JCL |
thirty-seven MUDBUG files from the tapes, each loaded by <USE> or on first reference (chapter 29) |
| the library system | LUP, NLIB, L, NEWLF, LIB |
the era's librarian, run at build time over the vendored sources to make a real LIBMUD library, and the era's readers at run time (chapter 30) |
| the compiler | COMPILE |
two compilers: pymdl's own and MIT's (chapter 34) |
| making it run faster | GLUE, PDUMP, SUBRFY, PURITY, GLUER |
the era's, with the pure-mapping round trip tested end to end (chapter 31) |
| the assembler | CODING, OP, RDB, UNASSM |
the era's assembler and unassembler interpreted, the debugger over pymdl's own DDT (chapter 35) |
| informational aids | MUDCOM, MUDMAN and the rest |
MAT and INQUIRE run as MDL; Python supplies MUDCOM and the MUDINQ command-line driver (chapter 32) |
Two facts about the era's environment that the manual assumes and pymdl
reproduces are worth stating up front, because Part II's chapters lean on
them. The interpreter a user sat down at was not bare: MDL 55's TS MUDDLE
is a saved environment with PP and EDIT already loaded, so the top-level
OBLIST path is four long, (INITIAL ROOT PP!-PACKAGE EDIT!-PACKAGE), and
pymdl boots the same way (Appendix D). And the package system's own names
-- PACKAGE, ENTRY, USE and the rest -- live on ROOT as FUNCTIONs,
not as SUBRs: <TYPE ,PACKAGE> is FUNCTION here as there, because the
PKG package is MDL.