History of ViewS:

 ViewS V1.98
~~~~~~~~~~~~~
 * (97-12-02) Reworked info-output of VIEWSCFG. (It was a bit "overdone". ;)
	      Fixed a little bug in PACKTXT (directory UTIL\), which prevented
	       the reduction of certain space-sequences.
	      Hmm, I should've released this version long ago... Think I will
	       do it this evening... :]
 * (97-11-23) When searching big files, ViewS can temporarily disable some of
	       the usual disk-caches now:
	       (* NWCache of Novell-DOS (now Caldera OpenDOS 7 :)
		* SmartDrv of MS-DOS 6+
		* PC-Cache (???))
			(I wanted to add HyperDisk too, but my API-infos
			 about it seem to be wrong :-(	I'll see.)
	       This will speed up big-searches by about 40%! What "big" searches
	       are, is defined by [CacheOffSizeKB] in VIEWS.CFG.

 * (97-11-22) When Wrapping is deactivated, ChangeWrapLen (<Shift>-<Left>/
	       <Right>) now begins at the default WrapLen (as Wrap was
	       activated) and not at 65532 (highest WrapLen).
	      If [PosRestoreMsg] in VIEWS.CFG is enabled, now a list of all
	       saved positions, with the current position highlighted, will
	       appear in the message line (when a saved position is restored).
	       [PosRestoreMsg] is enabled by default now.
	      Key <P> will bring up the same list (of saved positions), even
	       if [PosRestoreMsg] is disabled.
	      Changed the statusbar-layout a bit. Information about saved
	       position is gone (key <P> is a better solution), and the number
	       of selected lines is only shown, if the SelectionCursor (<Enter>)
	       is active, or at least one line is selected.
	      Added SavePositionNr (<Ctrl>-<P> or <Ctrl>-<K>) so that you can
	       save you current position to a certain slot, and
	       GoToPositionNr (<Ctrl-<G> or <Ctrl>-<Q>) so that you can jump
	       to a certain position-slot.
	       For SavePositionNr: If there is already a position with that
	       number, it (the old) will get a new number at the end of the
	       position-chain.
	       The first keys (<Ctrl>-<P> and <Ctrl>-<G>) are choosen by logic
	       (save_P_osition and _G_otoposition), while the secondary keys
	       (<Ctrl>-<K> and <Ctrl>-<Q>) are there for Borland-IDE-
	       compatiblity (I love the TP7.0-IDE :-).
	      Saved Positions will remember the search-markers now. So when
	       you restore positions which were stored by the search-function,
	       you will see the found text again.
	      Improved WordWrapping a bit. (Non-"word"-characters at the end of
	       the line aren't wrapped too early anymore, even if there is a
	       "real word" following. And I've chosen a better set of Non-
	       "word"-characters now.)
	      Added a new [FormWrap]-mode. Can be "RightAlign" now, so that
	       wrapped parts of lines will be aligned with the right border of
	       the screen. (The old "On"-setting of [FormWrap] has the synonym
	       "KeepIndent" now, and the "Off"-setting can be given as
	       "LeftAlign".)
	      Changed the beeps a little bit. I "like" it more now. ;)

 * (97-11-19) Added print-function. (<Shift>-<P>) Either the selected lines,
	       or the entire text is printed (if no line selected).
	       The text is printed, as ViewS shows it. Means: wrapping,
	       filtering and tab-expansion is the same on the printed text.
	       Printerport (LPT1..4) and line-terminator (CR/LF, CR, LF) can
	       be selected.
	       (Options [PrnPort] and [PrnCRLF] in VIEWS.CFG)

 * (97-11-16) Now WriteSelection (<Shift>-<W>) asks you if you want to write
	       the entire text, if no lines are selected.

 * (97-11-15) Fixed a little bug in the line-counting-routine.
	      Added key <Alt>-<H> for toggling between soft- and hard-scrolling.

 * (97-11-08) Added a new wrapmode: Formatted Wrap. This will put wrapped parts
	       of a line under the first real character (other than space or
	       tab) of the line-begin. This way, indention of lines will be
	       kept, even at wrapped parts of the line.
	       (Option [FormWrap] in VIEWS.CFG)

 * (97-11-06) Just fixed a little stupid bug, which, under very rare conditions,
	       caused an access-violation-exception. Nothing serious, just
	       stupid. ;-]

 * (97-10-30) Now you can choose if you want <PageUp>/<PageDown> to scroll hard,
	       when <Ctrl> is pressed (as it was before), or as default (with
	       <Ctrl> up). In this case <Ctrl>-<Page...> will scroll soft.
		(Option [HardPage] in VIEWS.CFG)
	      Normal scrolling with <CursorUp>/<CursorDown> now has a "hard"-
	       mode with <Ctrl> hold down, too. As with <Ctrl>-<Page...> hard-
	       scrolling can be made default by option [HardScroll] in
	       VIEWS.CFG. (That's for you people, who get motion-sick by seeing
	       soft-scrolling (Hi Timmy ;)))
		(Btw, if you want faster hard-scrolling hold down <Shift>. If
		 you want fastest scrolling, hold down <Alt> too. ;->)

 ViewS V1.97
~~~~~~~~~~~~~
 * (97-10-29) CaseINsensitive-search is back. (No speed-loss! :-)
	      Linenumber-count when searching is back too, but now in a more
	       efficient way:
		Only counted, if not in RAW-mode (<Alt>-<T>) or if linenumbers
		are shown in statusline (<Alt>-<L>).
		And now (due to technical (TSearch) reasons), lines are counted
		after and not during the search. But don't worry; the count
		works completely in background. You can still work (read,move,
		search,exit...) while the lines are counted.
	      The same is valid for move-to-EndOfText (key <End>). (Linecounting
	       only if needed and in background.)
	      The textscreen will darken now, when it can't be controlled
	       (when searching, waiting for user-input...).
	      Fixed a small bug related to Attrib- and CharTable when switching
	       between Raw- and Text-mode.
	      SWTCH.EXE will now swap to EMS/XMS/Disk in order to get more free
	       memory for the viewers. (Thanks to Thomas Wagner for his PD-exec-
	       library.)

 * (97-10-20) Implemented a new read- and search-algorithm (TSearch), which
	       made searching MUCH (around 90% !) faster. Up to now,
	       case-sensitive only. Will be fixed.
	      (Btw, it's faster if no diskcache is active... weird, I know ;-))
	       Oh, currently the line-nr. won't be updated during/after a
	       search. Will be fixed.
	      Fixed the percent-overflow-at-very-big-files-bug.
	      VTXT2EXE currently not working - was trashed during the startup-
	       acceleration... (means, only the old VTXT2EXE (v1.96) will run,
	       and the "up-to-date" ViewSCFG won't be able to configurate
	       VTXT2EXE-made EXEs)

 * (97-09-27) Accelerated startup of ViewS. Wasn't a big problem if a disk-
	      cache was loaded, but if not... heavy disk-activity. ;)
	      (During this the [SavDatFile] option in VIEWS.CFG was removed.
	       It wasn't very useful anyway, I think. Now, VIEWSAV.DAT will
	       always be put in VIEWS.EXE's directory.)
	      (Oh, and the check, if VIEWS.CFG is newer than the cfg-data in
	       VIEWS.EXE is gone too. Maybe it will be back later...)

 * (97-07-19) Just replaced my good old ET400W32 with a ET6000, and found ViewS
	      to flicker!!!
	      Fixed it. Should work with all VGA-chipsets now.
	      (The ET6000 doesn't allow changing of the vertical panning (soft-
	       scrolling) right after the vertical retrace - it will be pending
	       until the next frame. Setting it before the wait_for_vertical_
	       retrace routine fixes this problem.)

 * (97-08-13) Found and fixed a little bug: when [CallOldKbHandler] in VIEWS.CFG
	      was ON, the keyboard-buffer wasn't cleared, which resulted in the
	      wellknown keybuffer-overflow beeps. (This didn't happen when
	      switched during runtime via Alt-K (just forgot something).)

 ViewS V1.96
~~~~~~~~~~~~~
 * (97-04-29) The SAVE-FUNCTION remembers char- and attrib-tables now.
	      (I know, it should have been there just from the beginning...
	       but since I'm obviously the onlyone to use ViewS..., I really
	       don't know why I'm writing this... oh my god, I'm talking
	       to myself again !! ;-)

(V1.95 was skipped, to keep ViewS out of this shit ...95 trend ;-> )
(Hiroshima 45, Tschernobyl 86, Windows 95 ;)


 ViewS V1.94	(2.4.97)
~~~~~~~~~~~~~
 * (1.8.96)  corrected commandlineoption /W bug
	     (/W- didn't turn wrapping off, when wordwrap was enabled)
 * (15.8.96) press <SHIFT> while scrolling vertically, for doubled speed


 ViewS V1.93	(3.6.96)
~~~~~~~~~~~~~
 * added function to extract parts of the file
   ( New keys:
	 -  <Enter>	: switch selection-bar on/off
	 -  <Space>	: toggle selection of currently focused line
	 -  <Ctrl>-<Del>: clear all selections
	 -  <Shift>-<W> : write all selected lines into a file

     New commandline-option:
	 -  /S[+|*]<filename>	: write selected line into file <filename>
				  automatically at exit
   )

 * added VTXT2EXE - an text_to_executable-"compiler", which makes
   textfiles selfexecutable, based on a smaller version of ViewS (features
   basic functions only)

 * ok, I must confess: the search-function *had* still another bug:
    Searchstrings in wrapped lines were highlighted wrong!
   -> just fixed... should be ok now.

 * again changed the wait-function (for beeps). It uses the PIT-Channel0 now,
   which should be more exact and stable than the VRetrace (which depended on
   screen-frequency and desktop-environments (as O*/2 or Windoze)).

 * fixed a little problem with the save-function

 * fixed a little keyboard-handler-bug

 * some internal changes



 ViewS V1.92	(11.4.96)   (not the final version ;)
~~~~~~~~~~~~~
 * added Grab-Search-String function (<G>)
    Now you can grap any string from the current screen for searching.
    (Use the cursor-keys for moving the selection around, and <Shift>-
     <Left>/<Right> for changing the size of the selection.
     Confirm with <Enter> or abort with <Esc>.

     After confirming the selection, the selected string will be taken
     as the searchstring. Search for it with <N> or edit and search with
     [<Shift>-] <S>.
    )

 * removed "NumLock-Searchstring-Selection" (it was crap)

 * interrupts are locked now during the critically timed scrolling-parts

    Previous versions of ViewS began to flicker while scrolling, when
    some "heavy" programs (like MOD-Players and so on) ran in background (may
    be as TSRs or in multitaskers...)

    This should fix that problem. (Don't dare to flicker again, you shitty
				   piece of code... ;-> )
    (Ah, now even the timeshare works w/ CubicPlayer in the background	;-)

    Oh btw, this could probably cause a problem with such fake multitaskers
    as Winshit 3.1! AFAIK they sometimes get problems, when interrupts are
    locked.
    So you can deny the int.-lock by setting [NoCLI] (in VIEWS.CFG) to ON.


   __About one hour later...__ (5:15 in the morning)

     Sorry, but I've just found another problem: Although ViewS runs smooth
     now, the backgroundtask is radically slowed down by this fix.
     This is a big problem for moduleplayers. The sound plays more slowly and
     stops sometimes. (See below "Timingproblems" for an explanation).

     I had to introduce another option, to avoid this new problem.
     If you realize problems with background-soundplayers, try to lower or
     raise the value [DelayCLI] (in VIEWSCFG).

 * yeah, I found some bugs in the search-function
    Didn't fixed them up to now...


 ViewS V1.9  (around 6.3.96)  (maybe the final version...)
~~~~~~~~~~~
 * added WordWrap, where a word will be completely put to the next line, if
   it exceeds the current wrapwidth (linewidth) instead of breaking the word
   to the next line.
   (key: <W>) (in VIEWS.CFG: [Wrap] Word )
 * added keyfunction <Shift>-<S> for case-sensitive search
 * added Filtered textmode (<Alt>-<F>), where all ASCIIs below 32 is
   filtered out
 * added Char-conversion-tables
     + [ChrTab] and [DefChrTab] in VIEWS.CFG
     + <C>, <Shift>-<C>, <Ctrl>-<C> in ViewS
     + commandline-option /C<TableName>
 * added color-attribute tables (color-highlighting)
     + [AttrTab] and [DefAttrTab] in VIEWS.CFG
     + <A>, <Shift>-<A> and <Ctrl>-<A> in ViewS
     + commandline-option /A<TableName>
 * added selection of search-strings (words) directly from the screen.
   (keys: <Num> and NumPad-<CursorKeys>)
 * added possibility for scrolling the screen "below 0".
   (key: <Scroll-Lock>) (in VIEWS.CFG: [ScrollLock])
 * added <Ctrl>-<Home> for resetting horizontal position to 0.
 * analog (vertical) mouse-mode got a little bit finer
    (begins now with speed 0.5 instead of speed 1)

 * added videomodes with any number of lines from 10 to 61.
 * added videomode with 90 columns
     (+ keys <Alt>-<9> and <Alt>-<8>)
 * added <Shift>-<Alt>-<M> for choosing the previous screenmode
 * added <Ctrl>-<M> for choosing screenmode from a list
 * changed [VideoMode] entry in VIEWS.CFG. Now it can be:
     L<n>   - <n> in [10..61] - for setting number of lines   (e.g. L25)
  or
     C<n>   - <n> is 80 or 90 - for setting number of columns (e.g. C80)
  or
    <n>X<m> - <n> is 80 or 90/ <m> in [10..61] - for setting number of columns
	      and number of lines (e.g. 90x61)


 * added <Ctrl>-<F> for a list of all files saved in savefile
 * removed [SavChkNoDir] from VIEWS.CFG
 * added <Ctrl>-<F3> to load any stored position from savefile
 * added <Ctrl>-<F8> to remove any stored position from savefile

 * added selection of current screen-refresh-frequency
   (out of 4 internal VGA-frequencies)
    + [ScrFreq] in VIEWS.CFG
    + <Ctrl>-<Alt>-<S> in ViewS

 * removed a bug which caused some errors when counting wrapped lines
 * mouse-position will be restored correctly at exit now
 * the wait-function (for the beeps) now uses the horizontal-retrace-flag
   of the VGA-card for timing, instead of INT 15h/AH=86h
   (This should avoid the problems of some DX2-systems with buggy INT15h-BIOS-
    function...)

 * search-routine now 50% faster
 * endsearch-rountine now 35% faster

 * added Sw(i)tch

 * changed some internal stuff...
 * creatively introduced some more bugs ;)

 (hmm, did I forget something ???)


 ViewS V1.86
~~~~~~~~~~~~~
 internal...



 ViewS V1.85
~~~~~~~~~~~~~
 First release...

--------------------------------------------------
   ("Timingproblems" (I promised it ;->):
     You know, that a *smooth* scrolling requires, that all screenchanges are
     made during the vertical retrace. Now there is the typical loop, where
     you wait for it, by watching the VRetrace-Flag.
     Now it can happen (and it does so very often), that the background-
     task takes control just before the VRetrace begins and holds the loop
     some cycles while the VRetrace is already over.
     So the wait-loop doesn't realize the VRetrace and waits one full frame
     until the changes can be done.
     The result is the heavy flicker known from earlier ViewS-versions.

     Now you think, the solution is easy. Use a CLI to avoid, that the back-
     groundtask takes control while you are watching the VRetrace-Flag.
     That's just what I made one hour before.

     Here comes the new problem: ViewS is that fast (he he ;), that it only
     needs around 1% to 5% of a frame (on my AMD486-120) to do all the work.
     The remainder is spent in the loop waiting for the VRetrace to happen.
     All over this "rest" the interrupts will be locked; the background-task
     will be disabled.
     Now imagine that the background-task gets only 1-5% of the time and you
     can imagine the slowdown (of the music).

     The solution for this, is to slowdown ViewS that way, that the waiting-
     loop (where the interrupts are locked) will get less time.
     So I simply put another loop in front of the VRetrace-Wait, and wait a
     bit (about 70% of a frame), while the background-task can do it's job.
     Of course I used the PIT-channel #0 to get software-independed.

     Actually this loop should work fine on any system. But inhomogen timing
     of background-task and different system-speeds can still cause slowdowns
     or flickers.


     So I put the DelayCLI-value in the config-file so that you can adjust
     the length of the "front"-loop.
     But unfortunately there is no "best" value for it.
     If it is to low, the background-task won't get enough time.
     If it is to high, ViewS can miss the VRetrace, so that the scrolling
     will flicker and the background-task is delayed again.

     Uhh, problems over problems... bye.
    )


Bye
	TW.
