home *** CD-ROM | disk | FTP | other *** search
/ Media Share 13 / mediashare_13.zip / mediashare_13 / ZIPPED / PROGRAM / AE.ZIP / ae.txt < prev    next >
Text File  |  1994-03-21  |  50KB  |  1,248 lines

  1. Andys Editor Help-file
  2.  
  3. Minimum information required to get started using AE, using supplied .INI file.
  4.  
  5.     ~X means Shift-X, ^X means Ctrl-X and @X means Alt-X.
  6.  
  7.     Esc    to cancel current command, or bring up command menu.
  8.     Arrows    Move around buffer (or traditional Wordstar cursor diamond).
  9.     F3    Enters fold (or ^L ^I).
  10.     F4    Exits fold (or ^L ^O).
  11.     @X    Exits editor (or other_exit from command menu).
  12.  
  13. /*...sfiles supplied:0:*/
  14. If you are just interested in running AE under OS/2 and DOS, you need :-
  15.  
  16.     ae.exe        Executable for DOS 3.3 or later, or OS/2 1.x or 2.x.
  17.             You need this file. Put it on the PATH.
  18.  
  19.     ae.ini        Initialisation file used by ae.exe by default.
  20.             Supplied suitable for use under DOS and OS/2.
  21.             Best to print this and keep handy for a day or two.
  22.             You need this file. Put it where ae.exe is put.
  23.  
  24.     ae.ico        OS/2 Icon for AE. Optional. Put it where ae.exe is put.
  25.  
  26.     ae.txt        This file. Optional.
  27.  
  28.     ae.ng        Norton Guide for AE. Optional.
  29.  
  30.     flatten.exe    Produce flat output from folded file.
  31.             Good for making printable output.
  32.  
  33. If you wish to run on a RS/6000 under AIX.
  34.  
  35.     aeaix.bin    RS/6000 AIX executable
  36.             Upload to AIX machine in binary mode as file "ae".
  37.             Put it on the path.
  38.  
  39.     aeaix.ini    RS/6000 initialisation file.
  40.             Much like the ae.ini for DOS and OS/2.
  41.             Upload to AIX machine in ascii mode as file ".aerc".
  42.             Put it in your home directory.
  43. /*...e*/
  44. /*...sintroduction:0:*/
  45. Welcome to Andys Editor. This editor was designed as a language configurable
  46. folding source code editor. This editor provides these features :-
  47.  
  48.     Folding. The ability to group lines into a larger 'meta-line'.
  49.     Block operations.
  50.     Yank and put model for line copying etc.
  51.     Deleted item stack to allow multiple undeletes.
  52.     Extended regular expression searching.
  53.     Multiple buffers at any one time.
  54.     Portability across many machines.
  55.     Bracket matching.
  56.     User configurable keyboard binding.
  57.     Shelling of nested processes (and filtering of folds through commands).
  58.     The editor is relatively small for what it does.
  59.  
  60. This editor is a folding editor. This is a highly useful feature. Once you have
  61. got used to the folding paradigm, you will not want to use a flat editor again!
  62. /*...e*/
  63. /*...swhat is a folding editor\63\:0:*/
  64. Folding is an idea borrowed from the language occam by INMOS. A fold is a group
  65. of lines that may be considered a unit and described by a single line.
  66.  
  67. Eg: Consider the flat piece of code :-
  68.  
  69.     while not eof(f) do
  70.       begin
  71.         read(f, c);
  72.         write(c)
  73.       end
  74.  
  75. This could be folded to give :-
  76.  
  77.     while not eof(f) do
  78. /*...secho out another character from the file:10:*/
  79. begin
  80.   read(f, c);
  81.   write(c)
  82. end
  83. /*...e*/
  84.  
  85. The ... line hides away the details of whats going on. Obviously it makes more
  86. sense to fold larger and more complicated peices of code away. Its a bit like
  87. inline subroutines. A particularly nice way to fold Pascal programs looks like
  88. this :-
  89.  
  90.     program fred(input, output);
  91.  
  92.       {highly trivial example of folding}
  93.  
  94.     var
  95.       i: integer;
  96.  
  97. /*...sinitialise:10:*/
  98. procedure initialise;
  99.  
  100. /*...ssign_on:12:*/
  101. procedure sign_on;
  102.  
  103. begin
  104.   writeln('FRED version 1.0')
  105. end {sign_on};
  106. /*...e*/
  107.  
  108. begin
  109.   sign_on;
  110.   i := 1
  111. end {initialise};
  112. /*...e*/
  113. /*...smain_body:10:*/
  114. procedure main_body;
  115.  
  116. begin
  117.   writeln('i is ',i:1)
  118. end {main_body};
  119. /*...e*/
  120.  
  121.     begin
  122.       initialise;
  123.       main_body
  124.     end.
  125.  
  126. As you can see, this style of folding allows you to rapidly find any given
  127. procedure and enables you to see the structure of the program as a whole. Also,
  128. you no longer need to page up miles to find the variables!
  129.  
  130. Folds can be open or closed. The ones shown already were closed, but if they
  131. are opened they look like this :-
  132.  
  133.     while not eof(f) do
  134. /*...Secho out another character from the file:10:*/
  135. begin
  136.   read(f, c);
  137.   write(c)
  138. end
  139. /*...e*/
  140.  
  141. This allows the user to see whats in them without actually entering them.
  142.  
  143. There is a second kind of fold, called a virtual fold which allows links to
  144. other files to be made. For example you might see :-
  145.  
  146.     program fred(input, output)
  147.     
  148.     {$I 'header.inc'}
  149. /*...vheader\46\inc:8:*/
  150.  
  151.     begin
  152.       etc.
  153.  
  154. If you use 'fold_in' on the virtual fold line, then the file is read and
  155. selected. I suggest you don't try it on the virtual fold above, since it is
  156. unlikely you have a file header.inc for AE to load!
  157.  
  158. If you later use 'fold_out' from within the top fold of header.inc file, then
  159. the file is optiobally written if modified, discarded, then the original buffer
  160. is selected. In this way many files may edited as if they were only one file.
  161.  
  162. Virtual folds may also be opened, in which case they look like this :-
  163.  
  164. /*...Vheader\46\inc:8:*/
  165.  
  166. You cannot see the contents of an open virtual fold, since they are in another
  167. file, and are not loaded until the virtual fold is entered.
  168.  
  169. The significance of opening virtual folds becomes apparent in searching, where
  170. it is possible to search just open virtual folds, and to skip closed ones,
  171. during a global search.
  172. /*...e*/
  173. /*...swhat is on the screen\63\:0:*/
  174. If you are in the editor now, looking at this fold you should see the following
  175. on the top 3 lines :-
  176.  
  177.     1) The name of this help file (probably c:ae.txt) at the top left.
  178.     2) The current folds tag just below that (whats on the screen?).
  179.     3) A blank line below that (where prompts and error messages appear).
  180.     4) The language name (probably top) for the current buffer.
  181.     5) The current line and column numbers at the top right.
  182.        The line number is the 'flat' line number (ie: over the whole file).
  183.     6) One or more of the words 'autoindent', 'overtype' and 'insert'.
  184.        These specify the current editing mode.
  185.     7) Either ^I or a number specifying either the number of spaces
  186.        per press of the tab key or that real chr$(9) tabs are in force.
  187.  
  188. Below that, you should see this text.
  189.  
  190. You will also see a line with a single ^ on it below this text. This marks the
  191. end of the current fold. Typing on it automatically inserts a new line. Any
  192. unused lines are marked with a ~ in UNIX vi(1) style.
  193. /*...e*/
  194. /*...scommand line and startup:0:*/
  195. When this editor loads it does the following :-
  196.  
  197. Processes the command line arguments :-
  198.  
  199.     ae [-l] [-r] [-w width] [-h height] [-i inifile] {filename}
  200.  
  201.     -l        means load filename arguments into buffers
  202.     -r        restricted version (no shelling allowed)
  203.     -w width    set screen mode to width columns
  204.     -h height    set screen mode to height lines
  205.     -i inifile    executes inifile instead of default name
  206.  
  207. Trys to initialise the screen driver. If -w and -h are not specified a default
  208. screen size is used. Alternatively, the editor trys to initialise a screen of
  209. the desired size. What are allowable screen sizes depend on the hardware
  210. installed etc.
  211.  
  212. Next a buffer is created with no name. A virtual fold line is created for each
  213. filename argument. On closedown the editor will not write this buffer, since it
  214. has no name.
  215.  
  216. Then the configuration file is executed, line by line, stopping if an error
  217. occurs. If an error occurs, the line number is given, and AE will continue
  218. when the user presses a key.
  219.  
  220. If the -l switch is given the editor attempts to create a buffer for each
  221. filename argument and then to load them.
  222.  
  223. If there is only one file, and the -l switch is not given, the file is read
  224. in anyway.
  225.  
  226. If there is only one file, it is selected.
  227.  
  228. Then the editor signs on with its version date.
  229. /*...e*/
  230. /*...seditor commands:0:*/
  231. This fold lists all the commands available in the editor to the user. These
  232. may be executed in 3 ways :-
  233.  
  234.     1) By pressing escape and selecting them from the menu system.
  235.        The main menu gives a list of sub-menus, grouped by function.
  236.        These sub-menus give command names, and prompt the user for
  237.        arguments.
  238.  
  239.     2) By pressing escape, selecting 'COMMAND' and typing them in.
  240.        The 'COMMAND' menu selection is special in that it does not give
  241.        a second level menu, but rather it prompts the user for a
  242.        command string to be executed.
  243.  
  244.     3) By using a key-binding that uses the required commands.
  245.        A key-binding is a connection between a key or a pair of keys and
  246.        a command string.
  247.  
  248. A command string is a list of command names followed by arguments.
  249.  
  250. /*...sarguments:0:*/
  251. Arguments may be supplied with the commands, or interactively.
  252.  
  253. Character arguments may be supplied as unsigned decimal ASCII codes,
  254. or as single quoted characters.
  255.  
  256. String arguments may be supplied quoted in "'s. Real quotes may be supplied
  257. by escaping them with \'s and real \'s may be supplied by quoting themseleves.
  258.  
  259. Numbers may be supplied as unsigned decimal numbers.
  260.  
  261. Yes/No responses may be supplied as 'yes' or 'no'.
  262.  
  263. 'When' responses (when to enter a fold during searching for example) may
  264. be supplied as 'always', 'if_open' or 'never'.
  265.  
  266. Buffer and language arguments may be supplied by stating their names in
  267. double quotes. Alternatively '.' may be supplied to indicate the current
  268. buffer or language of the current buffer.
  269.  
  270. With all the arguments specifying ? will cause the user to be prompted
  271. for the arguments value. This is usually via a menu.
  272.  
  273. Eg:    character_overtype 65        overtype the current character with A
  274.     character_type 'A'        type A
  275.     character_insert ?        insert a character (to be decided later)
  276.     line_goto 100            goto 'flat' line number 100
  277.     buffer_write . no        write the current buffer, no appending
  278.     line_insert "Hello \"Ace\""    insert Hello "Ace" as a new line
  279. /*...e*/
  280.  
  281. /*...scharacter:0:*/
  282. character_left            Move the cursor one character keft.
  283. character_right            Ditto - but right.
  284. character_insert c        Insert character and move right.
  285. character_overtype c        Overtype character over existing one
  286.                 or if at end of line then insert.
  287. character_type c        Either insert or overtype, depending on flag.
  288.                 None of the 3 character entering routines
  289.                 will do anything if supplied the NUL (ASCII 0)
  290.                 character since this is used internally within
  291.                 the program (written in "C").
  292. character_delete_left        Delete the character to the left of the cursor.
  293.                 If the character is no an end of line mark,
  294.                 the character is placed on the deleted stack,
  295.                 along with a flag to say that if it is
  296.                 undeleted then the cursor should move one
  297.                 right afterwards.
  298. character_delete_right        Delete the character to the right of the
  299.                 cursor. If it is not an end of line mark, it
  300.                 is placed on the deleted item stack along
  301.                 with a flag to say that if it is undeleted,
  302.                 simply insert it at the cursor position and do
  303.                 not move the cursor.
  304. character_delete_eol        Delete to end of line. Store the end of the
  305.                 line on the deleted stack.
  306. character_tab            Inserts or overtypes as with either a tab
  307.                 character (^I) or as many spaces as are
  308.                 necessary to pad to the next tab stop.
  309.  
  310. eg:
  311.  
  312. character_type 'A'
  313. character_delete_right
  314. /*...e*/
  315. /*...sstring:0:*/
  316. string_insert s            Insert a string (repeatedly character_insert's).
  317. string_overtype s        Overtype a string (repeatedly
  318.                 character_overtype's).
  319. string_type s            Type a string (repeatedly character_type's).
  320.  
  321. eg:
  322.  
  323. string_insert "Hello World"
  324. /*...e*/
  325. /*...sword:0:*/
  326. word_left            Move left by a word (scope is current fold).
  327. word_right            Ditto - but right.
  328. /*...e*/
  329. /*...sline:0:*/
  330. line_insert string        Insert a new line, text of which is string.
  331. line_insert... string open indent
  332.                 Insert a fold line.
  333. line_insert::: string open indent
  334.                 Insert a virtual fold line.
  335. line_delete            Delete current line (if not last line).
  336.                 Line is put onto deleted line stack.
  337. line_yank            Copy current line and put on stack.
  338. line_up                Move to the previous line in current fold.
  339. line_down            Ditto - but next.
  340. line_start            Move to the start of the line.
  341. line_end            Ditto - but end.
  342. line_goto            Goto a 'flat' line-number.
  343. line_split            Splits line at cursor and move to start of
  344.                 new line
  345. line_trans from to        Convert letters in from to corresponding in to
  346. line_exec            Takes current text line from current buffer
  347.                 and executes it. Good for testing key-bindings.
  348.  
  349. eg:
  350.  
  351. line_insert... "tag" yes 0
  352. /*...e*/
  353. /*...spage:0:*/
  354. page_up                Scroll a page up.
  355. page_down            Ditto - but down.
  356. page_scroll_up            Scroll the visible area up a line.
  357. page_scroll_down        Ditto - but down.
  358. /*...e*/
  359. /*...ssearch:0:*/
  360. search_for pattern case_sens reg_exp ... ::: dir n confirm
  361.                 Search for a pattern, which may or may not be
  362.                 a regular expression, searching in either
  363.                 direction, n times, possibly confirming each's
  364.                 position.
  365.                 Can specify when to enter nested folds and
  366.                 virtual folds.
  367. search_replace pattern replacement case_sens reg_exp ... ::: dir n confirm
  368.                 Ditto - but replace occurences.
  369. search_again            Repeat last search or search and replace.
  370. search_bracket            If currently on a bracket character, find the
  371.                 matching bracket. Scope of search is limited to
  372.                 current fold.
  373.  
  374. eg:
  375.  
  376. search_for ".*\.c" yes yes if_open if_open yes 5 no
  377. /*...e*/
  378. /*...stag:0:*/
  379. tag_line            Place/remove a tag on current line.
  380.                 There is no limit on the number of tags that
  381.                 may be inserted into each buffer.
  382. tag_error            Examine current line after cursor and extract
  383.                 a filename and line-number if present. Then
  384.                 if we are editing such a file, place a tag in
  385.                 the file's buffer at the given line number.
  386.                 This is intended for use with the output of
  387.                 the UNIX/DOS make(1) utility.
  388. tag_goto dir            Move to the next or previous tag in the
  389.                 current buffer.
  390. /*...e*/
  391. /*...sfold:0:*/
  392. fold_start            Move to the first line in the current fold.
  393. fold_end            Ditto - but last.
  394. fold_open open            The cursor must be on a fold line.
  395.                 Make the fold either open or closed.
  396. fold_in                The cursor must be on a fold line.
  397.                 Enter the fold.
  398. fold_out            Leave the current fold and go to its parent.
  399. /*...e*/
  400. /*...sblock:0:*/
  401. block_mark_1            Place marker one at the current line.
  402. block_mark_2            Ditto - but marker two.
  403. block_unmark            Remove both markers.
  404. block_to_mark_1            Move the cursor to the line with the first
  405.                 marker. Do nothing if it is not set.
  406. block_to_mark_2            Ditto - but marker two.
  407. block_fold tag open indent    Create a fold and insert the marked area into
  408.                 it. If there is no marked area, simply create
  409.                 the fold.
  410. block_unfold            The cursor must be on a fold line.
  411.                 Unfold the fold and make the nested lines
  412.                 be marked.
  413. block_entab            For each line in the block, insert a tab at
  414.                 its start. Error if line would become too long.
  415. block_detab            For each line in block starting with a full tab
  416.                 remove the tab.
  417. block_read filename        Read filename into fold and mark as a block.
  418. block_write filename append    Write the marked block to a file, possibly
  419.                 appending to it.
  420. block_filter command        Write marked block to temporary file 1.
  421.                 Run the command with temporary file 1 as
  422.                 its standard input and temporary file 2 as
  423.                 its standard output. Delete marked block.
  424.                 Read in temporary file 2 as the new block.
  425.                 Important: fold information is also written out
  426.                 for any nested folds. Therefore, if you pass
  427.                 a fold through 'sort' the folding structure of
  428.                 the file would almost certainly be corrupted. #
  429.                 This takes a copy of the 'before' block on the
  430.                 deleted item stack.
  431. block_delete            Delete currently marked block. Put on deleted
  432.                 item stack. If this is subsequently undeleted,
  433.                 the resulting lines will be re-marked as a
  434.                 block.
  435. block_yank            Put a copy of the current block on the deleted
  436.                 item stack.
  437. block_trans from to        Convert letters in from to corresponding in to
  438.  
  439. /*...sproblems with block_filter:0:*/
  440. # This is a problem caused by the way fold information is stored in the file.
  441.   eg:
  442.  
  443. The fold used as the argument    File before "sort"    File after "sort"
  444.  
  445. {{{ this fold            /*...sthis fold:0:*/    contents
  446.     contents        contents        /*...e*/
  447. }}}                /*...e*/        /*...sthis fold:0:*/
  448.  
  449. Note that the resulting file has its end reserved comment before its start!
  450. If you passed the above file through an "uppercaseifier" then you would
  451. find that the reserved comments would be "uppercaseified" as well. In the
  452. reserved comment ...s implies closed fold, ...S would imply open. Therfore
  453. such a command would, as a side effect, open all nested folds! Moral: only
  454. use block filter on text, unless you know the program knows about folding.
  455. /*...e*/
  456. /*...e*/
  457. /*...sbuffer:0:*/
  458. buffer_create filename read select
  459.                 Create a new buffer of name filename.
  460.                 If read requested, read it in too.
  461.                 If select requested, select the buffer too.
  462. buffer_delete filename        Delete the buffer and its contents.
  463.                 Do not delete the file.
  464. buffer_select filename        Select a buffer for editing.
  465. buffer_rename filename filename    Change the name of a buffer.
  466. buffer_read filename        Read in the file into its buffer.
  467. buffer_write filename append    Write the buffer to its file.
  468.  
  469. eg:
  470.  
  471. buffer_write . no
  472. /*...e*/
  473. /*...slanguage:0:*/
  474. language_create langname rc_st rc_end match visible auto insert_mode tab seps
  475.                 Create a language which has reserved comments
  476.                 rc_st and rc_end, matches filenames with an
  477.                 extended regular expression, possibly
  478.                 has autoindent, and has a tab size of tab.
  479.                 The seps string determines what characters,
  480.                 apart from white space seperate words.
  481.                 as making up a word. eg: for "C" use "_" since
  482.                 identifiers may contains _'s.
  483. language_delete langname    Delete a language.
  484. language_select langname    Change the language of the current buffer.
  485. language_rename langname langname
  486.                 Change the name of a given language.
  487.  
  488. eg:
  489.  
  490. language_create "pascal" "{..." "}" ".*\.pas" no yes yes 0 "_"
  491. /*...e*/
  492. /*...ssetup:0:*/
  493. setup_visible            Toggle the white space visibility flag.
  494. setup_autoindent        Toggle the autoindent flag.
  495. setup_insert            Toggle the insert/overtype flag.
  496. setup_tabs            Modify the tab size.
  497. /*...e*/
  498. /*...skey:0:*/
  499. key_prefix key_name        This is used to allow multiple key bindings.
  500.                 eg: to get wordstar like block bindings
  501.                     you should use key_prefix "^K".
  502. key_bind key_name(s) stuff_to_end_of_line
  503.                 Make key key_name(s) execute the commands on the
  504.                 rest of the line each time it is pressed.
  505.                 If the first key_name is a prefixed key then
  506.                 a second key name will be expected, to complete
  507.                 the binding.
  508.  
  509. eg:
  510.  
  511. key_bind "^B ^S" "buffer_select ?"
  512. /*...e*/
  513. /*...sother:0:*/
  514. other_shell command        Execute subprocess command.
  515. other_redraw            Redraw the entire screen.
  516. other_exit confirm        Leave Andys Editor. You will be prompted
  517.                 about saving edited buffers.
  518. other_abort confirm        Leave Andys Editor. No prompts.
  519. other_undelete            Last deleted item is replaced at cursor
  520.                 position into the text.
  521. other_put            Last deleted item is copied from deleted item
  522.                 stack to text.
  523. other_squeeze            Discards deleted stack to free up memory.
  524. other_colours t f s mt mf ms    Set the colours used by the editor for
  525.                 the text, fold lines, status information and
  526.                 also their marked counterparts. These numeric
  527.                 values used for the arguments vary from
  528.                 machine to machine.
  529.  
  530. eg:
  531.  
  532. other_shell "ls -al"
  533. /*...e*/
  534. /*...e*/
  535. /*...sdefault key bindings:0:*/
  536. The configuration file is accessable from these virtual folds (provided you
  537. are currently in the right directory).
  538.  
  539. /*...vae\46\ini \45\ DOS\44\ OS\47\2 and Amiga versions:0:*/
  540. /*...v\46\aerc \45\ UNIX\44\ XENIX and AIX versions:0:*/
  541.  
  542. Any line in these files starting with a ; is ignored by the editor. Any other
  543. line is executed as-is by the editor at load time only. AE makes no attempt to
  544. re-read this file after it has been edited. Any line in these files may be fed
  545. to AE directly by pressing escape and typing in the line as a command (except
  546. for comment lines).
  547. /*...e*/
  548. /*...sae file format:0:*/
  549. This section is provided to allow people to write tools (including other
  550. folding editors) that understand the folded file format.
  551.  
  552. The editor deduces the language of the file from the filename via the
  553. extended regular expression specified in the languages language_create
  554. statement which is usually done in the initialisation file.
  555.  
  556. eg: For "assembler", the extended regular expression  ".*\\.(s|i|asm|inc|mac)"
  557.     is used to say all .s, .i, .asm,... etc. files are "assembler" files.
  558.  
  559. Also defined per language is <rc_st> and <rc_end> strings (reserved comment
  560. start and end). <rc_st> is the most common comment introducer for the language,
  561. followed by <unlikely> and <rc_end> is the comment completor (if required).
  562.  
  563. <unlikely> is a string the user is unlikely start a comment with. In practice
  564. for all currently defined languages "..." is used, and is recommended for any
  565. new languages, unless it is not allowed, in which case something else will do.
  566.  
  567. eg: For "pascal", the most common comment starter is "{", and ender is "}".
  568.     Hence <rc_st> is "{..." and <rc_end> is "}".
  569.  
  570. eg: For "assembler", comments start with ";" and need no ender.
  571.     Hence <rc_st> is ";..." and <rc_end> is "".
  572.  
  573. A text file is an ordered list of lines. If a line begins with <rc_st> in
  574. column 1, then it is considered to be a 'crease'. Crease types defined are :-
  575.  
  576.     <rc_st>s<tag>:<indent>:<rc_end>    begin closed fold, shown as "... tag"
  577.     <rc_st>S<tag>:<indent>:<rc_end>    begin open fold, shown as "{{{ tag"
  578.     <rc_st>e<rc_end>        end fold
  579.     <rc_st>E<rc_end>        end fold, shown as "}}}"
  580.     <rc_st>v<tag>:<indent>:<rc_end>    closed virtual fold, "::: tag"
  581.     <rc_st>V<tag>:<indent>:<rc_end>    open virtual fold, ">>> tag"
  582.  
  583. Any other letter after <rc_st> is reserved for future use and is an error.
  584.  
  585. Begin fold and end fold creases must nest correctly and all match up properly
  586. within a text file. Consider them much like brackets.
  587.  
  588. ( Aside: You might note than end fold can be either 'e' or 'E'. The "}}}" is
  589. shown by the editor if it pairs with a 'S', not whether it is an 'E' ).
  590.  
  591. <tag> is a fold or virtual fold tag. The user may type in any character codes
  592. to make up the <tag>. Alphanumeric, '_' and ' ' characters are represented in
  593. the <tag> as-is, but anything else gets mapped to '\' followed by decimal
  594. ASCII code followed by '\'.
  595.  
  596. eg: The fold tag "Hypen-ated" is represented in the file by "Hypen\45\ated"
  597.  
  598. For virtual folds (which are essential just references to another file),
  599. the first part of the <tag> upto the first space or tab character is considered
  600. to be the filename, the rest is disregarded when entering a virtual fold.
  601.  
  602. eg: Entering virtual fold with <tag> of "sort.c - do sorting" will attempt
  603.     to load the file "sort.c".
  604.  
  605. <indent> represents the columnar indent of the contents of the fold being
  606. begun from the beginning of the file. Therefore it is an error if the <indent>
  607. value for a nested fold is less than the <indent> of its parent. Looking back,
  608. it might have been better to make +ve and <indent> relative to its parent.
  609.  
  610. Example of what is in a sample file, what it represents :-
  611.  
  612.     <---- column 1
  613.  
  614.     #include "check.h"        #include "check.h"
  615.     /*...vcheck\46\h:0:*/        ::: check.h
  616.     static void check(void)        static void check(void)
  617.         {                {
  618.         if ( condition )        if ( condition )
  619.     /*...Sdie:16:0*/                {{{ die
  620.     {                        {
  621.     /*...Vwhywarn\46\txt:16:*/            >>> whywarn.txt
  622.     warn();                        warn();
  623.     exit(1);                    exit(1);
  624.     }                        }
  625.     /*...e*/                    }}}
  626.         }                }
  627.  
  628. If the die fold used little 's' not big 'S', then the fold would be closed and
  629. shown by the editor as "... die" only on the right, until the fold is entered.
  630.  
  631. There is no explicit limit to the levels of nesting allowed. In practice, many
  632. of AEs internal functions are written recursively, so it is possible to blow
  633. the (very large) stack. I envisage a least 500 levels being safe. In practice,
  634. users don't tend to nest much more than 10 levels, so this is not a problem.
  635. /*...e*/
  636. /*...smisc stuff:0:*/
  637. /*...sadding to AE:0:*/
  638. Probably the easiest way of "adding" functionality to AE is to write a small
  639. filter program and to bind a key like so :-
  640.  
  641.     key_bind "^R" "block_filter \"reform -\""
  642.  
  643. The example uses a program reform to reformat a block. The program reform is
  644. simply a filter that reforms its standard input to its output. This paragraph
  645. itself was formatted using the very same key-binding.
  646.  
  647. Other filters could supply 'line-drawing-mode', 'white space stripping'.
  648.  
  649. Note that such filters could cause problems if you send folds through them.
  650. /*...e*/
  651. /*...smachines supported:0:*/
  652. The editor is written in portable "C" and may easily be ported to new machines,
  653. provided they have suitable screen and keyboard control.
  654.  
  655. The only things that change from version to version are available keys for
  656. binding, colours and filename conventions. In the case of filename conventions,
  657. to ensure portability of folded files, the filenames are converted to a
  658. suitable internal format for passing to the operating system.
  659.  
  660. Machine specifics :-
  661.  
  662. /*...sDOS on IBM\45\PC or hardware compatible:0:*/
  663. Bindable keys are all special (non ASCII) keys on the keyboard except
  664. ^Break, Caps-Lock, Num-Lock, Scroll-Lock and Sys-Req.
  665.  
  666. The DOS version of AE uses Int-16h, functions 0 and 1 to read the keyboard,
  667. or possibly functions 10h and 11h if support for 102 key keyboard is found.
  668. Note that if 102 key keyboard support does not exist, then some of the keys
  669. listed below will not be bindable.
  670.  
  671. Most of the keys accessible via these mechanisms are available for binding.
  672.  
  673. Ctrl-keys :-
  674.  
  675.     ^A ^B ^C ^D ^F ^G ^H ^I ^J ^L ^L ^M ^N ^O
  676.     ^P ^Q ^R ^S ^T ^U ^V ^X ^Y ^Z    ^\ ^] ^^ ^_
  677.  
  678.     NOTE: ^@ is not bindable, its ASCII NUL.
  679.     NOTE: ^[ is not bindable, its the Esc key.
  680.  
  681. Alt-keys :-
  682.  
  683.     @A @B @C @D @E @F @G @H @I @J @K @L @M
  684.     @N @O @P @Q @R @S @T @U @V @W @X @Y @Z
  685.  
  686.     @0 @1 @2 @3 @4 @5 @6 @7 @8 @9 @- @=
  687.  
  688. Function-keys :-
  689.  
  690.      F1  F2  F3  F4  F5  F6  F7  F8  F9  F10  F11  F12
  691.     ~F1 ~F2 ~F3 ~F4 ~F5 ~F6 ~F7 ~F8 ~F9 ~F10 ~F11 ~F12
  692.     ^F1 ^F2 ^F3 ^F4 ^F5 ^F6 ^F7 ^F8 ^F9 ^F10 ^F11 ^F12
  693.     @F1 @F2 @F3 @F4 @F5 @F6 @F7 @F8 @F9 @F10 @F11 @F12
  694.  
  695. Numeric pad keys :-
  696.  
  697.     Home    Up    PgUp        ^Home    ^Up    ^PgUp
  698.     Left          Right        ^Left           ^Right
  699.     End    Down   PgDn        ^End    ^Down   ^PgDn
  700.  
  701.     Ins           Del        ^Ins            ^Del
  702.  
  703. Keys for which support is not guaranteed on all keyboards :-
  704.  
  705.     @Ins   @Home  @PgUp        ~Tab
  706.     @Del   @End   @PgDn        ^Tab  ^Grey+  ^Grey-
  707.                     @Tab  @Grey+  @Grey-
  708.             @Up
  709.     @Left  @Down  @Right
  710.  
  711. ^Break is not bindable, although it can be used to abort searching functions.
  712.  
  713. Filenames may be supplied in normal DOS notation but internally they are
  714. converted to lower case using forward slashes.
  715.  
  716. Colours are made up of a foreground colour, a background colour, a flash and a
  717. brightness value. Values are :-
  718.  
  719.     Black        0            Flashing    1
  720.     Blue        1            Static        0
  721.     Green        2
  722.     Cyan        3
  723.     Red        4
  724.     Magenta        5
  725.     Yellow        6            Extra bright    1
  726.     White        7            Low brightness    0
  727.  
  728. The complete colour is calculated as :-
  729.  
  730.     foreground_colour +
  731.     background_colour * 16 +
  732.     brightness * 8 +
  733.     flashing * 128
  734.  
  735. eg: bright yellow on red is 6 + (4 * 16) + (1 * 8) + (0 * 128)
  736.  
  737. The seasoned IBM-PC user will note that these are simply the screen colour
  738. attribute values. Also that on a black and white system, these colours will be
  739. completely different for the same values!
  740.  
  741. A wide variety of CGA, EGA, VGA and Super VGA screen modes are supported,
  742. including various 43,50 and 60 line modes, and also 132 columns modes.
  743.  
  744. /*...sDOS Terminal Handler:0:*/
  745. Terminal Handler for IBM-PC and 100% compatibles
  746. ------------------------------------------------
  747.  
  748. Here is a statement of the support for various text modes by this module.
  749.  
  750. Several levels of support are defined.
  751.  
  752.   MDA       No EGA, VGA or super VGA BIOS support has been found
  753.             and the machine was observed running in Mode 7.
  754.             Assumed because there are no modes 0-3.
  755.  
  756.             SUPPORTS ==> 80 columns, 25 lines
  757.  
  758.   CGA       No EGA, VGA or super VGA BIOS support has been found.
  759.  
  760.             SUPPORTS ==> 40/80 columns, 25 lines
  761.  
  762.   EGA       Support for EGA found, but no VGA or super VGA.
  763.  
  764.             SUPPORTS ==> 40/80 columns, 25/43 lines
  765.  
  766.             The 25/43 line support is acheived by the use of the 'char-
  767.             generator' BIOS call setting a 14 or 8 pixel high font in the 350
  768.             line high screen giving 350/14=43 or 350/14=25 line modes.
  769.  
  770.   VGA       Support found for VGA, but no super VGA.
  771.  
  772.             SUPPORTS ==> 40/80 columns, 12/14/21/25/28/43/50 lines
  773.  
  774.             The 12/14/21/25/28/43/50 line mode support is acheived by the
  775.             combined use of the 'char-generator' BIOS call setting a 16, 14
  776.             or 8 pixel high font and the 'alternate-select' to set 400, 350 or
  777.             200 line high modes :-
  778.  
  779.                            200 lines   350 lines   400 lines
  780.             8 pixel font      25 #1       43          50
  781.             14 pixel font     14          25 #1       28
  782.             16 pixel font     12          21          25
  783.  
  784.             Note #1: The code will pick the 400 line, 16 pixel high font in
  785.             preference to these combinations, as it looks better.
  786.  
  787.   XGA2      Support for XGA2 BIOS 132 column mode 0x14 has been found.
  788.             (int 0x10,ah=0x1b,bx=0,es:bx->0x40 byte buffer, returned al=0x1b,
  789.              byte ptr = first dword of buffer,
  790.              (ptr [2] & 0x10) != 0 => mode 0x14 supported).
  791.  
  792.             SUPPORTS ==> 40/80/132 columns, 12/14/21/25/28/43/50 lines
  793.  
  794.             XGA cards are capable of a 132 column modes. BIOS support for the
  795.             new mode 0x14 only officially appeared with the release of XGA2.
  796.             The test performed above is the official IBM recommended test.
  797.  
  798.             In early drivers, there is a bug which makes the above test fail.
  799.             However a slightly different secondary test will work, and is done.
  800.             ((buffer[0x2e]&0x10) != 0 => 132 column support => mode 0x14).
  801.  
  802.             There is a public domain TSR available that adds the BIOS support
  803.             for 132 column modes to the video BIOS shipped with the old XGA.
  804.             If you install this TSR on your old XGA, then this should work.
  805.  
  806.             In the current level of XGA2 BIOS, support for any number of
  807.             scan lines other than 400 lines is broken. Hence 12/14/21/43 lines
  808.             do not work at 132 columns. IBM will fix this later...
  809.  
  810.             The IBM Models 35, 40, 56, and 57 have a special form of VGA in
  811.             them that is a halfway-house between VGA and XGA. This hardware
  812.             supports all the 132 column modes listed without flaw, and declares
  813.             its support in the same way.
  814.  
  815.             FEEDBACK ==> Works to degree specified - Tested by Author
  816.  
  817.   ET4000    Support for the Tseng BIOS extensions.
  818.             (int 0x10,ax=0x10f1 returned al=0x10, Tseng get DAC type function).
  819.  
  820.             SUPPORTS ==> mode w   h  base
  821.                          0x18,132,44,0xb000   <--+
  822.                          0x19,132,25,0xb000      |
  823.                          0x1a,132,28,0xb000      +--- #1
  824.                          0x21,132,60,0xb800      |
  825.                          0x22,132,44,0xb800   <--+
  826.                          0x23,132,25,0xb800
  827.                          0x24,132,28,0xb800
  828.                          0x26, 80,60,0xb800
  829.                          0x2a,100,40,0xb800
  830.                          + VGA modes
  831.  
  832.             Note #1: If a mode change is required, then support will prefer a
  833.             mode with base address 0xb800 over one with base address 0xb000.
  834.  
  835.             FEEDBACK ==> Works! - Tested by Author
  836.  
  837.   PARADISE  Paradise / Western Digital BIOS support detected.
  838.             (signiture "VGA=" found at 0xc000:0x007d).
  839.             This BIOS support is present for "Paradise EGA-480" and "Paradise
  840.             VGA" cards. However the test matches both types of card.
  841.             I have only got full information on the "Paradise VGA".
  842.  
  843.             SUPPORTS ==> mode w   h  base
  844.                          0x21,132,44,0xb800
  845.                          0x51, 80,30,0xb800   #1
  846.                          0x54,132,43,0xb800   #2
  847.                          0x55,132,25,0xb800   #3
  848.                          + VGA modes
  849.  
  850.             Note #1: This mode exists only on EGA-480 card. Base address is
  851.             assumed to be 0xb800. If on a VGA card, and request this mode
  852.             screen output will be lost.
  853.  
  854.             Notes #2 and #3: The base address is known to be 0xb800 on the VGA
  855.             card, but I have had to assume the same for the EGA-480 card. If
  856.             this is false, then screen output will be lost in these modes.
  857.  
  858.             Please can someone mail be a differentiating test between the
  859.             Paradise VGA and Paradise EGA-480 cards.
  860.  
  861.             FEEDBACK ==> Works!
  862.  
  863.   VEGA      Support for the VEGA / Video 7 extensions has been found.
  864.             (int 0x10, ax=0x6f00 returned 0x5637 (='V7')).
  865.  
  866.             SUPPORTS ==> mode w   h  base
  867.                          0x40, 80,43,0xb800   #1,#3
  868.                          0x41,132,25,0xb800      #3
  869.                          0x42,132,43,0xb800      #3
  870.                          0x43, 80,60,0xb800      #3
  871.                          0x44,100,60,0xb800      #3
  872.                          0x4d,120,25,0xb800      #3
  873.                          0x4e,120,43,0xb800      #3
  874.                          0x4f,132,25,0xb800   #2,#3
  875.                          + VGA modes
  876.  
  877.             Note #1: If a mode change is required, then the regular VGA
  878.             mode 80x43 will be used in preference to this mode.
  879.  
  880.             Note #2: If a mode change is required, then mode 0x41 will be
  881.             used in preference to mode 0x4f.
  882.  
  883.             Note #3: the base address is assumed to be 0xb800. If it is not
  884.             (unlikely), then screen output will be lost for these modes
  885.  
  886.             FEEDBACK ==> None
  887.  
  888.   AHEAD     Support for Ahead Systems BIOS extensions has been found.
  889.             (signiture "AHEAD" found at 0xc000:0x0025).
  890.             This test matches the "Ahead Systems EGA2001", the "Ahead B"
  891.             and the "Ahead B (Wizard 3270)" cards, and will not differentiate
  892.             between them. The "Ahead B" modes are well documented.
  893.  
  894.             SUPPORTS ==> mode w   h  base
  895.                          0x22,132,44,0xb800      #2
  896.                          0x23,132,25,0xb800      #2
  897.                          0x24,132,28,0xb800   #1   
  898.                          + VGA modes
  899.  
  900.             Note #1: This mode does not exist for the EGA2001. Since my test
  901.             does not differentiate among Ahead cards you can select this mode.
  902.             If your card is an EGA2001, screen output will be lost.
  903.  
  904.             Note #2: My documentation omits the base addresses for these modes
  905.             on the EGA2001 card. If they are not also 0xb800 (unlikely)
  906.             screen output will be lost.
  907.  
  908.             Currently my test will match the "Ahead B (Wizard/3270)". Sadly
  909.             none of the above modes will work on it. If I could recognise this
  910.             specific card, then I could support :-
  911.             
  912.                      ==> mode w   h  base
  913.                          0x2f,160,50,0xb800
  914.                          0x32, 80,34,0xb800   #1
  915.                          0x33, 80,66,0xb800
  916.  
  917.             Note #1: If a mode switch is required, the support will use the
  918.             normal VGA BIOS mode 80x34 in preference to this mode.
  919.  
  920.             Please can someone mail me a test to differentiate between types
  921.             of Ahead card. At the moment I assume "Ahead B".
  922.  
  923.             FEEDBACK ==> None
  924.  
  925.   ATI       Support for ATI cards found.
  926.             (signiture "761295520" found at 0xc000:0x0031 identifies ATI support)
  927.             (signiture "31" found at 0xc000:0x0040 identifies "ATI VGA Wonder")
  928.             (signiture "32" found at 0xc000:0x0040 identifies "ATI EGA Wonder")
  929.             Support exists for "ATI EGA Wonder" :-
  930.  
  931.             SUPPORTS ==> mode w   h  base
  932.                          0x23,132,25,0xb800
  933.                          0x33,132,44,0xb800
  934.                          0x58, 80,33,0xb800
  935.                          + VGA modes
  936.  
  937.             In my documentation the "ATI VGA Wonder" only has a 132x25 special
  938.             mode, which requires a special program VCONFIG loaded. If this
  939.             TSR is loaded (int 0x10, ax=0x5555 returns ax=0xaaaa), then support
  940.             the "ATI VGA Wonder" card, assuming the mode is a colour mode.
  941.  
  942.             SUPPORTS ==> mode w   h  base
  943.                          0x08,132,25,0xb800
  944.                          + VGA modes
  945.  
  946.             Also, my documentation talks of an "ATI VIP" card. It is not known
  947.             what signiture this card places at 0xc000:0x0040, if, in fact it
  948.             does. If it has "32" there, all be okay, as this card supports the
  949.             same modes as the "EGA Wonder". But if I can identify the ATI VIP
  950.             card as above "EGA Wonder" then more modes can be supported.
  951.  
  952.                      ==> mode w   h  base
  953.                          0x55, 80,66,0xa000  #1
  954.                          0x59, 80,66,0xa000
  955.  
  956.             Note #1: If a mode change is required, the support would pick
  957.             mode 0x55 over 0x59 for no readily explainable reason.
  958.  
  959.             FEEDBACK ==> None
  960.  
  961.   TRIDENT   Support for Trident TVGA 8800/8900 found
  962.             (outp(0x03c4,0x0e);
  963.              old_reg = inp(0x03c5);
  964.              outp(0x03c5,0x00);
  965.              new_reg = inp(0x03c5);
  966.              outp(0x03c5,0x02);           ???
  967.              if (new_reg & 0x0f) == 0x02, then Trident supported)
  968.  
  969.             SUPPORTS ==> mode w   h  base
  970.                          0x50, 80,30,0xb800
  971.                          0x51, 80,43,0xb800   #1
  972.                          0x52, 80,60,0xb800
  973.                          0x53,132,25,0xb800
  974.                          0x54,132,30,0xb800
  975.                          0x55,132,43,0xb800
  976.                          0x56,132,60,0xb800
  977.                          0x57,132,25,0xb800   #2
  978.                          0x58,132,30,0xb800   #2
  979.                          0x59,132,43,0xb800   #2
  980.                          0x5a,132,60,0xb800   #2
  981.                          + VGA modes
  982.  
  983.             Note #1: Should a mode change be required, the support will pick
  984.             the VGA BIOS 80x43 mode in preference to mode 0x51.
  985.  
  986.             Note #2: These modes have a character cell 9 pixels wide, compared
  987.             to the 8 pixels wide of modes 0x53 to 0x56. Therefore if a mode
  988.             change is required, the support will pick these modes rather than
  989.             the other modes.
  990.  
  991.             FEEDBACK ==> None
  992.  
  993.   OAK       OAK Technologies VGA-16 has been detected.
  994.             (Bank switch register found,
  995.              writeable via: outpw(0x3de, (value<<8)|0x11);
  996.              readable  via: outp(0x3de, 0x11); value = inp(0x3df);
  997.              All bits of value remembered at this port.
  998.              Port is restored to original value after test).
  999.  
  1000.             SUPPORTS ==> mode w   h  base
  1001.                          0x50,132,25,0xb800
  1002.                          0x51,132,43,0xb800
  1003.                          + VGA modes
  1004.  
  1005.             FEEDBACK ==> None
  1006.  
  1007.   VESA      VESA BIOS extensions identified.
  1008.             (int 0x10, ax=0x4f00 returned ax=0x004f).
  1009.             VESA support is special. The VESA BIOS extensions are only used if
  1010.             they are detected via the above test.
  1011.  
  1012.             The supported modes are enumerated, looking for supported text
  1013.             modes with number >= 0x0100, Window A present, being read/writable.
  1014.  
  1015.             SUPPORTS ==> mode   w   h  base
  1016.                          0x0108, 80,60,0x????   #1
  1017.                          0x0109,132,25,0x????   #1
  1018.                          0x010a,132,43,0x????   #1
  1019.                          0x010b,132,60,0x????   #1
  1020.                          + VGA modes
  1021.  
  1022.             Note #1: The base segment is queried from the VESA BIOS.
  1023.  
  1024.             FEEDBACK ==> None
  1025.  
  1026.   USER      User defined extension to the support.
  1027.             Supplied to allow testing of ONE additional mode.
  1028.             When you have tested an additional mode(s), you can mail them to
  1029.             me and I can incorporate them into the internal mode table.
  1030.  
  1031.             Most SVGA text modes are defined via a mode number, rows and
  1032.             columns, and a base segment for the screen buffer.
  1033.             If the environment variable TH_VSUPP_USER is set correctly,
  1034.             this module assumes that the corresponding hardware to support
  1035.             the mode is present, and will use it if present. In this mode
  1036.             support assumed to exist for VGA and below modes also. No other
  1037.             SVGA support is tested for.
  1038.  
  1039.             This support is intended for the debugging and adding support for
  1040.             new and as yet supported cards. For example, to try out support
  1041.             for the "Ahead B (Wizard 3270)", 160x50 mode, which is not
  1042.             supported explicitly at present, type
  1043.  
  1044.                 SET TH_VSUPP_USER=0x2f,160,50,0xb800
  1045.  
  1046.             Before using a program that uses the Terminal Handler, and you
  1047.             will be able to use the new mode (assuming you ask for it).
  1048.  
  1049.             Note: no spaces should appear in the definition of TH_VSUPP_USER,
  1050.             despite some of the listings above, which have had spaces added
  1051.             for readability.
  1052.  
  1053.             Finally, due to the nature of VESA support (specifically: different
  1054.             BIOS calls used), this extension mechanism - TH_VSUPP_USER - can
  1055.             not be used to set up VESA modes. Remember, VESA BIOS used if and
  1056.             only if the VESA check above succeeds, and if TH_VSUPP_USER is
  1057.             found, no other super VGA cards are tested for.
  1058.  
  1059.             FEEDBACK ==> None
  1060.  
  1061.  
  1062. Super VGA?
  1063. ----------
  1064.  
  1065. I have assumed that an card that supports these additional text modes also
  1066. supports the VGA BIOS to provide the VGA 43, 50 line modes etc. If I am
  1067. wrong, and some cards are actually Super EGA, then my code will fail when
  1068. using VGA style modes (obviously). There is some evidence for this as one or
  1069. two cards actually supply modes that seem to duplicate those acheivable via
  1070. the VGA BIOS.
  1071.  
  1072.  
  1073. Summary
  1074. -------
  1075.  
  1076. I am working from an incomplete reference, but have tried to support a variety
  1077. of levels of BIOS/hardware/modes/sizes as best I can.
  1078. If you have a SVGA adaptor with modes that do not work, or are not supported,
  1079. please send me the following information.
  1080.  
  1081.   1) The name of the card.
  1082.   2) Does the card support a superset of VGA or EGA (see comment above).
  1083.   3) A test that can be used to uniquely identify the card.
  1084.   4) The values of TH_VSUPP_USER you have successfully used for the card.
  1085.   5) Any special specifics for the card/mode etc.
  1086.  
  1087. No promises but, if you send me the above information, I will try to
  1088. incorporate it into the DOS Terminal Handler code.
  1089. /*...e*/
  1090.  
  1091. Note that the usual AE.EXE file is a stubbed DOS+OS/2 1.x executable, and so
  1092. will run on DOS, OS/2 1.x, OS/2 2.x and WindowsNT.
  1093. /*...e*/
  1094. /*...sOS\47\2 on any OS\47\2 machine:0:*/
  1095. Keys as DOS, filenames as DOS, colours as DOS.
  1096. Any mode OS/2 can provide to a text mode application via the Vio interface can
  1097. be used by AE, including the Super VGA modes detected by the SVGA.EXE utility
  1098. and stored in the SVGADATA.PMI data file under OS/2 2.x. This includes 132
  1099. column modes on XGA-2 for example.
  1100. Note under OS/2, AE can access HPFS style long filenames.
  1101.  
  1102. Note that the usual AE.EXE file is a stubbed DOS+OS/2 1.x executable, and so
  1103. will run on DOS, OS/2 1.x, OS/2 2.x and WindowsNT.
  1104.  
  1105. A 32 bit compiled version of AE for OS/2 2.x does exist, but offers little
  1106. over the 16 bit version.
  1107. /*...e*/
  1108. /*...sAny generic UNIX machine:0:*/
  1109. Bindable keys are limited to K0-K9 as available via their termcap(5) k0-k9
  1110. entries. The cursor pad should work provided your terminal is in the correct
  1111. mode. Backslashes are automatically converted to slashes in filenames.
  1112.  
  1113. There are 4 'colour' settings available on a UNIX terminal. Some or all of them
  1114. may be supported, depending on the terminal. They are :-
  1115.  
  1116.     Normal        0
  1117.     Underline    1    -- support for this often not present
  1118.     Standout    2    -- this is usually invert or bold
  1119.     Alternate    3    -- this could be an alternate character set
  1120.  
  1121. It is important the user be aware of potential problems operating AE over
  1122. a network or a pad system. Note that ^Q and ^S are usually used for flow
  1123. control, and typing these can hang a connection. Also, ^Y and ^Z are often
  1124. the 'susp' and 'dsusp' keys, which can suspend ae, until fg is typed (csh).
  1125. The stty command can be used to reassign/disable these keys.
  1126. Also note that AE needs to know accurately, what sort of terminal it is on.
  1127. If the TERMCAP is not set properly then AE will either refuse to load, or will
  1128. put junk on the screen.
  1129. /*...e*/
  1130. /*...sSunOS UNIX:0:*/
  1131. As UNIX except that suntools(1) permitting, L1-L10 and R1-R15 are also
  1132. bindable. Also note that the keys Left, Right, Up and Down no longer exist.
  1133. You should use the relevant R keys. AE is not designed to be a full Sun
  1134. Windows application. Judicious use of setkeys(1) is required to get access
  1135. to the Sun Function Keys. When adding Andys Editor to the rootmenu then
  1136. the following line should be used :-
  1137.  
  1138.     "Andys Editor"    shelltool -Wl "Andys Editor"    \
  1139.                   -Wi                   \
  1140.                   -WL ""                \
  1141.                   /fullpath/ae
  1142.  
  1143. 'fullpath' is the full path to the directory with AE stuff in it.
  1144. /*...e*/
  1145. /*...sMicrosoft XENIX:0:*/
  1146. All the Fn keys, ~Fn keys, ^Fn Keys, and ~^Fn keys. @Fn key combinations are
  1147. reserved for use by the XENIX multi-terminal system. The keypad is also
  1148. accessible. Filenames as UNIX. Colours as UNIX.
  1149. /*...e*/
  1150. /*...sIBM AIX 3\46\1 or later:0:*/
  1151. This is just like most other UNIXes except that AIX does not have compatible/
  1152. proper termcap level support. So on this system, AE is compiled up with a
  1153. terminal handler that uses AIX Extended Curses. This provides access to most
  1154. function keys and colour support, provided a suitable terminal type is in use.
  1155. If you use aixterm() or log into AIX via the IBM Internal tool HFTTERM.EXE,
  1156. excellent support is obtained.
  1157.  
  1158. The following additions to your .cshrc file will improve Ctrl key support.
  1159.  
  1160.     stty -ixon -ixoff        # Disable ^S ^Q flow control
  1161.     stty susp undef            # ^Y no longer suspends
  1162.     stty dsusp undef        # ^Z no longer suspends
  1163.  
  1164. However, the support has hard coded keycodes for most of the keys available
  1165. from an aixterm(1) session. So in addition to the usual UNIX keys you get :-
  1166.  
  1167. Alt-keys :-
  1168.  
  1169.     @A @B @C @D @E @F @G @H @I @J @K @L @M
  1170.     @N @O @P @Q @R @S @T @U @V @W @X @Y @Z
  1171.  
  1172.     @0 @1 @2 @3 @4 @5 @6 @7 @8 @9
  1173.  
  1174. Function-keys :-
  1175.  
  1176.      F1  F2  F3  F4  F5  F6  F7  F8  F9  F10  F11  F12
  1177.     ~F1 ~F2 ~F3 ~F4 ~F5 ~F6 ~F7 ~F8 ~F9 ~F10 ~F11 ~F12
  1178.     ^F1 ^F2 ^F3 ^F4 ^F5 ^F6 ^F7 ^F8 ^F9 ^F10 ^F11 ^F12
  1179.     @F1 @F2 @F3 @F4 @F5 @F6 @F7 @F8 @F9 @F10 @F11 @F12
  1180.  
  1181. Note that if you are working on an X-Station, then depending upon your
  1182. window manager, some of the keys may be intercepted before AE sees them.
  1183. For example, when I run the Motif-Window-Manager, mwm, I find that @F4
  1184. is intercepted before AE sees it, and it is used to close the aixterm window.
  1185.  
  1186. Colours are the same as those for DOS or OS/2, except bright and flash
  1187. attributes are ignored.
  1188. /*...e*/
  1189. /*...sCommodore Amiga:0:*/
  1190. Bindable keys are the Fn keys, ~Fn keys, Arrow-keys and ~arrow-keys and
  1191. most of the @keys. For some unexplained reason @E to @H and @J to @K are
  1192. unaccessable. The Amiga version contains the bug that when disk access is
  1193. requested, a pop-up box may appear asking the user if he wishes to abort.
  1194. Somehow Intuition thinks a break has been requested. The workaround is simply
  1195. to click on continue. The cause is unknown - I 'borrowed' my terminal code from
  1196. Emacs and I can only assume they have the same problem. Backslashes in
  1197. filenames are converted to slashes internally.
  1198.  
  1199. Colours on the Amiga are simply numbered from 0 to 3. They are whatever
  1200. intuition currently has them set up as.
  1201. /*...e*/
  1202. /*...e*/
  1203. /*...scopying this editor:0:*/
  1204. This editor is all my own work.
  1205. I hereby place it in the Public Domain.
  1206. Do what you like with it.
  1207. Please redistribute it as you received it.
  1208. Please don't try to sell it.
  1209. Please don't try to place restrictions on what others can do with it.
  1210. This software is supplied as-is, with no guarantee.
  1211. /*...e*/
  1212. /*...srevision history:0:*/
  1213. Significant and recent revisions are only listed. If you have a version between
  1214. listed dates, it will have some of the problems listed. You should always
  1215. upgrade if you can.
  1216.  
  1217. 15/1/89        Initial version (Alpha-Test).
  1218.  
  1219. Various dates:    Many minor bugfixes and various speed increases.
  1220.         Extremely extensive testing (4 years worth)!
  1221.         Brought OS/2, DOS, AIX and UNIX versions closer together.
  1222.         Many releases to university and work collegues.
  1223.  
  1224. 1/5/93        Made Public Domain.
  1225.         First official external release to Internet.
  1226.  
  1227. 1/7/93        Added readonly file test to UNIX versions.
  1228.         Fixed backup filename of "../.login" etc..
  1229.         Improved tag_error to work with "filename.ext", line NUM.
  1230.  
  1231. 21/3/94        Converted all source to fully prototyped form.
  1232.         Made source tree structure much safer.
  1233.         Compilable with IBM C-Set++ for 32 bit OS/2.
  1234.         Language redefiniton fix.
  1235.         Comments at ends of lines in .INI files now allowed.
  1236. /*...e*/
  1237. /*...sobtaining this editor:0:*/
  1238. Internet: ftp.cdrom.com:/pub/os2/all/editors/ae.zip
  1239. IBM-VNET: REQUEST AE FROM AKEY AT HVTVM5
  1240. /*...e*/
  1241. /*...scontacting the author:0:*/
  1242. {{{ Andy Key
  1243.  
  1244. Internet: ak@vnet.ibm.com    # Currently working at IBM until September 94
  1245. IBM-VNET: AKEY AT HVTVM5    # so addresses valid at least until then.
  1246. /*...e*/
  1247. /*...e*/
  1248.