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 (-/ ) 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

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

is a better solution), and the number of selected lines is only shown, if the SelectionCursor () is active, or at least one line is selected. Added SavePositionNr (-

or -) so that you can save you current position to a certain slot, and GoToPositionNr ( or -) 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 (-

and -) are choosen by logic (save_P_osition and _G_otoposition), while the secondary keys (- and -) 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. (-

) 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 (-) 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 - 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 / to scroll hard, when is pressed (as it was before), or as default (with up). In this case - will scroll soft. (Option [HardPage] in VIEWS.CFG) Normal scrolling with / now has a "hard"- mode with hold down, too. As with - 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 . If you want fastest scrolling, hold down 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 (-) or if linenumbers are shown in statusline (-). 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 ). (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 while scrolling vertically, for doubled speed ViewS V1.93á (3.6.96) ~~~~~~~~~~~~~ * added function to extract parts of the file ( New keys: - : switch selection-bar on/off - : toggle selection of currently focused line - -: clear all selections - - : write all selected lines into a file New commandline-option: - /S[+|*] : write selected line into file 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 () Now you can grap any string from the current screen for searching. (Use the cursor-keys for moving the selection around, and - / for changing the size of the selection. Confirm with or abort with . After confirming the selection, the selected string will be taken as the searchstring. Search for it with or edit and search with [-] . ) * 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: ) (in VIEWS.CFG: [Wrap] Word ) * added keyfunction - for case-sensitive search * added Filtered textmode (-), where all ASCIIs below 32 is filtered out * added Char-conversion-tables + [ChrTab] and [DefChrTab] in VIEWS.CFG + , -, - in ViewS + commandline-option /C * added color-attribute tables (color-highlighting) + [AttrTab] and [DefAttrTab] in VIEWS.CFG + , - and - in ViewS + commandline-option /A * added selection of search-strings (words) directly from the screen. (keys: and NumPad-) * added possibility for scrolling the screen "below 0". (key: ) (in VIEWS.CFG: [ScrollLock]) * added - 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 -<9> and -<8>) * added -- for choosing the previous screenmode * added - for choosing screenmode from a list * changed [VideoMode] entry in VIEWS.CFG. Now it can be: L - in [10..61] - for setting number of lines (e.g. L25) or C - is 80 or 90 - for setting number of columns (e.g. C80) or X - is 80 or 90/ in [10..61] - for setting number of columns and number of lines (e.g. 90x61) * added - for a list of all files saved in savefile * removed [SavChkNoDir] from VIEWS.CFG * added - to load any stored position from savefile * added - to remove any stored position from savefile * added selection of current screen-refresh-frequency (out of 4 internal VGA-frequencies) + [ScrFreq] in VIEWS.CFG + -- 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.8á6 ~~~~~~~~~~~~~ internal... ViewS V1.8á5 ~~~~~~~~~~~~~ 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.