The September 2006 version of PI:

1. Added a startup annoyance that says how to exit PI or invoke the menu.
   It quits after some typing starts. Disabled by ~/.pirc resource line.

2. Fixed a number of troubles for macOSX on a G4 OS X 10.4.x. Default
   file creation left strict permissions, not matching the directory.
   Looks line a bug in stat() in macOSX c-library. Some trouble with
   unsigned char * manipulation. Mostly, the biggest bug was trashed mac
   OS X header files in /usr/include and /usr/include/sys. For a while,
   stat() seemed not to work, but moving the code made the problem go
   away (go figure). Installed new code for termios.h, required for
   macOSX.

3. Added SOLARIS and macOSX switches in the code. Change in getpgrp
   argument list in solaris. Changes in /proc/pid/status made it
   necessary to use instead a call to getrusage(n, r).

4. Trouble with read() and write() in newer header files, because of
   type changes. Coded eread() and ewrite() for these cases, with a call
   to read() and write() in each.

The January 2003 version of PI:

1. Fixed a 10-year old bug in getkey(), which allowed leadin characters
   to be passed back for insertion. Required new code to replace the
   naive test ' ' <= c <= 256 used for 10 years. This resulted in a log
   of "leadinSTR" into file pi-macro.key.

2. Fixed bug in the macro editor, which occurs when there are no macros.
   Now displays an error message "No data" instead of just quitting.

3. Bug fix for display of info messages: moved info box to lower right
   corner, so as to not obscure text on top lines.

4. Command pipe tested for "iconv -f cp1250 -t latin2 test.txt" which
   injects a new 8859-2 encoding into a buffer from disk file test.tex,
   the latter assumed in this example to be encoded as CE windows 1250.

   In Xfree86, this pipe process allows code page 1250 sources to be
   viewed normally, even though there is no font support for cp1250. The
   problem with 8859-2 is that hooked-characters \v{s}, \v{S}, \v{z},
   \v{Z} are not in the font, so they are not displayed.

5. Runtime libraries can be documented from C:\Windows\APPLOG, where
   each win32 application logs its runtime library loads and accessed
   files. The cygwin package for PI uses these libraries:

     C:\CYGWIN\BIN\CYGWIN1.DLL
     C:\WINDOWS\SYSTEM\WSOCK32.DLL
     C:\WINDOWS\SYSTEM\WS2_32.DLL
     C:\WINDOWS\SYSTEM\MSVCRT.DLL
     C:\WINDOWS\SYSTEM\WS2HELP.DLL
     C:\WINDOWS\SYSTEM\WININET.DLL
     C:\WINDOWS\SYSTEM\SHLWAPI.DLL
     C:\WINDOWS\SYSTEM\MSWSOCK.DLL
     C:\WINDOWS\SYSTEM\MSAFD.DLL
     C:\WINDOWS\SYSTEM\USER.EXE

   The lccwin32 package for PI uses C:\WINDOWS\SYSTEM\CRTDLL.DLL (comes
   with Internet Explorer) and one system DLL. 
   
   The DOS package for PI uses no libraries.

The December 2002 version of PI:

1. Added terminal type "vt100internal" to access internal vt100 TERMCAP
   and avoid the need to have a termcap file. This allows porting pi.exe
   for cygwin to an arbitrary directory, provided a batch file invokes
   the editor with command line "pi -dir:thedirectory -term:vt100internal"
   from a DOS window. It works for win95 and win98. Not tested for win3.1.

2. Cygwin shell variable default set to "bash" which is unfortunately not
   too logical, as command.com is an alternative. This default is defeated
   by setting variable SHELL in cygwin /etc/profile or by interactive
   command in a bash console window. Testing says command.com won't work.

3. Tested lccwin32 pi.exe on win95. It worked by copying the .exe file to
   the disk and running it under win95. Evidently, the default win95
   mscrt library supports all the necessary OS calls. Since lccwin32 pi.exe
   was produced under win98, it was a question, if it could run under win95
   without adding extra libraries. Internet Explorer copies CRTDLL.DLL to
   the system directory, so most 95 installations already have libraries.

4. Tested pi.exe in rxvt.exe window, which is resizable. It works well,
   provided the EXE allows resizing, e.g., cygwin. Please note that
   xrvt.exe runs without X-windows and fonts, using just the 50k
   libW11.dll. This requires DISPLAY to be unset. However, font display
   is different, depending on whether rxvt is launched from XFree86 or 
   MS-Windows. For example, 8859-2 fonts end up displaying as 8859-1
   after a MS-windows launch.

5. Added a ReadConsoleInput routine into lccwin32, to replicate most of
   what is available under Xfree86 in shifted keypad mode. In DOS
   console mode lccwin32 pi.exe works like cygwin pi.exe does under
   Xfree86. The keymap problems are gone. Won't work in rxvt window,
   because of remaps of stdin/stdout by cygwin.

6. Each file now has an input and output file type, which can be set 
   individually. The settings in the NotePad are the default ones, given
   in .pirc or pi.set, or the compiled-in defaults. A new routine was 
   added to detect the file type as UNIX, MSDOS, MAC or BINARY. If the
   file type cannot be determined, then it is taken to be BINARY. This
   still needs some work, because internal translation of nulls, newlines
   still occurs, making a binary write unreliable.

7. Bug in command line -set: fixed. It seems the HOME variable took 
   precedence over the command line setting.

8. Coded the 16-color handler for lccwin32. 

9. Added "New folder" and "Export-import" to the File menu.

The November 2002 version of PI:

1. Re-packaged the sources into a single file pie.c. Added pie.h,
   pieproto.h, piesetup.h to make it easier to manage edits for a new
   target compiler. Re-created makefiles for DOS, Win32, Cygwin, Linux.

2. Added code to support the lccwin32 library, for a console window
   in MSwindows. This adds virtual memory and long filename support
   to PI. The overhead is low, because it only uses 2 dll libraries,
   namely a system dll and microsoft-C runtime. For windows users,
   this version is a good replacement for the older DOS version using
   8.3 filenames. Runs in a DOS window or BASH/cygwin console but not
   in xterm. In progress: a fix for the application keypad and alt keys,
   both unsupported in lccwin32 libraries (did it December 2002).

3. Re-did the makefile for turbo-c++ 1.0 to use the pie.c source. There
   were no significant changes in the DOS code, except to add prototypes
   to satisfy the tcc compiler. This version is still useful for fixing
   system files with a DOS boot (other versions need Windows to run).

4. Added code to support the cygwin gcc compiler to make an executable
   that runs in a BASH/cygwin console and cygwin/XFree86/xterm. The new
   idea required was to modify the terminal input routines, catching
   ctrl-C with a signal. These ideas did not affect the Xfree86/xterm
   operation, which remains identical to the Linux operation, except for
   routines related to spawning a process. If there is a complaint, then
   it is with the BASH/console operation, which gives up the application
   pad keymap. This is a "feature" of cygwin, which maps the function
   keys but makes no attempt to switch to shifted keypad mode.
   Fortunately, XFree86 and xterm have an idea about shifted keypad
   mode, so everything works there normally.
   
5. Bug fixes: Two slashes or two backslashes were supposed to result in
   the query filename being truncated to the trailing text. It didn't work,
   now it does. Directories are now displayed in a file list with trailing
   slash or backslash. A memory exists for directory tree browsing, so that
   moves down a tree and then back end up at the root location. The last 
   directory + filename pair is remembered so that subsequent browsing
   starts at the same location.

The May 2000 version of PI:

1. The interface for macro saving and re-use has been redone to reflect
   how the editor is used.

   TOOLS MENU. The intent of the "tools" menu is to add editor
     extensions onto a menu for re-use without key memorization.

     The idea is to define a keyboard macro and use it (key F7) until it
     becomes necessary to save it onto a new key. At that point, the
     macro text and its key assignment are saved in PI.SET or .pirc.

     At a later time, the macro can be given a title and made to appear
     on the tools menu. Titles are added in the keymap or macro editor.

   MACRO KEYS. Re-using existing macro keys causes the macro text already
     in PI.SET to become documentation, and then the new text is
     written. It is therefore possible to recover text from previously
     defined macros. In either keymap editor it is possible to bind and
     unbind keys for the macro. A macro can exist without a key binding.
     Menus allow unbound macros to be run individually.

2. The MSDOS version has most of its near memory usage moved to far
   memory, which increased available memory for line copies and XMS
   memory pointers. Files larger than 24mb are possible. This required a
   number of compiled-in defaults to become dynamic. The medium compiler
   model (large code, small data) is used with Turbo-C 1.5, 2.0, 3.0.
   This change gets only a paragraph of mention, although the C-coding
   effort was considerable. The bug fixed by this change was exhaustion
   of near memory by strings used for line copies. The change makes the
   editor under DOS easier to maintain, because the code can now grow
   with the unix version, with fewer DOS-specific changes.

   Under Unix, variables set in .pirc supply the memory limits, which
   used to be a compiler option. All changes to dynamic variables from
   MSDOS affect the unix version.

   Both systems read large files quickly. A Linux system with UDMA IDE
   hard disk and 64mb RAM, 350mhz CPU, had the following results:

   27mb read then write, wall clock time
   PI = 6.6 sec, EMACS-NOX = 13.6 sec, EMACS = 23 sec

   27mb read only, wall clock time
   PI = 0.84 sec, EMACS-NOX = 4.30 sec, EMACS = 9.5 sec

   The bottleneck for emacs is perhaps RAM. It goes faster without disk
   access, of course, as does PI. Relative sizes of the applications
   have more to do with the speed differences than basic IO algorithms.
   Performance with VI was similar to emacs. Editors Joe and Cooledit
   were also tested, but the results were version-dependent.

3. The menu system in v2.c has been redone. The plan was to have source
   code so bulletproof that v2.c can be edited, maybe change some menus,
   then recompile without incident. The old source code was basically
   impossible to maintain. Goodbye old code. There are still some
   spaghetti code segments in v2.c, hopefully they will vanish as time
   goes on. See also below the demise of TOPS20 and VAX code.

   The ordering of the menu items has been changed to relect usage:

   File  Keys  Tools  Search  Edit  Word  Block  Values  Other  Help

   The "Tools" menu is dynamically customized during runtime. It
   contains some standard items, like execution of programs, scripts
   and command pipes. The "Keys" menu has a "Keymap editor" and a "Macro
   editor" in addition to the usual memorize, replay and save functions
   for macros.

4. KEY DEFINE-DELETE. All key deletes, remaps and defines occur in the
   keymap editor. Macro keys can be given titles. Any editor function or
   macro can be given a title which will appear on the tools menu.

   The keymap editor documents editor functions and interactively
   describes keys. The macro editor does the same thing to just macro
   functions.

   Macros stay defined once written to PI.SET, with or without a key
   assignment. They persist until replaced. Even when replaced, the
   history stays in PI.SET, so old macros can be recovered.

   SHOW KEYPRESS was added to "keymap editor" and "macro editor". Keys
   pressed in the editors will display raw termcap text if the key
   sequence is unmapped. The "Show keypress" feature was added to make
   keymap debugging easier.

5. PI.SET (.pirc) is saved in the backup directory. Documentation inside
   the file is improved by adding translations where it might be useful.
   This single source file is all that is normally needed to run the
   editor, but PI.DAT (keymap.dat) is required in order to run the
   keymap editor.

6. The math functions, which operate on the phrase string and also any
   ENTER string, have been renamed slightly to be more descriptive. For
   example, "math on phrase" has become "IntMath on phrase" to document
   that this is integer-only math. Similarly, "FloatMath on phrase",
   "HexToBase10 on phrase" and "SciCalc on phrase" have more obvious
   uses.

7. Searching was redone to make it self-documented and easier to use. A
   "Set search string" suggests how to save the search string, proceed
   with a search or recall an old search string from the history list.
   The other modes remain unchanged, e.g., ENTER plus string plus F5 is
   the same as it always was (not quite; the use of UpArrow and DnArrow
   is different). The search string history list was increased to 50 and
   redone to select recent usage and to remove duplicate strings.

8. The key sequence ENTER plus UpArrow has been removed, replaced by
   ENTER plus PgUp (top of file). The reason for the change is to allow
   a search string history search to begin immediately upon hitting
   ENTER. Ditto for ENTER plus DownArrow, it's now ENTER plus PgDn, for
   the same reason.

9. Local unix versions of .pirc are supported, just like MSDOS. Using
   the keymap editor will affect just the local version, if it exists.
   There is a one-time query to create a local .pirc (or PI.SET) when it
   becomes necessary to save macro text, and no such file exists.

10.PI-DUMP.KEY and PI-MACRO.KEY still exist, but they have less uses.
   The file PI.SET (.pirc) saves macro definitions and key assigments.
   PI-MACRO.KEY can be used to move macros from one directory to
   another, or to install a local temporary set of macros in a
   directory. The often-used macros should be moved into PI.SET so they
   can appear on the Tools menu and have titles attached to the macro
   text.

11.Backups for MSDOS and Unix use three possible directories: NONE, the
   login directory ~/PIbackups or locally ./PIbackups. Under MSDOS, the
   directory names are $HOME\pibackup or .\pibackup, where $HOME is the
   directory containing PI.EXE. The backup directory is created
   automatically in both systems. This backup directory is dependent
   upon the starting location of the editor, and not upon the directory
   in which the file is located.

12.The character set used for a menu box now appears as a menu option
   and also as a settable option in PI.SET. There are five character
   sets, two for VGA and two for ISO-8859 fonts. Unix used to have a
   default text-only menu box border, but no longer is that necessary.

13.Pasting from X-windows or Win98. The trouble was isolated and called
   "hanging indent mode": the cursor tries to follow to the next logical
   location after forced word-wrap. With hanging indent OFF, auto-indent
   (^O^I), word wrap (^O^W), line divide (^J) and left justification
   auto-fill (^B) are normal. For most editing, hanging indent can be
   left off, and then mouse pasting is pleasantly predictable.

   XTERM and RXVT BUGS. In Xterm and Rxvt, the defaults for invoking
     mouse positioning, copy and paste are backwards. Anyone using Xterm
     expects copy and paste to work with the same interface rules
     regardless of the mode being used. Developers chose to make mouse
     positioning work by left mouse click, but copy and paste require
     SHIFT to be depressed during the operation. The result is that a
     mouse click produces an unexpected mouse positioning action, while
     copy and paste appear to be broken.

   MENU MOUSE in XTERM. In RXVT, Xterm and Nxterm, most menus can make
     use of a mouse click. The action taken is the same as a cursor
     move. Under DOS, there is no such feature, at present. In a Linux
     console, mouse clicks do nothing even with gpm running, so there is
     no mouse action in this case. Right and middle mouse clicks in
     Xterm menus are presently disabled. Status line mouse clicks are
     likewise disabled, except for copy and paste.

   MOUSE SHIFT SWAP in RXVT. It is possible to swap the protocol in Rxvt
     which causes SHIFT to be depressed for copy/paste. The result is
     that copy/paste work like in a regular Xterm, no changes. But
     cursor positioning requires SHIFT to be depressed. This is a
     simple rule to remember when working across many applications.

     The patches to Rxvt-2.6 (Jan 2000) amount to only 5-6 lines of
     code. The application rxvt compiles under Linux 2.2.15. Sources at
     ftp.math.fu-berlin.de (pub/rxvt) and www.math.utah.edu/~gustafso/
     (search page for rxvt patch).

14.HTML documentation replaces the old text PIHELP.DOC. The new help
   file is hypertext language PIHELP.HTM. This source is read by the
   resident text-only document reader. Under Win98 and X-windows, an
   internet browser can be called off the menu to read the
   documentation. The browser itself can be set from the menu or in
   PI.SET (.pirc).

15.New pihelpbu.c created to give a small help file for unix, similar to
   the old pihelpb.c of 1995-1999. It appears on the help menu, and of
   course it can be customized by anyone who knows language C. It is
   written presently only for WS keys. Once a separate file exists for
   emacs, it will be added to the system.

   The small help file is launched in a separate window, if possible.
   This involves some detection in Win98 or X-windows, which is never
   foolproof. I hope it works. Under X, it is tempting to use a shell
   script to launch the xterm window, but unfortunately there are too
   many shell languages. This explains why the launch is in the editor
   kernel itself.

16.Execute script has been added to the Tools menu, so that there is a
   way to start a background task quickly. An example is a latex compile
   in a separate window or rebuilding a database. This differs from the
   regular "system" command in that no interaction is required when the
   script returns. It works best for launching an application in an
   xterm window or in a Windows DOS box.

   Experimentally added is "Inject command pipe" which is supposed to
   inject into the current window the output of the program run by this
   command. An example is "date" to inject the date into the current
   buffer at the cursor position. Other uses are injection into the text
   at the cursor position a LaTeX stub for an environment. While this
   can be accomplished by reading a file into the text, there are cases
   when the current cursor position is important.

   The terminal mode has to be set back to "canonical" before launching
   the command, then back to "raw" after return. During the command,
   ctrl-C should abort the program, ctrl-z should suspend it. Echo is
   turned on to make the running of the program seem normal, but it is
   not foolproof. There is internal mapping of carriage return and
   linefeed so that the editor buffer is formatted correctly. Other than
   that, the interface is 8-bit clean.

   A full-featured version of piping would include the ability to let
   the process run in the background. Currently, this is not possible,
   due to simplistic programming of the interface. If pipes prove to be
   useful, the programming effort will continue.

17.MSDOS exit option to match unix was added, that is, to suspend the
   editor instead of doing a full exit. The option is in PI.SET.

18.RELOAD added to the "File" menu, which means a file can be reloaded
   from disk without changing the buffer name or number, or the cursor
   location in the file. Dirty files cause a brief complaint. It is
   useful for things like TeX log files or error logs, which become
   dated on each compile. Another use is spell-checking, in which the
   currently edited file should be replaced, because corrections were
   applied.

19.A new manual page pi.man has been written, so there is some online
   documentation for unix, outside the editor itself. Listed in the
   manual page are some basics, how to get more documentation, how to
   start and stop the editor, and a few minor details about operation.
   This file can be converted to LaTeX using tr2tex.

20.Internal information has some new items, specifically, the final
   lines look like this for Linux:

            File size max = 16777216 bytes
            Shared Text=184, Private Data=132, Stack=8
            TERM=xterm
            Keymap=Internal WS Keys
            Srcdir=/var/lib/pie50/
            SetUp=./.pirc

   Older versions of Linux will not be able to display the second line,
   due to limitations in the proc file system.

21.File $HOME/.pirc will be created if not present. The setup file
   ./.pirc has to be copied manually from $HOME/.pirc. The reason to
   have a local ./.pirc includes a need to change system parameters and
   to document special tools and macros. [Jan 2003: copy $PIE/syspi.rc
   to ./.pirc when the need arises.]

   MSDOS has no similar implementation, because PI.SET must exist in the
   same directory as PI.EXE, and collect all macros, regardless of user.
   If private versions are required, then PI.SET is copied to the local
   directory and $HOME/PI.SET is not affected.

22.Keymaps for WordStar/Borland/MS-EDIT, emacs and wordperfect can be
   installed on the fly. The basic idea in each case is to keep the
   default keymap with a ^] prefix, add in the function keys that do not
   conflict and then map in the other keys from the special system. For
   example, WordPerfect does not implement many control keys, so
   prefixes ^O and ^Q from WordStar can be left unchanged, but ^K is
   used in emacs and WordPerfect, so the ^K prefix in WordStar must be
   mapped to the new prefix ^]^K.

23.Removed TOPS20, DEC20, VAX, VMS switches in the source code. Not much
   effect, except to reduce the amount of code to page through. Only
   unix and MSDOS are left. There could be some DOS386I switches that
   remain intact for awhile, to allow building PI on new hardware.

24.New directory structure for unix. The directory that contains the PI
   executable must also contain all the setup files. There are no
   subdirectories. The directory is found by doing a manual version of
   unix "which" to locate the executable without any links, then the
   base directory of the executable is stripped off to determine the PI
   library directory. Here, all support files are expected to be found.
   Presently, the library function "realpath" is used to remove the
   links from the executable path. This may change, if "realpath"
   happens to not exist in the gcc library elsewhere. The alternate BSD
   function "readlink" may work just as well for this application. An
   example appears in dired305.zip.

25.Static link for linux. The overhead in Linux is least for a static
   executable, e.g., PI has 42 pages in memory on first load. This
   compares well to 91 pages in memory for minigetty. The overhead
   varies considerably from one version of Linux to another. Another
   advantage of the static executable is portability. Most versions of
   Linux can run the two static-linked EXE files v.exe and pihelpbu.

26.Install.sh for Linux. There is a bash script for installing PI from
   the ZIP source. The script looks for soft links to PI in the most
   likely path components and renames the links. Then it creates
   directories like /var/lib/pie50 and /usr/src/pie50. Finally, the
   sources and executables are copied, and the manual page. The script
   uses PI as the soft link name. The two static-linked EXE files will
   run out of the box. If you don't like it, then recompile or delete
   the two directory trees.

27.Pie50dos.zip is for DOS and Win98. It installs the EXE files and
   support files into .\usr and assumes that the installer is able to
   move the files or else set the path to point to this directory. The
   file pie50dos.zip is in the archive pie50lx.zip.

28.MOUSE variables redone. Unix and DOS are now separate and easier to
   set off the command line and in the setup file PI.SET or .pirc. All
   reference to IXTERM removed. Setup documentation changed.

   Note: IXTERM has become XITERM. It used to be just the MIT Xterm
     sources, rewritten. In 1998 it is a rewrite of RXVT to support
     international languages. Last sources were 1997-98. It is supposed
     to evolve independently of RXVT (no surprise if it dies. 2002: it died).

29.Terminal I/O redone. What used to be a single function sysset() is
   now several, to fit the usage. New names are termDoExit(),
   termcanon(), termraw(), termSetup(). Only the first termDoExit()
   exists under MSDOS.

   Connected with this change is better use of the buffer input scheme,
   especially clrcon(), which clears type-aheads, and the unix sleep(1),
   which was removed except in the case of an editor abort. The abort
   key ctrl-U shold work better when getting out of the editor. In
   particular, ctrl-K,ctrl-U is not confused with the abort sequence
   ctrl-U,ctrl-U.

30.NOTEPAD PASTE. Lost display under certain conditions for notepad
   paste of lines or matrices. Found the cause, fixed it. Probably
   this was broken for 5 years or more.

   NOTEPAD copy and paste have changed slightly to improve the self-
   documentation. Maybe it is less confusing with fewer steps.

31.DISK SWAP. Documented the TurboC system() and Ralf Brown SPAWN
   swapping methods which appear on the "OTHER" menu. Affects MSDOS.
   Previously, the change was made without any visual confirmation.

32.SHELL variable was not set to the environment value. Fixed. A shell
   from PI uses the user-defined SHELL variable to change the default
   shell SHELLDEFAULT supplied in v.h. Some cleanup for unix has been
   done to insure that a shell is clean, with no screen mess.

33.Linux keymaps improved. The various terminals Xterm, Rxvt, Xiterm,
   Nxterm seem to have keymap bugs which affect the HOME and END keys
   and F1-F4. Also affected is the MENU key located next to Bill's Win95
   key (META key in unix). The plan with PI is to handle as many known
   problems as possible, but ultimately leave the fixup to the keymap
   editor. Some of the PI fixup is in X-windows launch and
   $HOME/.Xdefaults. The fixes and work-arounds have been documented in
   pihelp.htm under keywords XTERM and Xdefaults.

34.TODO.

   Python support is planned, at least to allow the execution of a
   python script. This is perhaps the best feature of CoolEdit, a unix
   editor program with especially good debugging tools. Python is
   supported under MSDOS and Linux, plus a long list of unix hosts.

   Internationalization of the editor text is possible, using GNU
   gettext and a translation text. A model of how to do this is unix
   cooledit. The lack of translation texts for cooledit suggests that
   there is no reason to do it yet.

   Regular expression searching is possible to add cheaply, but it will
   wait until the editor is stable, perhaps December 2000. The GNU C
   library directly supports regular expression searching. But MSDOS
   requires an addon library, probably the one from DIRED can be used.
   Unfortunately, that library is rather large (25kb). The MSDOS version
   looks destined to DLL extensions and/or a new compiler.

   It is possible to keep file buffers in a text format, rather than in
   string format. This could make regular expression searching much
   easier, in parallel with emacs, but also it could speed up the
   reading and writing of files. This change could have a drastic effect
   on the editor internals. So far, the effort required to invoke this
   storage method for file buffers seems greater than the possible
   benefits. Jan 2003: thought about it, conclude that the effort has
   merit, because of reading and searching binary files.

   There is at present no VI support, although it can be added with
   some programming effort. The big change here is the input scheme used
   in VI, which requires a prefix key to enter and a postfix key to
   exit. These kinds of modes already exist in PI (e.g., the ENTER key),
   but an additional mode would have to be added to support VI commands.

   Undo. Presently, no real undo exists. The only undo feature is
   manual, using saved strings due to deleted lines and words, and
   larger blocks in the NotePad. Yes, it would be best to have a real
   undo. The most maddening problem is a trashed screen, for which the
   actual changes are not known. Revert File is not a cure for this
   trouble: there are times when valid text has been added before the
   trashed screen. Likewise, Revert Screen does not fix the defect,
   although it has more merit than Revert File. Revert Line fixes the
   objection, up to the changes made in the current line, which can be
   significant. If many lines were altered, as in a macro execution,
   then there can be a scrambled mess that cannot be manually undone.

