
		 CHANGES MADE TO RUNOFF (version M3.0X)
		 --------------------------------------



The following list briefly describes all the changes which have been made
to DECUS RUNOFF (version M02) at Unimation West.  Note that this list is
presented in chronological order of the changes, so significant changes
appear scattered throughout the list.  The file SUMMARY. contains a more
organized list of changes.

The RUNOFF manual has been revised to reflect these changes.  Thus, you
can refer to it for further details on most of the changes listed here.

If you have an older copy of this RUNOFF (M03X), you should also read the
LOG file.  It contains a list of later changes made to these changes.

 1.  Changed page header to start on line 1.  Extra line put after header.
     (See also item 40.)

 2.  Page numbers are now justified against the page width (e.g., as set
     by a  PAGE SIZE  command) rather than the local right margin.  (See
     also items 39 and 40.)

 3.  The number of blank lines output ahead of chapter and appendix
     headings has been made a variable which can be set at task build, and
     can be set with a command-line switch (/BL:<n>).  The default is
     currently 7 lines (it was 12).

 4.  Added  ALTERNATING HEADER  commands & switch.  When enabled by a
     command-line switch (/AH, defaults to ON) and requested by an
     ALTERNATING HEADER  command (abbreviated to "AH"; defaults to NAH),
     the page headers on even-numbered pages will be reversed to have the
     page number on the left and title(s) on the right.  The feature is
     turned off by the command  NO ALTERNATING HEADER  or  /-AH  on the
     command line.  [*** This change was superseded by change 46. ***]

 5.  Made  PAGE SIZE  defaults available at task build as claimed in the
     manual.

 6.  Fixed quoted space so that "# " has the same effect as " #".

 7.  Put two spaces after "<punct><paren>", where <punct> is ".", "!", or
     "?" and <paren> is ")", "]", "}", or double quote.

 8.  Eliminated automatic double space after semicolon.

 9.  Expanded meaning of "=" character to include specification of
     hyphenation points to be used instead of those RUNOFF would pick.
     Then, when activated by the FLAGS HYPHENATE command, one can use "="
     to indicate desired hyphenation points as well as to disable
     completely hyphenation for a word.  (See also items 18 and 26.)

10.  Default  HEADER  type changed to "MIXED".

11.  Added "BLANK" header type in which the word "Page" is not output.

Changes Made to RUNOFF						    Page 2



12.  Added  EVEN  and  ODD  commands to force output to an even-numbered
     or odd-numbered page, respectively.

13.  Added  NO FLAGS  to command table--it was missing.

14.  Added  ALTERNATING TITLE  (AT) and  NO ALTERNATING TITLE  (NAT, the
     default) commands.  Causes the title to be output right justified on
     even-numbered pages and the subtitle to be output left justified on
     odd-numbered pages.  Even if invoked, this command has no effect
     unless  ALTERNATING HEADER  is in effect (e.g., the effect is
     disabled by the  /-AH  switch).  [*** See change 46. ***]

15.  (a) Fixed bug which caused too many blank lines to be output if a
     HEADER LEVEL  command immediately followed a  CHAPTER  or  APPENDIX
     command; (b) changed format of header levels 3 up from "... -  " to
     "... -- ".

16.  Replaced several constants with defined symbols (internal change only).

17.  Changed command scanner to ignore white space between words of command
     names.  Can now type command names with multiple (or no) spaces/tabs
     between words.  (Size of command table significantly reduced.)

18.  Modified hyphenation to have words which are already hyphenated
     (e.g., "even-numbered") broken at the hyphen (and only there or at
     any other user-specified points) if necessary.

19.  Added  AUTOSUBTITLE [<level>]  (AS) command to have  HEADER LEVEL
     commands up to given level (default is 1) automatically set subtitle.
     Level value of zero disables automatic setting of subtitle (initial
     setting).

20.  Added ability to selectively include or exclude segments of input
     file based on setting of a "switch".  Related commands are:

	INCLUDE <n>	(IN)   -- Turns on switch <n>,
	EXCLUDE <n>	(EX)   -- Turns off switch <n>,
	OPTION <n>	(OPT)  -- Marks start of optional segment <n>,
	ELSE <n>	       -- Inverts logic of active option <n>,
	END OPTION <n>	(ENDO) -- Marks end of optional segment <n>.

     Options can be nested to any depth, with "excluded" options
     overriding any inclosed "included" options.  (Currently up to 32.
     switches are allowed.)  Negative logic applies if a negative option
     number is supplied.

21.  Fixed index creation:  (1) entry longer than 52. characters used to
     overwrite code (now truncated to 50. characters); (2) entry longer
     than 50. characters did not get a page reference; (3) occurrences of
     entries differing only by case were not handled correctly (".x a" ...
     ".x A" ... ".x a" used to result in three entries in the index);
     (4) multiple occurrences of an entry on the same page are only stored
     once.

Changes Made to RUNOFF						    Page 3



22.  Made multi-part error messages appear on one line (except for "CAN'T
     JUSTIFY LINE").

23.  Added  RIGHT JUSTIFY [<number>] [;<text>]  (RJ) command to force
     <text> (or next line) against requested column (defaults to right
     margin).  <Number> can be a signed value to indicate an offset
     relative to the right margin.

24.  Changed line skipping routine to just set page-pending flag when a
     page is full, instead of actually starting a new page.  This fixes
     the problem of having a new page started at the end of a chapter or
     appendix when there is no more text in that section (i.e., the last
     page is completely full).  (a) Corrected page break when SPACING is
     greater than 1.  Eliminated output of blank lines at bottom of pages.

25.  Made hyphenation not be disabled when justification is turned off.

26.  Made "=" work even if "word" begins with non-alphabetic character.

27.  Made several changes to  LIST  commands:  (a) Save vertical spacing
     and test-page count when nested list begins and restore when it ends;
     (b) do test page for  LIST ELEMENT  _a_f_t_e_r skipping lines;
     (c) [change eliminated by change #63]; (d) default test-page count
     changed from  2  to  1  [compensates somewhat for change (b)]; (e) fix
     incorrect indent of first line when text followed command on next line;
     (f) adjust negative indent for list element numbers greater than 9.

28.  Fixed output of index so white space between letter groups is never
     output at the top of new page.  A  TEST PAGE  is done before the start
     of each letter group (currently the test count is three).

29.  Changed processing of command arguments so that a distinction is
     correctly made between no numeric argument provided (in which case a
     default is often used) and an explicit zero value provided.

30.  Allow negative arguments to  SKIP  and  BLANK  to mean move down to
     that many lines from the bottom of the page.

31.  Made the following commands not permitted when a  NOTE  is in process:
     FIRST TITLE, DO INDEX, PRINT INDEX.  Made the following commands not
     permitted when a  FOOTNOTE  is in process:  NUMBER, NO NUMBER, NUMBER
     APPENDIX, NUMBER CHAPTER.

32.  Made  PARAGRAPH  permissible in footnotes (default arguments are
     saved/restored).  Also,  SPACING  is now set to the default value
     (single spacing) within footnotes.

33.  The  FOOTNOTE  command can now be followed by other commands on the
     same line.  (The manual claimed that if there isn't room on the current
     page for the requested footnote space, it would be put on the next page.
     This is not true--the page just ends up being very long.  [This is on
     the list of things to be fixed.])  (See also change #54.)

Changes Made to RUNOFF						    Page 4



34.  Changed the  PARAGRAPH  command to assume a previous test-page value
     if none is supplied.  (The command used to ignore test page if no
     value was given.)  Also changed the internal sequence so that lines
     are skipped before the test page is done.

35.  Fixed bug in  SET TABS  which prevented the tab table from being
     completely filled.  Added check of new stops to make sure they are
     in ascending order.

36.  Expanded the scope of  STANDARD  to reset the tab stops, and the
     spacing and test-page parameters of  LIST, LIST ELEMENT  and
     PARAGRAPH  commands.

37.  Modified the  FIGURE  command so it works as claimed in the manual.
     That is, if there isn't room on the current page, it continues to be
     filled and the figure space is put on the next page.  There can be up
     to  16  figure allocations pending at one time (they are kept in
     order)--more than that yields an error.  If there are pending figure
     allocations when an APPENDIX, CHAPTER, DO INDEX, EVEN, or ODD command
     is encountered or the end of the input is reached, the figure
     allocations are all done.

38.  Eliminated the blank page which was output at the end of the DOC file.

39.  (a)  Added base left margin from which text left and right margins are
	  measured.

     (b)  Added  LAYOUT  command to set top margin, page length, base left
	  margin, and default right margin.  This command has the following
	  syntax:

	  LAYOUT <top>,<page length>,<base left margin>,<def. right margin>

	  The initial values are 0, 56., 0, and 60., respectively.  If any
	  argument is omitted (all are optional), its value is unchanged.

	  The left and right margins are now defined relative to the base
	  margin.

     (c)  Added  /DO , /LO , /LE , /WI switches to allow parameters to be
	  set via the command line.  If any of these switches are used,
	  and the corresponding argument is present in a  LAYOUT  command
	  in the input, a warning message is output and the value is not
	  changed.

40.  Added size parameters to the  HEADER  command.  The syntax now is:

	 HEADER <style>,<header length>,<left margin>,<right margin>

     The initial defaults are "MIXED", 5, 0, and 60., respectively.
     Subsequent  HEADER  commands take the current values as the defaults
     for the numeric arguments (all arguments are optional).

     (Continued)

Changes Made to RUNOFF						    Page 5



40.  Continued

     Added  /HL  switch to allow header length to be set via command line.
     If this switch is used, and the corresponding argument is present in
     a  HEADER  command in the input, a warning message is output and the
     value is not changed.

     The header right margin is also set by the  PAGE SIZE  and  LAYOUT
     commands (the latter only when the width parameter is provided).

41.  Added control of the white space between index letter groups.  For
     the  DO INDEX  command the number of lines output between groups is
     set by the  SPACING  command.  For the  PRINT INDEX  command a new
     parameter specifies the additional lines to be output between
     groups (and the index entries themselves are spaced per the  SPACING
     command).

42.  Added new error message to differentiate between different types of
     "ILLEGAL COMMAND" errors.  That is, between unknown command or one
     not accepted in the current context, and an invalid command parameter.

43.  Added  QUOTE CHARACTER [<char>]  command to allow the user to set the
     special character to be used as the quote character.  If no character
     is provided, the default ("_") is selected.

44.  Added "!" as comment flag.  Appearance of exclamation mark on command
     line terminates command and causes remainder of line to be ignored.
     (Note:  Be careful because of meaning of "!" to FOOTNOTE command.)

45.  Added  /IN  and  /EX  switches to permit setting of up to 5 options
     each from command line.  Any options which are set this way cannot be
     changed within the input file.

46.  Changed  ALTERNATING HEADER  (see change #4) to  ALTERNATE [<shift>]
     to have odd-numbered pages shifted to the right <shift> spaces.
     The initial setting is  NO ALTERNATE .  If <shift> is omitted, it
     defaults to zero.  Changed  /AH  switch to  /AL .

47.  Fixed subpage processing so multiple subpages can be output after
     SUBPAGE  command.  END SUBPAGE  correctly terminates subpages and
     returns to normal page numbering.

48.  Changed  NUMBER  to (a) take the actual new page number as its
     argument and (b) accept a relative argument.  Added an error check
     to  NUMBER CHAPTER  for argument less than or equal to zero.
     NUMBER CHAPTER  accepts argument up to 128.  CHAPTER  now turns on
     page numbering.

49.  Added ability to specify multiple input files.  All parameters are
     unchanged between consecutive input files.  The processing of any
     input file after the first one will effectively begin with a  BREAK.

     (Continued)

Changes Made to RUNOFF						    Page 6



49.  Continued

     Command-line switches are now processed from left to right, and they
     are now "sticky."  That is, once a switch is applied, its effect
     continues until explicitly changed.

     New /AP switch added to allow output to be appended to an existing
     file.  This switch is processed only on the output specification.
     The appended material will start a new page.

50.  Added ability to have task expand itself to increase the index/footnote
     buffer.  No longer have to install or run RNO with a /INC value.
     (a) Task expands itself during initialization so subsequent expansion
     can go up to the limit of the address space.

51.  Added  ENTRY  command.  This command is similar to the  INDEX  command
     except that it does not cause the page number to be stored.

     Added ability to specify subindexing.  Added optional indent parameter
     to  PRINT INDEX  command.  Added  [NO] FLAGS SUBINDEX  commands
     (initial setting is "enable").  As an example, use the following
     commands

			.entry Main
			.index Main>minor1
			.index Main>minor1>minor2

     to produce these index entries (using default indentation)

			Main
			  minor1 . . . . . . . . <page>
			    minor2 . . . . . . . <page>

52.  Corrected spacing of index entries with underlining.  (Note, however,
     that such entries may not be put in the correct order.)  [Spacing
     tested okay with all 4 underlining modes.]

     Fixed output of page references in index so right margin is not 
     exceeded.  Now a new line is started if there are too many page
     references to fit on one line.

53.  Added arguments to  TEST PAGE  command to control number of lines
     output together at the _e_n_d of a group of lines.  The new
     command format is  TEST PAGE <start>,[<block>],[<end>]  where
     "start" is the number of lines to be kept together at the beginning
     of a group of lines; "block" is the total number of lines in the
     group in the _o_u_t_p_u_t (default is infinity); "end" is the number of
     lines to be kept together at the end of the group of lines (default
     is <start>).  (53A fixed a bug which caused commands on the same line
     as the TEST PAGE to be ignored when the added arguments were used and
     they didn't cause a page break.)

Changes Made to RUNOFF						    Page 7



54.  Reworked footnote processing, fixing variety of bugs.  Specified
     footnote length is no longer multiplied by the text line spacing.
     Added warning message if footnotes over fill page, or if more than
     two blank lines are at bottom of page after footnotes are output.

     Added provision for having footnotes automatically set off from the
     body of the text by a blank line and a line with a user-specified
     number of user-specified characters.  Details for use are:

          Use  FOOTNOTE LINE [<number>][,][<char>]  (FNL) to specify the
          quantity and character to be used.  Use of the command with no
          character turns the feature off--then the first footnote on a
          page must explicitly contain whatever is to be used to set of
          footnotes from the text (i.e., as was always the case with the
          original RUNOFF).  If the number is omitted, the current value
          is retained.

          The initial condition is equivalent to "FOOTNOTE LINE 15,_".

55.  Fixed problem with  AUTOPARAGRAPH  which caused paragraph separation
     to be output twice if  PARAGRAPH  command was followed by either
     blank line or a line starting with a space or tab while  AUTOPARAGRAPH
     mode was in effect.

     Ignore extra blank lines and formfeeds in AUTOPARAGRAPH mode.

56.  Added  PAGE NAME <text>  command to enable setting a name to be used
     as  the prefix for page numbers (in place of chapter number or
     appendix letter if there is one).  Maximum length for <text> is 40.
     characters.

     Changed maximum title and subtitle lengths to 80 characters (were
     each 132).

57.  Changed  NOTE  to accept margin change as an optional command
     argument.  If omitted, the margins are always reduced by five (5)
     spaces.  Current syntax is  NOTE [<indent>,][<text>]  (which is
     compatible with the old syntax).

     Also changed internal sequence so that the TEST PAGE is done _a_f_t_e_r
     the initial blank lines are skipped.

58.  Added tests to  CENTER ,  RIGHT JUSTIFY ,  EVEN  and  ODD  to make
     sure numeric argument is within reason (i.e., <maximum right margin>
     = 132.; <maximum line skip> = <permanent page length>).

59.  Added  /CH:m:n  switch to limit output to chapters  m  through  n ,
     inclusive.

Changes Made to RUNOFF						    Page 8



60.  Made command syntax the same for all commands with similar argument
     combinations.  E.g., commands with numeric arguments can have them
     separated by white space with or without a comma; commands with a
     numeric argument and a text argument can have any of the following
     for separators:  none, white space, comma, semicolon, carriage
     return (the text is assumed to start immediately after the separator
     when either a semicolon or carriage return is used).

61.  Made changes to  LITERAL  processing to make it more "literal."  In
     particular:

     (a)  LITERAL  now saves the current line spacing and temporarily
	  sets it to one (1) so that the following text will in fact be
	  processed literally.  The previous spacing is restored when
	  the  END LITERAL  command is processed.

     (b)  Temporarily set the right margin to 132 to prevent RUNOFF from
	  breaking lines which exceed the normal right margin during
	  processing of  LITERAL  sections.  The right margin is restored
	  when  END LITERAL  is processed.

     (c)  If an output line exceeds the normal right margin, a warning
	  is output to the user's terminal.  (This error message costs
	  32 words of code.) 

     (d)  When END LITERAL is processed, <SPACING-1> blank lines are
	  output.  (This feature, which is controlled by an assembly
	  switch, is not currently selected.)

62.  Changed error messages to mixed case.  Made internal changes to
     processing of error messages to save space (63 words in ERMSG).

63.  Added <skip> argument to  END NOTE  and  END LIST  commands to specify
     number of lines to skip.  Defaults are 2 and the value used by the
     latest  LIST  command, respectively.

64.  Never underline underbar characters from the input.

65.  Ignore special characters while ordering index entries.  The space
     character can be ignored also.  [This change is not yet "official".]

66.  Check argument input with /UL switch.  Assume "N" if arg. is invalid.

67.  Expand checks for valid parameter values for the LEFT MARGIN, INDENT
     and RIGHT MARGIN commands, and the indent parameter for the PARAGRAPH
     command.  The current criteria are

		0 <= lm < rm     and     0 <= (lm + i) < rm

68.  Internal changes to store appendix number in byte location rather than
     a word location.  (This was done in anticipation of processing a
     table of contents.)  (a) Clear appendix letter when CHAPTER processed
     in case an APPENDIX or NUMBER APPENDIX has been processed.

Changes Made to RUNOFF						    Page 9



69.  Changed  TEST PAGE  and related functions of  LIST ELEMENT  and
     PARAGRAPH  to consider the current SPACING.  That is, these commands
     now check whether there is space for lines of text rather than simply
     lines in the output.

70.  Added  TEST LINES  (TL) command; has the same syntax and function as
     TEST PAGE  but does not consider the current SPACING.  That is, this
     command acts like the old version of TEST PAGE (see change 69 above).
     A typical use for this command is to check for space on the current
     page for a section of lines in a  LITERAL  section to follow, since
     LITERAL  temporarily sets single spacing, which may differ from the
     current SPACING.

71.  Added arguments to  PARAGRAPH  command to control number of lines
     output together at the _e_n_d of a group of lines.  The new
     command format is

          PARAGRAPH [<indent>],[<spacing>],[<start>],[<block>],[<end>]

     where the first three parameters have the old meanings, and the last
     two parameters have the same meaning as the last two parameters for
     the current  TEST PAGE  command (see change 53).

72.  Made sure output file is not left around if first (e.g., only) input
     file specification contains an error.  (RSX11-M only)

73.  Added parameter to LIST command to provide ability to have list
     elements set off by a specified character (e.g., "-" or "o" [pseudo
     bullet]) instead of being numbered.  (Changed test for too many nested
     lists to give error message before overflowing internal buffer!)

74.  Made level parameter to HEADER LEVEL optional--defaults to current
     level (initially 1).  Argument can also now be relative (i.e., a
     signed number).  By making all level specifications relative (e.g.,
     default or "+0" for the current level or "+1" for the next level) the
     insertion and removal of levels is simplified.

75.  Automatically do a DO INDEX at the end of the file if there is
     anything in the index buffer.

76.  Have JUSTIFY always turn on FILL.  Reasoning:  (1) it doesn't make
     much sense to justify without filling, (2) it was discouraged in the
     manual, and (3) it did not work correctly!

77.  Added assembly switch to eliminate FIRST TITLE from the code.
     Reasoning:  (1) it has never worked correctly (it does now, if
     included), (2) it doesn't provide a vital function (its effect can be
     achieved easily by other means--see manual), (3) it costs 22 words of
     index buffer space.

Changes Made to RUNOFF						    Page 10



78.  Added queue for segments of the input which must be deferred before
     placement in the output for some reason.  This applies to FOOTNOTEs,
     FIGUREs, and BLOCKs.

     The new BLOCK command can be used to ensure that lines which follow
     it are kept together (e.g., for a table).  That is, if there isn't
     room on the current page for the block, text continues to fill the
     page and the block is output at the top of the next page.

     As a consequence of this change, ANY LINE IN THE INPUT WHICH BEGINS
     WITH A "!" WILL NOT APPEAR IN THE OUTPUT.

     Reworked FIGURE processing to use new queue.  FIGURE command expanded
     to include argument for blank-line setoff before and after the figure
     space as with the BLOCK command (this is in anticiption of a "caption"
     argument for the FIGURE command).  The default for the setoff is zero
     lines (i.e., revert to old functionality).

79.  Moved the code for several commands which are infrequently used to a
     new overlay.  The only effect of this is to possibly slow execution
     slightly.

80.  Added text argument to FIGURE command to make it possible to have a
     caption or title output with the figure space.
