home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / textutil / jgpsuite / Docs / JGPrPrmDoc < prev    next >
Encoding:
Text File  |  1993-04-26  |  49.2 KB  |  984 lines

  1. /./ This is, again, a JGPrint file, to be JGDocced to produce a well laid-out
  2. .// document.
  3. .// Source of JGPrParmInfo
  4. .setu 10 :arc:          In/exclude archimedes only features. see .if/fi below
  5. .// .setu 10 :msdos:    Ex/include msdos only features.
  6. .sp 0                   Comment out if Pages wanted; default 66 lines (.sp 66)
  7. .ft
  8. /
  9.  
  10. .col
  11. |Page \p
  12.  
  13. /
  14. .hd
  15. :
  16.  
  17. .if \o
  18. .col
  19. Wed,14 Apr, 1994|JGPrint Configuration Parameters
  20. .else
  21. .col
  22. JGPrint ConFiguration Parameters|Wed,14 Apr 1993|
  23. .fi
  24.  
  25. This Document is designed to help those who are preparing a configuration file
  26. for a new printer. In most cases, your printer will be like one for which a
  27. configuration file already exists, and you will be modifying a copy of the one
  28. for that similar printer, and be only concerned with a few of the sections below.
  29.  
  30. However, since JGPrint's design aim is very different indeed from that of
  31. Acorn's Printer Drivers, it seems worth contrasting the two, and discussing
  32. ways in which they might co-operate. A sorted list of configuration parameters
  33. is provided at the end.
  34.  
  35. .col
  36. |The Acorn Printer Drivers
  37.  
  38. These seek to create on the paper an identical appearance to that which the
  39. Archimedes produces on the screen.
  40.  
  41. Thus, unless fixed-width fonts are being used, the user has no need to know, in
  42. principle, about the fonts built into the printer, and, in particular, about the
  43. width of characters in the printer's proportionally spaced fonts, since the
  44. driver makes no attempt to use these, using instead the printer's graphic
  45. capabilities.
  46.  
  47. The user also does not need to know about the top-bit-set printer characters,
  48. since the Acorn printer drivers seek to force the printer to provide the Acorn
  49. character set irrespective of the printer's built-in character set.
  50.  
  51. A consequence of this is that the Acorn printer driver works in terms of the
  52. computer's VDU5 (graphic) characters.
  53.  
  54. .col
  55. |JGPrint's Configuration files.
  56.  
  57. JGPrint aims to get as full a use as possible of what the printer provides.
  58.  
  59. Therefore its configuration needs to know about the printer's fonts, and, in
  60. particular, about the width of the printer's proportionally spaced characters, in
  61. order to be able to provide elegant justification. Given a configuration file,
  62. the ordinary user does not, of course, need to know these details.
  63.  
  64. JGPrint uses the printer's own top-bit-set characters. Howver, the characters
  65. £(pound) and #(hash) are, extraordinarily, given a special mapping.
  66.  
  67. There is an additional mapping, the 'hatty' mapping, that can be set in the
  68. configuration file, from the non-top-bit-set ink characters to any character, so
  69. that, for example, ^^p -> <n>(greek pi>, where <n> is the byte in the printer's
  70. character set that prints pi (240 ð in Acorn's Greek alphabet)
  71.  
  72. .col
  73. |Comparison
  74.  
  75. These two design approaches have each their own advantages, and it would be
  76. silly to say that either is 'best'. The Acorn approach provides highly flexible
  77. WysiWyg, and the printing of whatsoever is representable on screen; JGPrint is
  78. more demanding of a user who wants top-bit-set characters, but easily
  79. enables the highest quality printing a non\-Postscript printer is capable of,
  80. in circumstances where using Archimedes fonts and justification may well lead to
  81. a mismatch of the positions of the pixels to be printed with the grid of
  82. 'needle' points to which the printer is constrained.
  83.  
  84. The way in which Acorn approach top-bit-set characters ensures that what can be
  85. shown on the screen can be output to the printer. However, mappings that require
  86. backspace and/or vertical movement of the print\-head get very hairy indeed when
  87. using multiple point fonts (vertical movements) or multiple cpi (horizontal
  88. movements); indeed, I think that Acorn's method of recording and modifying this
  89. mapping is unable to cope with printers' proportionally spaced characters, since
  90. these require horizontal movements based on their individual width, rather than
  91. some fraction of the standard backspace - to which, it appears at present, the
  92. Acorn mappings are constrained. JGPrint's hatty mapping is less convenient for
  93. the user, but, most importantly, it will handle all the printer's 'vdu'
  94. characters as well as the top-bit-set characters.
  95.  
  96. The special treatment of £ and # in JGPrint can be seen as a very simple form of
  97. the Acorn mapping approach, to provide WysiWyg where it matters most. I am
  98. contemplating extending this, allowing a generalised form of the Acorn mapping
  99. approach to handle common mappings, and leaving the hatty mapping to provide
  100. printer characters that are not included in the Acorn fonts.
  101.  
  102. .col
  103. JGPrint and the printer driver
  104.  
  105. I recommend that JGPrint and/or JGPCopy be run without the help of !Printers.
  106. !Printers will use JGPCopy to print JGPCopy type files. However I am not very
  107. confident of the robustness of these arrangements, which will improve as I
  108. understand the printing arrangements more clearly.
  109.  
  110. !jgp set Alias$@print_<jgpCopy> to <jgp$dir>.!jgp.!runimage 4 %0, which
  111. dispatches JGPrSlave While JGPrSlave is running, it responds DeviceInUse to
  112. DeviceClaim for the device it is using, ie the Parallel/Serial Port. In
  113. !Jgpcopy, JGPrSlave is started directly from JGPCopy.
  114.  
  115. .col
  116. |JGPrint Configuration files
  117.  
  118. Most, but not all of the printer codes and parameters(Sizes) are mentioned here.
  119. Others are self\-evident, unimportant or obsolescent.
  120.  
  121. I would not recommend you to study this document until you are familiar with
  122. the use of both JGPrint and JGConfig.
  123.  
  124. I recommend you to Dump (SH-Menu in JGConfig ) and spool a configuration
  125. supplied, so that you can see the Code strings, Size values and proportional
  126. width numbers in use for some printer. The codes are listed, with brief comments
  127. as an appendix below.
  128.  
  129. .col
  130. \s1|Printer Code Parameter Representation
  131.  
  132. Certain printer codes, e.g. spacing or HMI, require a numeric parameter that
  133. expresses e.g. the size of movement required for each particular use.
  134.  
  135. JGPrint passes to the code output routine the actual parameter required, and it
  136. is the job of the configuration to send that number to the printer in precisely
  137. the way that the manufacturer has prepared the printer to receive it.
  138.  
  139. The position in the code string for the parameter to be inserted is indicated by
  140. the occurence of the byte '%'. The letter following this determines how the
  141. parameter is to be specified to the printer.
  142.  
  143. Suppose the parameter is 53: if byte specification is required, '%' should be
  144. followed by 'I'/'i', and the byte 53('5') will go to the printer; alternatively,
  145. if numeral specification (digit sequence) is required, '%' should be followed by
  146. 'J'/'j', and '5'(53), '3'(51) will go to the printer.
  147.  
  148. As seen above, lower and upper case letters have the same effect, and,
  149. henceforth, I will only give the upper case version. '%'+'%' will send a single
  150. '%' to the printer. Some printers require this, e.g. to choose between internal
  151. and user supplied character sets.
  152.  
  153. .col
  154. \s2|Epson Style
  155.  
  156. Byte specification is typical of the needs of Epson printers, and IBM, Canon,
  157. Seikosha, Star, etc., which are very similar but, unfortunately, rarely if
  158. ever identical. A problem with this style is the impossibility of expressing
  159. negative numbers, so that moving the printhead up or down the page requires two
  160. distinct codes, rather than a single code with positive and negative parameters;
  161. left and right printhead movement has the same problem. Attempts to send a
  162. negative number to the printer in these cases is reported. I have never
  163. encountered this error.
  164.  
  165. A lesser problem is that a single byte can only express numbers between 0 and
  166. 255 (inclusive), and that large head movements may require larger numbers. The
  167. solution normally adopted is to send two bytes <n1><n2> to express <n1> +
  168. (256*<n2>). This allows numbers up to 65535 to be sent to the printer. '%'+'B'
  169. should be used in the printer code to send the printer parameters in this style.
  170.  
  171. A second style available is '%'+'E', which  is used to send a number of unit
  172. graphic movement commands preceded by an Epson twobyte count. I used it to
  173. provide FGFJ movement on an old Star printer; it is now obsolescent, if not
  174. already obsolete.
  175.  
  176. HP style (see below) allows two places of decimals to be interpreted by the
  177. printer for certain codes. To take advantage of this, the internal parameter
  178. 'Point' is held as a multiple by 100 of the value required. I may extend this to
  179. 'Pitch' and some other parameters, in which case Epson Style will use '%'+'C' to
  180. send the printer <n>/100, losing the two decimal places. There will be no need
  181. for the JGPrint user to be aware of the change.
  182.  
  183. .col
  184. \s2|HP Style
  185.  
  186. Numeral style is typical of Hewlett-Packard's DeskJet and LaserJet printers, and
  187. those such as Olivetti which emulate these. They seem to me to have a tendency to
  188. be rather lengthy, but, conversely, it is difficult to get an unintended
  189. meaningful code by accident.
  190.  
  191. '%'+'J' follows the normal mathematical convention of omitting '+' for positive
  192. integers, but including '-' for negative integers. HP codes, however, are of two
  193. forms, where, on the one hand, the '+' is not required, eg. <esc>*p<n>X, which
  194. sets the printhead to absolute horizontal position <n> on the line, and, on the
  195. other, one where the '+' or '-' must be explicitly sent to the printer, eg.
  196. <esc>p*+<n>X and <esc>p*-<n>X, which move the printhead relatively
  197. <n> to the right and relatively <n> to the left, respectively.
  198.  
  199. '%'+'J' handles the first case. Almost certainly a negative number in the codes
  200. concerned would be an error, but, so far, I have not included a diagnostic
  201. check for this. '%'+'V' includes either '-' or '+' before the numeral sent to
  202. the printer, as required in the second case.
  203.  
  204. '%'+'D' is used for two-place decimal numerals, i.e. <n> ->
  205. '<n>/100'+'.'+'<n>rem100'. This is used for Point, where the internal value stored
  206. is 100 times the point value. This may also be used elsewhere later. Note that
  207. the user need not be aware of this in the directives she includes in the text.
  208.  
  209. .col
  210. \s2|Juki and Qume styles
  211.  
  212. Printswitch in JGCodeInfo describes '%'+'G', '%'+'H', '%'+'K', '%'+'S', '%'+'T',
  213. '%'+'W', '%'+'M'. These styles are intended for Juki and Qume configurations.
  214. However, these have not been tested, and the user may find that they are not
  215. precisely what is required.
  216.  
  217. .col
  218. \s2|Shift Out and Shift In
  219.  
  220. '%'+'Y' and '%'+'Z' are somewhat different from the preceding forms of
  221. parameter. They suppose that the printer has two sets of related codes, which
  222. differ in one character between corresponding codes in each set. An example is
  223. in HP where '(' and ')' are used, respectively, in primary and secondary font
  224. specification. The values to include are found, respectively, in the Sizes Sob
  225. and Sib (Shift Out/In Byte ). '%'+'Z' is used to toggle an internal parameter
  226. "shiftout", and, according to whether this is true or false, '%'+'Y' chooses Sob
  227. or Sib to include in the code strings. Note that '%'+'Z' only causes the bytes
  228. ShiftOut(14) or ShiftIn(15) to go to the printer.
  229.  
  230. Suppose '%'+'Z' were included in the Portr and Land printer codes, then primary
  231. fonts would be used for portrait printing, and secondary fonts for landscape
  232. printing. This facility is subject to detail change in the light of current
  233. development.
  234.  
  235. .col
  236. \s2|Including one code within another
  237.  
  238. '%'+'@' will include the codestring whose number is specified by the parameter
  239. within the codestring being written. Note that if you want this to be preceded
  240. by <esc>, you must include <esc> within the enclosing code specification. See
  241. init below for an example.
  242.  
  243. .col
  244. \s2|If the configuration parameter \I}IsEsc\J is true, the byte 27(<esc>)
  245. precedes every code string sent to the printer through the 'Writecode' routine.
  246. This saves quite a bit of space in the configuration code data space. It is also
  247. possible to write specific codestrings directly, ie omitting the <esc>, and
  248. this is, in fact, the case for \I}rc(86)\J to \I}Horbyte\J, codes to move the
  249. cursor on the screen and auxiliary codes for horizontal head\-motion on some
  250. printers.
  251.  
  252. .col
  253. \s1|Vertical Head Motion
  254.  
  255. .col
  256. \s2|Vertunit and other scales
  257.  
  258. The first decision to make is to choose the units in which vertical head motion
  259. should be specified to the printer, ie the value of \I{vertunit(4)/J. For
  260. HP-style, in which the same code serves both directions, this will be the value
  261. supplied to the printer code that realises \I}VMI(55)\J; for Epson style, the
  262. value supplied to the two codes that realise \I{Downtab(54)\J and
  263. \I(Uptab(53)\J.
  264.  
  265. In my HP configuration, I use <esc>*p%VY for vmi, and therefore vertunit=300. In
  266. my BJ-10e configuration, I use <esc>J%I for Downtab, and therefore vertunit=216.
  267. There is no code available for uptab; windback, therefore, is not available, nor
  268. is the possibility of responding to the JGPrint directive \\<. Since the BJ-10e
  269. is not designed for continuous paper, this lack is neither surprising nor
  270. bothersome. On a Nec P2200, Uptab was <esc>j%I; deplorably, Canon uses this for
  271. "stop printing and go off-line".
  272.  
  273. In order to move further than the (byte) parameter allows, set \I}VMax(49)\J to
  274. 255, and JGPrint will break large movements down to manageably small ones.
  275.  
  276. Vertunit is also, other things being equal, used to set line \I}spacing(24)\J.
  277. Therefore the BJ-10e uses <esc>3%I, rather than <esc>A%I, which uses a unit of
  278. 72/inch. JGPrint could, however, use <esc>A%I by setting \I}VFeedUnit(52)\J to
  279. 72 rather than 0, since, if this parameter is non-zero, it is preferred, for
  280. spacing, to vertunit. The HP configuration must set VFeedunit to 1/48 since no
  281. printer code is available at the 300 scale, but only <esc>&l%JC. Two other
  282. spacing codes are available, \I}LpiSpacing(99)\J and \I}LppSpacing(102)\J, to
  283. set the spacing, respectively, in terms of Lines per Inch and Lines per Page, if
  284. the directive .sp n so specifies them. The HP configuration realises the former
  285. by <esc>&l%JD.
  286.  
  287. .col
  288. \s2|Pagelength
  289.  
  290. The directive .PL has a special constraint for the user; it must only be used in
  291. the prologue of a document. Its use determines the number of 1/2160 units that
  292. JGPrint allows in a page (0 => no Paging). If you are using continuous
  293. stationery, your printer will not want to know about pagelength, since, in
  294. effect, you are using an infinitely long page that you will later cut or tear.
  295. If you are using cutsheets you should put your form size requirements into
  296. \I}init(11)\J. In HP this is <esc>&ll6d66pe66F, in BJ-10e <esc>C 0 66. Note that
  297. the default 6 lines per inch is assumed.
  298.  
  299. .col
  300. \s2|Line separators
  301.  
  302. JGPrint is designed to send both <cr><lf>(13,10) to the printer to effect a
  303. newline. It sends a simple <cr> to overprint the line to supply vertical bars.
  304. However, the Acorn printer drivers suppose that <cr> will also cause the printer
  305. to execute a line feed. Accordingly, sending JGPCopy files to printers via
  306. Acorn printer drivers may yield unwanted blank lines. The two parameters
  307. \I}CrAndLn(61)\J and \I}CrAndHln(51)\J if true(1) cause the vertical codes to be
  308. preceded by <cr>, if false(0) omit the <cr>. Note that if CrAndLn is false,
  309. vertical bars will probably only produce their intended output if the absolute
  310. horizontal positioning command \I}Abshor(98)\J is available. NB. see 'carriage
  311. return' for further discussion.
  312.  
  313. .col
  314. \s1|Horizontal Head Motion
  315.  
  316. .col
  317. \s2|Horunit and other scales
  318.  
  319. The first decision to make is to choose the units in which horizontal head motion
  320. should be specified to the printer, ie the value of \I{Horunit(3)/J. For
  321. HP-style, in which the same code serves both directions, this will be the value
  322. supplied to the printer code that realises \I}HMI(55); for Epson style, the HMI
  323. code is also used, even though most printers can only move the head to the
  324. right. I have not encountered printers for which a 'Rightab/Leftab' analogue of
  325. 'Downtab/Uptab' is implemented. I believe that an absolute horizontal position
  326. code (see above) would also be available with such printers. See also carriage
  327. return and abshorP below.
  328.  
  329. In my HP configuration, I use <esc>*p%VX for vmi, and therefore horunit=300. In
  330. my BJ-10e configuration, I use <esc>d%E, and therefore horunit=216. %E does not
  331. accept negative numbers, so that a command to move left would be intercepted.
  332. JGPrint does not use a move left command except in response to a user's \\{<n>
  333. command, which is not normally required.
  334.  
  335. .col
  336. \s1|Pitch and Point
  337.  
  338. .col
  339. \s2|Point
  340.  
  341. Epson style printers do not provide separate codes to control Point(character
  342. height in units of 1/72") and Pitch (Characters per inch); HP style requires
  343. Point and Pitch to be separately controlled. JGPrint therefore provides
  344. \I}Point(25)\J, which in the HP configuration is set to "%Zs%DV", and in the
  345. BJ-10e is set to Null. Scaleable JGP 'Fonts' (see below) are scaled with respect
  346. to point. If, in the directive .Point <n>, <n> > 100, its value is taken to be
  347. <n>/100.<n> rem 100; values < 100 are scaled up internally.
  348.  
  349. %Z above will send ')' to the printer if shiftin, and '(' if shiftout, and we
  350. will encounter many HP codes in which it is used. Note that Null, rather than
  351. Forbidden, is used so that texts developed for a printer that requires point
  352. information should not lead to diagnostics on another.
  353.  
  354. .col
  355. \s2|Pitch
  356.  
  357. JGPrint's view of the world is that the 'Pitch' code should provide for
  358. scaleable sizes, and that cpi5, cpi10 etc. should supersede this for particular
  359. pitches that may have special characteristics. If 'Pitch' is null, and the cpi
  360. (characters per inch) requested is not one of these special pitches, or is but
  361. no special code is set, then JGPrint will complain. Hence \I}Pitch(21)\J is
  362. '%Zs%JC" for the HP configuration, and Null for the BJ-10e.
  363.  
  364. .col
  365. \s2|cpi5 - cpi17 & nlq
  366.  
  367. For the HP configuration, there is no need, in principle, to provide special
  368. codes for setting the pitch, but see the discussion of widths, below. For the
  369. BJ-10e, they are:
  370. \I}Cpi5(14)\J = [I<5><0><0><11><0><144><1><27>W<1>;
  371. \I}Cpi6(15)\J = [I50[I<5><0><0>U<0>x<1><27>W<1>;
  372. \I}Cpi8.5(16)\J = [I<5><0><0><254><0>T<1><27>W<1>;
  373. \I}Cpi10(17)\J = [I<5><0><0><11><0><144><1><27>W<0>;
  374. \I}Nlq(20)\J = [I<5><0><0><11><0><144><1><27>W<0>
  375. Note that the double width set/unset command <esc>W0/1 is appended to the Set
  376. Font Global command to make available cpi5, cpi6, cpi8.5. Note also that the
  377. JGPrint directive .cpi 8 yields the code cpi8.5. Note also that Nlq is set to be
  378. the same as cpi10 in order to make texts containing the directive .nlq
  379. acceptable to the BJ-10e configuration. Similarly, in HP, nlq is set to
  380. "%Zs10H".
  381.  
  382. .col
  383. \s2|Width
  384.  
  385. Connotatively, cpi10, cpi6, and cpi5 suggest, respectively, a character
  386. width of 1/10", 1/6", and 1/5", i.e. 360, 150 and 180 JGPrint Horizontal
  387. Units of 1/3600". This will be the column width taken by JGPrint when left
  388. margins, right margins or horizontal tabs are requested with a small argument.
  389.  
  390. However, more flexibility is provided for cpi8.5, cpi12, cpi17, nlq by the values
  391. \I}8w(25)\J, \I}12w(54)\J, \I}17w(26)\J and \I}nlqw(27)\J. In the BJ-10e
  392. configuration, these are set, respectively, to 424, 300, 212, 360, corresponding
  393. to 17/2 cpi, 12 cpi, 17 cpi and 10 cpi - which are the pitches at which the
  394. BJ-10e is capable of printing. HP does not provide 6 cpi, 8.5 cpi, 12 cpi or 17
  395. cpi without extra fonts, therefore .cpi 12 and .cpi 17 will be used to
  396. make available 16.67 cpi and 20 cpi, the pitches provided.
  397.  
  398. To do so, 12w is set to 216, and 17w to 180, i.e. 1/16.67" and 1/20" per
  399. character. This ensures that JGPrint makes appropriate assumptions about the
  400. width of characters as they are printed, but we still have to send the
  401. appropriate codes to the printer so that they shall be so printed. These are:
  402. \I}Cpi12(18)\J = %Zs16.67H; \I}Cpi17(19)\J = %Zs20H
  403.  
  404. 20cpi can also, and more truthfully, be obtained by the directive .cpi 20, but
  405. I have preferred to enable texts prepared for the HP printer to be usable on
  406. other printers and vice-versa;  there is, as yet, no other way to get two places
  407. of decimals to the command for 16.67cpi. I am working on it!
  408.  
  409. Cpi5, cpi6, cpi8.5, cpi10 and nlq are set to Forbidden; Null or Forbidden cpi
  410. codes are ignored, and the default code pitch(21) is used.
  411.  
  412. .col
  413. \s2|Carriage Return
  414.  
  415. !printers appears to insist that a carriage return received from the file being
  416. printed shall both move the printhead to the left edge, and put out a linefeed.
  417. This causes an extra linespace to be performed by the printer. JGPrint attempts
  418. to deal with this by using \I}Abshor(98)\J, the absolute horizontal positioning
  419. printer code, to set the head to the left margin, irrespective of the setting of
  420. \I}AbshorP(53/J. This also copes with a problem I have encountered on a
  421. particular printer, where a relative horizontal movement immediately following a
  422. relative vertical motion appears to be ignored.
  423.  
  424. If Abshor is not available, setting \I}CrAndHln(51)\J, \I}CrAndLn(61)\J,
  425. to false(0), suppresses the Carriage return before the vertical motion for,
  426. respectively, newlines and halflines.
  427.  
  428. .col
  429. \s2|Proportionally spaced character widths.
  430.  
  431. Printer manufacturers approach providing proportionally spaced characters in one
  432. of two ways: design a character font specifically for their printer's
  433. dot\-making capabilities, such that their widths are exact multiples of the
  434. printer's own horizontal movement units; use a traditional typographer's font,
  435. adjusting it slightly to fit into the printer's dot width and horizontal
  436. movement units.
  437.  
  438. The first approach, favoured by e.g. Epson and Canon, keeps the width
  439. of characters constant, whatever their style, normal or bold, upright or italic,
  440. full height or sub/super-script. However, only one height (point) and width of
  441. proportionally spaced characters is provided. JGPrint's 'non\-scaleable' 'fonts'
  442. are designed to be used in this situation.
  443.  
  444. The second approach, favoured by HP, normally provides some or continuously many
  445. sizes of font, and the widths are proportional to the height (point) of the
  446. font. There is a certain amount of rounding error, particularly for the smaller
  447. points, that JGPrint ignores, both because it is not always pleasing or possible
  448. to make the character up of very thin lines, and because of the 'grain' of the
  449. printer's horizontal motion. However the various styles of characters affect the
  450. width of the realised form. JGPrint's scaleable fonts are designed to be used in
  451. this situation.
  452.  
  453. .col
  454. \s2|JGPrint Font definition.
  455.  
  456. The psuedo\-code \I}Propchwidth(60)\J. gives the name in the directory !jgp.q of
  457. a file containing character widths. Thus two or more configuration files can
  458. share the same Font information. HP uses the file Jpps-8 and BJ-10e uses CanP.
  459.  
  460. The configuration parameters \I}PtDiv0/1(28/29) determine whether a JGPrint Font
  461. is fixed or scaleable, and how to interpret the numbers ( <=255 ) that specify
  462. the width of the characters when you enter the 'Proportional Character' section
  463. of JGConfig. For fixed Fonts, Ptdiv0 = 0 (similarly, of course, for Ptdiv1 and
  464. font1). This is so for the BJ-10e configuration, and the scale implied by the
  465. width numbers is Horunit, in this case 1/120". In the Canon manual, widths are
  466. specified in units of dots (1/360"), and the values in this table should be
  467. divided by 3. Fortunately, but not suprisingly, these are all multiples of 6, so
  468. no information is lost.
  469.  
  470. For Scaleable fonts, it is desirable that the width table should use as broad a
  471. range of values as possible, so that discrimination can be as fine as possible,
  472. subject, of course, to the need for these values to be less than 255, and the
  473. non\-zero values of PtDiv0 scale the meaning of the widths values in the
  474. configuration. For HP 12 point fonts, 400 is a suitable value, giving a range of
  475. character-widths of 64-252 in units of 3/3600 = 1/1200. The larger the value of
  476. PtDiv0 the finer the units in terms of which the width-values specify.
  477.  
  478. If \I}ChsetRomRam(33)\J is 0, the fonts are chosen using \I}Defp(48)\J (default)
  479. and \I}17p-nlqp(44-7)\J. If ChSetRomRam is 1, the initial Font is forced to 0,
  480. and using \\x, \\y, \\z forces it to and from Font 1.
  481.  
  482. .col
  483. \s2|Discovering widths
  484.  
  485. JGPrint provides 3 tools at the end of the introductory dialogue to help in
  486. specifying character widths. They all assume that the various init parameters
  487. are set to the condition that would be effected after the init printer code has
  488. been executed, and that various other codes, especially ps, ps0, ital, ital0,
  489. emph, emph0, Wrapon, and Tochars have been set. Click on any JGPrint file to
  490. get started. It will, of course, not actually be printed.
  491.  
  492. JGPrint will assume that the initial characterset (that got by \I}Chrom(51)\J)
  493. uses Font 0, and that got by \I}Chram(50)\J uses Font 1, i.e. it always acts as
  494. though ChsetRomRam.
  495.  
  496. .col
  497. \s3|See Printer Charset
  498.  
  499. enables you to print out ranges of the characterset in which printing will
  500. start. If you want to examine more than 2 charactersets, you must do so in the
  501. JGPrint printer codes (usually ChRom, ChRam or init), and I advise you to do
  502. this in a copy of your configuration. Ps0 is executed after init so that the
  503. result is well-laid out. You can request to see on the screen what you would
  504. have sent to the printer. \I}Tochar(71)\J 1 precedes all characters, so that
  505. they are construed as characters rather than controls by the printer.
  506.  
  507. For this reason, you should avoid the vdu character range if looking on screen
  508. at what happens.
  509.  
  510. There are similar facilities in the other 2 tools.
  511.  
  512. .col
  513. \s3|See Character widths
  514.  
  515. You are prompted for the number of characters(<n>) you want to use. I find 50 or
  516. 60 convenient. You are then prompted for whether or not you want italics or
  517. bold. \I}Wrapon(104)\J is then set so that you see any line overflow. (I usually
  518. set \I}Wrapoff(105)\J within init, so that line overflow does not screw up page
  519. registration.)
  520.  
  521. This tool alternately uses \I}ps0(37)\J and \I}Ps(36)\J to print an 8" ruler in
  522. units of 1/10", and, below it,  <n> proportionally spaced characters
  523. across the page, possibly overflowing onto a second line. From this, you can
  524. make a good estimate of each character's width.
  525.  
  526. This is sufficient if your scale is large, as may be the case for non-scaleable
  527. fonts. Thus for the BJ-10e, with an effective scale of 1/60" (=2/120"), the
  528. required width numbers can be unambiguously read. For scaleable fonts, such as
  529. that for the HP, the units may be as small as 1/1200"; this allows very fine
  530. tuning in the width table, with results that may show up as a difference in
  531. length of as little as 1/60" in 60 characters. The tool described below enables
  532. fine tuning of the width table to be completed.
  533.  
  534. .col
  535. \s3|Adjust Character Widths
  536.  
  537. This tool is designed to exhibit any discrepancy there may be between where
  538. JGPrint believes a row of characters to have reached, and where the actual
  539. characters on the page have, in fact, reached, so that JGPrint's beliefs (as to
  540. character width) can be modified by reality.
  541.  
  542. It provides, for the ranges of characters requested, a line of as many
  543. characters as JGPrint believes will fit into 6", followed by a '|', at the exact
  544. point at which JGPrint believes the right of the rightmost character to have
  545. reached. This is the position of the centre of the upright line itself, not the
  546. blank left pad that precedes it. This will normally be slightly less than 6",
  547. unless 6"/Character width is 0. The byte number of the character, its Width in
  548. 1/3600" and the Number of characters is shown on the right.
  549.  
  550. Note that this facility is designed for printers with an absolute character
  551. position command. If this is missing, most printers will produce the required
  552. information, but this is not guaranteed.
  553.  
  554. .col
  555. \s2|Emphasized/Bold Characters
  556.  
  557. \I}Bold0/Bold1(62/63)\J, advises JGPrint of the number of additional columns of
  558. dots used to embolden proportionally spaced characters, i.e. the increased width
  559. in Horunits. For fixed width characters this is ignored, and is 0 for most
  560. non\-scaleable fonts such as the BJ-10e. For the HP Bold0/Bold1 both = 2.
  561.  
  562. .col
  563. \s2|Italicised characters
  564.  
  565. \I}Ital0/Ital1(30/31) advise JGPrint how to handle the width of italicised
  566. characters. Ital0 = 0 implies that italicised characters are the same width as
  567. the upright characters. This is the case in BJ-10e. Ital0 = 1 implies that the
  568. italicised characters are to be found in storage offset from that of upright
  569. widths; the Proportional Character part of JGConfig prompts to access these
  570. italic widths. This is the case for the HP configuration, for which Ital0 is 1.
  571. See the online documentation for the interpretation of Ital0 > 1.
  572.  
  573. .col
  574. \s2|Subscripted and Superscripted characters.
  575.  
  576. Some printers have explicit codes to set the printing to sub- or super\-script.
  577. This is how the BJ-10e handles these, and it has codes \I}Supscpt(46)\J = <esc>R;
  578. \I}Subscpt(47)\J = <esc>S. \I}Supoff(48)\J  =  <esc>T; \I}Suboff(49)\J  =  <esc>T.
  579. Others, including HP, require the user to move to a smaller font, and to move the
  580. line of type appropriately up and down. The following parameters are required in
  581. the configuration file (with HP values): \I}SubMove(70)\J = 25; \I}SupMove(71)\J
  582. = 50. \I}SuPitch(72)\J = 17; \I}SuPoint(73)\J = 600.
  583.  
  584. The Moves are construed as percentages of a linewidth; the Su-Point and
  585. Su-Pitch describe what type to use. Notice that 17 will be reconstructed by cpi17
  586. to a pitch of 20, and that the point is specified as already multiplied by 600.
  587.  
  588. There are two disadvantages of JGPrint's approach to choosing type for sub- and
  589. super-scripts. 1) A fixed size font is specified for sub amd superscripts
  590. irrespective of the size of the main type. 2) Although I have tried to cut down
  591. the size of tspacing between words in subscripted and superscripted text
  592. relative to the main type, I am not happy with the results I am getting. I do
  593. not think problems relating to either of these limitations will be often
  594. encountered.
  595.  
  596. It is ESSENTIAL that any codes and parameters not used should be set null or 0.
  597.  
  598. .col
  599. \s2|Font 1 and others to come.
  600.  
  601. Printers provide a range of charactersets for a given font, and Font1 is
  602. designed to enable a second to be available. See the Multiple moves command in
  603. JGConfig for how to copy a range of widths between Fonts 0 and 1.
  604.  
  605. JGPrint can manage to send any byte in the range 0 to 255 to the printer to be
  606. construed as a printable character, possibly with the help of the directive \\!,
  607. and, for bytes 7-16, the hatty mapping. It is therefore desirable to use as a
  608. principal character set one that is, unlike Acorn's Latin1, everywhere  defined.
  609. In the HP configuration, I use PC-8 for font 0, since this seems the most common
  610. available, and ECMA Latin1 for font 1. Were I not lazy, I should use
  611. \I}Defch(61)\J to add in Acorn's characters  128-160, and others from 0 to 31.
  612.  
  613. The commands \\x, \\y, \\z can be used, by analogy with their original intent to
  614. enable a soft font in Ram to be used, to swap between two built\-in character
  615. sets. For HP, these use the codes \I}Chram(50)\J = %Z0N, \I}Chrom(51)\J = %Z10U to swap
  616. between PC-8 and ECMA-94 Latin-1.
  617.  
  618. In Bj-10e the codes required are <esc>+'['+'T'+4+0 +0+0+3+82 etc. (NB
  619. 850=3*256+82) to swap between pages 850 and 437, the only two available.
  620.  
  621. I am fairly satisfied with these arrangements, but they do not allow for the
  622. variation of character sets and typefaces that modern printers are making
  623. available. I am thinking to allow the widths file itself to specify how many
  624. character sets it contains. It will require that PtWidth0, bold0 etc be moved
  625. out of the configuration file and into the widths file.
  626.  
  627. .col
  628. \s2|AbshorP
  629.  
  630. The final choice to be made when arranging how JGPrint will handle justified
  631. lines is how JGPrint will tell the printer to respond to the head\-positioning
  632. requirements of the line. The simplest method (\I}AbshorP(53)=0\J), is to
  633. instruct the printer to move right\-relative the amount between 'where JGPrint
  634. believes the printhead to be' and 'where it wants it to be'. A better
  635. alternative (ApshorP=1), only available if \I}Abshor(98) (a code to
  636. move the print head to an absolute horizontal position) is available, is to move
  637. the printer head at the beginning of each word to where JGPrint wants it to go.
  638. In effect, this means that any discrepancy between JGPrint's knowledge of where
  639. it is, and where the print head actually is, will be corrected after each gap in
  640. the line. AbshorP=2 sets the absolute position of the printhead before each
  641. character is output, thus even more exactly positioning the print-head.
  642.  
  643. The BJ-10e does not have an absolute horizontal positioning command, so AbshorP
  644. must be set to 0. In HP, I use AbshorP=1, except when I am testing the width of
  645. characters, when I set Abshorp to 0.
  646.  
  647. .col
  648. \s2|Deskjet Scaleable Fonts
  649.  
  650. If you examine Deskjet Font character widths as published by HP, particularly
  651. for the smaller fonts, you will see that the numbers for one font are not
  652. exactly the same multiple of those for another font. This is because of
  653. neccessary rounding errors from the left and right blank pads, and dotwidth.
  654.  
  655. However JGPrint's scaling calculations are fairly good, and, with AbshorP=1, I
  656. am well satisfied with the justification of a six point line, with widths educed
  657. from 12 point characters.
  658.  
  659. .col
  660. \s1|Laying out the page.
  661.  
  662. There are two separate things that have to be got, if not right, at least
  663. consistent: how the printer is to be initialised with respect to paper size,
  664. font, and line spacing; the initial assumptions JGPrint is to make about these
  665. and other initial conditions. The first is done by the commands put in the code
  666. \I}init(11)\J; the second by the values of \I}initpl(5)\J(page length) -
  667. \I}initqual(66)\J(quality), i.e draft/letterquality). I shall not discuss what
  668. may be required exhaustively here, since, on the one hand, each printer has its
  669. own style of inititialising requirements, and, on the other, JGPrint's init-
  670. parameters are straightforward, though detailed. It may be helpful to look at
  671. these values in a configuration for a printer you know.
  672.  
  673. .col
  674. \s2|init
  675.  
  676. I recommend that this printer code begins with the 'reset default' code of
  677. whatever printer you are using, and that \I}deinit(12)\J, which ends the file,
  678. should end with this code. In the HP Configuration this is <esc>E. <esc>@ is the
  679. usual code on Epson\-type printers, but it is not present on the BJ-10e.
  680.  
  681. Chrom is sent as parameter with the call to init so that '<esc>%@' will include
  682. the code for this within init if required.
  683.  
  684. .col
  685. \s2|Init-
  686.  
  687. With a few exceptions detailed below, the init-? values required are
  688. self\-explanatory. However, it is worth distinguishing between those, such as
  689. Initpl, which tell JGPrint about how the printer works, and those that specify
  690. your default choices, such as initlm. I recommend that for texts that you intend
  691. to go back to, you reset the latter, but not the former, within your text, so
  692. that you get the same effect whatever configuration you use.
  693.  
  694. \I}Initfj(14)\J sets the Fill and Justify value, 0 => Nofill, 1 => Fill, 2 =>
  695. Fill and Justify in units of 1 character width, 3 => FGFJ, 4 => JGFJ. 1 or 4
  696. are the usual settings. 2, the setting required for sending texts to screen, is
  697. enforced in Doc mode and if JGPrinting to the screen.
  698.  
  699. \I}InitPsep(12)\J sets the additional space between lines as a percentage of the
  700. normal spacing. In Doc mode or if JGPrinting to the screen, this is forced to
  701. 100.
  702.  
  703. Your printer may be set to skip margins at the top and/or bottom of the paper.
  704. JGPrint provides \I}Skipsingle(22)\J for single\sheet printing and
  705. \I}Skiplines(21)\J and \I}Skiplength(20)\J for printing on continuous
  706. stationary. SkipLines, is in terms of the running head line separation, the
  707. others in units of 1/2160". \I}Pagecycle(38)\J = n stops continuous paper every
  708. n pages, e.g. 16 so that you can adjust page registration. You will be prompted
  709. to reset pagelength and/or pagecycle. 0 is interpreted as an infinite cycle.
  710.  
  711. .col
  712. |Appendix
  713.  
  714. The numbering of the items relates to their placing for access by JGPrint and
  715. JGConfig.
  716.  
  717. Numbers beginning with "c" are JGConfig Codes; numbers beginning with "s" are
  718. JGConfig Sizes.
  719.  
  720. NYA should be taken to mean "not implemented at this time".
  721.  
  722. ~ JGP should be taken to mean "not explicitly used by JGPrint".
  723.  
  724. MBN should be taken to mean that JGCfgDoc should be consulted to see what the
  725. implications are if the item is set to Null.
  726.  
  727. Some codenames are entered under more than one classification, where it is felt
  728. this would be helpful.
  729.  
  730. NB. The more detailed notes above or in JGCfgDoc should be consulted in the case
  731. of any uncertainty; only the briefest summaries are given here, and though in
  732. some cases you are specifically referred to JGCfgDoc, you may often find it
  733. useful to look for more detailed notes in others as well. You are reminded that
  734. you can access the notes on any code, size etc. by choosing "I" for Information
  735. after summoning up the relevant name.
  736. .nofj
  737.  
  738.                                  Free Codenames
  739.  
  740. c0.  V0:       supplied for user specification.
  741. c1.  V1:       supplied for user specification.
  742. c2.  V2:       supplied for user specification.
  743. c3.  V3:       supplied for user specification.
  744. c4.  V4:       supplied for user specification.
  745. c5.  V5:       supplied for user specification.
  746. c6.  V6:       supplied for user specification.
  747. c7.  V7:       supplied for user specification.
  748. c8.  V8:       supplied for user specification.
  749. c9.  V9:       supplied for user specification.
  750.  
  751.  
  752. 1.                              Vertical Motion
  753.  
  754. s4.  Vertunit: Number of units to the inch of the vertical motion code.
  755. c55. Vmi:      Code for general vertical motion (with + and - parameters.)
  756.                  (preferred to Uptab and Downtab: see JGCfgDoc for details.)
  757. c54. Downtab:  Code to execute a forward vertical tab. (See JGCfgDoc)
  758. c53. Uptab:    Code to execute a reverse vertical tab. (See JGCfgDoc)
  759. s49. Vmax:     Maximum allowable argument to Uptab/Downtab. Usually 255 or 127.
  760.  
  761. c21. Pitch     Code to vary pitch. Parameter required.
  762. c24. Spacing:  Code determining line separation.
  763. c99. Lpispacing: Code for linespacing in lines per inch.
  764. c102.LppSpacing: Code used by .spacing n if 10 < n < 120.
  765.                    (if Null, Spacing used)
  766. s52. VFeedunit:Number of units/inch of code setting vertical line spacing.
  767.                  (If Zero, use Vertunits.)
  768. c52. Hln:      Code to perform a half-depth linefeed. (if Null uses Vmi/Downtab)
  769. s61. CrandLn:  If true put out a carriage return before a newline.
  770. s51. CrAndHln: if false, do not precede the halfline code with <cr>.
  771.  
  772.  
  773.                                Horizontal Motion
  774.  
  775. cs3. Horunit:  Number of units to the inch of the Printer's horizontal motion code.
  776. c56. Hmi:      Code for gen. horizontal motion.(See JGCfgDoc for vital details.)
  777. c90. Fwd:      Auxiliary Code used for forward head motion; no escape(27).
  778. c91. Bwd:      Auxiliary Code used for backward head motion; no escape(27).
  779. c92. Horbyte:  Byte Code used for horizontal motion; no escape(27).
  780.                 (above 3 available if HMI is null. see JGCodeInfo)
  781. c25. Point     Code to specify height of characters.
  782. s48. defp:     Font used by prop.spaced characters at other than special cpi.
  783.  
  784. c14. Cpi5:     Code for .cpi5
  785. c17. Cpi10     Code for .cpi10
  786. c15. Cpi6:     Code for .cpi6
  787. c18. Cpi12:    Code for .cpi12
  788. c16. Cpi8.     Code for .cpi8.5
  789. c19. Cpi17:    Code for .cpi17
  790. c20. Nlq:      Code for .Nlq
  791. s46. 10p:      Font used by proportionally spaced characters at cpi10 and cpi5.
  792. s45. 12p:      Font used by proportionally spaced characters at cpi12 and cpi6.
  793. s44. 17p:      Font used by proport'ally spaced characters at cpi8.5 and cpi17.
  794. s47. nlqp:     Font used by proportionally spaced characters at nlq.
  795. s25. 8w:       Width in JGPrint's hor'tal units of chars. obtained by .cpi8.5.
  796. s26. 17w:      Width in JGPrint's hor'tal units of chars. obtained by .cpi17.
  797. s54. 12w:      Width in JGPrint's hor'tal units of chars. obtained by .cpi12.
  798. s27. nlqw:     Width in JGPrint's hor'tal units of chars. obtained by .nlq.
  799.  
  800.                               Starting and Leaving
  801.  
  802. c10. Printer:  Configuration reported in JGPrint/Copy
  803. c11. Init:     Initialising code - starting.
  804. c12. Deinit:   De\-initialising code - leaving.
  805. s57. Vup:      Set true if printer must roll back when reloading for verso.
  806.  
  807.                               Initial Requirements
  808.  
  809. s66. InitQual: Initial quality level (\Y\/Z) for Draft/Letter or Quiet/Fast.
  810. s14. Initfj:   Default initialisation code for filling and justification.
  811.                   (See JGCfgDoc for values.)
  812. s9.  Initcpi:  Default initialisation for width of characters.
  813. s10. Initnlq:  Default initialisation for near letter quality.
  814. s6.  Initsp:   Default initialisation of spacing between lines.
  815. s5.  Initpl:   Default initialisation of pagelength.
  816. s11. Initps:   Default initialisation for proportional spacing.
  817. s10. Initnlq:  Default initialisation for near letter quality.
  818. s12. InitPsep: Default initialisation for paragraph separation.
  819. s13. InitPind: Default initialisation for paragraph indentation.
  820. s17. Initemph: Value of Bold/faint for default initialisation.
  821. s18. Inithue:  Hue for default initialisation.
  822. s15. Inithd:   Number of lines in default header.
  823. s36. Inithdss: Number of lines in default SingleSheet header
  824. s16. Initft:   Number of lines in default footer.
  825. s7.  Initlm:   Default initialisation for left margin.
  826. s8.  Initrm:   Default initialisation for rightmargin.
  827. s19. Initup:   Initial paper windback.
  828. s60: InitSS:   Controls default assumptions about paper feed.
  829.                See JGCfgDoc for codes and advice.
  830.  
  831.  
  832.                          Responding to Style Directives
  833.  
  834. c26. Uln:      Code to start underlining.
  835. c27. Uln0:     Code to cancel underlining.
  836. c28. Ital:     Code to enter italic mode.
  837. c29. Ital0:    Code to cancel italic mode.
  838. c30. Enlg:     Code to enter enlarged mode.
  839. c31. Enlg0:    Code to cancel enlarged mode.
  840. c38. Cdn:      Code to enter condensed mode. (See JGCfgDoc)
  841. c39. Cdn0:     Code to cancel condensed mode. (See JGCfgDoc)
  842. s33. ChSetRomRam: True forces Rom ChSet to Font 0, Ram ChSet to Font 1
  843. s34. Cmd1line: True if Cdn only effects one line; may affect cpi8,17.
  844. c32. Emph:     Code to enter emphasized mode.
  845. c33. Emph0:    Code to cancel emphasized mode; also used to enter faint mode.
  846. c34. Dstrk:    Code to initiate double-strike mode.
  847. c35: Dstrk0:   Code to cancel double-strike mode.
  848. s62. Bold0:    Coded value to find width of Bold/Emph'd characters in font 0.
  849. s63  Bold1:    Coded value to find width of Bold characters in font 1.
  850.                See JGCfgDoc for values and advice.
  851. c46. Supscpt:  Code to initiate Superscript printing. If 0, see s70 to s73.
  852. c47. Subscpt:  Code to initiate Subscript printing.
  853. c48. Sup0:     Code to cancel Superscript printing.
  854. c49. Sub0:     Code to cancel Subscript printing.
  855.                         OR
  856. s71. SupMove   % of Point size to move up fpr Superscripts
  857. s70. Submove   % of Point size to move down for Subscripts.
  858. s72. SuPitch   Pitch Size to use for sub/SuperScripts
  859. s73. SuPoint   Point Size to use for Sub/SuperScripts
  860. c69. Font:     Code to alter the font. ~ JGP.
  861.  
  862.                      Responding to printing mode directives
  863.  
  864. c40. Qual:     Code to enter quiet mode; or used for draft printing.
  865. c41. Qual0:    Code to cancel quiet mode; or used for letter-quality printing.
  866. c42. Incr:     Code to enter incremental mode; High Speed Draft in some configs.
  867. c43. Incr0:    Code to cancel incremental mode.
  868. c44. Bidir:    Code to initiate twoway printing.
  869. c45. Unidir:   Code to initiate oneway printing.
  870. c58. Hue:      Code to change the colour being used for printing.
  871. c59. Copies:   Code to cause printing of multiple copies of each page. NYA
  872.  
  873.                               Proportional Spacing
  874.  
  875. c60. Propchwidth: String used to find the related q font description file.
  876. c36. Ps:       Code to enter proportional space mode.
  877. c37. Ps0:      Code to cancel proportional space mode.
  878. s28. PtDiv0:   Number of dots in standard character width for font 0.
  879. s29: PtDiv1:   Number of dots in standard character width for Font 1.
  880. s30. Ital0:    Coded value to find width of italic characters in font 0.
  881. s31. Ital1:    Coded value to find width of italic characters in font 1.
  882. s62. Bold0:    Number of Hor'tal printer units added to ps bold in font 0.
  883. s63. Bold1:    Number of Hor'tal printer units added to ps bold in font 1.
  884. c98. Abshor:   Positions print\-head in correct absolute horizontal position.
  885. s53. AbshorP:  Controls the use of the absolute horizontal position.
  886. . It is essential to consult JGCfgDoc for details of how to use n98 and s53.
  887. . Consult JGCfgDoc for information about the use of all these facilities.
  888.  
  889.                              Position of Printhead
  890.  
  891. c76. Horpos:    Obsolete - see Abshor
  892. c77. Vertpos:  Code to set the Vertical position of the print head. ~ JGP.
  893. c78. Pushpos:  Code to stack the current position of the print head. ~ JGP.
  894. c79. Poppos:   Code to unstack the former position of the print head. ~ JGP.
  895. c68. Hmhd:     Code to home the head to the left edge.
  896.  
  897.               For more details of the above see MOVE and CODE.
  898.  
  899.  
  900.                            Page Shaping and Breaking
  901.  
  902. c65. SFeed:    Code to cause Sheet Feed issued at page breaks.
  903.                NB. Should be Null for continuous stationery.
  904. c66. Papout:   Code to enable the paper out warning. ~ JGP.
  905. c67. Papout0:  Code to disable the paper out warning. ~ JGP.
  906. s20. Skiplength:Length skipped by printhead at top and bottom of page.
  907. s21. Skiplines:Lines skipped by printhead at top and bottom of page.
  908. s22. Skipsingle:Length short on single sheet paper due to printer grip
  909. c63. Land:     Code to introduce Landscape printing. NYA.
  910. c64. Port:     Code to return to Portrait printing.  NYA.
  911. s67. Sob:      Code number for code that sets Shift Out, e.g. Landscape (63)
  912. s68. Sib:      Code number for code that Shifts In, e.g. Portrait (64)
  913. c100.Paperform:Set Paperformat code for printer. ( See JGCfgDoc for this & 102.)
  914. s58. Paperform:Initialising value for the code paperform (101).
  915. c101.Feedfrom: Feed a new sheet of paper from the required printer tray etc.
  916. s59. Feedfrom: Initialising value for the code feedfrom (102).
  917. s23. DoFF:     Emit form feed on continuous stationery.
  918. s38. Pagecycle:Frequency of printer pause at page-break for paper reset.
  919.  
  920.                        Character Definition and Selection
  921.  
  922. c61. Defch:    Code to define a character. ~ JGP.
  923. c62. Graph:    Code to introduce a graphical figure. ~ JGP.
  924. c50. Chram:    Code to select Secondary characters,  defined in RAM or for init.
  925. c51. Chrom:    Code to select ROM characters, primary set defined for init.
  926. c89. Romtoram: Code to transfer the Rom characters to Ram.
  927.               NB. See important warning in JGCfgDoc.
  928.  
  929.                 Interpretation of Bytes( see STYLE for details)
  930.  
  931. c70. Symbols:   Obsolete - see Tochars
  932. c71. Tochars:  Code to interpret control bytes as printed characters.
  933. c72. Toctrl:   Code to re-enable bytes as control characters.
  934. c73. Tochar1:  Code to interpret next control byte only as printed character.
  935. c94. PoundC:   Code used to print pound sign; normally Null & set by s1.
  936. s1.  pr.pound: Byte that produces pound on the printer.
  937. s42. mc.pound: Byte produced by pound(£) key on text preparation machine.
  938. s56. Mc.pound2:A second byte construed as Pound sign in printing. 0 ignored.
  939. c93. Hashc:    Code used for hash (byte 35); normally Null, & set by s2.
  940. s2.  Hash:     Byte to be printed when hash(35) was used in the input.
  941.  
  942.  
  943.  
  944.                               Patterns for Filling
  945.  
  946. c80. Pathor:   Code to set a horizontal pattern for filling. ~JGP
  947. c81. Patver:   Code to set a vertical pattern for filling. ~JGP
  948. c82. Patstyle: Code to set the style of pattern for filling. ~JGP
  949. c83. Patgray:  Code to set the gray level of a pattern. ~JGP
  950.  
  951.                    Moving the Screen Cursor (not the printer)
  952.  
  953. c84. Rc:       Code to move screen cursor right one character; no escape(27).
  954. c85. Lc:       Code to move screen cursor left one character; no escape(27).
  955. c86. Uc:       Code to move screen cursor up one line; no escape(27).
  956. c87. Dc:       Code to move screen cursor left, deleting; no escape(27).
  957.  
  958.                                  Miscellaneous
  959.  
  960. s128.Esc:      If true, precedes codes by 27 (except c85-92)
  961. c88. Source:   String to identify the originator of a configuration file.
  962. s39. Ftpgrestart:True to restart footnote numbering on successive pages.
  963. s40. Romchar:  Extra char. to prevent alternative ROMs accepting command; obs.
  964. c103.Typeface: Code to effect choice of typeface.
  965. c104.Wrapon:   Newline if too many characters supplied on a line.
  966. c105.Wrapoff   Lose characters if too many supplied on a line.
  967. c96. Verso:    Must be 27, for JGPCopy to allow reversal of paper.
  968. c97. Pause:    Must be 0, for JGPCopy to wait for new paper.
  969.  
  970.                                Obsolescent
  971.  
  972. c57. Cr:       Code which can be issued instead of byte 13 for carriage return.
  973. c22. Lm:       Code for left margin.                       (no longer used)
  974. c23. Rm:       Code for right margin. Not used by JGPrint. (     ""       )
  975. s35. Cr.to.ledge:True if CR moves printhead to left edge; unneeded if Lm Null.
  976. s41. Splpp:    If true, argument of command Spacing(24) is always linespage.
  977. c74. 9char:    Code to treat byte 9 as a character,
  978. c75. 27char:   Code to treat byte 27 as character, not escape, in middle of line.
  979. s37. Nolf:     Do not insert linefeed when sending carriage return to printer.
  980. c13. Intntnl:  Select international alphabet.
  981. s24. Decimal:  If true, move dirs.
  982. c95. Copy:     Used to mark files intended to be copied.
  983.  
  984.