home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d197 / nro.lha / Nro / man < prev    next >
Text File  |  1989-03-28  |  37KB  |  727 lines

  1.  
  2.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  3.  
  4.  
  5.  
  6.      ›1mNAME 
  7.           ›0mnro - text formatter 
  8.  
  9.      ›1mSYNOPSIS 
  10.           nro  ›0m[-›1mn›0m]  [+›1mn›0m]  [-›1mpxx›0m]  [-›1mv›0m]  [-›1mbx›0m]  [-›1mrnx›0m]  [-›1mrdx›0m]  [-›1mrpx›0m]
  11.                [-›1mmmfile›0m] ›1mifile ›0m... [>›1mofile›0m] 
  12.  
  13.      ›1mDESCRIPTION 
  14.           ›0m›4mNRO›0m is a text processor and formatter based  on  the  design
  15.           provided  in  "›1mSoftware Tools›0m" by Kernighan and Plauger. The
  16.           text and commands found in the  ›4mifile(s)›0m  are  processed  to
  17.           generate formatted  text.  The output may be directed into a
  18.           file or to the printer, otherwise, the output will appear at
  19.           the user console.  
  20.  
  21.           The +›4mn›0m option causes the output to start with page ›4mn›0m.    The
  22.           -›4mn›0m option causes the output to stop after page ›4mn›0m.  
  23.  
  24.           The  -›4mv›0m  option  prints  the  version number to the console.
  25.           Specifying a higher numerical argument makes  ›1mNRO  ›0mmore  and
  26.           more verbose.  
  27.  
  28.           The  -›4mp›0m  option causes the output to be shifted to the right
  29.           by ›4mxx›0m spaces.  This has the same effect as the .›1mpo ›0mcommand.  
  30.  
  31.           The -›4mb›0m option with argument ›4mx›0m controls if backspaces  appear
  32.           in the  output  text when underlining or overstriking.  This
  33.           has the same  effect  as  the  .›1mbs  ›0mcommand  with  the  same
  34.           argument.  
  35.  
  36.           The  -›4mr›0m  options  allow  you  to  specify how much memory is
  37.           allocated for macro definitions and related things.  The -›4mrn›0m
  38.           option lets you specify how many macros you may define while
  39.           your text is being formatted.    Default  is  512.  The  -›4mrd›0m
  40.           option  lets  you  specify  how  much memory is reserved for
  41.           keeping the contents of your macro definitions.  Default  is
  42.           20480 characters.   The -›4mrp›0m option lets you specify how much
  43.           characters  may  be  pushed  back  into  the   input,   when
  44.           processing a macro evaluation.  Default is 1024 characters.  
  45.           If  any  of  these  options  is present they must be located
  46.           before the first file to be processed to have any effect.  
  47.  
  48.           The  -›4mm›0m  option  processes  the   file   ›4mmfile›0m   for   macro
  49.           definitions.   Note  that files processed in this way should
  50.           contain only macro definitions, no immediate  output  should
  51.           be generated from this file.  
  52.  
  53.                Commands  typically  are  distinguished  by a period in
  54.           column  one  of  the  input  followed  by  a  two  character
  55.           abbreviation for  the command funtion.  The abbreviation may
  56.           then  be  followed  by  an  optional  numeric  or  character
  57.           argument.  
  58.           The  numeric  argument  may  be  an  absolute  value such as
  59.           setting the right margin to  a  particular  column,  or  the
  60.           argument may be preceded by an operator to indicate that the
  61.           parameter   should   be  modified  relative  to  a  previous
  62.           setting.  You may use the operators +, -, /, *, %  (mod),  |
  63.  
  64.  
  65.      KosmoSoft                        -1-                       Version 1.5
  66.  
  67.  
  68.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  69.  
  70.  
  71.           (bitwise  or), & (bitwise and), = (equal), < (less than) and
  72.           > (greater than) to calculate values.   ›4mNo›0m  normal  operator
  73.           precedence   is   taken  into  account;  the  expression  is
  74.           evaluated strictly  from  left  to  right.    You  may   use
  75.           parentheses to  group  sub-expressions  together.  Note that
  76.           all operators are  dyadic,  even  the  -.    To  generate  a
  77.           negative  value,  use a form like 0-5. A leading operator in
  78.           an expression is not used in the evaluation.    Instead,  it
  79.           has the  effect  of  altering a previously set value.  The +
  80.           operator increases the set value with the given value, the -
  81.           operator decreases the set value with the given value, the *
  82.           operator multiplies the set value with the given value,  and
  83.           the /  operator divides the set value by the given value.  A
  84.           leading operator within parentheses is ignored.  
  85.  
  86.                Commands that have effect on a given  number  of  input
  87.           lines, can also take a text argument, if it is preceded by a
  88.           double  quote  character `"'. This behaves exactly as if you
  89.           gave the number 1, and followed the command with  the  given
  90.           text argument.  
  91.           More  text  or  commands  may  follow  a command if they are
  92.           seperated by a semicolon `;', unless the first command  must
  93.           be the last one on an input line.  
  94.  
  95.           The following commands are recognized: 
  96.  
  97.           .›1mbo ›0m causes  the  following  lines  of  text  to  appear  in
  98.                boldface.  The optional argument specifies  the  number
  99.                of lines  to be typed in boldface.  An argument of zero
  100.                explicitly  turns  boldface  off,  while   a   negative
  101.                argument turns  it on indefinitely.  When overstrike is
  102.                being  used  to  produce  the  boldface,  boldface  and
  103.                underlining  are  mutually  exclusive features, and the
  104.                appearance  of  a  boldface  command  will  cause   any
  105.                underlining to cease.  
  106.  
  107.           .›1mbp ›0m causes  succeeding  text  to appear at the top of a new
  108.                page.  The optional argument specifies the page  number
  109.                for the  new  page.    The initial value is one and the
  110.                default value  is  one  more  than  the  previous  page
  111.                number.  
  112.  
  113.           .›1mbr ›0m causes  succeeding  text  to start on a new line at the
  114.                current left margin.  There is  no  argument  for  this
  115.                command.  
  116.  
  117.           .›1mbs ›0m enables or disables the appearance of backspaces in the
  118.                output text.  A value of ›4mzero›0m doesn't use backspaces at
  119.                all, but  utilizes  standard  ISO  printer  codes.  The
  120.                Commodore Amiga console  and  printer  devices  support
  121.                these  directly,  but  on  other  systems  you  need  a
  122.                post-processor to  convert  these  standard  ISO  codes
  123.                into, for  example,  Epson printer codes.  If you don't
  124.                want this, underlining and  boldface  can  be  done  by
  125.                inserting    character    -   backspace   -   character
  126.                combinations into the output.  This is fine for devices
  127.                which properly recognize the backspace character.  Many
  128.                printers, however, do not recognize backspaces, so  the
  129.  
  130.  
  131.      KosmoSoft                        -2-                       Version 1.5
  132.  
  133.  
  134.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  135.  
  136.  
  137.                option  is  provided  to overprint one line buffer with
  138.                another.  The first line buffer is terminated with just
  139.                a carriage return rather than  the  carriage  return  -
  140.                linefeed combination.  
  141.                An  argument  of  ›4m2›0m  to  the  backspace command removes
  142.                backspaces from the output.  Even with  printers  which
  143.                do recognize  backspaces,  this  usually is faster.  An
  144.                argument of ›4m1›0m puts them into the output.   The  default
  145.                is to use Commodore Amiga (ISO) control sequences.  
  146.  
  147.           .›1mcc ›0m changes  the ›4mNRO›0m command character to that specified by
  148.                the character argument.  If no  argument  is  provided,
  149.                the default is a period.  
  150.  
  151.           .›1mce ›0m causes  the next line of text to appear centered on the
  152.                output.  This automatically generates  a  break.    The
  153.                optional argument specifies if more than one line is to
  154.                be centered.    An  argument  of  zero explicitly turns
  155.                centering off, while a negative argument  turns  it  on
  156.                indefinitely.  
  157.  
  158.           .›1mcu ›0m causes  the  next  line(s)  of  text to be continuously
  159.                underlined.  Unlike the  underline  command  (see  .›1mul›0m)
  160.                which   underlines   only   alphanumerics,   continuous
  161.                underlining underlines all printable characters.    The
  162.                optional argument specifies the number of lines of text
  163.                to underlined.    An  argument of zero explicitly turns
  164.                continuous underline off,  while  a  negative  argument
  165.                turns it  on  indefinitely.    Any  normal  underlining
  166.                command currently in effect will be terminated.  
  167.  
  168.           .›1mde ›0m causes all text and commands following to  be  used  to
  169.                define a macro.  The definition is terminated by a line
  170.                with .›1men  ›0mas  the  first three characters.  The rest of
  171.                that line is ignored.  
  172.                The first argument following the  .›1mde  ›0mcommand  becomes
  173.                the name of the new command.  
  174.                It  should be noted that upper and lower case arguments
  175.                are considered different.  Thus, the commands  .›1mPP  ›0mand
  176.                .›1mpp ›0mcould  define two different macros.  Care should be
  177.                exercised since existing commands  and  macros  may  be
  178.                redefined.   A  macro  may contain up to ten arguments.
  179.                In the macro definition, the placement of arguments  is
  180.                designated  by the two character sequences, $0, $1, ...
  181.                $9.  
  182.                When the macro is invoked, each argument of  the  macro
  183.                command  line  is  substituted  for  its  corresponding
  184.                designator in the expansion.  The first argument of the
  185.                macro  command  is  substituted  for  the  $0  in   the
  186.                expansion,  the  second  argument  for  the  $1, and so
  187.                forth.  Arguments are typically strings  which  do  not
  188.                contain blanks  or  tabs.  If an argument is to contain
  189.                blanks, then it should be surrounded by  either  single
  190.                or double quotes.  
  191.                A macro  name  may  be at most ten characters long.  If
  192.                more are supplied, the results are unpredictable.    To
  193.                get  things like $4 in the macro text, use a double $$,
  194.                i.e.  $$4.  
  195.  
  196.  
  197.      KosmoSoft                        -3-                       Version 1.5
  198.  
  199.  
  200.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  201.  
  202.  
  203.           .›1mef ›0m specifies the text for  the  footer  on  even  numbered
  204.                pages.   The  format  is  the  same  as  for the footer
  205.                command (see .›1mfo›0m).  
  206.  
  207.           .›1meh ›0m specifies the text for  the  header  on  even  numbered
  208.                pages.   The  format  is  the  same  as  for the footer
  209.                command (see .›1mfo›0m).  
  210.  
  211.           .›1mel ›0m See .›1mif ›0mand .›1mie›0m.  The .›1mel ›0mcommand reverses the truth of
  212.                the condition remembered by the last .›1mie›0m.  command, and
  213.                if the result is true, it  accepts  the  input  on  the
  214.                remainder  of  the  line,  just  like  the .›1mif ›0mcommand.
  215.                Multi-line else-parts are thus also possible.  You  may
  216.                have  multiple  .›1mel  ›0mrequest  following  a  single  .›1mie
  217.                ›0mcommand.   Since  every  .›1mel  ›0mreverses  the  remembered
  218.                condition,  you  have  if  effect  multiple 'then-' and
  219.                'else-parts', just divided into bits and pieces.  
  220.  
  221.           .›1mev ›0m environment switch.  If a numerical argument is  given,
  222.                the  number  of  the current environment is pushed on a
  223.                special  environment  number  stack,  and   the   named
  224.                environment is   made  current.    If  no  argument  is
  225.                supplied, the previous environment number that  was  in
  226.                effect will  be  restored.  As a variation of this, the
  227.                command .›1mev ›0m- will restore the previous environment and
  228.                ›4mdiscard›0m the current environment.  This is useful if you
  229.                don't need the particular environment anymore.    At  a
  230.                new invocation of this environment it will have default
  231.                values again.  
  232.                The environment is the set of values that determine the
  233.                appearance of   formatted   output.     There  are  ten
  234.                environments available, and up to nineteen  environment
  235.                numbers can  be  pushed.    Because a stack of previous
  236.                environment numbers is maintained, always return  to  a
  237.                previous  environment  by a .›1mev ›0mcommand without numeric
  238.                argument.  
  239.                The following commands affect values that  are  in  the
  240.                environment:  .›1mls  ›0m.›1mti  ›0m.›1min ›0m.›1mrm ›0m.›1mce ›0m.›1mul ›0m.›1mcu ›0m.›1mit ›0m.›1mta ›0m.›1mju
  241.                ›0m.›1mnj ›0m.›1mbo ›0m.›1mfi ›0m.›1mnf ›0m.›1mpn ›0m.›1mpc ›0m.›1mcc and ›0m.›1mc2›0m.  
  242.                Also  in  the  environment  are  the  last   remembered
  243.                conditional, .›1mie›0m, and collected partial output lines.  
  244.  
  245.           .›1men ›0m designates the end of a macro definition.  
  246.  
  247.           .›1mfi ›0m causes  the  input  text  to be rearranged or filled to
  248.                obtain the maximum  word  count  possible  between  the
  249.                previously set  left and right margins.  No argument is
  250.                expected.  
  251.  
  252.           .›1mfo ›0m specifies text to be used for a  footer.    The  footer
  253.                text  contains  three  strings seperated by a delimiter
  254.                character.  The first non-blank character following the
  255.                command is designated as the delimiter.  The first text
  256.                string is left justified  to  the  current  indentation
  257.                value (specified   by  .›1min›0m).    The  second  string  is
  258.                centered between the current indentation value and  the
  259.                current right  margin  value  (specified  by .›1mrm›0m).  The
  260.                third string is right justified to  the  current  right
  261.  
  262.  
  263.      KosmoSoft                        -4-                       Version 1.5
  264.  
  265.  
  266.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  267.  
  268.  
  269.                margin value.    The absence of footer text will result
  270.                in the footer being printed as one  blank  line.    The
  271.                presence  of  the page number character (set by .›1mpc›0m) in
  272.                the footer text results  in  the  current  page  number
  273.                being inserted  at that position.  Multiple occurrances
  274.                of the page number character are allowed.  This command
  275.                must be the last command on an input line.  
  276.  
  277.           .›1mhe ›0m specifies text to be used for a header.  The for mat is
  278.                the same as for the footer (see .›1mfo›0m).  
  279.  
  280.           .›1mie ›0m Same as .›1mif›0m, but  remembers  the  resulting  condition,
  281.                that can  be used by subsequent .›1mel ›0mrequests.  Only one
  282.                level of  conditions  is  remembered:  they  cannot  be
  283.                nested.   Every  occurrence  of a .›1mie ›0mrequest overrides
  284.                the result as remembered by the previous one.  
  285.  
  286.           .›1mif ›0m Conditional acceptance  of  input.    The  request   is
  287.                followed  by  a  conditional,  which  may  take several
  288.                forms.  Depending on the  condition,  subsequent  input
  289.                may be  accepted  or  ignored.   The following forms of
  290.                condition are valid: 
  291.                     .›1mif ›0m[!]<›1mletter›0m> anything 
  292.                     .›1mif ›0m[!]<›1mexpression›0m> anything 
  293.                     .›1mif ›0m[!]<›1mdelimiter›0m> <›1mstring1›0m> <›1mdelimiter›0m> <›1mstring2›0m> 
  294.                         <›1mdelimiter›0m> anything 
  295.                The following <letter>s may be used:  ›1mo›0m:  Current  page
  296.                number  is  odd;  ›1me›0m:  Current  page  number is even; ›1mn›0m:
  297.                Formatter is ›4mNRO›0m, which is always true; ›1mt›0m: Formatter is
  298.                TRO(FF), which is always false.  
  299.                An <expression> is said to be true if it is > 0.  
  300.                The last form is a string comparison, which is true  if
  301.                <string1> and   <string2>   are  exactly  equal.    Any
  302.                <delimiter> may be used as long as it doesn't make  the
  303.                conditional look like one of the other forms.  
  304.                A  not-symbol `!' may immediately precede the condition
  305.                to reverse its truth.  
  306.                Normally, the accepted or  ignored  input  affected  is
  307.                only the  rest of the current input line.  A multi-line
  308.                `then-part' must begin with the  opening  delimiter  @{
  309.                and  the  last line must end with the closing delimiter
  310.                @}. It may  also  be  useful  to  conceal  the  newline
  311.                following  the opening delimiter if it is at the end of
  312.                an input line.  Because the delimiters are deleted from
  313.                the input, make sure that the line is not empty without
  314.                them, because  this  would  cause  a  break.    It   is
  315.                sufficient  to  place  them  on  a  line with a comment
  316.                command to avoid this.  
  317.  
  318.           .›1min ›0m indents the left margin to the column  value  specified
  319.                by the  argument.    The  default left margin is set to
  320.                zero.  This command performs a break.  
  321.  
  322.           .›1mit ›0m causes  the  following  lines  of  text  to  appear  in
  323.                italics.  The optional argument specifies the number of
  324.                lines to  be  typed  in  italics.   An argument of zero
  325.                explicitly turns italics off, while a negative argument
  326.                turns it  on  indefinitely.    This  command   is   ›1mnot
  327.  
  328.  
  329. ›0m     KosmoSoft                        -5-                       Version 1.5
  330.  
  331.  
  332.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  333.  
  334.  
  335.                ›1m›0mfunctional  when  the  Commodore  Amiga  (ISO)  command
  336.                sequences  are  not  being  used,  since  it  can't  be
  337.                emulated by overstriking printlines.  
  338.  
  339.           .›1mju ›0m causes blanks to be inserted between words in a line of
  340.                output  in  order to align or justify the right margin.
  341.                The default is to justify.  No argument is expected.  
  342.  
  343.           .›1mls ›0m sets the line spacing to the  value  specified  by  the
  344.                argument.  The default is for single spacing.  
  345.  
  346.           .›1mm1 ›0m specifies  the  number  of  lines in the header margin.
  347.                This is the space from the physical top of page to  and
  348.                including the  header text.  A value of zero causes the
  349.                header to not be printed.  A value of  one  causes  the
  350.                header to  appear  at the physical top of page.  Larger
  351.                argument values cause the appropriate number  of  blank
  352.                lines to appear before the header is printed.  
  353.  
  354.           .›1mm2 ›0m specifies  the  number  of  blank  lines  to be printed
  355.                between the header line  and  the  first  line  of  the
  356.                processed text.  
  357.  
  358.           .›1mm3 ›0m specifies  the  number  of  blank  lines  to be printed
  359.                between the last line of processed text and the  footer
  360.                line.  
  361.  
  362.           .›1mm4 ›0m specifies  the  number  of  lines in the footer margin.
  363.                This command affects the footer the same  way  the  .›1mm1
  364.                ›0mcommand affects the header.  
  365.  
  366.           .›1mne ›0m specifies  a number of lines which should not be broken
  367.                across a  page  boundary.    If  the  number  of  lines
  368.                remaining on a page is less than the value needed, then
  369.                a new output page is started.  
  370.  
  371.           .›1mnf ›0m specifies   that  succeeding  text  should  be  printed
  372.                without rearrangement, or with no fill.  The default is
  373.                to justify.  No argument is expected.  
  374.  
  375.           .›1mnj ›0m specifies that no attempt should be made  to  align  or
  376.                justify the right margin.  No argument is expected.  
  377.  
  378.           .›1mnr ›0m causes  the  value  of  a  number register to be set or
  379.                modified.  A total of twenty-six number  registers  are
  380.                available  designated  @na through @nz (either upper or
  381.                lower case is allowed).    When  the  sequence  @nc  is
  382.                imbedded  in  the  text,  the  current  value of number
  383.                register c replaces the sequence, thus, such things  as
  384.                paragraph  numbering  can be accomplished with relative
  385.                ease.  
  386.  
  387.           .›1mof ›0m specifies the text  for  the  footer  on  odd  numbered
  388.                pages.   The  format  is the same as the footer command
  389.                (see .›1mfo›0m).  
  390.  
  391.           .›1moh ›0m specifies the text  for  the  header  on  odd  numbered
  392.                pages.   The  format  is the same as the footer command
  393.  
  394.  
  395.      KosmoSoft                        -6-                       Version 1.5
  396.  
  397.  
  398.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  399.  
  400.  
  401.                (see .›1mfo›0m).  
  402.  
  403.           .›1mpc ›0m specifies the page  number  character  to  be  used  in
  404.                headers and  footers.  The occurrance of this character
  405.                in the header or footer text  results  in  the  current
  406.                page number  being  printed.    The  default  for  this
  407.                character is the hash mark `#'.  
  408.  
  409.           .›1mpl ›0m specifies the page lenght or the number  of  lines  per
  410.                output page.  The default is 66.  
  411.  
  412.           .›1mpn ›0m specifies the  way  page  numbering  is  done.  You may
  413.                specify the following values: 0 uses normal arabic page
  414.                numbers, 1 generates lowercase  roman  numbers,  and  2
  415.                specifies uppercase  roman  numbers.  Default is arabic
  416.                page numbering.  
  417.  
  418.           .›1mpo ›0m specifies a  page  offset  value.    This  allows   the
  419.                formatted text to be shifted to the right by the number
  420.                of spaces  specified.  This feature may also be invoked
  421.                by a switch  on  the  command  line.    All  horizontal
  422.                positions  (like  tabstops,  indentations) are adjusted
  423.                accordingly.  
  424.  
  425.           .›1mrm ›0m sets the column  value  for  the  right  margin.    The
  426.                default is 80.  
  427.  
  428.           .›1mso ›0m causes input to be retrieved from the file specified by
  429.                the command's  character string argument.  The contents
  430.                of the new file are inserted  into  the  output  stream
  431.                until an  EOF  is detected.  Processing of the original
  432.                file is then resumed.  File nesting is allowed up to  a
  433.                reasonable level (four).  
  434.  
  435.           .›1msp ›0m specifies  a  number of blank lines to be output before
  436.                printing the next line of  text.    This  automatically
  437.                generates a break.  You cannot move upwards.  
  438.  
  439.           .›1mta ›0m tab settings.      This   command  allows  you  to  set
  440.                tabstops.  It  may  have  optional  numeric  arguments.
  441.                When   issued   without  arguments,  all  tabstops  are
  442.                removed.   When  issued  with  one  or   more   numeric
  443.                arguments,  tabstops are set at the specified number of
  444.                spaces from the left  hand  side  of  the  paper.    An
  445.                argument  may  optionally  be  preceded  with  a `+' to
  446.                indicate that a distance from the previously  mentioned
  447.                tab is  meant  instead  of an absolute position.  A `+'
  448.                sign before the first  argument  indicates  a  distance
  449.                from the current indent.  
  450.  
  451.           .›1mti ›0m temporarily alters the indentation or left margin value
  452.                for a  single  succeeding  line  of  output text.  This
  453.                command performs a break.  If an input line starts with
  454.                spaces, this has the effect that a break is  generated,
  455.                and  a  temporary  indent  for  the number of spaces is
  456.                set.  
  457.  
  458.  
  459.  
  460.  
  461.      KosmoSoft                        -7-                       Version 1.5
  462.  
  463.  
  464.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  465.  
  466.  
  467.           .›1mtm ›0m writes a message to the standard error output,  so  you
  468.                see it  in  your  console window.  This command must be
  469.                the last one on an input line.    When  used  with  the
  470.                no-break   command   character,  this  `no-break'  gets
  471.                another meaning: don't break the formatted output if it
  472.                also is printed on the console.  The command is ignored
  473.                instead.  
  474.  
  475.           .›1mul ›0m underlines  the  alphanumeric  text  in  the  following
  476.                line(s).  The optional argument specifies the number of
  477.                lines to be underlined.  An argument of zero explicitly
  478.                turns  underlining off, while a negative argument turns
  479.                it on indefinitely.  When overstrike is being  used  to
  480.                produce  the  underline,  underlining  and boldface are
  481.                mutually exclusive features, and the appearance  of  an
  482.                underline   command   cancels   any  existing  boldface
  483.                operations.  
  484.  
  485.           .›1mun ›0m undefines a previously defined macro,  and  all  macros
  486.                that were   defined   later.    If  this  macro  was  a
  487.                redefinition of an older macro with the same name,  the
  488.                old definition  will  be available again.  Thus, macros
  489.                are defined in a stack-like fashion.  
  490.  
  491.           .* 
  492.           ."   Both of these serve as a way to insert comments in  the
  493.                input text.    They  have  absolutely  no effect on the
  494.                output.  
  495.  
  496.  
  497.                Instead  of  having  the  command  immediately  at  the
  498.           beginning  of  a  line,  you  may  also  begin a line with a
  499.           command character,  then  some  blanks,  and  then  again  a
  500.           command  character,  this  time  followed immediately by the
  501.           command.  There exists  even  a  second  command  character,
  502.           called the ›1mno break command character›0m, `'', which suppresses
  503.           the break  normally  generated  by  some  commands.  This no
  504.           break command character can only be used in this  way.    If
  505.           the first non-blank character is ›4mnot›0m a command character, it
  506.           is considered to be text.  An example illustrates this.  
  507.  
  508.                .    .sp   @" This is a space command,
  509.                .    this is some normal text,
  510.                .    'sp 3 @" and this spaces without a break.
  511.  
  512.                When  a line does not begin with the command character,
  513.           its words are placed one by one on an output line.  As  soon
  514.           as  a  word  doesn't  fit,  the  collected  line is printed,
  515.           possibly after justification.  The word is  then  placed  on
  516.           the next  output  line.  If a line is about to be printed at
  517.           the top of a page, the  page  header,  if  any,  is  printed
  518.           first.   If a line is on the last usable line of a page, the
  519.           page footer, if any,  is  printed  next,  and  the  page  is
  520.           ejected.  
  521.           If  you want to begin an input text line with an instance of
  522.           the command character, you may precede it  with  the  escape
  523.           character.  
  524.  
  525.  
  526.  
  527.      KosmoSoft                        -8-                       Version 1.5
  528.  
  529.  
  530.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  531.  
  532.  
  533.                A number of translations can be performed on the input,
  534.           even  before  it  is interpreted as either text or commands.
  535.           Such a translation takes place where an escape character `@'
  536.           is seen in the input text.  The single charachter  following
  537.           the escape character determines the effect.  
  538.  
  539.           The following functions are currently implemented: 
  540.  
  541.           @@   is a single @.  
  542.  
  543.           @›1me ›0m  is   replaced  by  the  current  value  of  the  escape
  544.                character.  Currently, there is no way to change it.  
  545.  
  546.           @›1mn ›0m  followed  by  a  single  letter,  is  replaced  by  the
  547.                contents of the designated number register.  
  548.  
  549.           @›1mt ›0m  is  replaced  with  a  tab  character,  to  be  used in
  550.                conjunction with the .›1mta ›0mcommand.  You may also  use  a
  551.                normal tab  character  if  you  wish.    If  a  tab  is
  552.                encountered,  the  necessary  space  is  generated   by
  553.                non-breakable spaces.    Any  spaces on the output line
  554.                before the tab are also made non-breakable.  This is to
  555.                avoid justification spoiling the tab.  
  556.                Tabs beyond the current right margin or beyond the last
  557.                tab stop are ignored, except that they separate words.  
  558.  
  559.           @›1mX›0m(›1mexpression›0m) is replaced with the character with character
  560.                code value `expression'.  
  561.  
  562.           @(›1mspace›0m) is replaced by a non-breakable space.   It  behaves
  563.                just  like  any printable character, you just don't see
  564.                it.  This space won't be modified by justification, and
  565.                it will be underlined by continous underline.  
  566.  
  567.           @(›1mnewline›0m) is deleted from the input.  If a @ is  placed  at
  568.                the end of an input line, it will appear as if the next
  569.                input  line  actually  is following the contents of the
  570.                current line.    This   is   called   `concealing   the
  571.                newline'.  
  572.  
  573.           @.   where  .  stands  for  the  current  command character,
  574.                produces the command character.  It will, however,  not
  575.                be recognized  as  such.   This provides a way to start
  576.                your input line with a command character that  in  fact
  577.                is a  text  line.    This  only  works  if  the command
  578.                character is different from any other  valid  character
  579.                following  the  escape character, and does not work for
  580.                .›1men ›0mcommands that end a macro definition.  
  581.  
  582.           @{ 
  583.           @}   These two delimiters  were  already  mentioned  in  the
  584.                section about  the .›1mif ›0mand .›1mel ›0mcommands.  They serve to
  585.                delimit the lines you want  to  be  affected  by  these
  586.                commands.   Normally,  when the condition is false, the
  587.                .›1mif ›0mskips input until it finds the end of  the  current
  588.                line.   If  it  sees the @{ following the condition, it
  589.                sets a flag to indicate to the low-level  file  reader,
  590.                that it must count these delimiters.  All input is then
  591.  
  592.  
  593.      KosmoSoft                        -9-                       Version 1.5
  594.  
  595.  
  596.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  597.  
  598.  
  599.                skipped  until  the  matching  closing  delimiter @} is
  600.                found.  So, the .›1mif ›0mcommand never  'sees'  anything  of
  601.                it.   Also in this case, the .›1mif ›0mcommand skips the rest
  602.                of the line remaining after the closing @}.  
  603.                On the other hand, if the  condition  evaluates  to  be
  604.                true,  all  and  any opening and closing delimiters are
  605.                ignored completely.     The   command   following   the
  606.                condition  is executed, and also of course any commands
  607.                on following lines.   Since  a  command  (or  text)  is
  608.                expected  on the same line as the .›1mif ›0mcommand, omission
  609.                of a command makes it look like there is an empty line,
  610.                and this generates an unexpected break.  Therefore, you
  611.                should conceal the newline at the end of such  a  line.
  612.                (See @(newline).) 
  613.  
  614.           @"   This is yet another way to insert a comment.  Note that
  615.                text may  precede  the comment function.  All text from
  616.                the comment function until the end of the line will  be
  617.                ignored.   Note  that spaces between the last word on a
  618.                line and the comment are  not  deleted,  and  this  may
  619.                effect  your  layout  in some (as of yet unimplemented)
  620.                cirumstances.  
  621.  
  622.           Any unrecognized character that follows the @ will  be  left
  623.           in the input.  
  624.  
  625.                Macro  expansion  is accomplished in the following way.
  626.           There exists an input push-back buffer.   If  any  input  is
  627.           needed, this  push-back  buffer  is  examined  first.   If a
  628.           character is present, the request is satisfied by taking the
  629.           last pushed back character.  Only if the push back buffer is
  630.           empty, a character is read from the input file.  At any time
  631.           that ›4mNRO›0m reads a character that is unexpected, it is  pushed
  632.           back, in the hope that it can be used later.  
  633.           When  a  macro  is  to be expanded, its body is pushed back,
  634.           while at the same time subsituting the arguments.   Normally
  635.           when  an  instance  of  the escape character is to be pushed
  636.           back, it is `guarded' against  re-substitution  when  it  is
  637.           read  back,  by doubling it, so anything pushed back will be
  638.           read back exactly the same.  This is not done ›4monly›0m for macro
  639.           bodies, to allow resubstitution to  occur  in  them.    This
  640.           means that the body of a macro is interpreted twice, once at
  641.           definition time,  and  once  at application time.  The macro
  642.           arguments are interpreted only once, so that a double escape
  643.           character in an argument will show up in the resulting  text
  644.           as a single escape character, instead of disappearing.  This
  645.           seems to  be  the most intuitive approach.  It will disallow
  646.           some more complex applications but avoids needing  four  @'s
  647.           in an argument if you want only one.  
  648.  
  649.      ›1mEXAMPLES 
  650.        ›0mMacros: 
  651.           You  may  even  define  a macro that defines a macro, in the
  652.           following way: 
  653.                .de keep
  654.                .de $0
  655.                $1 $2 $3 $4 $5 $6 $7 $8 $9
  656.                @@.en
  657.  
  658.  
  659.      KosmoSoft                        -10-                      Version 1.5
  660.  
  661.  
  662.      NRO(1)                AM*GA Programmer's Manual                 NRO(1)
  663.  
  664.  
  665.                .en
  666.           This macro defines a macro with a  name  designated  by  the
  667.           first  argument,  and  containing the text designated by the
  668.           remaining arguments.  Remember that you can  always  enclose
  669.           an argument with quotes.  
  670.           Note that you must use two escape characters to make the .›1men
  671.           ›0mpart of  the  macro body.  This is because macro definitions
  672.           are handled slightly different from normal input lines.   In
  673.           the definition of `keep' there will be a line with @.›1men›0m, and
  674.           at  the  time  of  definition  of the inner macro the second
  675.           escape character will be stripped off, so that  the  end  of
  676.           the inner macro definition is recognized.  
  677.           Another  way  to  to  it, is to change the command character
  678.           temporarily while defining the outer macro.  
  679.  
  680.        Conditionals: 
  681.           Here are a few examples of correct use of the .›1mif›0m,  .›1mie  ›0mand
  682.           .›1mel ›0mcommands: 
  683.  
  684.                .if @na Register A is greater than zero!
  685.  
  686.                .if @na @{.firstcommand
  687.                .   .secondcommand
  688.                .   .lastcommand @}
  689.  
  690.                .if @na @{@
  691.                .   .firstcommand
  692.                .   .secondcommand
  693.                .   .lastcommand @}
  694.  
  695.                .ie @na @{.firstcommand
  696.                .   .secondcommand
  697.                .   .lastcommand @}
  698.                .el Register A is NOT greater than zero!!
  699.                .el Maybe a bit late, but register A IS greater than zero!!
  700.  
  701.      ›1mUNDOCUMENTED FEATURES 
  702.  
  703.                ›0m<censored> 
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.      KosmoSoft                        -11-                      Version 1.5
  726.  
  727.