home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / textutil / jgpsuite / Docs / JGEdDoc1 < prev    next >
Encoding:
Text File  |  1993-05-18  |  24.0 KB  |  530 lines

  1. .if 0
  2. This is a continuation of JGEdDoc, included by .\ \+JGEdDoc1 when JGPrint/Doc is
  3. applied to JGEdDoc. It lacks prologue directives , and, therefore, JGPrint/Doc
  4. should not be applied directly to it. This note never gets JGPrinted, since 0
  5. after .if is construed as false. It must, of course, always be in the same
  6. directory as JGEdDoc. I have left it as type JGEd, since JGPrint cannot usefully
  7. be applied to it directly.
  8. .fi
  9. .cp 6
  10. .col
  11. |Accessing CLI from the Macroline.
  12.  
  13. JGEd can access the CLI in extended mode for * commands using */<CLItext>/ (x is
  14. a synonym for *, and saves finger stretch). A failure will be reported. Only
  15. modules and internal commands can be executed.
  16.  
  17. Remember, F1 in the macroline inserts there the path to the file being edited.
  18.  
  19. Some JGEd commands duplicate available CLI commands. I have not given a JGEd
  20. command for *Alphabet, since there is no SWI to do it; system Variable Set is
  21. redundant and its absence is no loss; ev<n>, setting JGEd$var, is certainly
  22. needed, as is iv/<system variable>/, which inserts the string value into the
  23. text at the cursor position. I find myself often using dd and ft (qv.).
  24.  
  25. .if \u10 eq arc
  26. .cp 6
  27. .col
  28. |Filetype
  29.  
  30. JGEd picks up the filetype of the file it is editing, and puts out an updated
  31. version with the same filetype and the current timestamp. If editing a new file,
  32. it gives it the default type JGEd (currently &203). Files written on the fly by
  33. SaVe, WriteBlock and Automatic Save are similarly stamped. The extended command
  34. ft/<t>/ changes the filetype recorded. <t> can be a filetype name, eg JGEd, or a
  35. number, default style Hexadecimal.
  36.  
  37. When Acorn allocate me filetypes, it should not be necessary to change any
  38. code; see JGDispute for what will be needed.
  39.  
  40. .fi
  41. .cp 6
  42. .col
  43. |Line Separators
  44.  
  45. On input, JGEd recognises any of the four strings <13><10>, <10><13>, <10>, <13>
  46. as a line separator. (It holds each line padded out to wordlength, together with
  47. some structural information.) It picks out the first line separator it
  48. encounters, and uses this to separate the lines of all files it outputs. The
  49. extended commands Line Both, Line Newline and Line Return allow all but the
  50. second to be reset. On a New file, the default is lb.
  51.  
  52. .cp 6
  53. .col
  54. |Wordwrap and Formatting
  55.  
  56. Left Margins, Right Margins and Tabs can be Set, and the state display F1+5
  57. displays a ruler based on their settings. The screen acts as a window that
  58. scrolls both vertically and horizontally. The TAB key, in possible association
  59. with SH and CTRL, tabs right and left, without/with adding to/deleting from the
  60. line. TaB is the extended command, to move right inserting spaces, BackTab, to
  61. move left, deleting. Left Tab and Right Tab move the cursor only.
  62. .if \u10 eq arc
  63.  If the cursor is 'after' the rightmost screen character it shows under that
  64. character and does not cause window movement. The caret will appear off-right of
  65. the window as two small dots. Initially, or if the right-margin is screen width,
  66. changing mode resets the right margin to screen width.
  67. .fi
  68.  Words wrap at the right margin. Auto-/No Indentation set new lines below the
  69. first non blank in the previous line, at the left margin. Auto- is the default.
  70. AUtoindent implies that at a newline, the current line\-indentation will be
  71. preserved.
  72.  
  73. ForMat(f10) reformats lines according to these rules. Format for
  74. jgPrint/CTRL-SHIFT-F10 does not reformat lines that begin with a '.'.
  75.  
  76. .cp 6
  77. .col
  78. |Character Set
  79.  
  80. The default character set is bytes 32-126, 128-255. INSERT followed by a number
  81. followed by a non\-digit inserts the non\-keyboard characters in both text and
  82. macro\-line. &+hexadecimal digits is also accepted. The user must define
  83. non\-displayed characters, e.g. 128-159, if these are to be displayed. Numbers
  84. outside the allowable range will provoke a report. CTRL-F10 switches on the
  85. ability to accept bytes 0-31,127. They display as inverse video of the
  86. representation of the byte + 32, except that 127 is shown as inverse ~.
  87.  
  88. See above for how to redefine the pixel representation of the bytes.
  89.  
  90. Bytes 9-13 can be inserted during an editing session, but may be interpreted on
  91. reentry after saving as backspace, delete etc. These, and others, may well also
  92. be troublesome on entry to other programs.
  93.  
  94. (All switches described below can also be set from the JGEd icon bar icon
  95. options menu.)
  96.  
  97. The characters accepted can  be changed by a switch on the commandline;
  98. .ht 10
  99. .setst :\t:
  100. .makel 10col
  101.  
  102. .nost
  103. -c \t}The control bytes 0-31 and 127 are allowable ab initio.
  104.  
  105. .usel base
  106. If during input, a control byte is encountered although -c was not requested,
  107. the user is asked whether she wishes to allow it through as though -c were on
  108. the macro\-line, or to exit. Note that <13> and <10> can be inserted in a line,
  109. but, at present, the line separator rules would, in practice, make JGEd
  110. unsuitable as a binary editor.
  111.  
  112. .cp 6
  113. .col
  114. |Spelling
  115.  
  116. JGEd allows David Pilling's Microspell module to be accessed while editing.
  117. sp/<string>/ puts, above the current line in the text, the list of words that
  118. match <string>; these words are made into a block for easy deletion.
  119.  
  120. Spell-oN and Spell-ofF are accessible as extended commands. Spell-off is
  121. executed on entering and leaving JGEd, and, temporarily, while entering commands
  122. on the macroline.
  123.  
  124. JGEd will try to load the module from the currently selected directory, the
  125. library or from <jgp$dir>.
  126.  
  127. For further details see Microspell's documentation. NB It is intended to
  128. replace this with a similar 'speller ' that can be more closely integrated
  129. with JGEd.
  130.  
  131. .cp 6
  132. .col
  133. |Numerical Calculation
  134.  
  135. JGEd has a small built-in calculator consisting of a Number register and a
  136. Memory register. The extended command nt transfers the value in the Number
  137. register to the Text.
  138.  
  139. t=, t+, t-, t*, t\ find the next number, x say, in the Text; the number register
  140. is then set to, respectively:
  141. .col
  142. |x, v+x, v-x, v*x, v/x
  143. where v is the original value in the number register.
  144.  
  145. l=<n>,....l/<n> are similar, but find the number to act on immediately
  146. following them in the macroLine.
  147.  
  148. m=,....m/ derives a value for the number register from the Memory register,
  149. which has been calculated from values set in the number register by =m,..../m.
  150. 0m clears the memory register.
  151.  
  152. The commands nr and ns respectively yield, in the Number register, the square
  153. Root and the Square of its previous value.
  154.  
  155. nx cancels the last operation on the Number register; particularly useful if
  156. there was a number you had forgotten about in the text before the one you really
  157. wanted.
  158.  
  159. Each time you operate one of the above operations, the value in the number
  160. register is reported, with, if it is a positive integer, the hexadecimal
  161. equivalent (given in brackets). If the memory register is non-zero, its value is
  162. also given. The number of successful operations is quoted, to help if you
  163. want to work out an average.
  164.  
  165. The "l" commands will accept hexadecimal numerals preceeded by &, so you can
  166. easily transfer between decimal and hexadecimal numerals.
  167.  
  168. Using pd<n> specifies the number of Places of Decimals that will be available;
  169. the maximum number that can thereafter be put in the registers without
  170. overflow is reported. Initially <n> is set to 2. Anything on the macroline after
  171. pd(n) is ignored.
  172.  
  173. If the operation you request causes an internal over/under flow, (recoverable)
  174. system messages will report the fact.
  175.  
  176. .cp 6
  177. .col
  178. |Printing while editing in Non-Wimp state
  179.  
  180. If Print Block or Print File (/<filename>/) is requested from the macro line the
  181. specified block or file is sent to the printer stream while the editor is
  182. waiting for input from the keyboard; response seems barely affected. If you
  183. attempt to leave JGEd before all bytes have been transferred to the printer('s
  184. buffer), it will wait to return to the commandline prompt. Use Quit and Resume
  185. or save(Z) and Resume (qv.) if there is another file you want to edit. I use my
  186. associated JGPrint to produce print image files for this purpose, rather than
  187. using it direct to the printer. You can also use wb/(printer:/ or sv/printer:/
  188. from the Wimp State, but this may cause delay, or you can drag to !Printers.
  189.  
  190. .if \u10 eq arc
  191.  Indeed, the application JGPCopy, reached through the JGPrint Icon bar menu, or
  192. implicit for a JGPCopy file, is now usually better than either.
  193.  
  194. This facility is not available in (wimp-)sharing state; output the file as a
  195. JGPCopy file and double click, or use JGPCopy in the JGEd iconbar menu.
  196. .fi
  197.  
  198. .cp 6
  199. .col
  200. |Starting
  201.  
  202. JGEd is intended to be useful in many system contexts; therefore, some of the
  203. information about starting and ending may not be relevant to your needs. Please
  204. skip as appropriate,  certainly on a first reading.
  205.  
  206. JGEd always requires a filename to edit, and will default to grabbing all store
  207. available as an editing buffer, unless in the desktop, where the amount grabbed
  208. can be set from the icon-bar options menu. If there is a file of the given name, JGEd
  209. will read it into the buffer, and give its length in bytes; otherwise it will
  210. announce that the file is new. If lines are too long (>255 chars), they will be
  211. arbitrarily split and the fact reported; if the file is too long to load in the
  212. buffer, this will be reported; if it is too long to be expanded within the
  213. buffer, it will be reported as truncated. In the desktop, JGEd cannot, in
  214. effect, be used without a filename, but, from the commandline and in scripts, if
  215. a filename is omitted, one will be prompted for, followed by switches.
  216.  
  217. -b<n> (see below) restricts the editing-buffer size. However, all available
  218. store is, nevertheless, grabbed as addressing space unless the desktop is in
  219. use. 'Extra\-large' files, therefore can best be edited in the absence of the
  220. desktop. (This may be modified eventually.)
  221.  
  222. Running JGED by dragging a file's icon to the JGEd icon bar icon, or by double
  223. clicking on a JGEd type file icon restricts the addressing space to satisfy the
  224. buffer size (and other switches) set in the icon bar icon menu; initially, a
  225. 80k+ buffer possible is provided. If a 0 buffer is requested, the maximum
  226. available will be supplied.
  227.  
  228. In addition to the commandline switch(options) -b<n> and -c, there are also
  229. available:
  230. .usel 10col
  231.  
  232. .nost
  233. -p \t}Use the contents of the user variable jged$path as a prefix in the
  234. specification of the file to be edited. Normally this will be a directory path
  235. ending with '.'. JGEd does not use load$path, since it needs a full filename to
  236. save. jged$path is not used for Insert File, Write Block, Save or Q/Z and
  237. Restart. This is not available from the desktop, since the full filename is
  238. provided by clicking. See also the use of F1 in the macroline below.
  239.  
  240. .nost
  241. -m<n> \t}Open the editing window in mode <n>.
  242.  
  243. .nost
  244. -v \t}View the file without updating it; attempts to do so will be reported. The
  245. immediate command CTRL-F11 switches View mode off and on.
  246.  
  247. .nost
  248. -u \t}Cancels the automatic backup facilities (see below).
  249.  
  250. .usel base
  251. Other Switches are required by the JGP Manager, but need not concern the user.
  252.  
  253. These switches, and the variables that follow, are particularly useful in
  254. scripts; the option menu provides similar facilities in the desktop.
  255.  
  256. On entry, the mode is set from jgp$mode if the desktop is active; this can be
  257. cycled through the 16\-colour modes from a window in the options menu of the
  258. JGED icon\-bar icon; the switch -m<n> can be used from the command line. If
  259. this system variable is unset, the mode in which it is called is used. I set
  260. this variable in the !boot file of !jgp, and you may wish to amend my setting,
  261. or do without it.
  262.  
  263. The left and right margin are set to the full screen\-width, tabs are set every
  264. 4 characters, and other default settings are initialised. Note that a character
  265. in the rightmost column does not cause line overflow on the screen.
  266. 'wimp\-sharing mode' is entered, if available in this mode.
  267.  
  268. Second, the system variable jged$init, if set, is put on the macro\-line and
  269. executed with the screen disabled, enabling default settings to be modified.
  270. Third, the system variable jged$line, if set, is put on the macro\-line, but not
  271. executed. Finally, a shortened form of the standard display of the internal
  272. state, which shows the macro\-line, is put above the copyright initialisation
  273. report. (F1+5 gets this report during editing.)
  274.  
  275. These reports disappear when the first key is pressed. In my scripts, I usually
  276. unset the initialising variables after JGEd returns.
  277.  
  278. .if \u10 eq arc
  279. In the Desktop, a red caret signifies 'wimp-sharing mode', and a winking cursor
  280. 'non\-wimp\-sharing mode'. CTRL-f12 switches between these two, reporting as it
  281. does so. In the former, other desktop processes run concurrently while JGEd
  282. shows the caret, i.e. waits for a key; JGEd's internal concurrent printing
  283. cannot be used in wimp\-sharing mode.
  284.  
  285. On any MoDe/<n>' command, the right margin, if full width, is reset to full
  286. width. WimpMoDe(n) modifies the desktop mode, but does not change jgp$mode
  287. (determining the initial mode of the editing window). You must set the System
  288. Variable jgp$mode from the commandline, if you want to use other
  289. than a standard 16-colour mode.
  290.  
  291. .fi
  292. .cp 6
  293. .col
  294. |Writing Blocks, SaVing, Autosave, Backup and automatic backup
  295.  
  296. There are very extensive backup facilities. SaVe/filename/ is analogous to
  297. wb/fn/, but for the whole text; SHIFT-F9 saves the text to overwrite the
  298. original file. as<n> sets the AutoSave cycle to <n>. (ns cancels, default cycle
  299. 512.) That is to say that the text is saved each <n> editing acts in a file
  300. (named Autosave), in the directory of the file being edited. This is intended to
  301. safeguard you if the machine crashes. I recommend reducing 512 if you are
  302. thinking on screen. See below for shareware restrictions.
  303.  
  304. If you Exit (CTRL-PRINT/zr), any file called Backup> in the directory of the
  305. file you are editing is deleted, and the file you are editing is renamed Backup>
  306. before the text buffer is saved.
  307.  
  308. The name of the file being written is reported, and when it has all been
  309. written, its length is reported. This message remains for 1 second unless some
  310. other overwrites it.
  311.  
  312. If a requested file cannot be opened, 'edsave>' in the same directory is
  313. attempted. If this fails, it is reported, and you can try another directory.
  314.  
  315. .if \u10 eq msdos
  316. In MSDOS, these saving files have the same first part as the name of the file
  317. you are JGEding, but have extensions .bak, .asv and .bkp. Automatic Backup
  318. (below) is to a:\<fdir>\<fname>.<fext>.
  319.  
  320. .fi
  321. Automatic backup is quite different from the preceeding facilities. Its purpose
  322. is automatically to provide backup on a floppy whenever you exit or quit from a
  323. file you have just saved.
  324.  
  325. In the Desktop you will be prompted by a window asking you "Backup <leafname>?",
  326. and you should press the buttons to acheive what you want. The facilities are
  327. also available outside the desktop as described below.
  328.  
  329. Without the desktop, you are prompted Backup?(Y) : after JGEd has completed all
  330. other needed tidying up. If you respond Y/y, assuming jged$bu is unset, you will
  331. be prompted "<diskname>. please; adfs::", and you should type in the name of the
  332. floppy on which you want to backup; there must be, in the floppy's root
  333. directory, a directory of the same name as the one which houses the file you are
  334. editing. You will be presented with the macroline command:
  335. .col
  336. |sv/adfs::<diskname>.$.<dirname>.<filename>/
  337. type RETURN or click select to execute this and return to the desktop.
  338. Alternatively you can edit this extended command before you execute it; you must
  339. include $. in your save string for where you want to save to be remembered. If
  340. you dont want to save, delete out the command, and you will not change jged$bu;
  341. alternatively use a vertical cursor to kill the macroline.
  342.  
  343. This system variable jged$bu should be of the form
  344. <filesystem>::{<diskname>}.$., where <filesystem> is normally adfs; if defined
  345. it will be used instead of the dialogue as the first part of the save string.
  346.  
  347. Note that jged$bu is reset after each save from the, possibly edited, sv
  348. command.
  349.  
  350. Autobackup is set and unset by CTRL-COPY, or unset by the extended command bk.
  351. Default initially is on, but see also the JGEd icon option menu. Bz cancels an
  352. existing backup selection, and, also, proposes backup even if the file has not
  353. been modified.
  354.  
  355. If you have reached the autobackup prompt, but do not in fact want to do so,
  356. type '.' to get the sv/../, but don't execute it. Remember, F11 empties the
  357. command line, so use it and then type RETURN.
  358.  
  359. Bug (almost harmless): if the directory into which you propose to save does not
  360. exist, the filer may complain with "channel"; however, the save is the last
  361. thing to be done except for updating jged$bu, so nothing is lost, unless you are
  362. in a script. In my scripts, therefore, I set jged$init to bk, and handle my own
  363. backups. NB if JGEd has left some gunge on the screen, F12 return will clear it.
  364.  
  365. .cp 6
  366. .col
  367. |Ending
  368.  
  369. Without leaving JGEd, you can Quit one file and Restart with another, or save
  370. your text and restart with another (zr<f>). (If -p, jged$path is not used.) What
  371. follows applies only to finally leaving JGEd. Automatic backup is performed if
  372. appropriate.
  373.  
  374. JGEd$var is set on exit to 0 if the text has been not been edited between the
  375. time it was last saved and exiting, whether via Exit(CTRL-f8) or Quit(f9), or
  376. the latent window's menu. If the text has been modified, but you confirm that
  377. you want to quit, JGEd$var is set to 1. However the extended command ev<n> can
  378. set it to n, and this will not be overset by the exit rules. This is intended
  379. for the script user (if <jged$var = 0 then...).
  380.  
  381. In the commandline, cursor editing is re-enabled and the function key settings
  382. restored to their default value. In the desktop, the original Wimp\-mode is
  383. restored unless a wm<n> macro has been done.
  384.  
  385. In the commandline, the text background is set to logical colour 0, and the
  386. foreground to logical colour 3. There are extended commands (xc<n> etc.) to
  387. modify these colours , and the extended command sh alters the physical shade
  388. associated with a logical colour; a series of prompts is provided for the
  389. user's convenience.
  390.  
  391. Lastly, jged$exit is put in the macro\-line and executed. Unlike jged$init,
  392. writing is not disabled. Finally, if appropriate, automatic backup is offered.
  393.  
  394. From the desktop, colors are unchanged.
  395.  
  396. .cp 6
  397. .col
  398. |Shutting Up
  399.  
  400. Shut Up <n> sends a message to JgpCopy to refrain from sending its continue
  401. window for n seconds; 0 is construed as as long as possible. There is a menu
  402. line in JGPCopy's icon bar menu to select continue.
  403.  
  404. .cp 6
  405. .col
  406. |Boast
  407.  
  408. The editor one uses most is always the most attractive. Moreover, before one has
  409. internalised an editor's commands, using it has to be a somewhat ponderous
  410. strain. I am a lazy clever fellow, and JGEd should appeal to other such.
  411. Allowing for both my own and a newcomer's natural prejudice, I cite the
  412. following as reasons to investigate and acquire competence in JGEd.
  413.  
  414. .usel 10col
  415. \u11.The macros that are built up on the macro\-line are the most powerful I
  416. have ever encountered on a micro save for those of EMACS. Moreover they are far
  417. easier to construct than those of EMACS. However, I readily admit that EMACS
  418. allows very much more elaborate and powerful macros.
  419.  
  420. \u11.The facilities to edit, save and restore the macro\-line are very
  421. convenient. Saving macros in the system variables Key$i enables their definition
  422. and use to span several editing jobs; indeed, the copying mechanism allowing
  423. them to be copied between text and macroline enables their use to span editing
  424. sessions. This makes it more worth building and debugging crafty macros.
  425.  
  426. \u11.The use of f12 as a single keystroke to repeat a useful macro\-line is
  427. ergonomic and elegant.
  428.  
  429. \u11.The commands available and their assignment to keys and codes suits me very
  430. well, and, I think, would suit most other people. (I have a few keys unused, and
  431. unlimited extended commands, and would welcome suggestions.) Transposing lines
  432. is, as a programmer, a particular joy.
  433.  
  434. \u11.Documentation and diagnostics are accessible and comprehensible; a
  435. multi\-window system would, of course, make access to on\-line documentation
  436. more flexible.
  437.  
  438. \u11.JGEd's syntactic regularity makes it easy to ignore facilities one does not
  439. need, and helps to make acquiring them easier when needed.
  440.  
  441. \u11.JGEd's capability of sending a file to the printer concurrently with
  442. editing is a great time\-saver, if it is not appropriate to use wimp-sharing
  443. mode in the desktop.
  444.  
  445. \u11.Treating JGEd and the JGEd/Print handler that manages the icon bar icons as
  446. independent concurrent processes enables JGEd to be available without soaking up
  447. the 100K or so needed for its code when it is not in use. I have met other
  448. applications that are not so considerate.
  449.  
  450. \u11.The undo facilities much exceed those of many other systems.
  451.  
  452. \u11.Automatic backup is very valuable when one does not want to bother with
  453. scripts.
  454.  
  455. \u11.An 80 page Wordstar file came across; including working out what was
  456. required, it took about an hour to undo Wordstar's footprints and recover a
  457. plain ASCII text.
  458.  
  459. .usel base
  460. Obviously, this is not an editor for those people who restrict themselves to a
  461. dozen Wordstar commands. I sometimes say that it takes up to three years to
  462. become a master JGEd user, but this is more a reflection of the immense power
  463. and flexibility of the macro lines rather than of any difficulty in
  464. straightforward use. I see no reason why a given editing capability should not
  465. be acquired in JGEd in the same or less time than it would be acquired in any
  466. other editor\/wordprocessor; indeed the regular structure and connotative names
  467. may make it easier than for some. The use of JGPCopy, or JGPrint to screen,
  468. obviates a substantial part of the inconvenience of using an editor rather than
  469. a word\-processor which does what it can to provide a WYSIWYG screen display.
  470.  
  471. .usel base
  472. .cp 6
  473. .col
  474. |Future Developments
  475.  
  476. "Grovel" would be a complementary alternative to this title, or you may call it
  477. "What's Wrong with JGEd" or "what you Will".
  478.  
  479. .usel 10col
  480. .nost
  481. \s1=1 \t}JGEd should, like EMACS, allow multiple buffers and screens; the latent
  482. window gives some but by no means all the usefulness of these; as at 4/93
  483. editing within arc desktop windows is planned to be added to the latent window
  484. and the fullscreen window.
  485.  
  486. \u11.It would be nice to have one window in which one was JGEditing, and another
  487. to which the consequences of passing that text through JGPrint, my system for
  488. laying out text and driving printers, was slaved. It would be even nicer if one
  489. could edit in either window.
  490.  
  491. \u11.In order to patch code, JGEd could have a macro\-line switch to produce
  492. 'pseudo\-lines' of a fixed length that would then be output without line
  493. separators. If it can be done without degrading JGEd's performance in the more
  494. usual case, the display could be adapted to show both chars and hex.
  495.  
  496. \u11.Repeats are allowable in the macro\-line, but not conditionals; I have an
  497. open mind as to how useful conditionals are, and would be glad to receive
  498. comments.
  499.  
  500. \u11.Find and count strings could allow regular expression pattern\-matching
  501. rather than requiring an exact match.
  502.  
  503. Magic characters, edit's response to these, is by no means as flexible as could
  504. be written.
  505.  
  506. .usel base
  507. An example: a macro to do a 'tab on all lines that begin with a space' can be
  508. built, but not one that distinguishes between lines beginning with a letter and
  509. those beginning with a number. I have rarely had use for this, but would welcome
  510. examples of genuine use. Magic characters could cope with this.
  511.  
  512. The first three are inter-related, and are also associated with a requirement to
  513. share code between editing instances. (Though I do not think JGEd should become
  514. a module.)
  515.  
  516. .cp 6
  517. .col
  518. |Filing Systems
  519.  
  520. JGEd runs from the adfs filing system, the SCSI filing system, and the RAM
  521. filing system. It has not been tested on the NET filing system. It will read
  522. from, but not save to, Archives and Dos disks through early versions of MultiFS.
  523.  
  524. .cp 6
  525. .col
  526. |Licence
  527.  
  528. JGEd is copyrighted, and only thieves and knaves use it outside the terms of the
  529. Licences detailed in JGLiceDoc.
  530.