home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 038 / ae24b.zip / AE.DOC < prev    next >
Text File  |  1994-12-10  |  43KB  |  893 lines

  1. AE.COM: A .ASM file editor.
  2.  
  3. This document describes the use of Asm Editor, ver. 2.4b.  AE is an editor
  4. intended for creation and maintainance of assembly language source files.
  5. It is not intended as a general purpose editor nor an editor for other
  6. types of source files.
  7.  
  8.  
  9. LEGAL STUFF:
  10.  
  11. First, AE is not in the public domain.  It is freeware, which means it can
  12. be distributed freely, used freely, but not sold.  This is due to Ziff's
  13. copyrights on TED, the ancestor of AE.  Although TED has been very heavily
  14. modified to become AE, I just don't feel right trying to circumvent Ziff's
  15. copyright.
  16.  
  17. Second, the use of this software is entirely at the user's OWN RISK.  It is
  18. not guaranteed to do anything except occupy 0 or more bytes of disk space.
  19. ANY un-desired effects caused by this program, directly or indirectly, are the
  20. responsiblity of the USER, and the USER's sole recourse is to dis-continue use
  21. of the program.  As this program alters data files, normal data processing
  22. techniques dictate keeping reasonable back ups, as AE.COM or AECONFIG.COM
  23. are NOT guaranteed to hold your hardware, software, or data safe from harm.
  24.  
  25. In-other-words, AE.COM and AECONFIG.COM *should* perform in a manner *similar*
  26. to that set forth in this document, but there are NO GUARANTEES!
  27.  
  28.                        USE AT YOUR OWN RISK!!!
  29.  
  30. Third, I'm sick and tired of seeing software, freeware and otherwise, that
  31. says "Free for all except military" (Or government).  If our US Military
  32. sees a stragic advantage in using this program (Doubtful), they are welcome
  33. to it.  I even built in a configuration item for silent operation so the Navy
  34. can use this program in the submarine fleet. (Yea, right!).
  35.  
  36.  
  37. WordStar and WS are trademarks of WordStar International.
  38.  
  39.  
  40. 80286+ ONLY!!!
  41.  
  42. As with the 8080 vs. Z-80 question under CP/M, there comes a time when
  43. writing to the lowest common denominator no-longer makes sense.  Especially
  44. when the '286 introduced many space/time saving instructions.  So this program
  45. only works on a '286 or better.  HOWEVER, 8088 based XT users aren't entirely
  46. left out in the cold.  Replace that useless 8088 chip with a Nec V-20 (Nec V-30
  47. if you have an 8086).  For about $10, you will pick up the ability to run this
  48. program, and any other '286 only programs that don't require protected mode
  49. features (almost all '286 only programs fall into this cataogory).  PLUS you
  50. will pick up a little speed.  Instead of a Norton SI of 1.0, you'll have
  51. a SI of about 1.1 or 1.2 - every bit helps.
  52.  
  53. DOS 2.0 or above:
  54.  
  55. The requirement of a '286 or above should lock out anyone from running DOS 1.x.
  56. However, one never knows, or a V20 upgrade could be running it.  Needless to
  57. say, AE requires MS-DOS 2.0 or above (or it's equivilant), and will barf on
  58. 1.x.  I don't bother checking, shouldn't have to in 1994...
  59.  
  60.  
  61. Features:
  62.  
  63. o 80286 coded for speed/compactness.
  64. o Very compact program.
  65. o Edit files up to 64K in length.
  66. o Uses TRUE TABS for ease of use, and compact file size.
  67. o Enter key is always a cursor motion key.
  68. o Intelegent TAB key.
  69. o Emulates most applicable WordStar commands.
  70. o Uses cursor keys for DOS weenies.
  71. o User configurable initial insert state.
  72. o User configurable backspace key - distructive or non-distructive.
  73. o Smart, column oriented cursor.
  74. o Intelegent use of EOF.
  75. o Automaticly inserts semi-colon at beginning of comment field if none there.
  76. o FORM7 filter.
  77. o Automaticly appends colons on labels.
  78. o Asm oriented auto-indent.
  79. o Automaticly strips trailing spaces/tabs.
  80. o Automaticly tabs from operand field to comment field.
  81. o Automaticly and transparently saves file during keyboard in-activity
  82. o On screen status line can be turned off, if desired.
  83. o User specified default file extension.
  84. o Pleasant audible feedback can be turned off if needed.
  85.  
  86.  
  87. Introduction:
  88.  
  89. AE.COM is an adaptation of Tom Kihlken's TED.COM.  AE.COM is written by
  90. Mark D. Pickerill, a professional assembly language programmer.
  91.  
  92. From the author:
  93.  
  94. C and Pascal programmers have a wide array of specialized editors available
  95. to them to assist in the coding process.  Assembly Language programmers have
  96. always had to make do with a general purpose text editor.  It occured to me
  97. some time back, that much of the process of writing assembly language could
  98. be automated - thus the birth of AE.  AE takes care of most of the mundane
  99. tasks of creating well-documented code.  Keystrokes are minimized as AE
  100. anticipates what comes next, and does it for you.  It can put colons on labels,
  101. make sure you go directly to the next appropiate field, insert the semicolon
  102. for you so you can immediately type your comment, and even take care of caps
  103. lock for you so you can write upper case code with lower case comments - by
  104. far the most readable, and most popular assembly language source formatting
  105. choice.
  106.  
  107. AE closely follows the format and options of Irv Hoff's FORM7 assembly
  108. language source formatter program.  I have used this program daily for many,
  109. many years.  AE minimizes my need to use it.
  110.  
  111. I searched endlessly for an existing editor to modify, as I did not want to
  112. re-invent the wheel.  TED, by Tom Kihlken, fit the bill.  It was small, source
  113. was included, source was reasonably well commented and structured, and most
  114. important, the source was in assembly.
  115.  
  116. Please bear in mind, that while some attempt has been made towards user
  117. configurablity, this editor was created by me, for me, for my coding style.
  118. Naturally, I think my coding style is the best, but others may not agree.
  119. I comment every line, use colons after all labels (NOT allowed by MASM),
  120. etc.
  121.  
  122. *******************************************************************************
  123. If you like AE, and can use it, fine.  If it is incompatable with your coding
  124. style, it is not for you.  I developed my coding style over many years of
  125. writing assembly language for a living, and code this way for a reason.  I like
  126. my assembly source files to be pleasing to the eye, and very well documented.
  127. Nobody's source code meets my documentation standards - including mine!
  128.  
  129. AE is oriented towards a person who is used to, and prefers WordStar keystrokes.
  130. Some attempt has been made to accomodate "DOS Weenies" with F-keys, cursor
  131. arrow keys, etc., but the program remains heavily WordStar-ish.
  132. *******************************************************************************
  133.  
  134. As with all my works, AE is dedicated to my patron deity, the Goddess Athena.
  135. If you are a member of a fanatical monotheistic religion and cannot deal with
  136. this, oh well...
  137.  
  138. FEATURES EXPLAINED:
  139.  
  140. Auto-commenting feature:  This is real time saver.  If this configurable
  141. option is turned on, it automaticly inserts semi-colons as needed.  It
  142. inserts them under two circumstances:
  143.  
  144. 1) The TAB key is pressed, moving the cursor to the comment column specified
  145. in the program installation.  (see configuration, below)  At this time,
  146. a semi-colon is inserted, so the programmer can immediately type his comment.
  147. A space is automaticly placed after the semi-colon, if AE was installed to
  148. do so.  AE does NOT insert a semi-colon if one already exists.  This allows
  149. tabbing in full line comments without conflict.
  150.  
  151. 2) The <CR> key is pressed on a line that 1) is shorter than the specified
  152. comment column, and 2) has no existing semi-colon.
  153.  
  154. This is for two reasons:
  155.  
  156. A) Blank lines in source code (semi-colon present for consistancy).
  157.    (and I don't like semicolons at the beginning of the line for a blank line)
  158.  
  159. B) The programmer isn't going to comment this line right now.
  160.    The programmer may want to go back later to comment this line in which
  161.    case the semi-colon is already there, or the line may stay un-commented
  162.    (tsk-tsk!) but the semi-colon remains for consistancy and style.
  163.  
  164. In all cases the semi-colon is inserted at the specified comment column.
  165. If the line is already longer than the specified comment column (long
  166. instructions, DB strings, etc.), no semi colon is placed.
  167.  
  168. This feature is great for going back and re-formatting and adding comments
  169. to someone else's code.  Load the code into AE, and hold down <CR> until
  170. the file has scrolled to the end.  You now have a properly placed semicolon
  171. in all uncommented lines, vastly simplifying the commenting process.
  172.  
  173. See QUIRKS, below.
  174.  
  175.  
  176. FORM7 Filter:  If this configurable option is turned on, the code is
  177. automaticly generated as upper case labels and instructions, with
  178. Capitalized lower case comments.  The first non-space character is
  179. capitalized in the comment field, then the caps lock is removed so that
  180. the remaing portion of the comment is in lower case.  The programmer may
  181. use the shift keys and/or re-engage the caps lock normally as needed.  <CR>
  182. switches back to upper case.  This is similar to the output of Irv Hoff's
  183. FORM7 program. (Highly recommended!)
  184.  
  185. The feature that strips trailing spaces and tabs (detailed below), is,
  186. strictly speaking, part of the FORM7 filter.  However, AE strips off trailers
  187. regardless of whether the FORM7 filter is selected or not.
  188.  
  189. Weenies that program with lower case labels and instructions (YUK!), will
  190. want this feature turned off.  I have written diatribes in the past about
  191. lower case source code in general, and lower case assembly source code
  192. in particular, so I will spare the reader this...
  193.  
  194. See QUIRKS, below.
  195.  
  196.  
  197. AUTO-COLONS:  AE has the ability to automaticly place a colon after all
  198. labels.  Just type the label and press either TAB or CR, and the colon is
  199. automaticly generated.  MASM users may not like this feature and want
  200. it turned off as MASM dis-allows colons on labels on EQU's, etc.
  201. Or MASM users can backspace out the colon when it isn't desired, OR
  202. press the space bar after typing the label as AE won't place a colon
  203. after the label in this circumstance.
  204.  
  205. See QUIRKS, below.
  206.  
  207.  
  208. AUTO-INDENT:  AE has a primitive auto-indent feature that is suitable
  209. for ASM programming.  Like many other features, it is user configurable.
  210.  
  211. When on, this feature remembers the state of the previous line, and applies
  212. it to the current line.  If a label or full line comment was typed in the
  213. previous line, when <CR> is pressed, it will set the cursor at the start of
  214. the current line for another label or full line comment.
  215.  
  216. If the previous line has no label or full line comment, the cursor will be
  217. placed at the first tab stop on the current line.  You may then type an
  218. instruction or <BS> to insert a label or full line comment.
  219.  
  220.  
  221. TRAILING SPACES/TABS:  AE automaticly strips any and all trailing spaces or
  222. trailing tabs when <CR> is pressed on a line.  This happens regardless of
  223. the cursor position on the line.  This means any new lines entered into a
  224. source file by AE will not have any trailing spaces/tabs.  To remove these
  225. from existing source files created by editors other than AE, either use
  226. FORM7, or, starting at the top, hold down the <CR> key until the entire file
  227. has scrolled by.  This feature minimizes file size and maximizes assembler
  228. throughput.
  229.  
  230. AE will also, when using save and exit, remove any trailing spaces/tabs
  231. from the last line in the file, and then ensure that the last line is
  232. terminated with a CR-LF pair.  This both prevents superflous trailing
  233. tabs created by the auto-indent feature AND prevents problems some assemblers
  234. have if the last line isn't terminated.
  235.  
  236. This doesn't occur if save and resume, then abort is used, nor during
  237. auto-save.
  238.  
  239.  
  240. FIND/FIND NEXT:  Unlike WordStar, FIND always starts at the top of the file.
  241. I always *HATED* having to do ^QR before ^QF.  FIND NEXT starts from the current
  242. location.  After entering the search string, FIND asks if you want the search
  243. to be case sensitive.  Any key other than <Y> defaults to case insensitive.
  244.  
  245. Search and Replace:  This function also always starts at the top of the file.
  246. This is ALWAYS a global search and replace, the most-often-used.
  247.  
  248. Search and Replace also doesn't waste your time by updating the display while
  249. doing its job - unlike WordStar which shows every single replacement done.
  250.  
  251. TABs:
  252.  
  253. AE uses TRUE TABs.  This means 1) a single TAB replaces up to 8 spaces, and
  254. 2) TABs are the standard length of 8 characters.  Non-standard tab stops, such
  255. as 4 or 10 are not supported.
  256.  
  257. This is much better than a fair number of LAME editors that do not use tabs
  258. at all.  Tab based source code takes up less space on disk, transmits over
  259. MODEM links faster, and most importantly ASSEMBLES FASTER!!
  260.  
  261. If insert status is on, a tab is inserted.
  262.  
  263. If insert status is off, the cursor is moved to the next tab stop, over
  264. any characters that are there.  Just functions as a cursor move key.
  265.  
  266. If insert status is off, and the next tab stop is beyond the current end
  267. of line, a tab is appended to the end of the line.
  268.  
  269. This is contrary to some editors I've used that either insert a tab
  270. regardless of insert status; or, with insert off, replace the current
  271. character with a tab.  This way is far more useful, especially when
  272. writing assembly code which is TAB oriented anyway.
  273.  
  274. AUTO-TABS:  This configurable option simplifies operation for the programmer
  275. by automaticly tabbing from the operand field to the configured comment column.
  276. Thus:
  277.  
  278. LABEL:    MOV    AL,0FFH        ; Comment
  279.  
  280. ... The operand field starts with the AL,0FFH.  After typing the last of this,
  281. the TAB key is pressed and the cursor moves to the configured comment column,
  282. without stopping at intermediate tab stops along the way.  The semi-colon is
  283. inserted, etc, if AE is configured this way.
  284.  
  285. This is automaticly turned off if the cursor is past an existing semi colon.
  286. This effectivly turns off the auto-tab feature when tabbing in a full line
  287. comment, etc.
  288.  
  289.  
  290. The <RETURN> key.  This acts differently from any other editor I've ever
  291. used, and I like it this way.  <RETURN> is always a cursor movement key,
  292. regardless of insert status.  Only if the editor needs to append a new
  293. line on the end of the file does it actually do anything.  This allows
  294. the <RETURN> key to be pressed halfway through a line, and just have it
  295. move to the beginning of the next line.  If you need to insert a line in
  296. the middle of a file, or in the middle of a line, use ^N.  Furthermore,
  297. <RETURN> can be configured to turn OFF insert.
  298.  
  299. The LAME feature:
  300.  
  301. The LAME feature makes AE as lame as any other editor.  Newline is inserted
  302. if insert status is on.  Needless to say, the neat feature of turning off
  303. insert on <CR> doesn't apply here.  This feature was provided by popular
  304. request.  See configuration, below.
  305.  
  306. The <BACKSPACE> key.  I hate distructive backspaces.  Therefore, backspace
  307. is just another cursor movement key.  I realize a lot of people do like
  308. distructive backspaces.  Therefore it can be configured as you like it.
  309.  
  310. INITIAL INSERT STATUS.  I think I'm the only person in the world who likes
  311. to fire up an editor with insert turned OFF.  Every other editor in the
  312. world, except WS where it is configurable, comes up with insert ON.  Some
  313. don't even allow you to turn insert off!  Needless to say, AE comes up with
  314. insert OFF.  As I'm probably the only person in the world who will like this,
  315. it is configurable.
  316.  
  317.  
  318. MOVING VERTICALY:  A very nice feature of AE, which I've always wanted, is
  319. the way the cursor column is handled when moving verticaly.  Explaining this
  320. gets a little complicated, so bear with me:
  321.  
  322. Let's say the cursor is positioned at the end of a fairly long line.  The
  323. up-arrow or ^E is pressed.  The cursor moves up to the next line.  Let's say
  324. the next line up happens to be a short line.  The cursor moves to the end
  325. of the short line.
  326.  
  327. So far, this is no different from any other editor that does not place trailing
  328. blanks to fill in a line.  Now let's say we move up again.  This next line up
  329. is even longer than the first line we started from.  In this case, the cursor
  330. will be positioned *in the same column it was to start with*!  WS drove me
  331. nuts when moving verticaly in the comment field of an assembly language source
  332. file.  AE is much nicer.  I cannot claim credit for this, it was inheirited
  333. from TED.
  334.  
  335.  
  336. PROCESSOR TECHNOLOGY COMPATIBILITY:  AE is compatable with the Processor
  337. Technology assembler's way of allowing a * in the first location of a line
  338. to mean a full line comment, without having to use a semi-colon.  Now, I
  339. doubt that anyone is using this assembler anymore (or if they are, not on
  340. a MuSh-DOS machine.), but this quirk has crept into several subsequent
  341. products, including ASM for CP/M, and the FORM7 program.  Even my assembler,
  342. the 2500 A.D. assembler allows this, although it carries it a bit farther.
  343. So a * in the first column is the same as a semi-colon, and the FORM7
  344. filter will key off of it.
  345.  
  346. Just in case some flakey future version of MASM uses a * as the first character
  347. in a label to mean something special, there is a config byte to turn this off.
  348.  
  349. The bottom line:  You probably don't care.  Leave on unless you code with a
  350. * as the first character of a LABEL.
  351.  
  352. EDITING BEYOND 80 COLUMNS:
  353.  
  354. AE retains the capability inherited from TED of allowing editing beyond
  355. 80 columns.  Any line longer than 80 columns will have a diamond placed in
  356. the rightmost column.  Using ^LEFTARROW and ^RIGHTARROW will shift the display
  357. 8 characters at a time to be able to "reach" this longer text.  ASM source is
  358. seldom wider than 80 chars anyway, but the capability is there, if needed.
  359.  
  360.  
  361. AUTO SAVE FEATURE:
  362.  
  363. AE will save your file for you automaticly (if so configured) if the file
  364. hasn't been saved since the last change, AND no keys have been pressed
  365. within the last 3 minutes.
  366.  
  367. Auto-save will also save your file for you automaticly before executing
  368. the shell to MS-DOS feature.  The safety reasons for this are obvious.
  369.  
  370. Auto-save is transparent to the user.  The file is saved to <FILENAME>.$$$.
  371. This file is automaticly deleted when the user exits the program normally,
  372. either through save and exit, or abort.  However, if normal program execution
  373. is interrupted through power failure, system crash, un-intended operation of
  374. the Big Red Switch, or other cause, the <FILENAME>.$$$ file will still be
  375. present, and will represent the state of the edited file as of the last
  376. auto-save.  This file may be re-named as needed.
  377.  
  378. Auto-save will NOT kick in if the program is left waiting for user input.
  379. As in a FIND, Search and Replace, or any file operation while entering
  380. the file name.
  381.  
  382. Auto-save will attempt to save even when AE was invoked with no (or an
  383. invalid) filename.  In this case, it will NOT work, but the speaker is
  384. beeped once to call your attention to the attempt.
  385.  
  386.  
  387. STATUS LINE:
  388.  
  389. The status line shows the functions of F-keys 1-10 as well as the current
  390. insert/overstrike status.  This line may be turned off with the configurator
  391. program, if desired.  The insert/overstrike status won't be visible with the
  392. line off, but you pick up an extra line of display.
  393.  
  394.  
  395. DEFAULT FILE EXTENSION:
  396.  
  397. The last editor I used with a default file extension was Nevada EDIT,
  398. under CP/M, although I suspect that the MS-DOS version, Utah EDIT was the
  399. same.  Regardless, I've always liked that feature and sorely missed it.
  400. With AE, it's back!
  401.  
  402. A default file extension (.ASM, .A86, .68K, whatever) can be specified with
  403. the AECONFIG.COM or DEBUG.  Then the editor can be invoked without having
  404. to specify a file extension - the default is used.  As is usual with such
  405. things, if you want to work on a file that actually has no extension, specify
  406. it with a trailing dot, i.e. FILENAME.
  407.  
  408. If this kind of feature drives you crazy, just specify a default of 3 blanks
  409. when configuring, it will effectivly turn this feature off.
  410.  
  411.  
  412. QUIRKS:
  413.  
  414. Like any program that attempts to do your thinking for you, there are times
  415. when it isn't doing what you want it to.  AE is no exception.  A good deal
  416. of care has gone into the program, in an attempt to make it as un-obtrusive
  417. as possible.  A balance between doing your thinking for you vs. getting in the
  418. way when you want to do something else has been struck.  As mentioned before,
  419. AE assumes that you write your ASM source much like I do.  It assumes that you
  420. use the TAB key to move to the next field.  It assumes you press <CR> when
  421. finished typing in a new line.  Most of the automatic features are keyed off
  422. of either the TAB key or <CR>, or both.
  423.  
  424. Here are some of the quirks you may encounter...
  425.  
  426. FORM7 filter:  If there is a semi-colon inserted in a quoted string,
  427. caps lock will want to fight you.  Pressing the semicolon will turn on
  428. caps lock.  Then 1 or 2 characters later, it will come off.  The editor will
  429. also insert the "space after semicolon" if configured this way.  You'll have
  430. to go back and delete this space manualy.
  431.  
  432. This is due to AE making the assumption that a semi-colon means a comment.
  433. It doesn't know about quoted strings.  As semicolons aren't used too often
  434. in quoted strings, it isn't felt worth the code space to work around this
  435. problem.
  436.  
  437. Code to detect all possible permutations of quoted strings with single quotes,
  438. double quotes, reverse quotes, and things like '' to actually insert the quote
  439. character into the literal string, would be big, clunky, and ugly... Personally,
  440. I can't remember the last time I had a semi-colon in a quoted string anyway.
  441.  
  442. A work-around is to DB 3BH or just toggle the caps lock as needed.
  443.  
  444. Auto commenting:  Similar to the FORM7 quirk, if there is a semi-colon in
  445. a quoted string, the auto comment feature won't work.  You will have to insert
  446. the semi-colon manualy, and handle the formatting of the comment manualy.
  447.  
  448.  
  449. AUTO-COLONS:  Does not automaticly place a colon after the label if any
  450. key besides <CR> or TAB is pressed when typing the label.  This has been
  451. left this way in order to accomodate MASM users who cannot have colons after
  452. some labels.  MASM users are advised to press <SPACE> after a un-coloned label,
  453. or use one of the control keys.  (or turn this feature off).
  454.  
  455. EDITING MARKED TEXT:  Not allowed.  If you have a block defined, you cannot
  456. edit inside it as long as it is visably marked.  Use ^KH to hide the block, edit
  457. it, then ^KH to un-hide it again. Search & Replace, since it is global, will
  458. not function if there is a defined block visable *anywhere* in the file.
  459.  
  460. In a similar vein, block load from file is non-functional while the cursor
  461. is inside a marked block.  Turn off, then load, or move outside the marked
  462. area.
  463.  
  464. FIND, SEARCH & REPLACE:  If using these functions, espcially search & replace
  465. with a large file where there will be a lot of replacements, IF POSSIBLE, use
  466. the case sensitive feature instead of the default case insensitive.  The
  467. exact match routine for the case sensitive routine is MUCH faster than the
  468. "mask and compensate" that must be performed for the case insensitive search.
  469. So you may have a situation where you know the case is the same, or it's
  470. numeric data, or whatever, then you can use the case sensitive search with
  471. the same result.
  472.  
  473.  
  474. TRAILING SPACES/TABS:  It *is* possible to enter lines with trailing spaces or
  475. trailing tabs.  The way this is done is to create the trailing spaces/tabs, then
  476. instead of using <CR>, use one of the control-keys, such as up-arrow or page up,
  477. etc.
  478.  
  479.  
  480. NOTE TO XT USERS:
  481.  
  482. Please note that if you are using an XT archetecture machine AND you have
  483. one of those clone phone keyboards with caps lock LEDs, the LED will get out
  484. of sync with the state of caps lock.  XTs cannot turn this light on and off
  485. like an AT can, and as AE is constantly fiddling with the caps lock state,
  486. this light will be meaningless.  You may restore the light to it's normal
  487. state by making sure it is ON before exiting AE as AE turns caps lock on when
  488. exiting.  Some keyboards also allow the state of the LED to be "fixed".
  489.  
  490. AT machines, of course, will not have this problem, the LED will correctly
  491. follow the caps lock state.
  492.  
  493.  
  494. ALL QUIRKS:  Yes, it *is* possible to "fix" most of these.  However, doing so
  495. would result in the editor becoming too rigid to be able to work around the
  496. automatic features, when desired.  It is felt that the balance is best served
  497. this way.  It goes without saying, that the way *I* code, minimizes my
  498. encountering these quirks.
  499.  
  500.  
  501. WORDSTAR KEYS:
  502.  
  503. There are 4 catagories of WordStar emlation:
  504.  
  505. Catagory 1:  Absolutely, positively, *MUST* act just like WordStar.  Item
  506. 2, below, and most other implemented commands fit this description.
  507.  
  508. Catagory 2:  Needs to be close, but need not be exact.  Items 1 & 4, below,
  509. fit this description.
  510.  
  511. Catagory 3:  Needs to be close, but needs some kind of improvement.  Items
  512. 3 (in the default configuration), and 6, fit this description.
  513.  
  514. Catagory 4:  Not implemented.  Either non-applicable, or too complicated for
  515. the amount of times the function is required.  ^KN, enter column mode, comes
  516. to mind.  Nice feature when you need it, but you seldom do.
  517.  
  518. Most WordStar keys are catagory 1 implementations.
  519.  
  520. A few exceptions:
  521.  
  522. 1) Word Left and Word Right (^A and ^F).  Merely move to the previous/next
  523. tab stop.  Felt to be good enough for programming.
  524.  
  525. 2) To the best of my knowledge, AE handles tabs just like WS.
  526.  
  527. 3) <CR> acts just like WS if AE has been configured this way.  The default
  528. configuration does not.  See above.
  529.  
  530. 4) ^KS and ^KX.  Save and resume/save and exit.  Invoke just like WS, but
  531. have the added question about file name.  This allows AE to be invoked without
  532. a filename or utilized in a SAVE AS: mode.
  533.  
  534. 5) As stated above, an initial FIND always starts at the top of the file.  Find
  535. next is just like WS.  FIND only asks about case sensitivity, does not have
  536. the other WS options.
  537.  
  538. 6) Depending on what version of WS you may have been using, the handling of
  539. the cursor when moving verticaly over a tab:
  540.  
  541. LAB_L:    MOV    AH,09H        ; Comment
  542.     JMP     SHORT SOMEWHERE    ; Exit
  543.  
  544. ...asuming the _ in the above label is the location of the cursor, WS 4.0,
  545. when the cursor was moved DOWN (^X), would move the cursor to the beginning
  546. of the JMP instruction, unlike WS 3.3, which would move the cursor to the
  547. beginning of the line (beginning of the TAB).
  548.  
  549. The 4.0 way drove the author nuts!  AE does it the 3.3 way.  In fact, the 4.0
  550. way was the beginning of the author's desire for a better editor!
  551.  
  552. 7) Block marking is a catagory two implementation.  Unlike WS, it doesn't matter
  553. if you use ^KB, then move up to do a ^KK.  With AE, always start a block with
  554. ^KB, then move to the end, even if it is a backwards move, then define the
  555. end with ^KK.  AE will swap them internaly for you.  (Rather than printing
  556. a stupid error message.)  ^KK *cannot* be used first. (Nothing happens)
  557.  
  558. 8) ^KF doesn't run the specified program as WS does.  It merely shells
  559. to DOS and you can do anything you like.
  560.  
  561. 9) ^B doesn't just strip the high bit from the current line as WS does.
  562. It strips the high bit from the entire file.
  563.  
  564. 10) ^P insert literal works almost like WS.  The next literal keystroke is
  565. inserted into the file.  However, control codes default to their IBM charcters,
  566. NOT the carret followed by letter convention of WordStar.  For example,
  567. Control-A is displayed as  not as ^A.  For your protection, tabs, & CR do
  568. not display at all, but perform their normal function.  If you insert a ^Z
  569. into the file, AE will beep as a caution.  A literal ^Z placed into the middle
  570. of a file will truncate the file at that location next time AE loads it (unless
  571. EOF checking is turned off).  Not recommended, so do this at your own risk!
  572.  
  573. Due to it's invisiblity, null (00) or ^@ is not allowed to be processed by
  574. this function.  Some assemblers will barf on invisable stuff like this...
  575.  
  576.  
  577. AE keystrokes:
  578.  
  579. The following is a chart of all keystrokes AE accepts.  It should be noted
  580. that some commands are only present in the WordStar column.  It is next
  581. to impossible to use weenie keys for everything without resorting to a menu.
  582. Most commands missing from the weenie column won't be missed by non-WordStar
  583. users anyway.  (I hope).
  584.  
  585. Some weenie keys may not make much sense and be hard to remember, esp.
  586. the ^F keys.  Tried to make the ^F keys as intuitive as possible.  Most
  587. other weenie keys should be fairly intuitive.  Remember, the program *is*
  588. oriented towards folks used to WordStar (for better or worse).
  589.  
  590.  
  591. WordStar key        DOS weenie key        Action
  592. ---------------------------------------------------------------------------
  593. ^KQ            F1            Abort edit
  594. ^KX                     F2            Save & exit
  595. ^KS            ^F2                Save and resume editing
  596. ^KB            F3            Begin block
  597. ^KR            ^F3            Read block from disk file
  598. ^KK            F4            End block
  599. ^KH            ^F4            Hide/unhide block (toggle)
  600. ^KC            F5            Copy block
  601. ^KW            ^F5            Write block to disk file
  602. ^KV            F6            Move block
  603. ^KY            ^F6                Delete block
  604. ^QF            F7            Find
  605. ^L            ^F7            Find next
  606. ^QA              F8            Search & Replace
  607. ^QI            ^F8            Jump to specified line #
  608. ^QY            F9            Delete to EOL
  609. ^B            ^F9            Zero MSB of entire file (1)
  610. ^Y            F10            Delete line
  611. ^U            ^F10            Undelete line
  612. ^QB            F11 *            Jump to start of block
  613. ^QK            F12 *            Jump to end of block
  614. ^QR            ^PGUP            Top of file
  615. ^QC            ^PGDWN            End of file
  616. ^R            PGUP            Go up one screen
  617. ^C            PGDWN            Go down one screen
  618. ^QS            HOME            Go to beginning of line
  619. ^QD            END            Go to end of line
  620. ^E            UPARROW            Go up one line
  621. ^X            DOWNARROW        Go down one line
  622. ^S            LEFTARROW        Go left one char
  623. ^D            RIGHTARROW        Go right one char
  624. ^W            ^UPARROW *             Scroll down one line
  625. ^Z            ^DNARROW *             Scroll up one line
  626. ^A            SHIFT-TAB              Move to previous tab stop
  627. ^QE            ^HOME            Go to upper right of screen
  628. ^QX            ^END            Go to lower left of screen
  629. ^F or <TAB>        TAB                    Move to next tab stop
  630. ^V            INS            Toggle insert state
  631. ^G            DEL            Delete character under cursor
  632. ^N            ^ENTER            Insert line
  633. ^K0 - ^K9                    Place marker 0 - 9.
  634. ^Q0 - ^Q9                    Jump to marker 0 - 9
  635. ^KP                        Print block if marked, whole
  636.                           file if no block marked.
  637. ^T                        Delete word right
  638.                         ^RIGHTARROW        Shift display right 8 chars
  639.                         ^LEFTARROW              Shift display left 8 chars
  640. ^KF                        Shell to DOS
  641. ^P                        Insert literal keystroke.
  642.  
  643.  
  644. * Extended keyboard only.
  645.  
  646. (1)  Also converts any nulls (00) bytes to SPACE so you can see them.  80H
  647. characters that convert into nulls also are re-converted to SPACE.
  648.  
  649. USER CONFIGURABLE ITEMS:
  650.  
  651. You can use the supplied program AECONFIG.COM to configure AE.COM.  This
  652. is a simple get-the-job-done program.  AECONFIG prompts include the
  653. recommended settings, following these will result in an "out of the box"
  654. copy of AE.COM.  These settings are felt to be suitable for most folks.
  655. WordStar users will probably want the status line turned off as they won't
  656. be using the F-keys anyway.  (Unless they want to see Insert/Overstrike
  657. status.)
  658.  
  659. AECONFIG does not include settings for the backup and temp file extensions,
  660. as it is felt that most folks won't want/need to change them.
  661.  
  662. The following items can be patched in the .COM file with DEBUG.
  663. All values are hex unless noted.
  664.  
  665.  
  666. OFFSET          Default Meaning
  667. 0103        00    Inital insert status, 00=insert off, FF=insert on
  668. 0104        FF    FF=non-distructive backspace, 00=distructive backspace.
  669. 0105        FF    FF=Handle EOF properly.  Append a single EOF when
  670.                         saving, stop at the first EOF when loading.
  671.                         00=Do MS-DOS style EOF handling.  Ignore when loading,
  672.                         do not append when saving.
  673. 0106        FF    FF=Do backup files, 00=don't do backup files
  674. 0107        FF    FF=Auto comment feature.  Insert semicolons.
  675.             00=Auto comment off.
  676. 0108        FF    FF=Space after auto comment semi-colon
  677.             00=No space.
  678. 0109        FF      FF=FORM7 filter on. 00 = FORM7 filter off
  679. 010A           FF      FF for auto colons, 00 for no auto-colons.
  680. 010B            FF      FF for auto-tab to comment column
  681. 010C        FF    FF for auto indent, 00 for no auto indent
  682. 010D          00    FF to allow <CR> to generate new line with insert on.
  683.             00 for <CR> to be cursor motion only
  684. 010E        FF    FF for Processor Technology compatiblity.  Most
  685.                         users can leave this on.
  686. 010F        FF    FF to allow <CR> to turn OFF insert.  Meaningless if
  687.             LAME is turned on. (010D=FF)  See note (3) below.
  688. 0110        FF    FF to enable 3 minute auto-save feature.
  689. 0111        FF    FF to enable screen status line
  690. 0112        FF    FF to enable beeps, clicks and pops.  00 for submarine
  691.                         (totally silent) mode.
  692. 0113        0A    Color for color users.  Green = 02, intense green = 0A
  693.                         If this byte is 00, AE will use the existing attribute.
  694.                         This is for folks that like to set default colors from
  695.                         DOS with one of the many programs available to do this.
  696.             See note (2) below.
  697. 0114        20    (32 Decimal)  Column comments start in for auto-comment
  698.                         If this byte is not a multiple of 8, AE sets this to
  699.                         the next lowest multiple of 8.
  700. 0115            00      LPT to print to.  00 - 02.  00=LPT1, etc. (>02 = 00)
  701. 0116        ;    (ASCII Value)  Comment delimiter.  Normally a semi-colon
  702.             Change to meet your needs.
  703. 0117        2E    DO NOT CHANGE!! (Dot for file extension)
  704. 0118-011A    ASM    (ASCII values)  Default file extension.
  705. 011B        00    DO NOT CHANGE!! (Termination for file extension)
  706.  
  707. The following items are not in the AECONFIG.COM program, and must be patched
  708. with DEBUG if changes are desired.  Most folks won't care....
  709.  
  710. 011C        2E    DO NOT CHANGE!! (Dot for file extension)
  711. 011D-011F    BAC    (ASCII values)  Backup file extension - not in AECONFIG.
  712. 0120        00    DO NOT CHANGE!! (Termination for file extension)
  713. 0121        2E    DO NOT CHANGE!! (Dot for file extension)
  714. 0122-0124    $$$    (ASCII values)  Temp file extension - not in AECONFIG.
  715. 0125        00    DO NOT CHANGE!! (Termination for file extension)
  716.  
  717.  
  718. (2)  When this byte is set to 00, AE attempts to utilize the existing screen
  719. attribute as it's default.  Unfortunately, this only works if the *next*
  720. screen line after the invocation line has the desired screen attribute.
  721. For example, the Norton's popular SA program clears the screen and sets the
  722. screen color of the entire screen.  Running AE (configured with the color
  723. byte=00) will correctly inherit this color.  However, after performing
  724. a CLS, only the "already used" portion of the screen is set to the SA attribute,
  725. the rest of the screen is B&W.  Which means AE inherits the B&W attribute.
  726.  
  727. Other screen setting programs may work differently.  When in doubt, install
  728. AE to use an internal color choice...
  729.  
  730.  
  731. (3)  If enabled, this feature also turns off insert on line delete as well.
  732.  
  733.  
  734. FUTURE VERSIONS:
  735.  
  736. A future version of AE will probably be able to at least be able to edit files
  737. as large as available memory, as opposed to the current 64K limit.  The current
  738. 64K limit hasn't been too much of a limitation to me, but it would be nice to
  739. be able to edit larger files.  Rest assured, that an AE capable of larger files
  740. *will* require a '386 or better.  "I don't do segments."
  741. Rumor has it that MS-DOS 7 will have 32 bit extensions.  If this is true, I'll
  742. be using them...
  743.  
  744. Virtualizing.  This is the ability to buffer to disk all but the immediate
  745. portion of the file you're editing.  Would be nice, but probably won't happen.
  746. The program is too hard structured for that to be an easy task.
  747.  
  748. Doubtless, as I and others use the program, other enhancements will be needed.
  749. Look for new releases from time-to-time.  I use this program daily, and continue
  750. to find things that aren't quite right and pop over and tweek the program a
  751. little more.
  752.  
  753. THINGS YOU WON'T SEE:
  754.  
  755. There are several things you won't see, either because I don't do them, or
  756. the necessary coding is beyond the scope of the project.
  757.  
  758. Mouse support:  Mice are great for CAD programs, draw/paint programs, etc.
  759. They don't belong in text editors, nor do they belong in operating systems...
  760.  
  761. Color support:  There is rudimentary color support already built into the
  762. program.  I am willing to listen to suggestions on how to "improve" this.
  763. However, as I am a color refusenik, I'm not going to go overboard on this.
  764. Color monitors HURT my eyes...
  765.  
  766. Tab stops other than 8:  Sorry folks, tab stops are 8 characters each, always
  767. have been.  I have had it suggested to me that the label field be longer, say
  768. 10 characters.  First, the 8 character tab stop thing is hard coded into the
  769. program, inheirited from TED (as it should be).  Second, it is a religious
  770. issue to me, I don't believe in long labels (or non-standard TAB stops).
  771. Long labels can always be placed on their own line, AE makes this very
  772. easy to do.  Third, as stated at the top of the documentation, AE assumes
  773. the user codes in a similar manner to the guy who wrote it. <GRIN>
  774. And fourth, TRUE tabs are 8 characters.  MS-DOS is the only OS I've
  775. encountered that doesn't rigidly enforce this.
  776.  
  777. KUDOS:
  778.  
  779. A number of folks helped test AE and pestered me with bug reports and
  780. "Requests".  The person most responsible for a good BETA cycle was Larry
  781. Alm.  Clarence Dyson, Bob Shepard, and Robert Cabral were also very helpful.
  782.  
  783. And espcially thanx to PC Magazine/Tom Kihlken for creating TED and allowing
  784. us to have the source code.  PC Magazine has published lots of useful programs
  785. over the years, most with source.  Hurray for them!  We'd all be poorer
  786. without them.
  787.  
  788.  
  789. SUPPORT:
  790.  
  791. The "home" BBS for AE.COM is the Hacker Heaven BBS at (408) 375-5455.
  792. We currently support baud rates from 300 to 14.4K+v.42bis.
  793.  
  794. In this day of media hype, it is necessary to point out that the word
  795. "Hacker" means computer programmer, NOT computer criminal.  We do not
  796. tolerate illegal activities of any kind.
  797.  
  798. OTHER PROGRAMS:
  799.  
  800. The following is a list of currently supported programs written by
  801. Mark D. Pickerill, the author of AE.  These may be found on the Hacker
  802. Heaven BBS, or a fine BBS near you.  Most have been uploaded to EXEC-PC as
  803. well.
  804.  
  805. AE:  Asm Edit.  A source code editor for assembly language programmers.
  806. (at last!)  Supports auto-colons on labels, auto-comments, much, much more.
  807. Removes the mundane chores of creating well-documented assembly language
  808. source code.  A must for any serious assembly language programmer.
  809. Distributed as AE*.ZIP where * is the version number.  AE24B.ZIP was the
  810. latest at this writing.
  811.  
  812. UNLOAD86:  This is the end-all and be-all of binary to Intel Hex conversion
  813. programs.  Many options, supports fill to end of ROM, the new "Linear extended
  814. address records", more.  Includes Source.  Distributed as UNLD86*.ZIP where
  815. * is the version number.  UNLD8616.ZIP was the latest at this writing.
  816. A couple of the initial versions were distributed as UNLOAD86.ZIP.  These
  817. are severely downrev, and should be deleted.
  818.  
  819. BAUDASC:  Converts ASCII <---> Baudot.  Allows use of the ancient Baudot
  820. 5 bit code.  Includes Source.  Distrubuted as BAUDASC*.ZIP where * is the
  821. version number.  BAUDASC1.ZIP was the latest at this writing.
  822.  
  823. CURSOR:  Very tiny TSR forces your IBM PC compatable's cursor to a block
  824. at all times.  Much smaller than other programs of its type.  Includes source.
  825. Distributed as CURSOR*.ZIP, where * is the version number.  CURSOR15.ZIP
  826. was the latest at this writing.  Now optionally incorporates caps lock support
  827. similar to CAPS (Below).
  828.  
  829. UNLOAD:  [for CP/M].  Converts binary to Intel hex.  Only supports the
  830. original phase 1 Intel hex specification.  Distributed as UNLOAD*.ARK
  831. (may be .LBR some places) where * is the version number.  UNLOAD23.ARK
  832. was the latest at this writing.
  833.  
  834. HELLO:  [for CP/M *and* MS-DOS].  Writes the string Hello. to the screen.
  835. Big deal huh?  The point is the *same* physical .COM file works under *both*
  836. CP/M and MS-DOS!!  Distributed as HELLO.ARK and HELLO.ZIP.  Includes source.
  837.  
  838. INDIO:  [for CP/M]  Shows how to do indirect I/O (ala Z-80) on an
  839. 8080 or 8085 processor.  NO dedicated memory locations, ROMable routine.
  840. Source only.  Distributed as INDIO.ARK. (or .LBR)
  841.  
  842. CAPS:  Old timers like me are used to command line input in UPPER case.
  843. CAPS is a tiny TSR that sets caps lock when an application exits.  Most
  844. folks won't like/need this program.  Distributed as CAPS*.ZIP where
  845. * is the current version number.  CAPS10.ZIP was the latest at this
  846. writing.  Includes source.
  847.  
  848.  
  849. Discontinued programs:
  850.  
  851. The following programs have been written in the past.  I no longer support
  852. them, most (but not all) are gone from my board, but they may still be
  853. floating around "out there".  Feel free to use them if you find them, but
  854. don't ask me about them...  Most were quick hacks anyway...
  855.  
  856. SPLIT.ZIP:  Splits a binary input file into two files, one containing the
  857. ODD bytes the other containing the EVEN bytes.  Useful for programming two
  858. EPROMs on a 16 bit bus.  Included source. (I think...)
  859.  
  860. FIXHEX.ZIP:  Used to fix certain deficient Intel hex files.  Would strip off
  861. any extended address records, and ensure that a correct EOF record was on
  862. the end.  Fixed the old MAC/ASM :000000  (incorrect) EOF record.
  863.  
  864. FONT.ZIP:  Reprogram EGA and VGA character fonts.  Great for getting rid
  865. of that ugly fat exclamation point!  Define your on-screen fonts any way
  866. you like.  Included source.
  867.  
  868. SYSTEM.ARK: [for CP/M]  Allows jumping to any place in memory.  Input in
  869. hex or decimal.  Included source.
  870.  
  871. Dead programs:
  872.  
  873. The following programs have been written in the past.  I no longer support
  874. them, ALL are gone from my board, but they may still be floating around "out
  875. there".  I DO NOT RECOMMEND USE OF ANY OF THESE, AND REQUEST THAT IF YOU
  876. FIND THEM, YOU ASK THE SYSOP OF THE BOARD YOU DOWNLOADED THEM FROM TO
  877. DELETE THEM ASAP!!  These are obsolete and no-longer of value.
  878.  
  879. OLDUSER:  Designed to automate the process of deleting "old" users from
  880. a Spitfire BBS system.  Has long since been replaced by an official
  881. Spitfire function.  Only worked with a very old versions of Spitfire.
  882.  
  883. SFZIPDOR:  A program designed to allow Spitfire callers the ability to
  884. extract and selectively download members of any archive format.  Worked
  885. on my board, but pulled from distribution due to in-stablities of the
  886. program.  Plus it won't work above 9600 baud.  Don't use this program!!!
  887. A replacement is possibly in the works, either from myself or from Spitfire.
  888.  
  889. MSGUNDEL:  Or something like that, I no-longer remember the exact name.
  890. Program would globally un-delete any deleted messages in a Spitfire BBS
  891. system.  Program is no-longer compatable with Spitfire, AND is no
  892. longer needed as Spitfire now allows the Sysop to turn off message deletion.
  893.