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.pdf carries 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

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: fnm1 fnm2 / Note that in the TENEX/TOPS-20 version of MDL, the fnm2 (which may include the generation number, protection and access fields) is by default "MUD" as opposed to ">" for the ITS version.