Files:
------

Thanks to the Computer History Museum for generously allowing me to borrow
and scan these documents.

ddt.mac				The August 20, 1966 version of DDT.
				Won't work with macro1. Uses an MIT-
				specific instruction that SIMH doesn't
				handle.

ddt.txt				MIT's documentation for DDT.

ddt-supplement.txt		Ditto.

ddt-loader.mac			This version works with macro1 and runs
				on SIMH.  It includes the block loader
				(see loader.* below).

ddt-loader.rim			ddt-loader.mac assembled with macro1.

ddt-loader.lst			ddt-loader.mac assembly listing.

loader.mac			DDT and the real MACRO produce block
				format tapes with this loader at the
				beginning in READ-IN format.

loader.txt			MIT's documentation.  Written before
				the PDP-1 could support development
				of its own software.
				
loader.rim			loader.mac assembled with macro1.

Mistakes in the manual, surprising things about DDT:
----------------------------------------------------

DDT accumulates a group of lowercase letters and digits into a "total"
symbol name, a total octal number, and a total decimal number.  When the
group ends because of an uppercase letter or punctuation mark, DDT selects
one of the totals.  To select the symbol name, the group must contain
at least one letter.  8 and 9 don't qualify, despite what the manual says.
To select the octal number, the group must contain only digits.  8 and 9
set the least significant bit of the last digit entered.  To select the
decimal number, the group must end with single quote.  It may contain
letters (they don't affect the total).

For reliable results with D and Z, always use < just before, as shown
in the manual.

DDT tests whether it's searching itself after searching each word, so a
search inside DDT may print one match.

The manual should say:

    )         causes the legal symbol typed immediately preceding
              the ) to be defined as the current symbol value, as
              set by ( or , or #

Also, T destroys the current symbol value.

Text file formats:
------------------

The text files use a 10-character-wide tab, as MIT did.  All FIO-DEC
characters not representable in ASCII use SIMH's ASCII equivalents,
except that the "^"s in ddt-loader.mac indicate macro1 multiplication
and not FIO-DEC up arrows.

From the scans to the source files:
-----------------------------------

loader.mac:
	Typed in the code.
	Deleted "readin".
	Defined xx.
	Changed the vertical bar to a slash.
	Changed "start add" to "start".

ddt.mac:
	Scanned the listing.  Removed page breaks.
	Changed "ex," to "eix," (clearly a missing character).

ddt-loader.mac:
	Made ddt.mac work with macro1:

	Split lines after the first tab.
	Removed the first definition of est.
	Defined nop.
	Replaced char operations with numeric literals.
	Replaced flex operations inside constants with numeric constants.
	Moved all macro headers to the same lines as "define".
	Capitalized arguments in macro definitions.
	Renamed the dispatch and initialize macros to disp and init
	  (could have renamed the calls instead of the definitions).
	Rewrote the disp macro.  "dto" means "dispatch table offset".
	Rewrote the senseswitch macro (not currently used).
	Copied the swap macro from LISP.  MIT changed their PDP-1.
	Changed "term" to "termin".
	Moved comments on macro-call lines to different lines.
	Expanded the repeat statement.
	Added the loader.  Changed "a" to "aa".

	Also tidied up the formatting:
	
	Reformatted the dispatch and feed macros to match the standard format.
	Changed "// print trap addr" to "/ print trap addr".
	Changed "/skips rest of   tape" to "/skips rest of tape".
	Moved "disp l, dec" line to same column as nearby lines.
	Changed "602700" to "603700" in the title font table.
	Added comments to the dispatch table and title font table.

Derek Peschel
September 1, 2003
