<para>Although this problem does not require it, we frequently ask a
question like "Does j = n?" The "=" in this context is a
-<emphasis>relation</emphasis> and yields either "YES or NO" when
-placed between two arithmetic expressions.</para>
+<emphasis>relation</emphasis><indexterm><primary>Relation</primary></indexterm>
+and yields either "YES or NO" when placed between two arithmetic
+expressions.</para>
<para>We return to the example problems. The algorithm exhibits an
important concept, which occurs in a great many procedurs; namely, it
statements produced for the computer the "=" symbol conventionally has
this meaning.<indexterm><primary>Equals Sign</primary></indexterm></para>
-<para>It is important to realize what the "=" means in this context; it is
-different from the usual use of the symbol where it indicated a
-<emphasis>relation</emphasis>. When the "=" symbol is used as such a
-"replacement operator" the item on the left of the "=" is always the
-<emphasis>name</emphasis> of a <emphasis>variable</emphasis>. The
-variable may have a complicated subscript but nevertheless it is not
-an expression, but the name of a variable. The item on the right of
-the symbol is an expression involving one or more constants,
-variables, etc. The operation implied is simply that the value of the
-express on the right becomes the <emphasis>value</emphasis> of the
-variable whose name appears on the left. This is referred to as
-substitution.</para>
+<para>It is important to realize what the "=" means in this context;
+it is different from the usual use of the symbol where it indicated a
+<emphasis>relation</emphasis>.<indexterm><primary>Relation</primary></indexterm>
+When the "=" symbol is used as such a "replacement operator" the item
+on the left of the "=" is always the <emphasis>name</emphasis> of a
+<emphasis>variable</emphasis>. The variable may have a complicated
+subscript but nevertheless it is not an expression, but the name of a
+variable. The item on the right of the symbol is an expression
+involving one or more constants, variables, etc. The operation
+implied is simply that the value of the express on the right becomes
+the <emphasis>value</emphasis> of the variable whose name appears on
+the left. This is referred to as substitution.</para>
<para>For our specific example, then, the evaluation of the iterative
formula could be described as</para>
<note><para>The Retrocomputing Museum implementation neither enforces
the six-character limit nor blank-pads constants. These features were
an artifact of packing six-bit characters into the IBM 704's 36-bit
-machine word.</para></note>
+machine word.</para>
+
+<para>The way the original is worded suggests that minus sign and dash
+were different characters in the character set that the Michigan 709
+was using. They are rendered with the same glyph in the original, but
+this may be a collision enforced by period typewriters (like 0 and O
+being indistinguishable).</para>
+</note>
</sect3>
<sect3><title>Boolean Constants</title>
</informaltable>
<note id='lptcodes'>
-<para>These were the standard control codes for line printers, which
+<para>These were the standard control codes for IBM line printers, which
assumed they were printing to 132x66 fanfold paper. There isn't a lot
of point in simulating them on a modern page printer. The
Retrocomputing Museum implementation implements them by prefixing the
<!-- beginpage II.49 -->
<para>If a block designation
-A(i<superscript>1</superscript>,...,i<superscript>n</superscript>)...A(j<superscript>i</superscript>,...,j<superscript>n</superscript>)
+A(i<subscript>1</subscript>,...,i<subscript>n</subscript>)...A(j<subscript>i</subscript>,...,j<subscript>n</subscript>)
is used in an input-output list &scriptL; for reading or writing
<emphasis> binary tape </emphasis> or <emphasis> drum </emphasis>, the
linear subscript corresponding to
-i<superscript>i</superscript>,...i<superscript>n</superscript> may not
+i<subscript>i</subscript>,...i<subscript>n</subscript> may not
be greater than the linear subscript corresponding to
-J<superscript>1</superscript>,...,j<superscript>n</superscript>.
+J<subscript>1</subscript>,...,j<subscript>n</subscript>.
While the list for a binary tape or drum statement is transmitted in
the sequence written, a block
-A(i<superscript>1</superscript>,...,i<superscript>n</superscript>)...A(j<superscript>1</superscript>,...,j<superscript>n</superscript>)
+A(i<subscript>1</subscript>,...,i<subscript>n</subscript>)...A(j<subscript>1</subscript>,...,j<subscript>n</subscript>)
within the list is actually transmitted in reverse order, i.e., in the
sequence
-A(j<superscript>1</superscript>,...,j<superscript>n</superscript>) to
-A(i<superscript>1</superscript>,...,i<superscript>n</superscript>).</para>
+A(j<subscript>1</subscript>,...,j<subscript>n</subscript>) to
+A(i<subscript>1</subscript>,...,i<subscript>n</subscript>).</para>
</sect1>
</chapter>
in this case f = 3% of (c).</para></listitem>
</orderedlist>
-<para>The information on the cares to be read will be in the following
+<para>The information on the cards to be read will be in the following
format:</para>
<informaltable>
<listitem><para>The combination of the information produced from (1)
and (2) to translate the arrays to relocatable binary
-programs.</para></listitem>
+programs.<indexterm><primary>Relocatable Binary
+Programs</primary></indexterm></para></listitem>
</orderedlist>
<para>When an error is encountered in one of these sections the
</sect1>
<sect1><title>Structure of Subroutines</title>
+<note><para>This section describes the mechanics of writing
+MAD-accessible subroutines in IBM 709 assembler. For tolerably
+obvious reasons, the Retrocomputing Museum implementation does
+not support this.</para></note>
+
<para>The information in this and the following sections of Chapter IV are
in much greater detail in other Computing Center write-ups. However,
the following sections should be sufficient for the general use of
written in MAD as functions or in SAP<footnote><para>SAP is the SHARE
Assembly Program which permits the writing of actual machine
instructions in symbolic form.</para></footnote>ⅆmust be relocatable
+<indexterm><primary>Relocatable Binary Programs</primary></indexterm>
and must operate from the calling sequences the translator produces.
Consider, for example the function call - FN. (A,B,C) - which might
appear in the body of a statement. Assume that B is an array which has
first, the parametersⅆif executed as instructionsⅆwould produce no
operation.</para>
-<para>It is beyond the scope of this manual to discuss the structure of
-relocatble programs (see IBM FORTRAN II Manual). It is suficient to
-say that a relocatable program must containⅆin adidtion to the actual
-instructions in the programⅆinformation as to which addresses must be
-relocated at the time of loading for execution and which addresses
-must not. In addition, the first card (or record) of such programs
-must contain information about the size of the program, the number of
-subroutines it calls on, the amount of stroage it will share with
-other subroutines, the location of the list of subroutines it calls
-on, and the names by which the routine itself is referred to. The
-symbolic names of the subroutines called on must appear as the first
-words after this information.</para>
+<para>It is beyond the scope of this manual to discuss the structure
+of relocatable programs (see IBM FORTRAN II Manual). It is sufficient
+to say that a relocatable program must containⅆin adidtion to the
+actual instructions in the programⅆinformation as to which
+addresses must be relocated at the time of loading for execution and
+which addresses must not.<indexterm><primary>Relocatable Binary
+Programs</primary></indexterm> In addition, the first card (or record)
+of such programs must contain information about the size of the
+program, the number of subroutines it calls on, the amount of stroage
+it will share with other subroutines, the location of the list of
+subroutines it calls on, and the names by which the routine itself is
+referred to. The symbolic names of the subroutines called on must
+appear as the first words after this information.</para>
<para>The execution of MAD programs requires the use of a loading
routine to relocate and store the program and subroutines. A slightly
</sect1>
<sect1><title>Systems Subroutines</title>
+<note><para>The Retrocomputing Museum implementation does
+not support these routines or reserve these names.</para></note>
+
<para>The use of the following names for functions (subroutines)
should be avoided except where the operation is the one indicated
here.</para>
<sect1><title>(a) READ DATA</title>
+<note><para>READ DATA is not supported by the Retrocomputing Museum
+implementation, mainly because we have no test programs for it.</para></note>
+
<para>This statement causes information to be read from cards; no list of
variable names or format specification is necessary. The values to be
read and the variable names are punched in the data cards in a
</sect1>
<sect1><title>(b) PRINT COMMENT &scriptS;</title>
+<note><para>PRINT COMMENT is not supported by the Retrocomputing Museum
+implementation, mainly because we have no test programs for it.</para></note>
+
<para>Here &scriptS; designates a string of no more than 120 Hollerith
characters. These characters may not include dollar signs and here
blanks are valid characters. The string, delimited by dollar signs as
</sect1>
<sect1><title>(c) PRINT RESULTS &scriptL;</title>
+<note><para>PRINT RESULTS is not supported by the Retrocomputing Museum
+implementation, mainly because we have no test programs for it.</para></note>
+
<para>Here &scriptL; designates a list of variable names or block
designations. Expressions may not appear in the list although
subscripts of variables in the list may be expressions. The printed
<!-- beginpage SUPPLEMENT.1 -->
<para role='centered'>November 15, 1960</para>
+<note><para>These extended features are not supported by the
+Retrocomputing Museum implementation, mainly because we have no test
+programs for them.</para></note>
+
<para>The notes which appear below describe several new features which have
been added to MAD. Existing programs need not be changed in any way.
Most programs will be reduced in size and execution time, however, if