home *** CD-ROM | disk | FTP | other *** search
/ Phoenix CD 2.0 / Phoenix_CD.cdr / 15a / nav11.zip / HISTORY.NAV < prev    next >
Text File  |  1989-06-04  |  20KB  |  403 lines

  1. History of Navstar:
  2. Christopher R.S. Schanck
  3. 364 W. Lane Ave #635
  4. Columbus OH 43201
  5. 614-421-7051
  6.  
  7. 1986: name is currently "See"
  8. -----
  9.  
  10.      Original concept, implemented in assembler. No colors, DOS
  11. IO used throughout. Copy, Delete, Backup, Mark, Log and Change
  12. Directory were the only functions implemented. Only 3k in length,
  13. but no command execution, sorting or ANYTHING! Good way to learn
  14. about assembly language though.
  15.  
  16. Spring 1988:
  17. ------------
  18.  
  19.      TurboC 1.0 acquired. TC used to implement serial port device
  20. drivers; this served as a good intro to TC. I was just about to
  21. write my own color console IO package when version 1.5 was
  22. announced. I received my upgrade at the start of the summer, and
  23. conversion from the assembly language version began in earnest.
  24.  
  25.      It took about two weeks to convert it into TC; several
  26. enhancements were made out of turn at this time. While the
  27. original assembler version could only handle 144 files, period, I
  28. added the multi-page capability to it, giving it the effective
  29. capability to handle an unlimted number of files. It was color
  30. now, but not much more added over assembler version, and nearly
  31. 20k in length! I was disappointed. The only real tough part of
  32. this was figuring out the cursor routines; the wraparounds were a
  33. bitch!
  34.  
  35.     Now it was time to explore TC's manual and see what
  36. functionality I could add. Sorting was simple; I used TC's
  37. library quicksort routine to sort by name or extension. Sorting
  38. by size, and in descending order were added later. Exploring the
  39. manual further gave me access to TC's system() and spawn()
  40. routines, which are tougher than they should be to utilize. A lot
  41. of work went into verifying executable names, and having Navstar
  42. find file extension's prior to executing. Passing "xxx.dat" to
  43. spawn() as a file to execute makes TC go blooey!
  44.  
  45.     Now I added things with impunity; free space, time, file
  46. information line, time and date, the make and delete directory
  47. functions (long overdue!!!), and the view. This was over several
  48. weeks, with some serious debugging going on as I added functions
  49. at a furious rate. Adding the view function got me motivated to add
  50. more definable keys, finally arriving at 20 as a good number.
  51. This gave me the capability to use it intensively in its own
  52. development; debugging progressed much faster as it got used more
  53. intensively. During the intensive use at this stage that the Swap
  54. Directories command demanded inclusion.
  55.  
  56.      At this point I was using the small memory model; this now
  57. became a liability as the memory handling when executing other
  58. programs is restrictive. I did some spleunking in the manual and
  59. switched to the compact model. Navstar now consumed only ~48k
  60. when executing other programs.
  61.  
  62. December 1989: 
  63. --------------
  64.  
  65.      Name changed to "Navstar"; it just felt right. After a 6
  66. month hiatus of work on Navstar, I was again reunited with my
  67. computer. Some purusal of local BBS's and magazine reviews led me
  68. to the conclusion that most file managers were "cotton-ball"
  69. programs; they protected the user from DOS. This was clearly not
  70. the orientation of Navstar. Discussion with colleagues revealed
  71. that Navstar was indeed different from most. Also, it became evident
  72. that few other shells allowed the user to run other programs
  73. *efficiently*. Usually such execution was an afterthought. In
  74. purusing 8 shareware and commercial packages, I found each held
  75. and average of ~130k when running another program. One such program,
  76. selling for ~$50, consumed ~210k!!! Navstar was clearly going to
  77. be different here also.
  78.  
  79.      With my purchase of TC 2.0, I began work on making Navstar
  80. commercially viable. A rudimentary installation program had been
  81. written; it was now totally revamped. Taking a super idea from
  82. other shells, recognizable file extensions were implemented. The
  83. flexibilty of the definable keys was expanded. Miscellaneous
  84. functions were added, such as Refresh, Order direction, Delete
  85. with Individual Verification, and such were added. Three major
  86. functions, Text Search, Edit Attribute Mask, and Attribute, were
  87. added.
  88.  
  89.     Finally, about three weeks were spent simply bumming code and
  90. making Navstar more efficient. A lot of time was spent with map
  91. files and such, but it was worth it. A good deal of tweaking
  92. and bumming of code got the memory usage down to 42k when executing
  93. programs. I judged it would be worthwhile to release it to the
  94. world. Finally, out of the file extensions came the concept of
  95. the Action key.
  96.  
  97.     The last thing done was to write documentation. This was a
  98. dilemma, since I wanted to market it as shareware. I could not
  99. afford large documentation since it would push the transmission
  100. size up too high. So, minimal docs were written which covered all
  101. major points but left a good deal of the little things to the
  102. user. Eventualy, I hope to have a seperate set of docs available
  103. for registered users which will be much more complete.
  104.  
  105. Version 1.0 Released
  106. --------------------
  107.  
  108.      So, on Sunday 2/5/89, I released Navstar 1.0 as Shareware by
  109. uploading it to several local BBS's; it subsequently found its
  110. way onto Compuserve. I also mailed copies of it to friends of
  111. mine over the Internet computer network, hoping for favorable
  112. results. Currently, I am holding my breath.
  113.  
  114. Future Possibilities as of 2/5/89:
  115. ---------------------------------
  116.  
  117.      Several things loom on the horizon for Navstar. First is the
  118. inclusion of a handful of useful file manipulation utilities such
  119. as list, a grep, and whereis, etc. This is due to the fact that
  120. while I have access to public domain type software, many people
  121. cannot afford the time needed to go hunting for such software.
  122.  
  123.      Another is the inclusion of a "Goto" function. In this, by
  124. pressing 'G', the user would give a directory name, such as
  125. "utils", and Navstar would find "utils" in the directory tree
  126. structure and go there. Multiple occurrences would be handled by
  127. giving the user a list of choices. I suspect this will be more
  128. efficient to implement than the already rejected visual tree. It
  129. will only be added if I can keep Navstar's memory usage to within
  130. 5k of what it is now.
  131.  
  132.      EMS support is a hopeful, as is support for the 43 and 50
  133. line modes of the EGA and VGA cards. But these will wait until I
  134. have access to such toys!!!
  135.  
  136. Febuary 15 1989:
  137. ----------------
  138.  
  139.      The last two weeks were spent doing some interesting things. Fixed
  140. some bugs:
  141.    - in Navinst, making some values non-multiples of 256 caused some
  142.    erroneous results.
  143.    - in Navstar, hitting return on file with an unrecognized extension
  144.    marked the file, but didn't bother to notify the user, rendering its
  145.    use impossible until it was unmarked. Bothersome.
  146.  
  147.      Some tweaking got the memory consumption down to 39k; this gave
  148. rise to thoughts of new features. So I started work on a standalone,
  149. command-line utility caled "ccd" for Chris's Change Directory (modest,
  150. huh?). The idea was to type "ccd xxx" where "xxx" was a subdirectory
  151. entry. Note I said entry, not path. So for a path \turboc\c\ccd, typing
  152. "ccd ccd" from any other entry would change the directory to
  153. \turboc\c\ccd. If there were multiple occurances, you would be offered a
  154. choice. The volume info would be saved in a file in the root directory.
  155. From here I eventually evolved the current version of "ccd", and I
  156. intend to release it with the next release of Navstar.
  157.  
  158.      When I had a satisfactory version of "ccd", I started work on
  159. incorporating it into Navstar. Instead of "Goto", I settled on "Jump".
  160. The memory management concerns were large, since I had to allocate the
  161. directory information before the files info, else I would not get the
  162. memory back for program execution. I also had to allow for additional
  163. entries, the deletion of entries, and a few other bits of dynamic
  164. allocation. This led to lots of other parameters for Navinst to handle.
  165. But it is a helluva useful feature!
  166.  
  167.      Originally I had Navstar always scan the directory structure to
  168. build its directory list, but it seemed like too much wear and tear
  169. on the disk. But using the stream IO functions was costly in terms of
  170. space, so to use the data file from CCD would mean buffering IO myself,
  171. and supplying the logic necessary. At first I thought this would be
  172. space inefficient, but it turned out to be simply tedious. When done,
  173. all told it took merely 3k more than verison 1.0, with settings for 256
  174. directory entries.
  175.  
  176.      The modifiers for commadn-line interpretation were changed a bit.
  177. "overlay" became "ovl", "chdir" became "chto", "chback" stayed the same,
  178. and "chcurr" was added; it changes the current directory to match the
  179. logged directory. This allows the use of directory changing programs
  180. (similar to CCD!).
  181.  
  182.      Finally, I am considering making all program execution being done
  183. by a call to system() rather than spawnlp(). I think I can save enough
  184. code by delteing the parsing routines to offset the mandatory 3k a call
  185. to command.com entails. Next week, maybe. Note: I eventually judged
  186. this to be a bad idea.
  187.  
  188.      Mouse support has been considered; several users have said Navstar
  189. is a natural for such an interface. Me, I don't know. I don't own one of
  190. the beasties, but if enough users want it, I'll explore it. 43 and 50
  191. line mode are on my list.
  192.  
  193. Febuary 20, 1989
  194. ----------------
  195.  
  196.      Some inspiration led to some fun things. I wrote a small shell
  197. program (<8k of ram) called Navshell which allows you to really
  198. skimp on RAM. If you wish, you could, for instance, put the
  199. actual Navstar program on a Ramdisk, say, tell Navshell where it is
  200. with the NAVSTAR environment variable, and it will be reloaded in
  201. between other programs. This is especially useful if you have a Ramdisk
  202. which can make use of extended/expanded memory. You lose a few things.
  203. Since EACH program is essentially in overlay form, the (ovl) and (nop)
  204. switches have no effect; Navstar will appear to always pause after a
  205. program executes. Also, you don't have the last execute line saved, like
  206. normal. Finally, Navstar must read the directory structure from disk
  207. upon each invokation. Still, on a '286 or '386 system with a quick hard
  208. drive, it will probably be a screamer. It is reasonable on my 4.7Mhz
  209. system, so it should really fly on a faster system.
  210.  
  211.      CCD has been changed a tad; the -r flag just updates the file; no
  212. changing takes place. This allows it to be "hung" off of a key in
  213. Navstar and be used to update the disk file.
  214.  
  215.      After a week of fairly heavy use, the "Jump" command has proved
  216. itself super-nice. I can no longer use the old version; I am addicted to
  217. that 'J' key!
  218.  
  219. Febuary 26, 1989
  220. ----------------
  221.  
  222.      Now that was fun; I wrote a complete new set of low-level screen
  223. i/o routines fr use with Navstar. The routines provided by Borland are
  224. failry nice, but a little too complete. They include code for window
  225. support in every function. This code was a sizable waste of space
  226. consider Navstar's architecture. So I wrote a set customized for
  227. Navstar, and saved abut 3k. This nicely offset the space taken up by the
  228. Jump addition, so memory consumption (at least for my personal version)
  229. is at 44k. This will of course vary depending on the number of
  230. directories Navstar is set up to handle.
  231.  
  232.      To aid in this configuration, I added yet another little (7k)
  233. utility. CCDCOUNT gives the user a count of files, directories, and
  234. average files per directory for a specific drive. Several users had
  235. requested this. Granted, you can get the same info, or nearly so, from
  236. chkdsk, but still.
  237.  
  238.      Support for the 43 and 50 line modes of the EGA and VGA are much
  239. more feasible now, since the screen IO functions were written in-house.
  240. I am also toying with expanding the Jump function to be trans-disk;
  241. currently you can only Jump to a directory on the currently logged
  242. drive. I may change this in the future.
  243.  
  244.      I still have yet to find a file-manager even approaching Navstar's
  245. power which consume less than 90k when run in non-overlay mode. In
  246. overlay mode, using Navshell, my 7k is about par for the course.
  247.  
  248.      Oh, I am considering including a version of Navstar which will run
  249. as a TSR program. Since spawning a program from a TSR is a bitch, it
  250. would not include this capability. This would seriously cut down on its
  251. size, since all the code supporting extensions, command parsing, etc
  252. would go bye-bye. Problem spots include managing memory for file
  253. entries, and for the copy buffer. We shall see... Finally, a new screen
  254. format is in the works, with 110 files per screen, instead of the
  255. current 88 file maximum. I have found a way to do so with no loss of
  256. information presented; I will add the attribute information on the file
  257. info line. Should work. I just can't decide if I like it...
  258.  
  259. Febuary 27 1989
  260. ---------------
  261.  
  262.      I integrated CCDCOUNT into CCD; added the '-c' switch. Also, some
  263. memory management changes were made to Navstar. None of these changes
  264. should be noticable to the user, excepting that Navstar now reads
  265. Jump information in much faster. Also, memory consumption was pruned
  266. a little more.
  267.  
  268.      Several folks who have seen the latest version and played with the
  269. Jump command are urging me to simply make it trans-disk, and have it
  270. replace the New Directory command. This seems to make sense to me, and
  271. it would probably cut out some more code; always a good thing. However,
  272. there are still some concerns; namely, where will the directory info
  273. files be kept? Since a single file should, ideally, have all the info
  274. for all available volumes, this would also mean updating CCD quite a
  275. bit. Food for thought.
  276.  
  277.     CtrlJ now updates the directory jump information by invoking CCD
  278. with the '-r' flag; it then reads in the info from the updated file.
  279. Currently, Navstar keeps track of all directory updates, even though
  280. they are not reflected in the data file. For instance, if you use the
  281. 'M'ake Directory command, the internal data list is updated but not the
  282. external. Since the overhead to update the list on disk seems a waste to
  283. me (directory structures don't change all that often), I may cut out
  284. this code just to save space. Time will tell...
  285.  
  286.      Finally, some people have asked me to implement the selection portion
  287. of the Jump command into a visual directory tree; I will think on it...
  288.  
  289. March 1 1989
  290. ------------
  291.  
  292.      Lots of cosmetic changes. 'Edit Attribute', formerly mapped to the
  293. 'E' key, is now mapped to Control A. This allowed the 'E' key to be
  294. mapped to an Edit command line, similar to the way View is handled. This
  295. meant adding another command definition to Navstar and Navinst, but it
  296. was relatively trivial. And welcome.
  297.      The TAB key, which formerly marked and moved, now is mapped to the
  298. search function along with Control S. I did this because I added a
  299. Marking mode, toggled by the Insert key. When toggled, the current entry
  300. and all others over which the cursor is moved have their marked
  301. attribute flipped. If the entry was marked it is unmarked, and if it was
  302. unmarked it is marked.
  303.  
  304. April 14, 1989
  305. --------------
  306.  
  307.      Again, more than a few small changes. Some of the screen routines
  308. were coded into assembler, and are consequently much faster. Also,
  309. things were cleaned up so it should work on just about any display
  310. adapter you might happen to have. And damn, they are quick!!! Another
  311. command line expansion option, (..), was added. This has the effect of
  312. adding the name (not the full pathname) of each of the marked files to
  313. the command line in the designated place. This is especially useful for
  314. editing, so that several filenames may be edited at once.
  315.      As soon as I track down a bug in the directory scan routine, I will
  316. be releasing a new version. For some reason, the machine locks up when
  317. reading in directory info on some volumes. This has been a pain to
  318. debug, since I haven't been able to replicate the situation here. Ah
  319. well, It will come.
  320.  
  321. April 20, 1989
  322. --------------
  323.  
  324.      Ok, the nasty bug has been eradicated. A poor choice of
  325. termination conditions allowed the machine to really go bonkers
  326. for certain tree structures. Also, before I release the next
  327. version, a few things are going to be added. A state file,
  328. containing pertinent info, will be saved prior to termination and
  329. read in before execution; this will be of prime use when the
  330. Navshell shell is being used. A few more details remain to be
  331. cleaned up with the jump function, but they are minor.
  332.      It is now the next day, and the state file has been added,
  333. jump function prettied-upped, and a few other niggling
  334. difficulties taken care of. Time to write the docs for version
  335. 1.1!!!!!!!
  336.      Navshell and Navstar have been altered so that they work better
  337. together. At this point, there is nothing Navstar alone can do
  338. that Navshell cannot, albeit a bit slower. The reason for the
  339. performance loss is that Navshell is a good deal more disk
  340. intensive. If you have a speedy hard disk, Navshell is the way to
  341. go.
  342.      Several beta copies of 1.1 have been sent out; very little is
  343. holding me back from releasing this version. But the creepy
  344. feature creature is at it again, and I am currently wrestling
  345. with the idea of implementing multiple directry views. This
  346. seems to be very simple to do in light of the program's
  347. structure, I just haven't yet found justification to do it. Yes,
  348. it could be done, but would it be useful? Maybe in 1.2 ...
  349.      Little, rare bug in copying fixed, makes it impossible to
  350. copy a file onto itself. Minor, but scary that it went this far
  351. unnoticed.
  352.  
  353. May 19, 1989
  354. ------------
  355.  
  356.      Added another little function to the file extension
  357. recognizer code.  Navstar now allows the addition of an extension
  358. '.***'.  This matches any extension not matched by a previous
  359. extension in the list, as well as matching for files with no
  360. extension.  I mapped it to my file lister program, since most
  361. files without a recognized extension are worth looking at at
  362. sometime or another.  Very handy.
  363.  
  364. May 24, 1989
  365. ------------
  366.  
  367.      Working on a 'Disklist' program.  This will allow you to
  368. list every file on your disk, with what path it resides in.
  369. Currently it works, but no sorting of files or directories yet.
  370. This is harder than it sounds, because memory is dynamically
  371. allocated to save space.  To sort them, I need to calculate the
  372. space needed in each case, copy the data to static storage, then
  373. deallocate the old copies.  Not trivial.
  374.      Next day.  Disklist is very slick.  Sort by extension, size,
  375. name, or date; coding date enabled me to add sorting by date to
  376. Navstar. Disklist can display files per directory, just
  377. directories, or all files on disk, using any sort criteria.
  378. Nifty.  'Disklist ?' brings up a list of options.  One of these
  379. days I have to stop coding and release the next version, don't
  380. you think?
  381.      Changed Navstar slightly so it can no longer generate
  382. a jump table on its own; the user will have to run CCD -r or hit
  383. Ctrl-J in order to construct it.  This made internal logic much
  384. nicer, and made me happier, as this chunk of code never gets
  385. used.
  386.      Made some internal changes as to how Navstar handles batch
  387. execution which resulted in a new execution modifier, (sys).
  388. This can be used to force Navstar to call COMMAND.COM when it
  389. executes a command line, giving easy access to DOS's internal
  390. commands and IO redirection capabilities.
  391.      Found a small bug that disallows the (sys) modifier from
  392. executing an internal DOS command.  A few versions with this bug
  393. have been released by mistake.
  394.  
  395. May 30, 1989
  396. ------------
  397. Navstar 1.1 Frozen and Released
  398.  
  399.  
  400.  
  401.  
  402.   
  403.