The MDL Programming Environment
The MDL Programming Environment
P. David Lebling
May, 1980
Laboratory for Computer Science
Massachusetts Institute of Technology
Cambridge, Massachusetts 02139
Note on this page. This is the document's own title page: page 1 of
MDL_Programming_Environment.pdfcarries exactly these lines and nothing else. It is laid out to match the companion volume, The MDL Programming Language, whose title page had to be reconstructed; this one did not. The blocks that page carries and this one does not -- the releases described, the sponsor and the distribution statement -- have no counterpart here, because this document states none.The chapters that follow are cleaned from the OCR text layer of that PDF. The scanned PDF remains the authority for unclear readings.
Contents
- Front Matter
- Chapter 1. Overview of the MDL Programming Environment
- Chapter 2. The Package System
- Chapter 3. Program Writing and Debugging Aids
- Chapter 4. The Library System
- Chapter 5. The Compiler
- Chapter 6. Making It Run Faster
- Chapter 7. The Assembler
- Chapter 8. Informational Aids
- Printed Index
Introduction
The MDL language is described in "The MDL Programming Language" [3], but in addition to the language itself, there is a rich and varied collection of software written in the language which facilitates the writing of programs and systems of programs in MDL. The information describing this programming environment has been contained in various documents, some out of print or out of date, and in supplemental disk files describing changes and additions. Some of the packages of functions used to deal with MDL code have never been formally documented. This manual brings together some of that scattered documentation.
The document's purpose is to flesh out the description of the language contained in "The MDL Programming Language," giving a fuller description of the program writing and debugging aids available to MDL users, to describe the methods for producing code usable by others, to describe the MDL compiler and the many other techniques for producing and speeding up MDL object code,
The imagined reader of this document is someone who has read "The MDL Programming Language," and now proposes to write programs in MDL, possibly even very large programs. MDL packages that he would find useful in the process of doing so are documented here: editors, debuggers, etc. Packages that he might wish to use within his program are not included: data-management systems, command interpreters, etc.
This document is of necessity highly self-referent, as many of the components of the MDL programming environment refer to each other and adhere to the same conventions. Additionally, this document assumes that the reader is familiar with the language itself (at least to some degree), and with the ITS, TENEX, or TOPS-20 operating systems.
Acknowledgments
The programs described in this document are the products of many man-years of effort by many people. Most have been "touched" by several programmers, added to and improved over the years.
Some of the people responsible for the programs mentioned in this document are: Chris Reeve (MDL, the compiler, GLUE): Brian Berkowitz (MDL, the compiler, TEMPLATE, SUBRFY): Bruce Daniels (MDL, the compiler. PACKAGE. PPRINT. DEBUGR. ASSEM): 'Tim Anderson (PACKAGE, the Library. FINDATOM, DFL. COMBAT, MUDINO): Neal Ryan (EDIT, PDUMP, the IPC interface); Marc Blank (MAT. MUDCOM, MONTTR, ComBAT. EDIT. CURSOR): David Lebling (CRITIC. EDIT): Michael Broos (the Library); Roger Banks (TRACE): Greg Pfister (PPRINT); Joel Beres (EDIT).
(Most of the documentation subsumed in this manual is from published and unpublished memos of the Programming Technology Division of the M.I.T. Laboratory for Computer Science, As a general rule, updates and revisions to this and other MDL documents concerning MDL are available online in the directory "MUDMAN" at MIT-DMS).
Notation
Anything which is written in the MDL language or which is typed on a computer console appears herein in a typewriter font, as in PPRINT. A metasyntactic variable -- something to be replaced in actual use by something else -- appears as channel. in an italic font. Where a meta-syntactic variable is being used to denote a required argument to some function, it appears as before, but underlined, as channel.
In the argument templates of MDL functions, the individual arguments are often given in the form
argument: type, where argument is a descriptive name for the argument, and type is its MDL type (or range of
types). In such cases, the 'type' boolean indicates an argument that is only examined for truth or falsity, and
not for any of its other qualities. Such arguments in MDL are often declared *
Finally, file names are given as though for the ITS operating system:
device: sname:fnm1 fnm2
The analogous specification for TENEX or TOPS-20 would be
device: