.if hlp .helpb Printer__control .else hlp .APPENDIX Special printer support .endif hlp A number of features are available to support special printers. .ifnot hlp Some of these require that the printer respond to specific special code sequences or escape sequences. The default, $DEFPRI$, may be changed by enabling the required symbol in RNPRE.MAC. .endif hlp Some .RNO files are supplied for various printers and terminals. These are all in $SYSRUNOFF$, and .iif VMSNative;may be invoked by the /DEVICE=name qualifier, or should be prefixed to, or .REQUIREd by, the source files. .if hlp .IF RSX .s;Additional help is available on: Supported__printers Control__sequences .ENDIF RSX .helpc Supported__printers .else hlp .hl1 PRINTERS SUPPORTED .endif hlp .s .ts +10,+12,+10,+10 .br;^&Default\& ^&File\& ^&Printer& types\& .br;_$DIAB DIABLO.RNO Diablo, Spinwriters and all Diablo compatibles .br;_$Flord FLORDA.RNO Florida Data .br;_$HPLJ HPLJ.RNO Hewlett-Packard LaserJet .br;_$2648A 2648A.RNO Hewlett-Packard HP2648a terminal .br;_$LA50 LA50.RNO LA50, LA100, LA210 printers .BR;_$LA120 LA120.RNO LA120 printer .br;_$LQP02 LQP02.RNO LQP02 printer .br;_$Epson EPSON.RNO Most Epson printers .br;_$C1550 CI1550.RNO C.Itoh 1550-series printers .br;_$VT52 VT52.RNO VT52 terminal .br;_$VT100 VT100.RNO VT10x terminals .br;_$VT125 VT125.RNO VT125 terminals .br;_$VT200 VT200.RNO VT2xx terminals .br;_$VT241 VT241.RNO VT241 colour graphics terminal .br;_$LN03 LN03.RNO LN03 laser printer .br;_$CIT161 CIT161.RNO CIT-161 - Colour terminal .p Each file includes a _.VARIANT command defining the terminal name (the name part of filename in the above list), for use in subsequent conditional code. .if hlp .helpc Control__sequences .else hlp .hl1 CONTROL SEQUENCES .endif hlp .ifnot small An example is:- .lm+8.p-6 .DHY _^_>####causes the text to be shifted up 1/2 line for writing superscripts. .i;_\_>####shifts the text down 1/2 line, cancelling superscripts. .i;_^_<####shifts the text down 1/2 line for writing subscripts. This escape sequence may conflict with the CAPITALIZE flag. If the flag is enabled, it takes precedence over the escape sequence definition. .i;_\_<####shifts the text up 1/2 line for cancelling subscripts. .i;_<#####subscripts the next single character if _.FLAGS# SPECIAL#_< is used. .i;_>#####superscripts the next single character if flagged special. .lm-8.p0 _\_> and _^_< are functionally equivalent on some printers, as are _\_< and _^_>. However, some have a built-in sub/superscript mode, which does small characters in the bottom or top half of the line, in which case the correct matching pairs of on (_^x) and off (_\x) sequences ^&must\& be used. .p In addition, all printers support: .lm+8.p-8 _^__######outputs escape and sets PSP=0, so that following characters (assumed to be an escape sequence) do not get counted for justification etc.. .i;_\__######resets PSP to 1. Used to end an escape sequence. .lm-8.p0 Note that control sequences are sometimes interactive; turning off one feature will also disable another, sometimes in a printer-dependent manner. For example, on a VT100, turning off underline also turns off inverse and bolding, but this does not happen on a VT200. When this is a problem, try altering the nesting of control sequences, or include a dummy off-on sequence pair to reenable the feature that got lost. .hl2 Graphics Mode Several printers have some graphics support. Where this is available, the _^! control sequence will turn it on, and also disable all horizontal character counting (PSP#HSP,0 flags). At the end of the graphics, flagged by _\!, counting is restored to single units (HSP,1). However, at this time, RUNOFF does not know how much the paper has moved for the drawing, particularly in the vertical direction. The user is responsible for ensuring that this does not cause problems. Possible ways of doing this include: .s.list0 .le;Inserting a _.PAGE earlier than RUNOFF would do it. .le;Making one "line" of graphics the same size as one line of text -- most appropriate to dot matrix printers which use all pins. .le;Including a paper positioning commands to reset the print head to wherever the graphics started, and then doing a _.FIGURE to skip the drawing just done. .le;Giving a .REQUIRE# BINARY spacing,'NL:', where NL_: is the system null device, which just behaves as an empty file. .els0.p0 The graphics sequences are non-locking, so graphics mode is not automatically exited and re-entered at line ends. .hl2 Alternative Character Fonts The _^n control sequences, where n is a digit 0-9, plus _^_% and _^_@, may select alternative character sets or fonts, which substitute some or all standard ASCII characters by other letters or symbols. The substitutions made vary widely from printer to printer, but, where possible, assignments under the general names in the following table are made. The printer manual must be consulted for details. All _\n's reselect the default US ASCII set. .s.tp8.lm+10.nf.ts13,21,38,41,49 ^&Sequence\& ^&Font\& ^&Sequence\& ^&Font\& _^_% Block graphics _^4 German _^_@ Scientific _^5 Italian _^0 UK _^6 Norwegian _^1 Dutch _^7 Spanish _^2 Finnish _^8 Swedish _^3 French _^9 Multinational .lm-10.f .hl2 Setting up the Printer Port Graphics, and some escape sequences, sent to the printer contain ASCII control codes. The operating system must be prevented from interpreting these, e.g_. by expanding tabs and form feeds, stripping bit 7, discarding nulls, wrapping around or truncating after receiving more characters than the terminal width (even if some were non-printing escape sequences), etc.. .if rt The following RT-11 monitor commands will go part of the way to achieving this:- .lm+5.s.nf.tp4 _.SET LS: CTRL _.SET LS: BIT8 _.SET LS: TAB _.SET LS: NOFORM0 _.SET LS: WIDTH=32767 .lm-5.f.p0 However, the handler will still discard nulls, prefix form feeds with carriage-returns, and truncate text after the page width is reached causing problems with graphics. .endif RT .if rsx On RSX-11M, this can be prevented by a .s.i5 >SET TERMINAL/EIGHT__BIT/FORM/TAB/NOWRAP .s on the port to which the printer is connected. .endif rsx .if VMSnative On VAX/VMS, this can be prevented by a .s.i5 _$ SET TERMINAL/PASTHRU .s on the port to which the printer is connected. .endif VMSnative .endif small .ifnot hlp .hl1 CONTROL SEQUENCES FOR SPECIFIC PRINTERS The following table lists all the standard escape control codes. .else hlp .p0 Where they are unavailable on the defined printer, they do nothing except, perhaps, change the assumed character width. .endif hlp .ifnot hlp A - indicates that the printer does not support the named facility (issuing the escape sequence will do nothing except, perhaps, change the assumed character width), + indicates that it is fully supported, and _* means that it is conditionally supported as described in the notes following. .endif hlp A + in the "char" column indicates that the single character may be used on its own, if _.FLAGS# SPECIAL is invoked, to control the next character only. A + in the "lock" column indicates that the pair of sequences is defined LCK, and will will therefore be temporarily switched off for headings. .s .if hlp .nf.ts27,31,36,41 ^&Function\& ^&on\& ^&off\&#^&char\&#^&lock\& escape sequence _^__ _\__ - - underline _^_& _\_& + + bold _^_* _\_* + + reverse video _^_~ _\_~ + + double width _^_= _\_= + + blinking _^_# _\_# + + italics _^_/ _\_/ + + subscripts _^_< _\_< + + superscripts _^_> _\_> + + proportional _^_` _\_` + + near-letter quality _^_| _\_| + + graphics set _^_% _\_% + + scientific set _^_@ _\_@ + + graphics mode _^! _\! - - shift up 1 line _^_( - - shift down 1 line _^_) - - double-size line top _^_+ _\+ - - double-size line bottom _^_- _\- - - font n _^n _\n - + .f .else hlp .text deferred .nf.ts23,27,31,34,38 L I F a H t l D s P o o i L L V e 2 E h c l r a L A Q V T L r 6 p 1 o h o i b A 1 P T 1 N J 4 s 5 o f a c d l 5 2 0 5 0 0 e 8 o 5 n f r k a o 0 0 2 2 0 3 t a n 0 ------------------------------------------------- escape sequence _^__ _\__ - - + + + + + + + + + + + + underline _^_& _\_& + + - - + - + - + + + + + + bold _^_* _\_* + + + - + - - + + + + _* + + reverse video _^_~ _\_~ + + - - - - - - + + - + - - double width _^_= _\_= + + + - + + _* - _* - _* - + _* blinking _^_# _\_# + + - - - - - - _* - - _* - - italics _^_/ _\_/ + + - - - - - - _* + + - _* + subscripts _^_< _\_< + + - + + + + - + + + + _* _* superscripts _^_> _\_> + + - + + - + - + + + + _* _* proportional _^_` _\_` + + - - - - _* - - - _* - _* _* near-letter quality _^_| _\_| + + - - + - - - - - - - + + graphics set _^_% _\_% + + - - + - - + + + - _* _* _* scientific set _^_@ _\_@ + + - - - - - - - - - _* - _* graphics mode _^! _\! - - - _* _* - - _* _* _* _* _* _* _* shift up 1 line _^_( - - - + + - + + + + + + _* _* shift down 1 line _^_) - - + + + + + + + + + + + _* double-size line top _^_+ _\+ - - - - - - - - _* - - - - - doub-size line bottom _^_- _\- - - - - - - - - _* - - - - - font n _^n _\n - + + - + _* - - _* - - - _* + .F.s2.end text .hl2 Florida Data Printers Bold is done by shadow bolding. .p The printer has full support for forward and reverse half line feeds, and can do equations and HALF SPACING correctly. .hl2 Diablo Printers The printer has full support for forward and reverse half line feeds, and can do equations and HALF SPACING correctly. .hl2 LA50/LA100 Printers Single-width is 10cpi, and double-width is 5cpi. .p0 The printer has full support for forward and reverse half line feeds, and can do equations and HALF SPACING correctly. Use of half-spacing, superscripts, subscripts, or fractions will upset the printer's form feed calculations. Use the .IF DF RT /F:n .ELSE RT /NOFF$=$n .ENDIF RT $switch$. .p0 _^_! starts graphics mode by outputting escPq. The user must follow this with "sixel" data as described in the Digital manuals, and conclude with _\!, which sends esc_\. .hl2 LA120 Printers Single-width is 12cpi, and double-width is 6cpi. .P0 The printer can only do forward half line feeds, and can do HALF SPACING correctly, but equations may be misformatted. Use of half-spacing, superscripts, subscripts, or fractions will upset the printer's form feed calculations. Use the .IF DF RT /F:n .ELSE RT /NOFF$=$n .ENDIF RT $switch$. .p0 The following alternative fonts can be selected, as given in the above table: UK (_^0), Finnish (_^2), French (_^3), German (_^4), Norwegian (_^6), Swedish (_^8), plus APL (_^9). Note, however, that only UK and (default) USASCII are fitted as standard. .p0 The printer has an extra filled square character, which is given by sending it a ctrl/Z. Commands similar to the following can enable this to be used:- .lm+5.s.nf _.FLAGS ESCAPE _` _.DEFINE ESCAPE "_`@" HSP,1 26 .f.s.lm-5 after which, _`@ gives the filled square. .hl2 VT52/VT55 Terminals Half-lines cannot be done, so HALF SPACING becomes double-spacing. Equations may be misformatted, and backspacing may cause some terms to be lost. .p0 _^_! and _\_! generate esc1 and esc2 respectively, turning VT55 graphics on and off. .hl2 LQP02 Daisywheel Printers Double-width is shadow-bolded 5cpi, achieved by doubling the inter-character spacing. Single-width is 10cpi. .p The printer can do both forward and reverse HALF SPACING, and equations are formatted correctly. .p The daisywheel must be changed between proportional and non-proportional spacing, as the placement of letters on the wheel differs. Since it is turned off for page headers, this is likely to cause problems. A whole document can be printed with a proportional wheel using: .s.i5 _.SETUP 27,"[2!x" .p Some daisywheels have two extra characters printed by sending escape codes. Commands similar to the following can be used to access them:- .lm+5.s.nf _.FLAGS ESCAPE _` _.DEFINE ESCAPE "_`1" HSP,1 27,"O!" _.DEFINE ESCAPE "_`2" HSP,1 27,'O"' .f.s.lm-5 after which, _`1 gives the first extra character (95th on the wheel), and _`2 the second (96th). .p The graphics mode control sequences permit output of one line of raster graphics, in which the period character is used to draw points. _^_! sends esc[20;20#G, which switches to 36 dots per inch and 36 lines per inch. This should be followed with dots and spaces to draw the raster line. Flyback between raster lines should be done by sending esc#E. After the _\_! terminating the graphics, a number of esc#M commands should be issued (one sixth of the number of raster scans drawn) to back up the paper. A .FIGURE following this will get RUNOFF in step with the actual line position. A graphics example is: .lm+5.s.nf.tp7 _.FILL _^! ... first scan ... _^__E _... 2nd scan ... _^__E #######... _... last scan ... _\!_^__M_^__M..._\__ _.FIGURE n .lm-5.f.p0 Note that this will plot with respect to the left-hand edge of the paper, regardless of a _.LEFT# MARGIN setting. It may be necessary to include an esc[ns sequence to set the graphics margin, where n is 36 times the _.LEFT# MARGIN spacing. .hl2 VT100/VT200 Terminals Double-width and double-width/double-height apply to the whole line. .p For VT100's, RUNOFF cannot turn enhancements off singly -- they all go off when any of them is turned off. VT200's ^&can\& control enhancements individually. .p Half-lines cannot be done, so HALF SPACING becomes double-spacing. Equations may be misformatted, and backspacing may cause some terms to be lost. .p0 On a VT10x, _^_! and _\_! generate esc1 and esc2 respectively, turning VT55 graphics on and off on a VT105. .p0 On a VT125, and all VT200's, _^_! and _\_! generate escP and esc_\ respectively, turning REGIS graphics on and off. In all other respects, the VT125 is identical to the VT10x series. On a VT240 and VT241, the graphics will scroll with the text. On a VT125, it remains in place. .p0 On VT1xx terminals, fonts available are: _^0 = UK, _^1 = standard alternative ROM (if fitted), and _^2 = graphics alternative ROM. On VT2xx's with the North American keyboard selected, _^9 selects the DEC multinational set. .p Also on VT200's, the codes _^_/ and _^_@ have been defined as selecting italic and mathematical sets. These must be user-defined, and down-line loaded before displaying the file (or as a _.SETUP sequence), otherwise the set selected is undefined. They have been given set codes i and m respectively, so that _^_/ sends esc)i, and _^_@ sends esc)m. Note that it is a VT200 restriction that only one user-defined set can be on the screen at a time, so if you have italic characters first, and then select mathematical, all the previous italics instantaneously change to mathematical symbols! See the Digital "VT2xx series Programmer Reference Manual" (the one you have to buy separately, not the mini-guide that comes free with the terminal) for details of loading character sets. There are also some DECUS packages that do it. .p The CIT-161 terminal is a colour VT100, for which the following additional colour change sequences are defined: .lm+10.s.nf.ts22,34,46,58.tp5 ^&Sequence\& ^&Colour\& ^&Sequence\& ^&Colour\& _^_[ ... _\_[ red _^_? ... _\_? yellow _^_] ... _\_] blue _^_" ... _\_" cyan _^_: ... _\_: green _^_' ... _\_' magenta .lm-10.f.p0 VT241's have a similar set of colour change sequences, but colour changes apply to the whole screen, with different colours for enhancements, as follows: .lm+10.s.nf.ts24,36,48.tp9 ^&Sequence\& ^&Normal\& ^&Bold\& ^&Bold+Blink+Inverse\& default (off) green red blue _^_[ ... _\_[ red blue green _^_] ... _\_] blue red green _^_: ... _\_: white red blue _^_? ... _\_? yellow red blue _^_" ... _\_" cyan red blue _^_' ... _\_' magenta red blue .lm-10.f.p0 The last column is the alternate colour when bold, blink, and inverse attributes are selected together (_^_#_^_~_^*). .p0 .IFNOT RT To get these additional colours defined on a VT241, you must explicitly tell RUNOFF that the device is a VT241, using a .IF VMSnative /DEVICE=VT241 .ELSE VMSnative /DV:VT241 .ENDIF VMSnative $switch$. RUNOFF does not find the specific VT200 terminal model for itself. .ENDIF RT Note that you should ^¬\& attempt to use these colour definitions on a monochrome VT240, or some text will not show. .hl2 LN03 Laser Printers The printer has full support for forward and reverse half line feeds, and can do equations and half spacing correctly. .hl2 LaserJet Printers The symbols Portrait_$ and Landscape_$ are defined in the prefix files to switch page orientation. These must be used immediately before a .PAGE command. They will unavoidably cause a spurious blank page to be output, which will cause no problem unless bottom line numbering is in use. .p The printer has full support for forward and reverse half line feeds, and can do equations and half spacing correctly. .p Bold and italic sequences only work when a character ROM supporting these features is plugged in. With the 92286B proportional ROM in portrait mode, and after a select proportional (_^_`) command is issued, double-width selects the Helvetica bold set, and single-width is one of the medium, bold, or italic Times Roman fonts. With this ROM and landscape mode, the standard set is 16.66 pitch lineprinter characters, with double-width switching to the 10 pitch Courier font with inter-character spacing adjusted so that line justification is correct. No attempt at proper fill and justification is currently made with proportionally-spaced text. Note that it is a feature of the printer that changing fonts defaults the character spacing, so use of font switches will destroy any changes set by _.SETUP sequences. Also, "multinational" characters with codes _>128 are not available in the proportional fonts. .p There are no special language sets available, multinational characters being given by characters with decimal codes in the range 161 to 254. Since RUNOFF strips bit 7, these characters can only be output by use of escape sequences. Hence a file could start with definitions such as: .lm+5.s.nf.ts40 _.FLAGS ESCAPE _` _.DEFINE ESCAPE "_`;" HSP,1 187 .; _`; is pound Sterling _.DEFINE ESCAPE "_`=" HSP,1 189 .; _`_= is section mark .lm-5.f.s after which, _`_; gives a pound sign, and _`_= gives a section mark. .p The graphics mode control sequences permit output of one line of raster graphics. _^_! sends esc_*r1A, meaning "start graphics at the present position, and set the graphics left margin here", followed by esc_*b, which is the beginning of the transfer raster graphics command. This should be followed with the ASCII number of bytes of graphics data to be transferred, W, and then the graphics bytes themselves. The "present position" above is at the bottom centre of the last text character printed. Flyback between raster lines must be done by sending the escape sequence esc_rA, and not with carriage return/line feed, which will give the full inter-line spacing for normal character text. The _\! control sequence sends esc_*rB, to flag the end of the transfer. Since the printer uses full 8-bit encoding, it will be necessary to define escape sequences for bit patterns corresponding to nonprinting characters. A graphics example is: .lm+5.s.nf.tp7 _.FILL _^!8W ... first scan (8 bytes) _^_____*rA_^___*b5W ... 2nd scan (5 bytes) ... #######... _^_____*rA_^_____&a-mV_\__ _\! _.FIGURE n .lm-5.f.p0 The first line defines the graphics margin and the first 8-byte raster scan. The second line (continuous with the first in the output since _^_! sets PSP=0, and FILL is on) returns to the margin one dot down (_^___*rA) and outputs a 5-byte scan). Subsequent scans proceed similarly. Before ending the graphics, the sequence _^_____*rA_^_____&a-mV_\__ resets the cursor to the starting point, so that the following .FIGURE n can position the cursor just after the picture. m and n are given by: .s.lm+5.nf.ts15 ####number of scans m = 720 _* ---------------------- graphics dots per inch .s.ts26 ####number of scans n = lines per inch _* ---------------------- - 1 graphics dots per inch .lm-5.f.p0 For example, at the default 6 lines per inch text and 75 dots per inch graphics, 32 lines output would give m=307.2 (decimal places are allowed), and n=3 (to next nearest integer). See the LaserJet Printer Owner's Manual for further details of graphics output and a discussion of printer restrictions. .hl2 HP 2648A Terminals Only one of underline, blink, or inverse video can be selected at a time -- RUNOFF is not programmed to do the necessary combinations of escape characters. "Bold" is actually dim. .p Half-lines cannot be done, so half spacing becomes double-spacing. Equations may be misformatted, and backspacing may cause some terms to be lost. .p _^_! starts graphics mode by outputting esc_*. The user must follow this with graphics control sequences as described in the Hewlett-Packard manual, and conclude with _\!. Note that the graphics generated will not scroll with the text. .hl2 Epson Printers All printers except the P-40 and P-80 have built-in sub- and superscripting. .p All printers can do half-spacing, but only the FX-85 and JX-80 can do a reverse linefeed. Equations may therefore be misformatted on other printer models. .p The LX-80, GX-80, and RX-100+ have a graphics character set which is enabled by sending esc#m#eot, after which characters with decimal codes 128 to 159 produce various symbols. Since RUNOFF strips bit 7, these characters can only be output by use of escape sequences. Hence a file could start with: .lm+5.s.nf.ts40 _.SETUP 27 "m",4 .; Enable graphics _.FLAGS ESCAPE _` _.DEFINE ESCAPE "_`G" HSP,1 135 .; _`G is top left corner _.DEFINE ESCAPE "_`H" HSP,1 136 .; _`H is top right corner _.DEFINE ESCAPE "_`I" HSP,1 137 .; _`I is bottom left corner _.DEFINE ESCAPE "_`J" HSP,1 138 .; _`J is bottom right corner .s.i-5;then a centred box can be drawn by: .s _.CENTRE;_`G_`H _.CENTRE;_`I_`J .lm-5.f.p0 All national character fonts except Dutch, Finnish, and Multinational are available. Font 9 is Japanese, replacing the _\ character by the currency symbol. On the LQ800 and LQ1000 printers only, font 1 is the "Spanish II" set, and font 2 "Latin American". _^_% switches to the user-defined character set, which must be initialised with a .SETUP or .REQUIRE# BINARY command. .p0 _^_! starts double-density graphics mode by outputting esc#L. The user must follow this with the dot count and data, as described in the Epson manual, and conclude with _\!. Since the printer uses full 8-bit encoding, it will be necessary to define escape sequences for bit patterns corresponding to non-printing characters. To close up the gaps between lines on a multi-line plot, the inter-line spacing should be reduced by preceding the graphics sequence with esc_<8_>, and following it with esc2, where _<8_> represents an character with ASCII code 8, which must be generated by an escape sequence, e.g.:- .lm+5.s.nf _.FLAGS ESCAPE _` _.DEFINE ESCAPE "_`8" 8 _^___`8 _^! ... graphics code ... _\! _^__2_\__ .lm-5.f.p0 Starting and finishing each line with the graphics escape sequences helps RUNOFF keep up with the number of lines actually output (though this will not be quite right, as it does not know that the spacing has been reduced). .hl2 C.Itoh 1550-series Printers The printers have built-in sub- and superscripting. .p Logic-seeking must be turned off in order for backspace and linefeed to work -- otherwise they are ignored. Hence the file should start with: .s.i5 _.SETUP 27 "[" .p For graphics (_^_%), Greek/mathematical_* .fn _* Hiragana replaces Greek/mathematical on some models. .efn (_^_@), and Katakana (_^9) set selections to function, the printer must be in 7-bit format (DIP switch 2-6 closed). Note that with either of these sets selected, character codes _` and above (including all lower-case letters) are non-printing, although RUNOFF does not appreciate this. An alternative to setting the DIP switch is to include:- .s.i5 _.SETUP 27 "D" 0 32 .p Only model 1550S/SC+NLQ can do near letter quality printing. _^_| on other models selects "memo" quality, which is only slightly better than the default "draft". .p The printers have full support for forward and reverse half line feeds, and can do equations and half spacing correctly. .p Selecting proportional spacing only selects the appropriate character set, it does not currently affect fill and justification counts. .p0 All national character sets can be selected. "UK" is UK#II, and "French" is FR#I. _^9 selects Katakana. Double-width does not function with the Katakana set selected (_\_= will deselect Katakana). .p0 The following additional escape codes are defined to change ribbon colour on the multicolour versions. They assume that the colour pallet is at the standard power-on setting. Note that with a tri-colour ribbon, black (default, and selected by all "off" sequences) requires three passes of the printhead, so it may be desirable to choose one of the primary colours (e.g_. blue) for "normal" print. .lm+10.s.tp5.nf.ts22,34,46,58 ^&Sequence\& ^&Colour\& ^&Sequence\& ^&Colour\& _^_[ ... _\_[ red _^_? ... _\_? yellow _^_] ... _\_] blue _^_" ... _\_" orange _^_: ... _\_: green _^_' ... _\_' purple .s.lm-10.f _^_! starts bit image graphics mode by outputting esc#S. The user must follow this with the four digit ASCII byte count and data, as described in the C.Itoh manual, and conclude with _\!. Since the printer uses full 8-bit encoding, it will be necessary to define escape sequences for bit patterns corresponding to non-printing characters. To close up the gaps between lines on a multi-line plot, the inter-line spacing should be reduced by preceding the graphics sequence with esc#T16, and following it with esc#A, as: .lm+5.s.nf _^___T16 _^! ... graphics code ... _\! _^__A_\__ .lm-5.f.p0 Starting and finishing each line with the graphics escape sequences helps RUNOFF keep up with the number of lines actually output (though this will not be quite right, as it does not know that the spacing has been reduced). .hl1 SAMPLE ESCAPE SEQUENCE DEFINITIONS The following are the _.DEFINE# ESCAPE statements equivalent to the permanently defined sequences for the Florida Data printer. .s.list 0 .le;_.DEFINE ESCAPE "_^_<" VSP 1, 27, "U" .le;_.DEFINE ESCAPE "_^_>" VSP -1, 27, "D" .le;_.DEFINE ESCAPE "_^(" VSP -2, 27, 13 .le;_.DEFINE ESCAPE "_^)" VSP 2, 13 .le;_.DEFINE ESCAPE "_^1", 27, 2 .le;_.DEFINE ESCAPE "_^2", 27, 3 .le;_.DEFINE ESCAPE "_^3", 27, 4 .le;_.DEFINE ESCAPE "_^4", 27, 5 .le;_.DEFINE ESCAPE "_^5", 27, 6 .le;_.DEFINE ESCAPE "_^8", 27, 9 .le;_.DEFINE ESCAPE "_^_*", LCK, CHR, 27, "W" .le;_.DEFINE ESCAPE "_\_*", LCK, CHR, 27, "_&" .le;_.DEFINE ESCAPE "_^_=", LCK, CHR, HSP, 2, PSP, 14 .le;_.DEFINE ESCAPE "_\_=", LCK, CHR, HSP, 1, PSP, 15 .le;_.DEFINE ESCAPE "_^!", LCK, 27, "3" .le;_.DEFINE ESCAPE "_\!", LCK, 27, "4" .end list .endif hlp