\fill\justify \ lft-marg 1/2" \ line-length 7" \ leading 0 \ par-space 4p \ top-margin 1/2" \ bottom-margin 1/2" \ footing-margin 2 \ widow 3 \$1 \$foot\ce\rn\=pn\* \font Times-Roman \font b:penprint\attach 8 \character-height 24p \ce \tall{EP Command Reference} \character-height 22. \font b:bodoni-bold\attach 9 \leading 1p\ps 8p \f8 After each command in the following list is an abbreviated indication of what sort of argument it takes, and whether it causes a break. An asterisk means that it does cause a break. When there is a break, any partially formed output line is printed without right-justification and a new output line is started. If there is no text currently waiting to be put in an output line, then a break has no effect. The kinds of arguments allowed are: \f9 {n} - A plain old number goes here (0-32767). \f9 {b} - A Boolean number: 0 for false, 1 or any other number for true. \f9 {h} - A number or fraction interpreted as a horizontal measure. \f9 {v} - A number or fraction interpreted as a vertical measure. \f9 {c} - A character, either literal or by ascii number. \f9{expression} -\skip-up Numerical expression. \f9{block} - Text enclosed in braces. \f9{line} - Remainder of the input line. \f9{file-name} -\skip-up Name of text file to be imbedded, or font file. When a command allows a numerical argument, but none is given, 1 is assumed. For horizontal measures, the understood unit of measure is 1/10", unless another unit is indicated by a following `.' (meaning 1/240") or `p' (1/80") or `"' (inch).\br For vertical measures, the understood unit of measure is 1 line, as determined by the current \f9 {character-height} and \f9{set-leading} values, unless another unit is indicated. If the defaults have not been changed, this value will be 11 points. Another vertical unit may be indicated by a following `.' (meaning 1/216") or `p' (1/72") or `"' (inch). \br For all numerical arguments, a `+' or a `-' may precede the argument, in which case the value is added to or substracted from the old value, rather than replacing it. If the name of the command is not given with a hyphen, the `-' must be preceded by a space, so that it will not be confused with a hyphen. If no numerical argument is given after the `+' or `-', 1 is added or subtracted. Numbers are always unsigned, and a ``fraction'' is a number followed immediately by a slash followed immediately by another number. Here are some examples: \\indent 4/3" \\* indent 1 1/3 inches \\indent + 1/2" \\* indent an extra 1/2" \\indent +1 \\* indent an additional 8 points (1/10") \\in+ \\* likewise \\in -1p \\* 1 point less indent \\char-space \\* add 1/10" space after each character (a lot) \\par-skip \\* set the paragraph spacing to the current \\* character-height plus the current leading \\* (i.e. the height of one line) \\par-skip+ \\* space paragraphs by an additional line A numerical \f9{expression} is a formula built up from numbers or fractions, variables, parentheses, and the operators +, -, *, /, =, >, <, >=, <=, <> following the usual rules of precedence. The compounded symbols for comparisons can be given in either order (=> is the same as >=) and == can be used for =. Expressions are recognized after `\\command-name =' and in a few other contexts (see \f9{\\if} below, under Variables, and under Special Characters). In expressions, if no dimension is indicated after a number, it is assumed to be undimensioned or to refer to dots. This is different from the convention for numbers elsewhere. E.g. \\indent 8 \\* set the indent to 8/10s of an inch\br versus \\indent = 8 \\* set the indent to 8 dots, or 2 2/3 points In most cases for a \f9{line} argument, additional lines from the input file can be adjoined by ending a line with a `\\'. The lines are adjoined regardless of whether \f9{concatenate} is `on', and no space is added between the last character before the `\\' and the first character of the adjoined line. The group of joined lines counts as a single input line, so that \offst 6 (1) \cl 6 an adjoined line beginning with a space will not cause a break, \offst 6 (2) \cl 6 a \f9{center} command, e.g., causes a break after the whole group of joined lines, \offst 6 (3) \cl 6 in defining a string, after \f9{$heading} e.g., all the joined lines become part of the definition. \in 0 File names may have drive prefixes, but no designation of a user area (although a user prefix may be used for the main text file -- e.g. `A>ep 3/b:sample'). The \f9{user} command can be used to reference fonts in other user areas. If the same font is referred to more than once by name, a drive prefix need not be used after the first reference. Font file names are always made to have the extension `.\uc FN2\uc0', regardless of any extension that may have been given as part of the name. The character `{' cannot be part of a file name, since it is interpreted to mean the beginning of a block (in the relevant context). The first character of a file name cannot be `$', because this would be confused with a reference to a command line argument. A name that is longer than eight characters, not counting any extension, is truncated. If any `-' characters occur in the file name, this is given a special interpretation -- the hyphens are eliminated, and the parts of the name are truncated so as to include at most 4 characters from the part before the first hyphen and at most 4 from the part after. If there is a second hyphen, then in a similar fashion, at most 2 characters come from before this hyphen and at most 2 from after it. And so on. When there are more than 3 hyphens, the last character of the name will be the character that comes after the last hyphen. If you're still with me, you may be thinking you'd prefer not to use hyphens in file names at all, but the convention is easier to use than it is to describe. (For examples see EPUSE.DOC.) A \f9{c} character argument is the next literal non-blank non-tab character that occurs after the command name on the same input line, unless this is an end-of-line or a digit. End-of-line is taken to be character 0, i.e. NUL. If it's a digit, it is assumed that a character is being referred to by its ascii number. E.g. \\tab-char : \\* make the tab character a colon \\tab-char 20 \\* make the tab character a ^T \\tab-char \\tab-char 0 \\* last and this line both mean ``no tab char'' \f8 \tall{Page Format} \f9 adjust h *\br \f9 left-margin h * \f8\in 1" Both these set the left margin (counting from the left-most print head position, not from the left edge of the paper). Note that when the left margin is set, you would ordinarily want to set the \f9{line-length} to some appropriate value, as well. \in 0 \f9 left-inside h *\br \f9 left-outside h * \f8\in 1" These commands specify a distance to be added to the left margin on odd and even numbered pages, respectively. \in 0 \f9 line-length h * \f8\in 1" Sets the right margin to the \f9 {adjust\} value plus {h}. (Default is 8 inches.) \in 0 \f9 leading v\br \f9 set-leading v \f8\in 1" Both these set the vertical space to be left between lines of characters. The height of a line will be the value of \f9 {character-height\} plus {leading}. (Default is 2 points.) \in 0 \f9 page-length v \f8\in 1" Sets the value for the paper length that EP should assume. (Default is 11 inches.) \in 0 \f9 top-margin v \f8\in 1" Sets the distance to be left between the top of the page and the first line of printed text. (Default is 1 inch.) \in 0 \f9 heading-margin v \f8\in 1" Sets the distance to be left between the first line of printed text and the heading or top page number. If \f9 {v} is 0, there will be no heading or top page number. If it is not 0, but no heading line has been defined by the \f9{$h} command described below, the page number will be printed at the top, centered and using the first letter font that was requested, or Epson native characters if no letter font has been requested. The values of \f9{top-margin\} and {heading-margin} define for EP the initial vertical position of the print head on the paper. When printing first starts, EP assumes that the printhead is where the heading line or top page number should go, or at the top margin, if there is to be no heading or top page number. (Default is 0.) \in 0 \f9 $heading line \f8\in 1" The remainder of the input line is stored away, and formatted and printed at the top of every page, at the position defined by the values assigned to \f9{top-margin} and \f9{heading-margin}, provided the latter is not 0. If the input line ends with `\\', additional input lines are also stored as part of the heading, until one does not end this way. With a few exceptions, the line may include any formatting commands, and may define more than one output line (in case it contains commands causing breaks). Indentation is not used in headings. The heading should always end with `\\*', and the \f9{escape-character} in a heading is assumed to be whatever was current when it came time to print the first character. Here is an example: \\$heading\\font Lydian\\center Frogs\\font Helvetica\\right-adjust\\=page-number\\* \break And another example: \\$hdng\\in-adjust\\emph{Vines}\\break\\skip-up\\out-adjust\\ \\Roman-numeral\\=page-number\\* \break Before printing a heading or footing, the values indicated in the following list are saved and the new values given in the left column are assigned. After the heading or footing is printed, the former values are restored. current print mode font 1, italic 0, expanded 0, etc. (0 for other print mode commands) escape-character value found when first character of file was printed numberof-columns 0 current-column 0 concatenate 0 justify 0 bold 0 width-factor 100 character-height 8 points character-spacing 1 point leading 2 points kern 0 character-width 0 bend 0 align 0 upper-case 0 \in 0 \f9 bottom-margin v \f8\in 1" Sets the distance to be left between the last line of printed text and the bottom of the page. (Default is 1 inch.) \in 0 \f9 footing-margin v \f8\in 1" Sets the distance to be left between the last line of printed text and the footing or bottom page number. If \f9 {v} is 0, there will be no footing or bottom page number, and there will not be an automatic page eject after all the text one the last (or only) page has been printed. (Default is 10 points.) \in 0 \f9 $footing line \f8\in 1" The remainder of the input line is stored away, and formatted and printed at the bottom of every page, at the position defined by the values assigned to \f9{bottom-margin} and \f9{footing-margin}, provided the latter is not 0. In other respects, this is like the \f9{$heading} command. (Default is none.) \in 0 \f9 page-number n \f8\in 1" Sets the page number. `\f9{\\=page-number}' prints the current page number. `\f9{\\Roman-numeral \\=page-number}' prints it in lower case Roman numerals, and `\f9{\\Roman-numeral \\ucase \\=page-number \\ucase0}' prints it in upper case Roman numerals. \in 0 \f9 room v * \f8\in 1" If there is not \f9 {v} room on the current page, causes a new page to be started. \in 0 \f9 skip v * \f8\in 1" Leaves blank space on the current page. This will never leave any space at the top of a page, unless it is the very first page, or a preceding \f9 {room} command caused a page eject. \in 0 \f9 skip-up v * \f8\in 1" Moves the print head back up the page. Works fully only with the FX-80, but you can get up to within a point of the previous line with the MX. \in 0 \f8 \tall{Line Format} \f9 concatenate b *\br \f9 fill b * \f8\in 1" Start or stop filling out print lines by stealing words from following lines in the text file. \in 0 \f9 - \f8\in 1" Gives a conditional or ``soft'' hyphen which is equivalent to the control character 1EH. During concatenation, a word may be divided between lines at a conditional hyphen and a real hyphen substituted. However, if the word happens not to be divided, or the preceding character is a real hyphen, the conditional hyphen disappears. \in 0 \f9 justify b * \f8\in 1" Start or stop right justification. Native Epson characters take a \it 0{long} time to print with justification, but it can be done. When \f9{concatenation} is in effect, justified print lines will not always have exactly the same number of words as they would without justification, since EP sometimes puts an extra word on a justified line to improve the spacing. \in 0 \f9 looseness-factor n \f8\in 1" Set the factor by which loose justified lines are to be preferred to tight justified lines. When both justification and concatenation are being done, it must be decided whether to include an extra word in a line and compress the inter-word spaces to line up the right margin, or to wait and put the word on the next line -- then the inter-word spaces have to be expanded. The first strategy gives a ``tight'' line and the second, a ``loose'' one. It looks worse to bring words closer together than to space them further apart, other things being equal, so EP prefers looseness to tightness. But a little tightness is better than a lot of looseness. In making this decision, the percentage by which spaces would have to be compressed for a tight line is compared to the percentage by which they would have to be expanded for a loose line. Only if the loose percentage is more than \f9{n} times the tight percentage will a tight line be resorted to. (Default is 4.) \in 0 \f9 break * \f8\in 1" Cause previous text which is destined for the current output line to be printed without right justification. Subsequent text goes in a new output line. When there is no text waiting to be printed, this command has no effect. \in 0 \f9 punctuation-factor n \f8\in 1" Set the factor by which the space after an ending punctuation mark is expanded. One generally expects to see a little extra space between the end of a sentence and the beginning of the next. When \f9{n} is not zero, a space after a `.' or a `?' or a `!' is widened by 2/n. The widening is still performed when one or more single quotes, double quotes, or right parentheses come between the end punctuation and the space. This may produce inappropriate spacing when these ``ending'' punctuation marks are not actually intended to end a sentence, as after initials or in contexts like those in the second sentence preceding this one. One way to prevent the extra space in such instances is to use the \f9{required-blank} character instead of a space. (Default is 6, for a 33 1/3% increase.) \in 0 \f9 no-break \f8\in 1" Cause previous text which is destined for the current output line to be printed. This is like \f9{break} except that it does not prevent right justification. \in 0 \f9 indent h * \f8\in 1" Indent subsequent lines by \f9 {h} to the right of the left margin as determined by the \f9 {adjust}. \in 0 \f9 indent-right h * \f8\in 1" Indent subsequent lines by \f9 {h} to the left of the right margin as determined by the \f9 {adjust\} and the {line-length}. \in 0 \f9 indent-line h * \f8\in 1" Indent only the next line by \f9 {h\} to the right of the {adjust\} plus the {indent}. \in 0 \f9 undent h * \f8\in 1" Indent only the next line by \f9 {h\} to the left of the {indent}. An undented line is allowed to protrude to the left of the \f9{adjust} value, but of course no further than the leftmost position of the printhead. \in 0 \f9 offset h * \f8\in 1" Indent all but the next line by \f9 {h\} to the right of the {adjust,} until the next \f9{offset\} or {indent} command. \in 0 \f9 left-adjust * \f8\in 1" Cancels all indentation for the next line. This is handy for headings, when there is a \f9{paragraph-indent.} \in 0 \f9 right-adjust \f8\in 1" Right-adjust the remainder of the current output line so that it ends at the right margin, as determined by the \f9 {adjust\} and the {line-length}. A line with right-adjusted text will not be right justified. This command causes a break before the next input line. \in 0 \f9 out-adjust line\br \f9 in-adjust line \f8\in 1" These are the same as \f9{right-adjust,} except that \f9{out-adjust} has effect only on odd numbered pages, and \f9{in-adjust} has effect only on even numbered pages. These commands cause a break before the next input line. \in 0 \f9 center \f8\in 1" Center the remainder of the current output line, or at least everything up to right adjusted text, between the left and right margins, as determined by the \f9 {adjust\} and the {line-length}. If the width of previous text on the line makes centering impossible, naturally, there will be no centering. Unadjusted, centered, and right-adjusted text can all three occur on the same output (or input) line. A line with centered text will not be right justified. This command causes a break before the next input line. \in 0 \f9 horizontal-space h \f8\in 1" Leave blank space. The space left does not count as a word break, and, unlike that left by a SP character, is not altered during right-justification or changed by \f9{\\com-press, \\elite,} etc. The space may be underlined. \in 0 \f9 character-spacing h \f8\in 1" Add \f9 {h} distance after each character. The actual space after a character is determined by the interaction of a number of circumstances. The basic value will be the value \f9{h} given with this command, plus whatever white space was included in the font definition of the character shape, plus the signed kerning value that was specified for the font (using ECHED), minus the value assigned with the \f9 {kern} command below. But further adjustments can be made because of the values assigned by the \f9{bold, punctuation-factor, \}and{ space-capitals} commands, and also those commands that shrink or compress characters. (Default is 1 point.) \in 0 \f9 kern h \f8\in 1" Subtract \f9 {h} distance after each character. A kerned character will be overlapped with a following character, provided the \f9 {kern\} value is greater than {character-spacing}, yet less than the width of the character plus the \f9 {character-spacing}. If this last condition is not met, kerning has no effect. When a kerned character is not followed by a character, it might protrude past the right margin (so please do give a following character). In effect, this command allows a negative character-spacing, and is intended for the situation where a certain pair of letters should be close set (`WA', `fl', `fi', etc.). For another way to accomplish this, see \f9{$kernpairs} below. \in 0 \f9 $kernpairs line \f8\in 1" The \f9{line} is a string of pairs of characters which should be set closer to one another. Whenever one of the pairs is encountered in the text, 2 dots of space (2/3 of a point) is taken away from between them. If the same pair of characters occurs more than once in the string, 2 dots of space are removed for each occurrence. The kerning action is not initiated until the \f9{$kernpairs} string is associated with a font by issuing the \f9{attach} command. Then whatever \f9{$kernpairs\} string has been defined becomes attached to the current font, and only characters from this font will be affected. However, \f9{attach} can be reissued for any or all of the other fonts in use, and if the \f9{$kernpairs} string has been redefined in the meantime, then different strings can be associated with different fonts. Here are example commands to move all `ff' and `--' combinations 2 dots closer to one another and `W' and `A' in either order 4 dots closer, for both fonts 1 and 2: \\$kern ff--WAWAAWAW \\{\\f1\\attach\\f2\\attach} \br Two characters from different fonts are never kerned, and also an italic character followed by a non-italic character will not be kerned (but 2 2/3 points will be added to its width instead). A way to prevent kerning in a specific case is to use a soft hyphen, e.g. `shelf\\-ful' or `shelfful' (but then the word may be divided between lines). \in 0 \f9 space-capitals n \f8\in 1" Increase the space between every pair of contiguous capital letters by \f9{n} dots. (Default is 2.) \in 0 \f9 width-factor n * \f8\in 1" Adjust the width of characters by \f9{n\} percent, where {n} is from 50 to 200. If no argument is given, this is equivalent to 100 (and 100% of normal width is normal). The adjustment made is compounded with that of other commands which stretch or shrink characters, so, e.g., expanded characters that are adjusted by a factor of 200 will be four times their normal width. \in 0 \f9 character-width h * \f8\in 1" When \f9 {character-width} is set to a non-zero value, this deproportionalizes all letter fonts and forces each character to the width assigned. Characters are stretched or shrunk to fit within the specified space, allowing for \f9{character-spacing}, but only up to 50% compression or 100% expansion. If more than 100% expansion would be required, the expanded character is centered within the extra wide space. The fixed character width may undergo further adjustment by other commands which stretch or shrink characters. This looks best with a square serifed font like Stymie. \in 0 \f9 character-height v * \f8\in 1" The real height of characters is 8 points, and that is the default value for \f9 {character-height}. A smaller value (but not less than 1 point) may be assigned to cause vertical overlapping of lines, but the actual size of the characters is not changed. In effect, this allows a negative leading. \character-height 14p\align Values larger than 8 points affect only \f9 {tall} characters (\it {q.v.}), and cause them to be vertically stretched. Permissable values run from 8 points through 16 points at one dot intervals, and from 24 points through 48 points at one point intervals. \tall {For instance, these are 14 point characters.} At present, characters of 24 points or greater cannot be mixed with non-\f9 {tall} characters on the same output line, and also cannot be used in \f9 {double-strike} mode. (Except that 48 point \f9{double-strike} characters should turn out ok.) \break\tall 2 When \font 2 {tall} is given the value 2, only the second and next to last rows of dots in characters' dot-patterns are modified. The intent here was to allow stretching only descenders and ascenders, but the actual effect is often rather peculiar. \tall 0 \in 0 \f9 align n \f8\in 1" This command is provided to help match up the baselines of \f9 {tall\} and non-{tall} characters, since in general they will not match. Non-\f9 {tall} characters in an output line that has one or more \f9 {tall\} characters are moved up by {n} points. \in 0 \f9 required-blank c \f8\in 1"\reqd-blank The character assigned by this command is printed as a space, but is not treated as a word separator. Two words separated by the \f9 {required-blank} character will always be printed on the same line, and the space between them will not be changed during right justification. The width of the space will be what the width of an unjustified real space would be in the circumstances -- i.e. it is determined by the width of a space character in the current font, adjusted by the character spacing, kerning, and any stretching or shrinking controls that are in effect. (Default is the underscore character `_'.) \in 0\reqd-blank _ \f9 repeat-character n c \f8\in 1" Print \f9{c\} {n} times, where {n} is from 1 to 255. For this command only, the \f9{c} argument is the next output character, not necessarily the next non-blank literal character on the line (as in other cases). Also, a digit is treated as a character (as opposed to a number). For instance, `\f9{\\rc 6\\blanks}' prints 6 blanks, and `\f9{\\rc 20 \\bullets}' does 20 bullets, if bullet is defined in the current font. \in 0 \f9 repeat-line n line \f8\in 1" Print \f9{line\} {n} times, where {n} is from 0 to 255. Unlike the above \f9{repeat-character} command, an argument of 0 is treated appropriately -- the line is not printed at all. The \f9{line} may be continued with a trailing `\\' as usual, but in other cases the total length of the line including all continuations is not a matter to be concerned about. Here, it is, since all the stuff has to be kept in a buffer which has a 300 character capacity. If you have the need to construct longer iterative procedures, you should place portions in defined strings and refer to them after \f9{repeat-line}. \in0 \f9 <\break \f9 back-space \f8\in 1" For native Epson characters, a back-space is sent to the Epson. For letter fonts, the next character is printed over the preceding character, and the middles of the two characters are aligned (in an attempt to deal with diacritics). The width of the combined characters is the same as that of the first character, were it to appear alone. For letter fonts, a back space should not be put after another back space. \in 0 \f9 ,\br \f9 . \f8\in 1" These commands do nothing. After `\f9{\\,}' subsequent blanks or tab characters (^I) are skipped over, just as after other EP commands. This is sometimes useful for indenting text in the source file without causing a break. But after `\f9{\\.}' following blanks or tabs are not skipped over. Consequently, it can be used to terminate a preceding command when you want following blanks to be printed. \in 0 \f8 \tall{Alignment} \f9 co-lumn h \f8\in 1" Print the remainder of the current output line starting at distance \f9 {h} from the left margin. If previous text on the output line makes this impossible, the next character will be printed abutting the last, regardless of any spaces or tabs that preceded the \f9 {co-lumn} command in the text. This command prevents justification of preceding text on the output line, although following text may still be right-justified. \in 0 \f9 horizontal-fill \f8\in 1" This works in conjunction with the \f9{co-lumn\} or {ta-b} command to permit right adjustment of selected text to a column. The text that occurs after `\f9{\\hfil \}' and before `{\\co-lumn n}' is moved to the right so that it will end at column \f9{n}. E.g. \\hfil Frogs\\cl25\\hfil 10.\\cl35 15\\cl40 per peck \\hfil Ants\\cl25\\hfil 298.\\cl35 95\\cl40 per ton \\hfil old shoes\\cl25\\hfil .\\cl35 33\\cl40 each\\break \br produces \hfil Frogs\cl25\hfil 10.\cl35 15\cl40 per peck \hfil Ants\cl25\hfil 298.\cl35 95\cl40 per ton \hfil old shoes\cl25\hfil .\cl35 33\cl40 each \br \f9{Hfil\} also works with a later {tb} command to specify the column. Another, probably better, way to do the above is: \\tab-char & \\* Set some tab stops with a template: \\put-term\\cl 25\\tab-set\\cl 35\\tab-set\\cl 40\\tab-set \\hf Frogs&\\hf 10.&15&per peck \\hf Ants&\\hf 298.&95&per ton \\hf old shoes&\\hf .&33&each\\break \br When there is no following \f9{co-lumn\} or {ta-b} in the output line, a single \f9{hfil\} works like a {right-adjust} command, except that a break is not automatically caused after the input line. If there are two \f9{hfil\} commands, the first acts like a {center} \ command, and the second like a {right-adjust} command. E.g. the following are equivalent: Some insects\\center are hard\\right-adjust to digest Some insects\\hfil are hard\\hfil to digest\\break \in 0 \f9 tab-set n\br \f9 tab-set \f8\in 1" When a numerical argument is present, this sets tab stop \f9{n} equal to the current horizontal position of the print head. The effects of right justification are not taken into account, so you probably wouldn't want to use this command in a justified line. Also, the stops are set before any centering or right adjustment has been done. There are 32 tab stops available numbered \f9{0} through \f9{31}. The following \f9{ta-b} command makes use of tab stop values. If \f9{n} is omitted, tab stop 0 is used for the first occurrence of this command for the current output line, stop 1 for the second, and so on. However, when \f9{n} is omitted and a previous stop was tabbed to or was set in same output line, the next stop is assumed. When you want to use a template to set the tab stops without printing the template, you can prefix the template line with \f9{put-terminal}. The values of the tab stops have no connection with what happens when real tab characters are found in the input text (unless it should happen that the \f9{tab-character} was set to 9). \in 0 \f9 clear-tabs \f8\in1" Clear all 32 tab stops. \in0 \f9 ta-b n\br \f9 ta-b \f8\in 1" With a numerical argument, this means move the print head to the right to the horizontal position stored in tab stop \f9{n} (by use of the previous command). If that is impossible because the print head is already to the right of the stop, the command has no effect (other than possibly eating up some preceding white space in the attempt to get far enough to the left). Although only forward movement is allowed, if you need to go backwards, you could start a new line and use the \f9{skip-up} command to move back to the start of the line before tabbing. If \f9{n} is omitted, tab stop 0 is used for the first occurrence of this command for the current output line, stop 1 for the second, and so on. However, when \f9{n} is omitted and a previous stop was tabbed to or was set in same output line, the next stop is assumed. Tabbing to a stop which has not yet been set has no effect on the current output line, but rather the stop is set at the current horizontal position. An occurrence of the current \f9{tab-character} causes an implicit invocation of this command (see the next command). \in 0 \f9 tab-character c \f8\in1" Sets the character which implicitly invokes the above \f9{ta-b} command. When this character occurs in the text, the effect is exactly the same as if `\f9{\\tb\\.}' had been entered -- consequently no numerical argument can be given to select the tab stop, blanks occurring after the tab character are not ignored, and you won't get a tab at all if the \f9{escape-character} has been changed to something other than a back slash. Tabs are not done in the argument lines to macro commands. In this latter context, the tab character has another meaning -- it is an argument terminator. This usage is discussed below under variables. \in0 \f9 tab-width h * \f8\in 1" Tab characters encountered in the text being processed are expanded into a space wide enough to cause the next printed character to be at the 8th, or 16th, or 24th, ..., column. These implied tab stops at every eighth column have no connection with the stops mentioned above which are set with the \f9{tab-set} command. The \f9{tab-width} command is used to adjust the width assumed for a ``column''. In the absence of instructions to the contrary, EP will assume 8 point wide columns, except when the first tab character is encountered when printing native Epson characters which are compressed, elite, or expanded. In this special case, the width of a space character is assumed as the width of a column. Another special case occurs when \f9{\\character-width} has been used for non-proportional characters -- then a column is assumed to be one \f9{character-width} wide. The tabbing caused by real tab characters is screen-oriented. EP judges which stop to go to according to the appearance the line must have had when the text file was being edited, so that if columns were vertically aligned using tab characters, they will still be aligned when printed. \in 0 \f8 \tall{Rules and Lines} EP has two facilities for drawing straight lines: rules are only horizontal and vertical, lines are slanting. There are 32 rules at your disposal, each of which may be used either horizontally or vertically. To print a rule, specify each of its endpoints with the \f9{rule} command. The context decides whether the rule will be horizontal or vertical -- if both endpoints lie in the same output line, it will be horizontal, else vertical. An endpoint is specified with a command \f9{\\rule n\}, where {n} is the number of the rule you want to use, from 0 to 31. The endpoint is placed at the current horizontal and vertical position of the printhead, except that for the low end of a vertical rule, the horizontal position doesn't matter, since it was determined by the first endpoint. The endpoint of a vertical is 4 points up from the bottom of the character line (not counting the leading), and so is that of a horizontal, ordinarily (but see the \f9{rhpattern} command below). A rule can be re-used after it has been completely printed, however at most two endpoints of a given rule can occur in a single output line. That is to say, for two horizontals in the same line, you'd have to use different rules, and also for a vertical ending in the same line as a horizontal. The rules numbered 0 through 23 cannot be used in heading or footing lines, but 24 through 31 can. In fact, rules 24-31 ought to be avoided in ordinary text, unless it is clear that they will be completely printed before a page break occurs, since they could crop up unexpectedly in a heading or footing. As is the case with tab stops, the effects of justification, centering, and right adjustment are not taken proper account of in setting the horizontal positions of rules, so you will usually want to set endpoints in lines where these adjustments to spacing are not made. However, once the upper end of a vertical rule has been established, it is extended downward in the same vertical line regardless of subsequent justification, concatenation, or changes in the margins or line length, until the rule is terminated. This means that there is no difficulty in printing justified text within ruled lines (boxes, for example). There is one exception to what was stated in the preceding paragraph. Rule number 1, and this rule only, can be used horizontally in lines with right adjusted text, and its right endpoint will be automatically adjusted so that it comes just before the text after right adjustment. The right adjustment may be that produced by the \f9{right-adjust} command or the \f9{horizontal-fill} command. This allows, e.g., filling the space before page numbers in a typical index or table of contents with a rule (which can be configured as aligned leadering -- see \f9{\\rule-hpattern} below). EP does not regard rules as characters, and seems to be under the impression that they have no width or length. No precaution is taken to prevent rules from being drawn over text or over each other. Or, to put that another way, you are allowed to draw rules over text or other rules, if you choose. Lines are similar to rules, except that they may slant. To do lines, the FX-80 is required, since its reverse linefeed feature is made use of. A line is characterized by setting its endpoints with the \f9{\\node} command, then issuing the \f9{\\draw} command to actually do the drawing. The vertical position of the endpoint will be set at the top of the current character line. There are 32 lines available. The horizontal position of the print carriage for the second ``node'' does matter, since this will determine how the line slants. Horizontal lines cannot be done, and lines look the worse the more closely they approach the horizontal. \f9 rule n \f8\in1" Establish endpoint of rule number \f9{n} (see above discussion). \in0 \f9 rule-hpattern n * \f8\in1" Establish which of the top 8 pins of the printhead are to be used in drawing horizontal rules, and select certain other options. \f9{n} is a 16 bit word value whose low order byte selects some combination of pins. The 8th bit triggers the top pin, the 7th bit, the next pin down, etc. The default value of 16 uses the 4th pin down, and this will align the endpoints of horizontal and vertical rules (to within 1/108", at least). Various sums of powers of 2 can be used for solid bars or double lines, underlines or overlines. The high order byte is used to flag a couple of special options and to mask out parts of the rule to obtain various sorts of leadering. The 9th bit (add 256 to \f9{n}) causes rules to be drawn on all three passes of the print head (instead of just the second pass). The 10th bit (add 512 to \f9{n}) does not affect horizontal rules, but rather prevents the tops and bottoms of vertical rules from being drawn. The 11th-16th bits (add 1024, 2048, 4096, 8192, 16384, or 32768 to \f9{n}) cause parts of the rule to be omitted. When a matching bit in the address of a potential rule dot is `1', no dot is placed there. Well, it's a little hard to explain. But adding 4096, e.g., produces 1/30" dashes, and adding 2048 + 4096 + 8192 gives dots spaced at about 1/8". When such ``leadering'' rules are used in successive lines, the dots or dashes are vertically aligned. Here is an example of what the commands for constructing an index might look like: \\rule-hpattern = 4 + 2048 + 4096 asparagus \\rule\\rule\\right-adjust 69 broccoli \\rule\\rule\\right-adjust\\italic see pig-swill tips \\rule\\rule\\right-adjust\\italic see asparagus \in0 \f9 rule-vpattern n * \f8\in1" Establish the thickness of vertical rules. \f9{n} = 0 gives a thin rule one dot wide -- higher values give a width of \f9{n} + 1, to a maximum of \f9{n} = 255. \in0 \f9 node n \f8\in1" Establish endpoint of line number \f9{n} (see above discussion). \in0 \f9 draw * \f8\in1" Initiate the drawing of lines after all endpoints have been set using the above \f9{\\node} command. \in0 \f8 \tall{Paragraphs} Either an empty line in the input file or the \f9{pp} command signals the beginning of a paragraph. The next input line that has printing characters begins the first line of the paragraph. The following commands control what action EP takes when it encounters the beginning of a new paragraph. \f9 paragraph-indent h * \f8\in 1" Indent the first line of each paragraph by \f9{h.} Note that this indentation can be cancelled for a heading by using the \f9{left-adjust} command. \in 0 \f9 hanging-indent h * \f8\in 1" Indent all but the first line of each paragraph by \f9{h.} This is handy for offsetting items in lists of bibliographic references. \in 0 \f9 paragraph-skip v \f8\in 1" Move down by \f9{v} at the beginning of each new paragraph. It is sometimes convenient to set this value to 0, so that empty line in the input file can be used to signal the beginnings of new paragraphs, without actually leaving any vertical space in the printout. (Default is 10 points.) \in 0 \f9 pp * \f8\in 1" Start a new paragraph. \in 0 \f9 widow v \f8\in 1" Sets the vertical distance which must remain above the bottom margin when the first line of a paragraph is printed. If there is not enough room, a new page is started. Although this command can help avoid the unpleasantness of the first line of a paragraph appearing alone at the bottom of a page, it does not help with the other kind of ``widow'' -- the last line of a paragraph appearing alone at the top of a page. (Default is 20 points, which is 2 default line heights.) \in 0 \f8 \tall{Print Mode} The manner in which characters are printed is determined by the print mode. There are 14,465 distinct print modes, each invoked by some combination of the following 14 commands. The \font 2 {proportional} command affects only native Epson characters; the next nine commands (\f9 {elite\} through {under-line}), together with {font} and {if}, affect both Epson characters and letter characters; the commands \f9 {tall\} and {bend} concern only letter font characters. For Epson characters, not all combinations of commands give distinct modes -- for details see the Epson manual. The use of blocks is optional, but for the most part, the most convenient way to use these commands is in the form: `\f9 {\\command block\}', where {block} is a portion of text surrounded by braces. The braces are not printed, and only the text they enclose is affected by the command. The left brace that begins a text block must follow the command on the same input line, but the closing right brace can occur anywhere later in the file, or not at all, for that matter. So a text block can consist of nothing, a single character, or any amount of text up to the entire remainder of the file. Blocks may occur inside blocks, to a maximum nesting level of 59 (but only 6 in multiple column mode). Any print mode commands issued within a text block have no effect outside that block. A numerical argument of 0 or 1 corresponding to the \f9 {b} in the following list is usually unnecessary when blocks are used, since 1, or ``on'' is assumed. But it may sometimes be convenient to use a 0 to give the command a negative sense -- that is, to turn a mode off for a block of text. Fonts may be configured using ECHED so that a special print mode is automatically invoked for any character from that font. \f9 proportional b block \f8\in1" Gives proportional Epson characters on the FX-80. \in0 \f9 elite b block \f8\in1" Elite Epson characters on the FX-80, and letter font characters compressed to 4/5ths normal width. \in0 \f9 com-pressed b block \f8\in1" Compressed Epson characters, and letter font character compressed to 1/2 normal width. \in0 \f9 emphasized b block \f8\in1" Shadow printed characters. Letter font characters may be printed more than twice and spaced further apart with the \f9{bold} command. \in0 \f9 double-strike b block \f8\in1" Equivalent effect for Epson and letter font characters. \in0 \f9 expanded b block \f8\in1" Equivalent effect for Epson and letter font characters. \in0 \f9 italic b block \f8\in1" Gives slanted or oblique characters (not really italic) for Epson and letter font characters. For the latter, the dots defining the character shape are displaced to the right by 8/216" at the top of the character and varying down to no displacement at the bottom. When a slanted character is followed by a normal one or comes at the end of the line, EP makes the italic character wider by 8 dots to compensate for the displacement. \in0 \f9 su-perscript b block \f8\in1" Equivalent effect for Epson and letter font characters. \in0 \f9 su-bscript b block \f8\in1" Equivalent effect for Epson and letter font characters. Letter font characters which are simultaneously subscripted and superscripted are placed vertically in the middle of the line. \in0 \f9 under-line b block \f8\in1" Underlined Epson characters and letter font characters. For justified text in native Epson characters, proportional inter-word spaces are underlined only on the FX-80. Underlining for letter font characters is broken off around the descenders of characters. \in0 \f9 font file-name block\break \f9 font n block\break \f9 f0,f1,f2,f3,f4,f5,f6,f7,f8,f9 \f8\in 1" An argument of \f9 {n} = 0 requests native Epson characters; the other forms of this command request a letter font either by name or number. If a number is used, this requests the \f9 {n}th font that was previously requested by name. Ordinarily the highest value for \f9{n\} is 7 (but see the {attach} command below). If fewer than \f9{n\} letter fonts have been requested, then {n} is automatically decreased until one can be found. The commands \f9{f0,f1,...f9} are just short forms for \f9{font 0, font1, ... font 9}. In the short form, the 'f' must be lower case. A file-name may have a drive prefix, and names with hyphens are abbreviated by extracting the first few letters from each of the parts of the compound. Instead of a file name, `$' followed by a number can be used. Then the file name is obtained from the command line that was typed when EP was called up. The number specifies which of the list of names that were given to use. E.g. after A>ep sample chapter-one chapter-two lydian-italic\br if the file `sample' has the command \f9{\\font $3}, this would act the same as the command \f9{\\font lydian-italic}. When there was no \f9{n}th name listed, the command is ignored. \in 0 \f9 graphics-font file-name block \f8\in1" This is the same in many ways as the \f9{font} command described above, but the file loaded is really not a font, but a graph masquerading as a font. The font numbers associated with a graphics font are not distinct from those associated with normal fonts. The command is intended for the ``bit-image'' files produced by Fox & Geller's dGraph, and the file extension is assumed to be `.BTP'. The format of these files is that of an array of 40 by 450 bytes, where the first 450 bytes if sent to the Epson in graphics mode produce the top 1/40th of the graph, and so on. In a ``font'' loaded with this command, the 40 characters starting with `@' and ending with `g' contain the 40 rows of the graph, and each is 450 dots wide. The advantage of this seemingly odd way of imbedding pictures is that since EP sees the graph as 40 characters, all the normally available indentation and print mode modifications are available, and sub-portions of the graph can be selected. Also, text can easily be added at either side, or even superimposed with over-printed lines. Here is an example set of commands for loading and displaying a file `sample1.btp' on drive B: \co0\ju0\rb \\rb \\graphics-font b:sample1\\expanded\\leading 0 @\\br A\\br B\\br C\\br D\\br E\\br F\\br G\\br H\\br I\\br J\\br K\\br L\\br M\\br N\\br O\\br P\\br Q\\br R\\br S\\br T\\br U\\br V\\br W\\br X\\br Y\\br Z\\br [\\br\\\\\\br ]\\br ^\\br _\\br `\\br a\\br b\\br c\\br d\\br e\\br f\\br g\\br \\leading 2\\expanded 0\\rb _ \co\ju\rb _ The above gives a graph with compression to 1/2 the width it would have had if printed by dGraph. If you don't want any compression, you could add `\f9{\\stretch}', or the vertical size could be reduced by half by adding `\f9{\\su-perscript\\character-height 4p}'. Of course, compression in one direction should be matched by compression in the other, if pies are not to look like eggs. Instead of the list of characters, the above could have been written more economically, using: \\xg 64\\rept-line 40\\(xg)\\xg+\\break A .BTP file uses lots of memory, and there is not enough room to hold two of them in memory at once. Although printing two graphs side-by-side ought to be possible by repeated reloading from disk, in fact EP's memory allocation scheme is not up to the strain, so you can't do this. It might be good to precede and follow the loading of a graph with the `\f9{new-fonts}' command to avoid running out of available ram. \in0 \f9 if expression block\br \f9 if expression line \f8\in 1" When \f9 {b} or the value of the \f9{expression} is 0, the block is not printed, otherwise it is. In fact, when the value is 0, the block is merely scanned to find the matching `}' that ends the block, so it is safe to make reference to files inside the block which are not accessible when the if-condition does not hold true. An interesting construct for making braces into comment enclosers is: \\use-braces\\if 0{\\} In the second form of this command, the \f9{line} argument is not printed when the value of \f9{expression} is 0, as you would expect. This form does not have anything to do with the print mode, and should not be used in macros. Allowing this variant syntax after \f9{if} is convenient, but perilous. Other print mode commands can be used in the form ``\\{\\command ...}'' in order to confine the effect of the command to the text in the ``...'' part. Doing this with the \f9{if} command creates the following situation: when the if-condition does not hold, the remainder of the line is not examined, so the ending right brace is not seen. Consequently, there will be an active left brace and associated print mode left in the air, ready to pounce on the next unmatched right brace found in the text. Since braces are usually matched, one might misuse the \f9{if} command in this way for a long time without noticing any ill effects. But on the day of reckoning, it might prove very difficult to figure out what was going wrong. \in 0 \f9 tall b block \f8\in 1" Ordinarily doubles characters in height -- from 8 points to 16 points. However the height may be modified by changing \f9 {character-height.} \in 0 \f9 bend block \f8\in 1" Causes some dots in the dot pattern of characters to be displaced to the right. The effect, if any, will be determined by what numerical value has been assigned to \f9 {bend} (see below). Note that this usage of \f9{bend} without a numerical argument does not cause a break and does cause bending, whereas with a numerical argument there is a break, but no bending. (Sorry, but there is a reason.) \in 0 \f8 \tall{Auxiliary Print Mode} \f9 { \f8\in 1" Begins an unspecified text block. Any mode commands issued within the block will all be terminated when the block ends. \in 0 \f9 } \f8\in 1" This terminates a text block just like the right brace that is not a command, but has the additional effect of reinitiating the mode that was terminated for subsequent text blocks on the same input line of text, so long as these are not associated with some other mode command. \under-line {For\} {instance}, {in} {this} {sentence} {the}\ {underlining} {of} {spaces} {and} {punctuation} {was} {avoided}\ {by} {entering} {the} {following}. \ju 0 \\under-line {For\\} {instance}, {in} {this} {sentence} {the}\\ {underlining} {of} {spaces} {and} {punctuation} {was} {avoided}\\ {by} {entering} {the} {following}. \ju A text block that is ``linked'' to a preceding one in this way can be nested within another text block. E.g. \\em{\\it0 roses\\} are \\it{not {always} predatory} \br prints ``always'' as emphasized and non-italic, the same as ``roses''. \in 0 \f9 use-braces b \f8\in 1" This extends the scope of the convention associated with the right brace command discussed above. When \f9{use-braces} is true, the mode stored with the right brace command is re-established throughout the entire remaining text whenever a left brace not following a print mode command is encountered. Or at least, that is, until after an input line in which \f9{use-braces} is reset to 0. This is useful for those situations when you have a text requiring only 2 print modes, or primarily 2, and you don't want to clutter up the text with commands, but the cost is that it becomes difficult to print a left brace. \in 0 \f9 bold n * \f8\in 1" A non-zero value assigned to \f9 {bold\} modifies the effect of the {emphasized} command. A value of 1 causes two extra dots of width to be added to each emphasized character. Higher values widen emphasized characters by \f9 {n\} * 2 dots and ``shadow print'' each character {n} - 1 times. \in 0 \f9 bend n * \f8\in 1" The value assigned to \f9 {bend\} modifies the effect of the {bend} command when given without a numerical argument. A value of zero causes there to be no effect. Values of 1 through 2047 invoke various sorts of slanting or other distortion of the characters. 1 to 15 give forward slanting, multiples of 16 (1*16 to 15*16) give backward slanting, and multiples of 256 (1*256 to 7*256) give miscellaneous effects. Adding 4096 produces a sort of medieval effect with some fonts. Adding 8192 turns characters upside down. The selected effects are compounded and are in addition to italicization, if that is also requested. When a bent character is followed by a normal one or comes at the end of the line, EP makes it wider to compensate for the horizontal displacement. \in 0 \f9 attach\break \f9 attach n \f8\in 1" Associate kerning or print mode information with a font. When a \f9{$kernpairs\} string is defined and no {n} argument is given, the action is as described above in the description of the \f9{$kernpairs} command. Otherwise, this modifies the effect of the \f9 {font} command, described above. The current print mode is attached to the current font, or to font number \f9 {n} if an argument is given, so that when the font is subsequently requested, the print mode will be automatically reinvoked. The value of \f9 {n} may be from 0 to 31, however the use of values less than 8 might be confusing, since the association between font names and fonts could change. The use of a number greater than 7 with the \f9 {font} command is permitted only when a print mode has previously been attached to this font number. Font 0 cannot have the ``pica'' print mode attached to it. \in 0 \f9 upper-case n \f8\in 1" If \f9{n} is not 0, shifts subsequent text to upper case. \in 0 \f8 \tall{Control} \f9 imbed file-name \f8\in 1" After the current input line has has been processed, text will be taken from the named file until it is exhausted, then the line after the \f9 {imbed\} command is processed, and so on. The {imbed} command can occur within an imbedded file. The maximum permitted level of nesting is 7. The file name may have a drive prefix (see also the next commands). Names with hyphens are condensed in the same way as font file names are. Instead of a file name, `$' followed by a number can be used. Then the file name is obtained from the command line that was typed when EP was called up. The number specifies which of the list of names that were given to use. E.g. after A>ep sample chapter-one chapter-two chapter-three\br if the file `sample' has the command \f9{\\imbed $2}, this would cause the file CHAPTWO to be imbedded. The combination of a drive prefix with a command-line argument is allowed -- e.g. ``b:$1''. \in 0 \f9 disk n \f8\in 1" Controls what drive font files and embedded text files are looked for on, in case no drive prefix is given. Use 0 for the default drive, 1 for drive A, 2 for B, etc. \in 0 \f9 user n \f8\in 1" Controls what user area font files and embedded text files are looked for in. Use 0 for the default user area, 1 for user area 1, etc. (up to 31). There is no provision for accessing user 0 if this is not the default. When file names have drive prefixes, the default user area is always assumed. \in 0 \f9 beginning-page n\break \f9 ending-page n \f8\in 1" Disables printing when the current \f9{page-number} is before the \f9{beginning-page\} or after the {ending-page,} unless the latter is 0, which is taken to mean ``print all the way to the end.'' The page number is checked before printing each line to see if it is still in range, so any ranges of lines can be selectively printed by strategically re-assigning values with these commands. \in 0 \f9 error n line \f8\in 1" Causes fatal error (as if you didn't make enough mistakes already). \f9{line} (which is not interpreted) is the message reported by EPERROR. \in 0 \f9 save n * \f8\in 1" Causes the numeric values of of system variables to be saved in a disk file named EP.IN on the default drive and user area, where is the argument \f9 {n}, which must be from 1 to 9. The values can be restored later with the \f9 {restore} command below. If the regular initialization file is disposed of, the saved disk file can be renamed EP.INI, so that it will be read automatically whenever EP is executed. In this way the default values for the initial print mode, \f9 {mx\}, {adjust}, {line-length}, etc. can be changed. \in 0 \f9 restore n * \f8\in 1" Causes the numeric values of of system variables to be reset, taking the values from the data in a disk file named EP.IN on the default drive and user area, where is the argument \f9 {n}, which must be from 1 to 9. \in 0 \f9 new-fonts * \f8\in 1" Causes all font names, font data, and font attachments to be forgotten. This is intended for situations in which the limitation to only 7 letter fonts in one line or paragraph becomes troublesome. The limitation is still there, but this command frees up all font numbers for re-use, so that the fonts to be combined can be freely chosen. \in 0 \f9 mx b \f8\in 1" Use MX-80 compatible letter and print mode commands. Causes very small loss in character resolution. \in 0 \f9 fast b \f8\in 1" Use draft mode, with one pass of the print head for each 8 point high line. For the FX-80, employs high speed double-density graphics. \in 0 \f9 high-resolution b \f8\in 1" Use high resolution mode, with six passes of the print head for each 8 point high line (normal is three passes). Available for the FX-80 only. The improvement in resolution ranges from indiscernable to small. \in 0 \f9 quiet-console b \f8\in 1" Suppresses the echoing to the terminal of the text that is being formatted and printed. \in 0 \f9 put-terminal b line \f8\in 1" The \f9{line} is evaluated and displayed at the terminal (regardless of the value of \f9{quiet-console}), but is not printed. A CR-LF is also sent after displaying the line. However, if the line contains a `\f9{\\pt 0}' command, then only the part of the line before this is sent, there is no CR-LF, and the remainder of the line is processed normally. \in 0 \f9 get-terminal \f8\in 1" A line is obtained from the console and appended to the end of the current input line, with a blank separating the two. This command can be used to fill the value of a string variable. Consider this sequence of commands: \\put-term What cheer? \\put-term 0 \\get-term\\c$ \br Suppose the user types in: ``rah, rah, rah!!'' (without the quotes). Then the value of \f9{c$} will be `rah, rah, rah!!' -- the added blank mentioned above is not part of the string, because all blanks following EP commands are scanned over and discarded. (Had the blank not been added, EP would think the first `rah' was part of the name of the string variable, ``c$rah''.) Note that `\f9{\\c$\\get-term\}' would place the {\\get-term} in \ the string {c$,} and no console input would be sought until the string was evaluated. And at that time the line from the console would be appended to the then current input line, not the string. \in 0 \f9 pause \f8\in 1" Causes EP to wait for a character to be typed at the console. One use of this is to put it at the beginning of a \f9{$heading} line, to give time to insert another sheet of paper. \in 0 \f9 escape-character c \f8\in 1" Replaces `\\' or whatever the current escape character is, with a new character, which will subsequently be taken to introduce embedded EP commands. If no character follows on the input line, the facility to recognize embedded commands is disabled for the rest of the file being processed. \in 0 \f9 dot-character c \f8\in 1" Replaces the character which is regarded as equivalent to the escape character when occurring at the beginning of an input line. If no character follows, no character will be so regarded. (The default is `.'.) \in 0 \f9 * \f8\in 1" Causes the remainder of the input line to be ignored. This is intended for comments. It is also used at the end of heading and footing line definitions to end the processing of headings and footings at a page break. If this command is placed in other defined strings, not only will the remainder of the string be ignored, but also the remainder of the current line from the input text file. Comment lines cannot be continued by terminating them with a `\\'. \in 0 \f9 com-mentchar c \f8\in 1" Replaces the character which is equivalent to the above \f9{*} command when this character occurs at the beginning of an input line. The default is ^F, which is the character which introduces embedded format strings under Phoenix Software's text editor `Pmate'. If no character follows, no character will be so regarded. \in 0 \f8 \tall{Multiple Columns} The multiple column facility is probably not usable for running text without the use of the preprocessing program EPMC. It may be of direct use for some simple charts. After setting the \f9 {gutter} width between columns, multiple column printing begins when the \f9 {numberof-columns} is set to some value greater than 1 and ends when it is set to a value less than 2. In multiple column mode, output lines are distributed among the columns as text is processed moving downward in the file. Concatenation is not done in this mode, so an `output line' here is the same as an input line with some printable text on it (i.e. not consisting entirely of commands). The first output line will go in the first column, the next in the second, and so on until each column has a line, then the next line will be the second line of the first column, etc. Thus what reads downward in the text file will read across the columns. (The preprocessor EPMC allows concatenation and changes things so that text will read down the columns.) The sense of some commands is reoriented toward the output column. This inludes the Line Format commands \f9 {justify, center, right-adjust, co-lumn,} indentation commands, and all Print Mode commands. For instance, the \f9 {center} command will center text within an output column, and the \f9 {italic} command will italicize text only within one output column (unless it is issued before initiating multiple column mode). Text blocks, also, run down the columns, and must be entirely contained within a single column. Aside from these special considerations, it's all very strightforward. (For a somewhat more lucid account, see EPUSE.DOC). \f9 gutter h * \f8\in 1" Sets the space to be left between columns. \in 0 \f9 numberof-columns n * \f8\in 1" Sets the number of columns. The width of each column will be the \f9 {line-length\} plus the {gutter} width, divided by the number of columns requested, minus the \f9 {gutter}. The maximum allowable number of columns is 9. \in 0 \f9 current-column n * \f8\in 1" This is the number of the column into which the output line currently being processed will be placed. The value should probably not be changed, but it might be useful to refer to (see Variables below). The value is 0 when multiple column printing is not in effect. \in 0 \f8 \tall{Variables} EP has string variables, and numeric variables. If one of the two defining letters of the command is a `$', it's a string, otherwise it's a numeric variable. A string variable is assigned a value by giving the corresponding command followed on the same line by the desired string value. E.g. \\g$ gophers and weasels \br assigns `gophers and weasels' to the string variable `g$'. The string can be incorporated into the text and printed with the `=' command, described below (in this case `\\=g$' would be replaced by the string value). Additionally, for string variables whose second defining character is a `$' there is a short form reference consisting of the escape character, and the first defining letter in lower case. E.g. after the above example, I watch \\g \\blank on holidays.\br would print `I watch gophers and weasels on holidays.' In fact, there's an even shorter form available when the first defining character is any of the letters `a' through `y', other than `i',`j', or `m'. Then you can just use the corresponding control character; but in this case no following characters are skipped over. E.g. I watch ^G on holidays.\br where the `^G' is the control character 07H. Strings are not evaluated when they are stored, but evaluated, formatted, and printed each time they are referred to. They may contain EP commands, including references to other strings (or themselves). 40 levels of nesting of string references are permitted. Of the 53 possible distinct string variables, all are free for use except for 4, which have special predefined meanings. Three of these, \f9{$heading, $footing,\} and {$kernpairs} were described above. The fourth is `$$'. When `\\=$$' (or `\\$' for short) occurs in a string, this refers to the remainder of the line (or string) which occurs after the string reference. This is intended to allow a restricted form of argument passing to macros. The argument to a macro must not itself contain string references or comments. E.g. the following defines and uses a macro that causes a paragraph break and centers and emphasizes a line: \\$section\\pp\\emphasize{\\=$$} ... \\=$section Section One. \break There may be several argument references in a macro, just so long as the argument string comes from the input text file (not another macro). In this event, each successive reference is replaced by the next input line from the file. However a string argument to a macro need not necessarily extend all the way to the end of the input line -- it can be terminated early by the currently defined \f9{tab-character}. This latter option for terminating an argument is convenient for passing multiple arguments to a macro, since now multiple argument references in the macro can refer to the parts of the input line between tab characters. Here is an example of a macro which places its 4 arguments into columns, emphasizing text in the first column and italicizing that in the last: \\tab-char : \\k$ \\br\\cl 10\\emph{\\$}\\cl 20\\$\\cl 30\\$\\cl 40\\ital{\\$}\\br ... \\k Bees:page 10:fig. 2:contortions of \\k Roses:page 223:table 5:immersions As is the case generally, a ``line'' may be extended to several input lines by ending all but the last with a `\\', so there is no limit other than available memory to the length of strings or to the arguments that can be passed using the above convention. However, the space used to store a string is never reclaimed, and strings compete with fonts for memory space. In place of a numerical argument for any EP commands, there may appear an `\f9 {=}' followed by an expression. A simple term of an expression is either a number (or fraction), a numeric variable, or a string variable. A numeric variable is an EP command-word whose value will be that of the system variable associated with this command. Every combination of two alphabetic letters defines a system variable, and any that happen not to be used by EP are free to have values stored in them and later referred to, or printed using the \f9{=} command described below, as may be convenient. String variables in expressions are generally not meaningful and should be avoided. However, there are 3 contexts in which a string variable in an expression has an interpretation: (1) When a string variable follows the `=', this creates a new string variable whose value can be accessed without the following `=' command. E.g. \\$section\\pp\\emphasize{\\=$$} ... \\xs = $section ... \\xs Section One. Thus new commands can be created which have the appearance of predefined ones. Once set, the value of such string variables cannot be changed. (In general, attempts to redefine the predefined commands will not work well, but it is not illegal to try.) (2) \f9{\\if} followed by a string variable means ``if this string has been defined''. (3) A parenthesized expression involving a string variable refers to the numeric value of a character at the address which is the value of the expression. The value of the string variable itself is the address of the beginning of the string. So if \f9{a$} is defined as the string `ABCD', the value of \f9{(a$+1)} is 66. Furthermore, such a parenthesized expression is a valid EP command which requests that the character with this ascii number be printed. In this example, \f9{\\(a$+1)} prints a `B'. \f9 = command-word \f8\in 1" If the command word is numeric, this prints the numerical value of the variable associated with the command. For instance, \f9 {\\=adjust} now prints \=adjust _as the current value of \f9 {adjust}. Notice that the value is in terms of dots. When the command word is a string variable, the string value is printed, after being evaluated and formatted. Strings in the command line can be referred to as `\\=$' followed by a number from 0 to 29, where 0 gives the name of the file being formatted. In this latter usage, the `=' is optional. E.g., after A>ep sample red "black and blue"\br for the reference `\\=$1' RED would be substituted, and for `\\$2' BLACK AND BLUE would be substituted. As the above illustrates, if such a command line string is to contain spaces, it must be enclosed in quotes, and the CPM CCP shifts letters in the command line to upper case. When there was no such string listed in the command line, the command is ignored. \in 0 \f9 Roman-numeral b \f8\in 1" This command causes the next number printed with the `=' command described above to be printed in lower-case Roman numerals. Repeated 'm's are used for all multiples of 1000 (instead of vincula over other letters, which would have been nicer). \in 0 \f9 argcount \f8\in 1" This variable holds the number of arguments that were listed on the command line after ``ep''. \in 0 \f9 horizontal-position\br \f9 vertical-position \f8\in 1" In expressions, the values of these variables are the current horizontal and vertical positions of the printhead. Placing a value in these variables has no effect. The value of \f9{horizontal-position} does not take into account the effects of right justification. The \f9{vertical-position} is reckoned to be at the top of the current character line. Before the very first character is printed, the vertical position is unitialized, which is signified by giving it a nominal value of 65536. The vertical position will have an invalid value below the bottom margin in a situation where the next character will be printed on the following page. \in 0 \f8 \tall{Special Characters} Letter fonts may contain definitions of the shapes of up to 126 characters, including all the control characters except for NUL (also missing is DEL). In order to avoid control characters in the text file there are three ways of referring to control characters with EP commands. First, `\\^' followed by a character gives the corresponding control character. Second, names are provided which are appropriate to the character shapes in some of the supplied letter fonts. Where appropriate, an automatic backspace is supplied before a named control character. There is a list given below. E.g. the following all give an \f9{a} with a circumflex accent over it (if the font has the right character shapes defined): a\\circumflex a\\ci a\\<\\^d Third, any character, including the case of control characters, can be printed by \f9{\\(\}expression{)}, where the value of the expression is the ascii number of the character that will be printed. E.g. a\\bs\\(4) `\\32' or `\\blank' gives a space character. Also, the current escape character can be printed by doubling it. Assuming it is a `\\', i.e., place `\\\\' in the text to print it. \co 0\ju 0\in Ascii Command Special character ^A tic \tic a ^B (bs)grave a\grave ^C (bs)acute a\acute ^D (bs)circumflex a\circumflex ^E (bs)hachek a\hachek ^F (bs)macron a\macron ^G (bs)umlaut a\umlaut ^H (bs)voice-less ^I (bs)under-dot a\under-dot ^J bullet \bullet ^K dagger \dagger ^L double-dagger \double-dagger ^M section \section ^N quad a\quad a ^O mdash a\mdash a ^P ndash a\ndash a ^Q di-graph \*di-graph ^R digraph-o \*digraph-o ^S (bs)bre-ve a\bre-ve ^T (bs)syllabic ^U (bs)non-syllabic ^V (bs)ce-dilla ^W (bs)under-tie ^X (bs)over-tie ^Y (bs)over-dot ^Z (bs)nasal \*^[ \*^| \*^] are not yet used \co\ju \in 0 \f8 \tall{Epson Control} Control over printing and formatting facilities of the Epson can be exerted indirectly by means of the EP commands listed in the above sections. If you'd like to talk to the Epson more directly, two means are provided. First, some escape sequences are allowed as synonyms of EP commands -- see the list below. Second, when the escape character is followed by something not recognized as an EP command, it is assumed that an Epson escape sequence is intended, so the ESC character is sent followed by any non-blank numbers or letters remaining on the input line. E.g., this would set the form length to 30 on the FX: \\C 30\br and this would set vertical tabs at 35, 45, 55: \\B 35 45 55 0\br Where there is interference with an EP command, the ASCII number of a character can be used after the `\\.' EP itself remains ignorant of the effects of any commands that are issued in this second way, so that, e.g., using vertical tabs would cause EP to lose track of its position on the page and put page numbers in inappropriate places. For all these Epson commands, upper vs. lower case matters (whereas for the regular EP commands, with the exception of \f9{f0-f9} and short string references, it does not). \co0\ju0\in4\required-blank # M (same as \\elite 1) P (same as \\elite 0) 15 (same as \\com-pressed 1) 18 (same as \\com-pressed 0) E (same as \\emphasized 1) F (same as \\emphasized 0) G (same as \\double-strike 1) H (same as \\double-strike 0) W1 (same as \\expanded 1) W0 (same as \\expanded 0) p1 (same as \\proportional 1) p0 (same as \\proportional 0) 4 (same as \\italic 1) 5 (same as \\italic 0) S1 (same as \\su-perscript 1) T (same as \\su-perscript 0 or \\su-bscript 0) S0 (same as \\su-bscript 1) \*-1 (same as \\under-line 1) deleted \*-0 (same as \\under-line 0) deleted _1 (same as \\under-line 1) _0 (same as \\under-line 0)