From a6e220e491d28068a3802b0839e3db58d764ace5 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Fri, 6 Feb 2004 00:42:48 +0000 Subject: [PATCH] Don't try to use ISO specials for script characters, they come out sized wrong. --- doc/mad-manual.xml | 77 ++++++++++++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 27 deletions(-) diff --git a/doc/mad-manual.xml b/doc/mad-manual.xml index 73548fe..4b476bc 100644 --- a/doc/mad-manual.xml +++ b/doc/mad-manual.xml @@ -60,8 +60,8 @@ pipelines! Punched-card input also explains some syntactic features that will seem strange to modern eyes. MAD statement labels lack a delimiter like C's trailing colon because they were distinguished by -position (columns 1 to 7) on the card. The line continuation syntax, -a digit in column 10, also relies on character position. In the late +position (columns 1 to 10) on the card. The line continuation syntax, +a digit in column 11, also relies on character position. In the late 1960s and 1970s, when punched cards coexisted with interactive timesharing, the term free-format was commonly used to describe languages with the newer-style syntax that used @@ -83,8 +83,17 @@ trivium by comparison. There are some significant respects in which MAD was actually rather advanced for its period. The multiline WHENEVER statement anticipated the free-format syntax of ALGOL 60 and its descendants, -including Pascal and C. - +including Pascal and C. The DEFINE statement, which supports +syntactic extension of the language, was an interesting experiment +not emulated in most later designs. + +In most of the respects we've described, however, MAD is very +typical of its time. This will become apparent from a look at the +Retrocomputing Museum implementation of CORC/CUPL, which is rather +similar (though less powerful). This entire family of languages +became extinct in the 1970s, snuffed out like dinosaurs by the +meteoritic impact of time-shared computing and teletypewriter-like +interactive terminals. How This Implementation Differs From The Original MAD @@ -93,13 +102,6 @@ including Pascal and C. code into compileable C. It has been tested on the examples in the manual, which are included with the distribution. -This implementation simulates the card format of the original by -reserving the first 8 character positions of each line for a either a label -field or continuation. Whether or not a label field is empty, it -must be followed by a tab, and the statement proper begins following the -tab. Continuation lines must begin with either 8 spaces or 7 spaces -followed by a digit (which is ignored). - Card images are read from standard input and printing is to standard output. Printer control codes +, 1, 2 and 4 are ignored (treated as 0 or space). Tape and drum devices are not @@ -145,6 +147,10 @@ between 0 and O; this does not reflect incompetence but rather the fact that typewriters of the period did not have a separate 0 key. This distinction has been restored. +Some program listings in the original were missing continuation +punches required by the language. These have been corrected, and the +corrections noted in XML coments. + In the original, the description of flowcharting conventions in Chapter 1 include small hand-drawn geometrical shapes after each of the items A, B, and the words "diamonds" and "rectangles" in item @@ -165,8 +171,8 @@ the original style in DocBook. Special characters like white square (□), back arrow (←), and the Greek letters were hand-drawn in the original (except for the capital thetas, which were typed capital Os with bars -hand-drawn across them). Several other special characters represent -hand-drawn script characters: +hand-drawn across them). The original also some contained hand-drawn +script characters: @@ -209,26 +215,39 @@ hand-drawn script characters: Footnotes were tagged with asterisks in the original rather than being numbered. Section references to section numbers have been -replaced with xref tags; as a result, they may render slightly -differently than in the original. Notably, "section 1.1" becomes -"Section 1.11" (capitalized) and expressions like "sections 1.1.4 and -3.2" become "Section 1.1.4 and Section 3.2". We discovered while -transcribing that Chapter 1 must have been added at the last minute, -because references to Chapter 2 in the original had the form 1.x rather -than 2.x. +replaced with xref tags in order to generate hyperlinks in the HTML +rendering; as a result, they may render slightly differently than in +the original. Notably, "section 1.1" becomes "Section 1.11" +(capitalized) and expressions like "sections 1.1.4 and 3.2" become +"Section 1.1.4 and Section 3.2". We discovered while transcribing +that Chapter 1 must have been added at the last minute, because +references to Chapter 2 in the original had the form 1.x rather than +2.x. EPSLON and COMPLX and the like are not typos. As pointed out earlier, MAD variable names are limited to the 6 characters in a six-bit character set that would fit in the IBM 709's 36-bit word. -A few typos in the original have been fixed. If you're really -curious, comments in the XML source describe them. +A few typos in the original have been fixed; if you're really +curious, comments in the XML source describe them. Variant spellings +such as imbedded have vbeen preserved. The original was not continuously page-numbered. Instead the pages were numbered within each chapter with the chapter number as a prefix; thus, page 6 of Chapter I was I.6. +In the Retrocomputing Museum implementation, statement boundaries +are detected by a preprocessing stage that places a marker before +every newline and then detects and erases markers that precede +whitespace followed by a continuation digit punch. This is strictly +conformant with the manual says in text, but some of the listings in +the manual lacked continuation punches that would be needed under this +rule. Either these were transcription error, or the original parser +had an undocumented capability to detect most continued statements +automatically. We have assumed the former and restored needed +continuation punches in several listings. + The Michigan Algorithm Decoder @@ -798,6 +817,10 @@ incrementing of i is not really necessary. + &newton2; @@ -1789,13 +1812,13 @@ exhausted. Function return -FUNCTION RETURN ℳ +FUNCTION RETURN &scriptN; This statement is used in a function definition to indicate a -return to the calling program. ℳ is an expression whose value is to +return to the calling program. &scriptN; is an expression whose value is to be the output of this function considered as a single valued function. -ℳ need not be specified if outputs are specified in the argument list +&scriptN; need not be specified if outputs are specified in the argument list (see section 3.8). @@ -1804,10 +1827,10 @@ be the output of this function considered as a single valued function. Entry points to a function being defined are indicated by -ENTRY TO ℳ +ENTRY TO &scriptN; -where ℳ is the name of this entry (see section 3.8). +where &scriptN; is the name of this entry (see section 3.8). List Manipulation Statements -- 2.43.0