History of ViewS: ViewS V2.00 ~~~~~~~~~~~~ * (98-06-29) Fixed a very nasty bug, preventing the boolean expression search from working... (Just forgot to reset one register to zero in the inner loop. And of course it was zero anyway when entering the search function - until I released V1.99. What a coincidence :-/) Fixed a bug in the input history. Crashed when entries with a length above avout 70 chars appeared in the list. Added key as synonym for (GoTo-function). Just to make the live easier for people knowing HIEW. :) Sorry that V2.00 is just a fix-release, but somehow two very bad bugs slipped through the testing of 1.99, and I don't want to release a V1.991, cause VIEWS1991.ZIP is too long. ;) ViewS V1.99 ~~~~~~~~~~~~ * (98-06-25) Added 'GoTo'-function. Key will ask for the offset of the new position, key asks for the line. Key (GoTo) will ask for an offset or a line, depending on what's shown (ofs/line) in the statusline currently (e.g. if you are in Raw- or in Text-mode). It will assume decimal values per default. If the value begins with '0x' or '$', or ends with 'h', or contains characters between 'A' and 'F', then it's taken as hexadecimal. You can make ViewS assume ALWAYS hex offsets (not lines), by enabling [ForceHexOfs] in VIEWS.CFG. Added (Goto related) commandline options /L and /O. Use /O to move the screen to a certain file offset and /L to a certain line number initially. (Both will override saved positions, and accept hexadecimal values with the same syntax mentioned above (for 'GoTo'-function).) Added commandline option /F which will activate the line- selection focus (like key ) already at startup. (could be useful in conjunction with /S...) Added key which will (like ) toggle the selection of the currently focused line (if selection focus (key ) is active). (If you use an "orthodox filemanager" like VC, NC or UFO you will know why. ;) That's enough testing (what testing? ;) V1.99 will be released this night. * (98-06-23) Homepage (http://www.comports.com/obiwan) is online :) Searching shows an own position bar (progress bar) now. (So you can see which part of the file is analyzed currently.) * (98-06-22) Added a wrapped-search option. If it is enabled and searching hits the fileend, then it will continue searching at filebegin (till the point where the search has started). In conjunction with SearchNext ( or -) it will remember where the initial searching has begun and search up to that point after wrapped to filebegin - so no position can be found more than once. You can choose if this feature is always activated or never, or if you want to be asked to decide when fileend is reached. (in VIEWS.CFG: option [WrappedSearch] On|Off|Ask) ("Ask" by default.). Changed SearchNext-function so that the previous search-result isn't cleared anymore, if SearchNext failed. With the old behaviour it would have started to search at screen-begin again when doing a new SearchNext after a failed try. The new will just tell you again that nothing has been found. You will have to clear the old search-result () or start a new search then. I think this is more logical and besides gives you the correct number of hits (via the position-number; key

), if you just kept holding the -key till the search failed, now. * (98-06-17) You can choose now if you want the history-list checked for duplicated entries when you open the history-list (the old behaviour) or when a new entry is added to the list. The second choice (check when add) will have no delay when opening the history-list, but maybe a short delay when adding a new entry to an already quite long list. I prefer this short delay to the longer delay at listopening, but it's you choice. ( [CleanHistory] (No,AddChk,ListChk) in VIEWS.CFG. ) * (98-06-12) When you open an input-historylist, succeeding identical entries are (permanently) removed from the list now. If you don't like that you can disable it via [CleanHistory] in VIEWS.CFG. (Try this, if you experience a delay when opening the history- list.) * (98-06-11) Fixed a small bug regarding the search-function. (Under rare conditions the reported found-offset could be a few bytes too low.) Added - which will search for next match with (temporarily) CenterFoundForced enabled. (This will center matches on the screen.) You can confirm input (in inputlines) with - now. In opposition to this will not memorize the input (as if InputHistory would be disabled). * (98-06-10) Added an input-history. Means: Everything you type in an inputline (and confirm with ) is memorized, and can be brought back into the inputline for recycling ;) (pressing or inside an inputline, will bring up a (scrollable) list with earlier inputs, which can be confirmed by or , removed from the history by (without any confirmation) or canceled by ) For more information read VIEWS.DOC chapter .5. (the history can be disabled via [InputHistory] in VIEWS.CFG; related entry: [PromoteHistory]) Added a 'remove'-function (key ) to all the savefile- lists (-, -, -) which will remove the currently selected entry (similar to in InputHistoryLists) from the save-file. There will be *no* confirmation-request! (Maybe will change later... don't know if needed.) Changed behaviour of . It still stops scrolling, but if AutoStop is deactivated (e.g. in Reader's Mode, key ) it can also start scrolling now. (Requested by user :) (In Reader's Mode: hit to stop; hit again to continue) Fixed colors of lists. (Didn't was a problem as long as you doesn't changed [WinAttr].) There are three new color- keywords ( [ListAttr], [ListHeaderAttr], [ListCursorAttr] ) now. ViewS V1.99á1 ~~~~~~~~~~~~~~~ * (98-06-03) Fixed a little bug sometimes showing wrong tabulators after startup. Added a [ShowLocked] option in VIEWS.CFG. You can disable the screen-darkening (signaling a busy (non-scrollable) screen) now, if you don't like that hard change of brightness. (btw, I fixed that related bad flickering happening during fast searches...) (Requested by User) * (98-06-01) Adjusted the colors of the FocusLine (btw, can be changed now) () , Selections and FoundMarker so that they fit a bit better together. (I'm still not absolutely happy with them, but didn't found a better combo.) ViewS is now completely 80286-compatible again. (I hope I didn't forgot something... Please tell me, if there are problems.) Fixed a bug in the FormatWrap-function (lines with much leading spaces were drawn vertically at the right border (wrapwith=1)). * (98-05-31) Sorry, but the first version of that BoolSearch was much too slow and somehow instable =). The new version is releasable now I think (or hope). But it still needs some testing so the (non-beta) release will still take some time (Especially now, when my onboard COM-ports are history. RIP. I gotta get some FIFO-card before I can upload anything... :-( ) [rules...] Rewrote the searchresult-marker. It can show results including multiple lines now and is more reliable. Temporarily removed the GetSearchStr-function (key ). (I mostly just used it as a ruler... ;) Added a real ruler . (-) It can be moved around on the current screen, and shows it's length (changed with +/- or - /) (length on screen (in chars) and in file (in bytes)), the number of the line it's currently in and it's start- and end-offset (in file). Added a CenterFoundForced-option, which will center the screen always at the search-marker, even if it was already in the current screen. (Makes it easier to survive if you get maaaannnyy hits.) (Option [CenterFoundForced] in VIEWS.CFG) Fixed some bugs generally related to searching. Fixed a bug usually happening when beginning to scroll upwards and hitting an empty line then. It normally just showed some distortion in the position-bar (in statusbar). * (98-05-12) Just finished a more or less usable version of the boolean expression search. (It's still quite slow for some complex constructions. I will redesign it soon... :) (- or - will invoke the BooleanSearch; I will change the interface (which is currently just an input- line) to be a bit more userfriendly...) ViewS V1.99á ~~~~~~~~~~~~~~ * (97-12-07) Added [FastMouseReset] option to VIEWS.CFG for you poor users of Microsoft-mousedrivers. This should fix the long delay at start and exit of ViewS, if you haven't installed a reasonable mousedriver. (I can recommend the freeware CTMOUSE (CuTeMOUSE)- driver which fully supports Microsoft-, Mousesystem- and Logitech-mode, with less than 8KB memory-needs, and being much faster than Microsoft's own... :-)) * (97-12-06) Added support to read from standard-input (STDIN) which is useful for piping or redirection. Just use an asterisk "*" as filename, to read from STDIN. (Examples: DIR | VIEWS * ^--pipe-symbol to redirect DIR's output to ViewS) (Just make a batch-file (e.g. VMORE.BAT or VM.BAT ...) which con- tains VIEWS * and throw away the MORE-command. ;) 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.