;


                            ZDE (Program Development)
 
                         A-   Functional Enhancements  
                         B-   Bugs Fixed               
                         C-   ZDENSTAL                 
                         D-   Notes to DosDisk Users   
                         E-   Future Enhancements      
                         F-   Development History      
:a


Functional Enhancments:  File Datestamp Capability.

   Under ZSDOS,  the Create  date  and  time  of  files  edited  with  ZDE are 
maintained across editions.  If .BAK files are being created, the create dates
of new files will be the same  as their .BAK files.   Note that if a file with 
the name of  a block being  saved with ^KW  or ESC-W already exists, the saved 
block will have  the same Create stamp  as the (previously) existing  file.  I 
hope to  address this  side-effect  in future  versions  by  prompting  before 
erasing existing files during ^KW commands.


Functional Enhancments:  Named Directory Capability

   ZDE will  now accept ZCPR  named directories  when loading,  renaming,  and 
erasing files, and when requesting  a directory listing with  the ^KF command.
The named directory (if available) is also displayed as part of the current 
file name in the status line.

     Since ZCPR directory names  can occupy up  to eight columns on the status 
line, it was necessary to move  the rest  of the  status  line  over  by eight 
columns.  I was able to gain an extra column by putting only one space between
the filetype and the "[x" specifier,  but the result  is that if your terminal 
displays less than 55 columns the current column number will not be visible in
your status line.



     This is unfortunate, but the status line  is  already about as compressed 
as possible.   To include all of the information I would have to  add a second 
status line for narrow terminals,  which would  add  a good  deal  of code and 
complexity  to  what  is  already  a  complicated  program.   Since  most CP/M 
terminals (including my own)  have 80 columns,  I have decided in favor of the 
majority in this instance.

     You may also notice that the ^QA prompt "Chg? (Y/N/*)" has been shortened
to "Chg?" and  the "Wait..." message is  now "Wait".   These changes were also 
necessary because of the decrease in available space on the status line.



Functional Enhancments:  Line Queue Capability.

     A third functional enhancment is the new ^QQ command, which causes ZDE to
skip to  line numbers  stored in  ZCPR's  user-defined  message bytes.   Under 
ZCPR3, up to  eight line  or page numbers may be passed to ZDE.   The original 
idea  was  to  use  the interface  to produce  a  Turbo Pascal-like integrated 
environment for  program development,  but  the  interface  is  certainly  not 
limited to programmers.

     The numbers are stored in  ZCPR's 16 user-defined message bytes,  and ZDE 
treats these bytes as a packed array of up to eight elements.   ^QQ causes ZDE 
to cycle through  the array,  going to the stored locations sequentially until 
the end of the array or  a zero element is reached, at which point ZDE returns 
to the first stored location.

     The numbers are stored  as inverted 2-byte hex words (LSB first),  so for 
example to store the lines 12,  44,  and 108  a program would set the 16 user-
defined bytes as follows:


         0C 00 2C 00 6C 00 00 00 00 00 00 00 00 00 00 00

   In this example, when ZDE reaches the fourth word (00 00) it returns to the
start of the array and goes to line 12 (0C 00).

     Any  ZCPR program,  or even  an  alias  (using Jay Sage's  powerful ARUNZ 
parameters) can now  give ZDE the locations  of  up  to  eight line numbers of 
interest.   With  a little imagination  we could probably create an integrated 
text search/edit environment which  searches multiple  files  for a string and 
points ZDE to the exact location of each match for editing.  Thanks to Cameron
Cotrill and Al Grabauskas for suggesting this feature.



Other Enhancements:

   In response to  a suggestion  by  Phil Newman, ZDE now properly accepts and 
displays  user areas  between 16 and 31.   While  I  do  not  normally suggest 
storing files  in these areas  because many CP/M programs  do  not handle them 
properly,  they  are useful occasionally  on very large disks  or for security 
purposes, and are supported by ZCPR and ZSDOS, so I have included them in ZDE.

   For NewWord compatibility, I have changed the "To Mark" command from ^QP to
^QZ.  This is also better mnemonically, since the "place mark" command is ^PZ.

   The  search  and  replace functions  now  match  upper  or  lower  case  by 
default.   To search for an exact match by case, you must enter "/c/" or "/C/"
(for Case) before the search string.  The "/i/" option is no longer active.  I
have  changed  default find/replace wildcard character to ^Z  so  that ZDE can 
find strings  with  literal '_'  characters.   Use  the ^QZ  command to find a 
literal ^Z.



     ^KB, ^KK, ^KU and ^QY no longer cause unnecessary redisplays.

     For faster operation, ZDE no  longer resets  drives under ZSDOS  (same as 
CP/M Plus).

     Under ZSDOS and  CP/M Plus,  ZDE  sets the  error mode to 0FEh.  All BDOS 
errors are displayed on the screen, but ZDE retains control.

     For your protection, ZSDOS Path and Public files are Read Only under ZDE.
That is,  you can access files via Path or Public but you cannot erase Path or
Public files.   If you get  a ZSDOS "File W/P" error when saving data with the 
^KS, ^KD, ^KX, or  ^KW commands or  when erasing a file with ^KE, you may have 
given the name of a ZSDOS Path or Public file.  Try again with a new name.
:b

Bugs Fixed:

     If just  a drive letter in given  during the ^KF (display files) command, 
files in  the current user area are displayed rather than files in user area 0 
(thanks to Ben Cohen).

     ZDE no longer crashes if  no name  is given in response to the ^KW prompt 
(thanks to Eric Meyer for finding this one).

     ^KB and ^KK now  behave properly  when entered at the rightmost column of 
the screen.

     The "Chg?" prompt is now properly erased in all circumstances.

     Full disk errors caused  CP/M Plus  and ZSDOS systems to report the wrong 
amount of  free space.   This has  been  corrected by closing  the output file 
after full disk errors (thanks to Howard Goldstein for this idea).



     File read-only errors no longer set the drive byte to "^@" under CP/M 2.2
(thanks again to Phil Newman for finding this one).

     Backwards replace now finds the first occurrence of the string before the 
cursor even if the cursor is  only one character  to  the right of the string.  
If  the string  is replaced,  the cursor now returns to  the  START of the new 
string instead of one after it as before  (this may change the effects of some 
ZDE key macros).

     Ben Cohen noticed  that VDE's  left  margin (Lnn) print  option sometimes 
failed to  indent the first line.   This has been fixed.   ZDE also prints the 
header text at  the same location  no matter what left margin is used,  rather 
than  indenting the  header and  causing it  to wrap to the next line.   Print 
option verification is also much more rigorous now than in previous versions.

     ^KS, ^KD, and ^KX file name  requests now abort with a carriage return as 
well as ^U,  and ^U  now returns you  to ZDE  in response  to the ^KX filename 
request.



     The bug fix published in VDE266.FIX has been incorporated.

     Several ZDE bugs  affecting use with  DosDisk have  been  eliminated (see 
below for bugs IN DosDisk 1.00, however).

     Tabs displayed in the  last column  of the  last row  no longer cause the 
screen to scroll.

     Virtual screen displays no longer show garbage  at the end of the line if 
the cursor is at  the left  side of the screen, and moving to the left edge of 
the screen with ^A no longer causes redisplay.

     ^A now moves to  the first character on line 2  before  jumping to line 1 
when line 1 is empty.

     ^PZ now causes  a horizontal scroll  if  it moves  the cursor  beyond the 
right edge of the screen.



     Block and place markers no longer set file status to "Changed."

     The cursor no longer jumps  around when  moving left  from  columns after 
254.   The cursor now stops at column 254 instead of 255,  and the status line 
says "Col 255" for  any column past 254.  Text past column 254 CAN actually be 
edited, but it will not be displayed by ZDE.

     Strings can now be  found with ^QA even if they are the very last item in 
the file (credit goes to Cameron W. Cotrill for finding this one).

     "^OI@" now removes  all  soft tab  stops  "as advertised"  in  VDE266.DOC 
instead of setting  them all to 1,  making it possible  to set  new tabs after 
entering "^OI@".   "^OI#" has the  same effect.   ^^ now  sets file  status to 
"Changed" when converting from lower-to-upper case as well as upper-to-lower.

     "Wait..." message now  disappears after disk operations with ruler on and 
status line off.  VDE266 forgot to erase the message in this situation.


     Backwards find and  replace  operations  now  work  properly  instead  of 
repeating the prompt indefinitely when  the replace string is shorter than the 
find string (thanks to Ben Cohen for pointing this out).

     VDE restored INSert to its entry status just BEFORE the final byte of the 
macro, resulting in irregular behavior and sometimes causing macro elements to 
appear  after the "INS"  indicator in the status line.   ZDE  waits  until the 
entire macro  has executed before restoring entry status.   Due  to ZDE's code 
structure,  the INS  status  line  indicator  does  not  change  during  macro 
execution.

     ZDE restores INSert  to entry status  when  macros  abort  due  to errors 
(e.g., "[[[ Not Found ]]]").
:c

ZDENSTAL:

     ZDENSTAL.COM is the new  install program for ZDE.   It is very similar to 
VINST in  operation,  but  adds  the  feature of displaying  the  actual print 
toggles and switches at all prompts, rather than the default ones.   So if you 
change the first  default  print toggle character to ^K for example, all other 
prompts referring to that toggle now reflect the change.

     Files  for   use  with  ZDENSTAL  must  have  the  type  ".ZDE"   (option 
installation),  ".ZDP" (printer installation), or ".ZDK" (macro keys), but are 
otherwise compatible with  files used to install  VDE 2.66.  With Fred Haines' 
permission, I have adapted his wonderful VDKCOM.COM utility  for use with ZDE, 
and renamed it (what else?) ZDKCOM.COM (see ZDKCOM.DOC).

     ZDENSTAL  also  corrects  the  bug  which  prevented  VINST  from loading 
installation files whose archive bits were set.
:d

Notes to DosDisk Users:

   DosDisk users are advised of  a bug  in DosDisk 1.00 which  appeared during 
the development  of ZDE.   Calling Reset 13 while  DosDisk is active can cause 
DosDisk  to  think  other  active  drives are all drive A:.  Bridger Mitchell, 
author of DosDisk, is  aware of  this bug  and  is working  on  a fix.  In the 
meantime, users of CP/M 2.2  and  ZRDOS who wish to edit files on MS-DOS disks 
should NOT log into the MS-DOS drive while  editing  with ZDE,  as this causes 
ZDE to do  a Reset 13 when  writing to the MS-DOS drive.  To edit files on the 
MS-DOS drive, run ZDE from drive A: or another non-MS-DOS drive.

   Users of ZSDOS and CP/M Plus need not worry about this problem with ZDE, as 
ZDE never resets disks under ZSDOS or CP/M Plus.   By the same token, however, 
ZSDOS and  CP/M  Plus users  must  not  change  disks in the MS-DOS drive from 
within ZDE, because DosDisk (like CP/M 2.2) requires a disk reset or warm boot 
when disks are changed (see DosDisk manual, p. 7).
:e

Future Enhancements:

   If time permits, the following enhancements may be added to ZDE:

   An  improved   ZDENSTAL  which  directly  accepts  ASCII  files   for   key 
definitions, along the lines of ZDKCOM.

   Bridger Mitchell has  suggested  command "bindings"  which  would allow any 
control key or meta key sequence to be linked to  any ZDE command.   This idea 
will be familiar to users of Perfect Writer.   Key bindings would allow ZDE to 
simulate EMACS, for example.

   Bruce Morgen  and others  have  suggested  automatic  terminal installation 
under ZCPR, allowing the same copy of ZDE to be used with any terminal.

   Allow more than two default filetypes available and fixed disks.

   It may  be  possible  to  preserve file create datestamps  under  CP/M Plus
and Z3PLUS.
:f


=============================    HISTORY   =============================

1984:  VDE began as my set  of  improvements  on  the  tiny  (4k)  "VDO"
       memory-mapped  editor  by Fritz Schneider  (1982), as  adapted by
       George Peace (1984) for the Osborne Executive.

1985:  The  first  terminal  adaptation,  VDE-PX  for  the  Epson  PX-8.
       Ongoing improvements also in parallel Osborne versions VDE-OS.

1986:  The   unified   VDE(M)   version   2.00,  with  generic  terminal
       installation.  Versions  2.1-2.3  added  new  features  including
       macros;  global replace; tighter compression; many Print options;
       file directory; undelete.



1987:  Recent revisions, besides small fixes, add the following:

     2.4 (1/87) - Improved    scrolling    and     screen
                  functions; more screen sizes supported;
                  WordStar file mode; place markers; ^OZ;
                  block   print;   larger   macro   keys;
                  VINSTALL terminal menu.

     2.5 (3/87) - User  area  support;   variable   tabs;
                  double  spacing; search wildcards; more
                  standard  block   functions;   improved
                  format-   ting;   many   additions   to
                  VINSTALL.

     2.6 (7/87) - Greater  WordStar  compatibility;  many
                  new  functions;  more  free RAM; faster
                  scrolling;  search  options;   keyboard
                  buffer.



1988:  Development  through  v2.64,  with  new  functions;  top  margin;
       doublespaced printing; auto mode filetypes.

       2.65 (4/88) - Auto indent; tab set enhancements; small fixes.
       2.66 (6/88) - Printer left margin; small fixes.


1989:  First version of ZDE.
