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.