In the process of tidy-up as this three year project ends (itself a spin-off of a decade long effort), I have gathered together a number of routines I have found useful & set up a SMALL and LARGE model Turbo-C (v2.0) library for local distribution. Since there is room left on a 360K Floppy, I also tossed in a few Tools, among them Valve, Chopper and three cypher programs. I include a TIS (Text Indexed Sequential) keyed "Manual" for the library and Vu to access and search it. While C-coding, I freqwently refer to this file using HKM, a TSR built using Al Steven's "popup.c" and "resident.c" TSR routines from "Turbo-C Memory-Resident Utilities, Screen I/O and Programming Techniques" (MIS Press, 1987) and modules lifted from Vu. I also include a Quick & Dirty solution to the puny DOS pipe problem: =============================[ PX Pipes ]==================================== Pipe: A One-Way Link connceting the Output of One Program to the Input of Another. Symbol: "|". Filter: A program intended to be Piped on Both Sides. Example: SORT Tool: A Program (usually small) which does One Thing Well. ----------------------------------------------------------------------------- Currently, there are (at least) three competing philosphies about PC Use: 1. Launch an Application and Do All Work there. Example: dBASE. 2. Overload a Graphics User Interface (GUI) and operate in a Mouse/Icon Environment. Example: MS-Windows. 3. Perform Processes on Text Files from the Command Line Interface (CLI). Example: Unix. This is an exploration of the last (Unix-style) philosophy as implemented on the PC. Although hobbled by lack of Virtual Memory, a Tiny (by Unix standars) RAM and inadequate disk space, DOS can do a surprisingly good job when fitted w/ the right Tools, some "Magic" and a knowledgeable User. That's right. Tools demand intellegent Users, which is probably why Unix has been so slow to go "Mainstream". The PC is a difficult machine in many aspects, BATch Files being one of them and, as you might expect, BATch Files are essentual to effective Tool use. Text Files are the Raw materials and End product of Tool Use. Many tasks which naturally occur in the course of our daily work involve the manipulation, transformation or analysis of Text Files. Just are as a Wood Wright cuts, shapes and polishes Wood, DOS can cut, shape and polish Text. The Unix Philosophy is to create and use simple Tools which, when linked together, can do complex tasks quickly. The "Link" is the Command Line Pipe, "|". As in Early Unix, DOS Pipes are actual Files which are created, used and erased as the Command Line carries out your wishes. (A "Crash" might leave them in the Root Directory, names consisting of strictly numbers and often completely empty). For many situations, you need only begin the Command Line by TYPEing out the Source Text and "Squirting" the finished product into a File like so: C:>TYPE source.txt | FIND "something" | SORT > target.txt That works well enough as long as your processing is simple and your Tool names (and Arguements and Option Switches) are compact enough to fit on DOS's 127 character Command Line. When they do not, you can use "Temporary" Files to pass Text from Line to Line. From that simple process (passing Text from Line to Line) came a Family of "Pipe Extenders" that resolve many of the problems Tool Users encounter on DOS. The first (most basic) pipe extender is "PX". It allows the above example to be split like so: C:>TYPE source.txt | FIND "something" | PX C:>PX | SORT > target.txt PX creates a File in Root, accepts Text from an Inflow Pipe and later TYPEs it into an Outflow Pipe. Being only two letters, PX takes up very little of that precious 127 character Command Line, a Plus. The above works on the Command Line (PX can tell where the Pipes are). Inside BATch Files, the "Sniffer" doesn't work, so you have to use Flow Control Flags, like this: TYPE source.txt | FIND "something" | PX /W PX /R | SORT > target.txt ---------------------------------[ Named Pipes ]---------------------------- PX uses an "Illegal" file name containing a Space. Command.Com and everything in DOS avoids embedded Spaces, but CP/M allowed them, so the DOS File System (to maintain backwards compatibility) allows them, too. PX uses such names to avoid any possible conflict with DOS or existing application programs. When it was decided to allow the User to specify file names for PX to use, the real names could not be passed thru Command.Com. It was decided to let the User specify the last 4 characters of the name (providing several million choices), but signify that this is a Pipe Name by using "$" in place of the "Illegal" part of the name. By this convention, PX defaults to a Pipe Named "$OUT": C:>TYPE source.txt | FIND "something" | PX $OUT C:>PX $OUT | SORT > target.txt Tools which allow $Pipes will say so in their "Barefoot" use message. -----------------------------[ Piping BATch Files ]-------------------------- By now you may have guessed that PX can "Jump the Fence" into and out of .BATch Files. Flow into a PX Pipe outside the BATch File, read it inside, refill it with the results and exit. Later on, read the PX Pipe. Works every time. Unfortunately, you can't Pipefit a BATch File into a Pipeline using the above method. For one thing, to call a BATch File within a Pipeline, you have to spawn a Secondary Shell using "Command /C ": .. | PX /W | Command.com /C mybat | PX /R | ... Which is equivalent to: .. | PX myfile | PX | ... (PX spawns the Secondary Shell) All the restrictions of the "/C" option apply except one: PX will convert single quotes to double quotes as it passes "myfile" and its arguements to the Secondary Shell. (Just enclose "myfile 'arg1' 'arg2' ..." in double quotes). Notice also that PX didn't need the "/W" & "/R" flags (even in a BATch File). Sometimes you want a BATch File to print out to the CRT when used from the Command Line, but use a $Pipe when called in a Pipeline by PX: DIR | FIND "-" | FIND /V "<" | CUT 12 | TRIM | TR /S " " | TR " " "." | PXO The above Pipeline was taken from Ls.BAT, a "DOS Script" (PX can Call it inside other BATch Files). -----------------------------[ Pipefitting ]--------------------------------- Once you have the ability to build Scripts, many of the techniques used by Unix Shell Programmers can be done in DOS. One serious problem remains: How do you pass the contents of a Pipe to a Command? For example, Ls gives you a list of File Names, how can you present that to the User for him to select some (several or one) to copy to a Floppy? PX Ls | PX | MSO /R | RSX "DO COPY $1 A:" The first part uses "Ls" as "myfile" as discussed above. The Piped outflow of that (a list of file names) is presented to the User who can select which ones he wants copied. (See BatMan MSO) "RSX" means "Read-Single-Execute", a variation of PX that repeats the "command" over and over until the Pipe runs dry. Each line is "Parsed" into "Words" ranging from $1 thru $8 ($9 is the remainder, $0 is the whole line). Before execution, $1 (in this case) is replaced by the first word on the line read in. Notice that "command" is quoted (there is an embedded space). Since we want to see the Command as it is being executed, "DO" is used (See MAN DO). For those situations where a Select List isn't appropriate, you can Pop an "Ask" Box onto the screen using APO: APO /I *.* "Enter Files" | rsx dir $0 Try it. Notice that if you just hit that only one DIR cycle occurs. -------------------------[ Final Thoughts ]--------------------------------- If you can reduce your User Interactions to a Single Keystroke, Keys.h (or BATchman) can handle you needs via ERRORLEVELs. If you can't, use APO or MSO to feed text down a Pipeline. ============================================================================= >APO. A "Boxed" Ask w/ Prompting & Text Capture. Squirts to Stdout. Usage: APO [/option] text [title] Options: /I ---> Ignore Case. (Everything is UPPERS). /N ---> Numbers Only. APO may be Piped w/o Disrupting User Input. Try It! APO must be Piped for OutFlow (or It isn't very Useful). APO is a Public Domain Program Written in C. ========================================================================== >CAT. conCATinate Files/Pipes ala Unix cat w/ Line Number & Queue Options. Usage: CAT [/Option or file list] ---> Stream Text to Outflow Pipe. /Options: /Q ---> Stack Stdin Lines into 75 CHR$ max lines. /N ---> Add Line Numbers to Each Stdin Line. /T ---> Add TEKTEST Line Numbers to Each Stdin Line. /U ---> Remove Line Numbers from Each Stdin Line. File List: File Names (Wild Cards OK), $pipe or "-" for Stdin. ---- CAT will "glue together" a list of files/pipes into one continuous Text Stream. Any EOF markers (^Z) are filtered out. CAT supports the "PX" Named Pipe conventions. Use $IN to read the default PX pipe. ---- CAT does not Rub-Out Named Pipes after use. You may re-read them by calling CAT again. You can Rub-Out a Named Pipe named "JEEP" like this: PX $JEEP | SORT > NUL PX must have an Outflow Pipe or flow into a File. NUL isn't enough. ---- CAT operating under the "/Options" is strictly a Filter. No Files, please. ----- Note to Unix retreads: Use VIS for "cat -v" applications. CAT is a Public Domain program written in C. ========================================================================== >CHOPPER. Hack up a Text Stream into Printable Lines. Usage: CHOPPER [[drive:][path]filename]--> Hack Up Text into Lines. $Pipes are Legal. If the Stream is Page-sized, CHOPPER is transparent. Otherwise a "Wrap" action occurs w/ "" markers at the inserted line break. "Choppered" Text can be "DeWrapped" by piping thru: | SAR "$021?$021" | CHOPPER is a Public Domain program written in C. ========================================================================== >CYPHERS. A Toolbox of Useful Encryption Techniques: >ENIGMA. Louis XIV's "Great Cypher". >GARBLE. A Text Stream Scrambler used by Roman Centurians. >FOG. An 80% "Snow Factor" of Random "Noise". Cyphers have been used by Governments and Armed Forces as far back as Roman times. Today's secure Cyphers such as DES are algoritmic based and (unless you are a real bit-head) about as interesting as oatmeal. Yesterday's Cyphers, the machines that (mechanically) implemented them and the techniques to analyze them spun off the field of Information Theory. Because they are well understood and documented, yesterday's Cyphers strongly influence today's hardware/software/system designs. Three Cypher Tools have been created implementing three different schemes for "Covering" information. All are written in ANSI C and will port directly to DOS and Posix platforms. All generate seven bit ASCII code suitable for telecommunications via Sytek or modem. These Tools ARE NOT suitable for classified information (use DES or other certified method), but will resist attacks (even by experts) long enough to discourage casual Snoops. In effect, these are "Honest Man Locks", sufficient to remove the temptation to browse or tamper. The first is a file scrambler called "GARBLE". It is based on the "Ribbon Trick" used by Roman Centurians to encode/decode field orders. Each Field Officer was issued a Staff (appropriately adorned) as a Symbol of Rank. Actually, it was a Cypher tool. A length of ribbon was wrapped around the Staff. The message was written along the Staff's axis and the ribbon unwound, rolled up and "Mailed". Without a cylinder of correct size, the ribbon's jamble of letters was unreadable. GABLE text resembles a binary file printout, which means a casual snoop would skip it. The second Tool is a Substitution Cypher based on Bazeries Cylinders, the defacto standard cryptographic method through WW II. Invented by Antoine Rossignol, court cryptanalyst to Louis XIV, the secret to the "Great Cypher" died with him in 1715. After a century of attack, Cmdr Bazeries (of the French Army) cracked the code and invented a Cypher machine based on it. The German Enigma machine was an electro-mechanical version of that machine. Project Ultra and a special purpose electronic computer (Colossis) so thoroughly cracked Enigma that, by D-Day, Allied Commanders often had German field orders before the addressee. So important was Project Ultra that all trace of it remained classified until 1974. The classical Diplomatic Cylinder Cypher used only letters printed on the periphery of 20 disks, each in a different scrambled order. The "Key" specified what order these disks were to be stacked. ENIGMA faithfully reproduces the action of these classic machines, except that more disks are used (40) and more characters are used (79) so that the entire 255 character Ascii/IBM code set can be handled. Using the /N (neat) option, ENIGMA produces 5 letter groups of printable text, twelve groups/line. This allows visual inspection during telecommunications without exposing the covered text. ENIGMA is well suited as a "Mailer", an envelope in which a file can be placed during "Mailing", especially if it must be "Parked" on a public system for later pickup. The third Cypher Tool, FOG, is based on a trick used by the KGB in the US during the early 1960's. Embarrassingly simple (the original decoder was 6 lines of BASIC code), the CIA never did crack it, learning its secret only after the KGB's US Station Chief defected. FOG obscures information by inserting an 80% dose of "Noise". At the cost of a 5:1 bulk expansion, FOG allows secure transmission of small items without need of Keys. Passwords are one of the items FOG was intended to protect. Like ENIGMA, FOG can generate printable text in 5 letter groups. ========================================================================== >HKM. Hot-Key Manual. A TIS Compliant Utility w/ TSR Power. Usage: HKM [options] path/manual.TXT --> VU a Text File or TIS Manual. Options: /C0xhhhh -> Specify Colors. /I -------> Install as a TSR. . /K -------> Jump to Item Select List First. /R -------> Remove. (Try to "UnInstall"). /S -------> CGA Snow Fence. none -------> Pop Immediately & Run as a Normal Program. Item Select Listings are Created/Updated by TIS.BAT ------- The F1 Help Key produces this Display: ---------> Exit This Program: Hot-Key Manuals. -------> Pop Item Select List. F2 -----------> Find a Text Phrase. F3 -----------> Find a Text Phrase. F4 -----------> Repeat Search. / / ----> Roll Upwards. / / --> Roll Downward. --> Shift Text Left 10 Spaces. -> Shift Text Right 10 Spaces. F5/F6:F7/F8 ---> Alter Colors for This Session. F9 -----------> Switch to a Different Text File. F10 ----------> Report Current Color Settings. Any Other Key -> Roll Down 11 Lines (Half a Screen). ------- HKM retains the 4-Way scroll and most other features of VU, substituting a Select List capability for VU's WildCards and Pipes. HKM can operate as a StandAlone Manual Browser or Terminate and Stay Resident (TSR) w/ ALT-COMMA as its "Hot Key". When Resident, HKM will remember your place & Jump back there on Wake Up. HKM is a Public Domain Program Written in C. ========================================================================== >KEYS. Report Keyboard Hits w/ StdEK.h, Keys.h & ScanCode.h Lookup. Usage: Keys Key Stroke Test. Hit [Esc] to Exit. Hit Any Key. Ascii ScanCode KeyMask Keys.h Symbol 32 57 160 32 " " 97 30 160 97 "a" 65 30 162 65 "A" 1 30 164 1 SOH 0 30 168 158 ALT_A 0 126 168 254 ALT_7 0 127 168 255 ALT_8 0 128 168 128 ALT_9 0 129 168 129 ALT_0 0 14 168 142 NewKey ALT_BS 0 28 168 156 NewKey ALT_RTN 0 133 160 133 NewKey F11 0 78 168 206 NewKey ALT_PLUS 0 166 168 166 NewKey ALT_ENTER 0 1 168 129 NewKey ALT_ESC 27 1 160 27 ESC Above is a sample of what Keys.com produces. Notice that Keys.h, which uses the convention of ORing non-Ascii ScanCodes w/ 128 "wraps" at ALT_8, going from 255 to 128 for ALT_9. Usually this fold-back causes no problem. However, 101-Key Keyboards, an option on GSA Z-248s (which must use NewKeys.Com) and all GSA UNISYS 386s can generate the items marked "NewKey", some of which will collide w/ other Keys.h style ScanCodes, e.g., ALT_9 and ALT_ESC. ScanCode.h is a straight ScanCode listing using the same symbol names as Keys.h. All symbols there are unique unsigned bytes. For Zenith Users, NewKeys.Com provides access to the F11/F12 keys and to some variations on other keys, such as ALT_BS and ALT_RTN, that IBM left out of the original PC's BIOS. It also provides access to the Keypad "Grey" Keys such as ALT_PLUS and ALT_ENTER Keys is a Public Domain program written in C. ========================================================================== >MSO. Display a (Multi-Column) List & Output User Selected Item(s). Usage: MSO [options] [file] ---> Present a List & Output Selection(s). Note: $Pipes are Legal in "file" Name. Options: /Cn ---> Specify # of Columns Displayed [n = 1-4;D:4] /N ----> Prefix Selections w/ Item Line Numbers. /R ----> Multiple Selections Permitted. MSO may be Piped In/Out w/o Disrupting List Display/Selection. MSO is a Public Domain Program written in C. ========================================================================== >PX. A Pipe Extensions & Named Pipes for DOS. Usage: PX [options] [Command [Arguements] or $Pipe] --> Extend DOS Piping. Option Flags are Required in .BAT Files: /A ---> Append to Specified Pipe. /R ---> Read From Specified Pipe. [Force OutFlow] /W ---> Write to Specified Pipe. Pipes: 1. PX "Pipe Extends" DOS stdin/stdout Pipes using ordinary Files w/ Unusual Names. These Names can not be Generated by DOS. 2. A "Named" Pipe name is 1-4 Alphanumeric Characters Preceeded by '$'. Action: 1. If InFlow Redirection, Create the Specified $Pipe ($IN is Default). 2. If a Command is Passed in, Shells Out & Execute it. 3. If InFlow Redirection, PX Quits Here. 4. If Redirected to a File/DOS Pipe, Print Contents of Specified $Pipe. (Default is $OUT if found, otherwise $IN). 5. PX erases $Pipe after reading. ---- PX "Pipes" are just ordinary files (as the original Unix Pipes were) with unusual names. Each PX Pipe Name begins with "$" (for you) and "\STD " (for DOS). Notice the Space. While DOS can handle file names with embedded Spaces, COMMAND.COM (the command processor "Shell") can't. In other words, these "Illegal" names will never be generated or used by "normal" DOS. ---- PX can be used to "Extend" DOS stdin/stdout Pipes into and out of BATch Files. There are a few "Gotcha!'s" that DOS throws in: 1. BATch Files can not load/unload TSRs except at the lowest (Bootup) level. You can not call these files with PX. 2. The stdout Stream is "Junked" up by COMMAND.COM's mindless echos and prompts. See PXO Below for a Solution. 3. BATch Files will not OutFlow Pipe unless called by PX. DOS squirts them directly to the CRT unless the Shell is a "Secondary" Shell (has the "/C" Option). 4. Since DOS doesn't support "Quoting" as Unix does, PX converts BANG! character into |Pipes and 'Single' Quotes into "Doubles" as it passes your "Command Line" to the Secondary Shell for execution. 5. From the Command Line, PX will figure out what you want by how you Pipe it. Inside .BAT Files, the Options Flags are Required. (Use /A anytime). 6. Redirection of PX to a "Character Device" like LPT: or NUL: can Fool PX unless the Option Flags are Used. (PX > NUL won't work, PX /R > NUL will). 7. PX combs NULLs out of its byte stream. NULLs are <0> after VIS. PX is a Public Domain program written in C. ========================================================================== >PXO. A "Pipe Cap" w/ the Option to Redirect into PX Pipes. Usage: | PXO [$pipe] ---> BATch File PX/CRT Pipe Cap. If the Script is Piped out of PX, PXO Squirts Text into "\STD OUT" or into Specified Named Pipe. (Name = 1-4 Alpha-numeric Characters.) ---- PXO is used in .BAT files to bypass the "Chatty" garbage DOS throws into the Text Stream. Examples: LS ---> Short List the Current DIR to stdout. PX LS | PX | ... --> Dump DOS "Chatty Prompts" in the Bit Buck. PXO is a Public Domain program written in C. ========================================================================== >RSX. Read a Single Line & Execute a Command (w/ Passed Parameters). Usage: RSX [/Fc] Command [Arguements] --> Do Command w/ Parameter Passing. Options: /Fc ---> Use 'c' as the Field Delimited vice Spaces. The $### format for Decimal ASCII is Legal. Action: 1. RSX reads a Single Line of Text from Stdin. 2. Using the Field Delimiter, Slots $1-$9 are stuffed. ($0 is the whole Line.) 3. RSX Spawns a Sub-Shell, passing to it a "Command Line" made up from Passed Parameters w/ these modifications: A. Contents of Field Slots get substitued for $Field Tags. B. Bangs (!) and Dits (') become (|) & ("), respecitively. C. $$ becomes $. D. DOS WildCards are Passed Unchanged. 4. RSX Repeats the Above for Until Stdin Runs Dry. ---- RSX uses Stdin as its "to-Do" List, so Piping into the "Command Line" requires some thought. For example, Using PX works only for the First Pass (PX erases $IN). If you Use PX into a Named Pipe (say $THIS) and begin the "Command Line" w/ "CAT $THIS ! " (Remember ! ==> |), each Pass will have access to the contents of that Pipe. ---- The "/Fc" option allows RSX to operate on "Fields" instead of "Words". You can run a simple Data Base like this: (one line of data in file DB.DAT): Author: Jack Ekwall: Age: 45: DOB: 3 July 43: Code::6072: Phone: 1854 TYPE DB.DAT | RSX /F: ECHO Attn: $2 Mail Stop $8. Prints out: Attn: Jack Ekwall Mail Stop 6072. ---- Notice that imbedded spaces are preserved. Notice that repeated Dlimiters are ignored ("::" is read as ":"). You are limited to 9 fields. ($0 is the whole line). ---- RSX is a Public Domain program written in C. ========================================================================== >SAR. Search & Replace in a Text Stream ala RAM-Page SAR. Usage: SAR "This" "That" ---> Find & Substitute . SAR "This" ----------> Find & Remove It. Wild Cards: ? --> Place Holder in . Any Character Matches. ? Cannot Be First Character In . ? --> Place Holder in . Original Character Remains Unchanged. $### --> An ASCII Character w/ Decimal Value <3 Digits>. $$ --> A Single Dollar Sign. SAR is a Filter. ---- SAR is a straight "This" = "That" replacement. "That" is allowed to contain "This" as a Sub-String. ---- Unlike the Unix "sed" and "awk" Tools, SAR is not Line-Oriented. In other words, a "New Line" character is just another ASCII Byte. SAR also allows WildCards in the "That" String, something very useful but rarely found. On the down side, SAR's WildCards are kind of "Whimpy" compared to Unix Regular Expressions. SAR is more of a multi-character "tr" than a "sed". SAR is a Public Domain "C" Language. ========================================================================== >TEE. Squirt Stdin/out Text into a File or $Pipe. Usage: TEE file_name ---> Squirt Stdin/out Text into a File. Example: ... | TEE CON | ... lets you (the CRT) Peek Inside a Pipeline. TEE a Public Domain program written in C. ========================================================================== >VALVE. A Text Stream Flow Control Filter. Usage: Valve [options] [filename] --> Control Text Flow. Options: /An ---> Trip on the "n"th Trigger Character. [D:1] /B ----> Block Text Until Triggered. /Cc ---> Trigger on 'c' vice NL. 'c' is any Printable. or $$ or $### (3 Decimal Digits) for any ASCII. /F ----> FIFO for Lines. Pops Top Line Each Call. /Hn ---> Pass Head (Top) n Lines. [D:10] /I ----> Initial Character Trips. (Ignore Everything Else). /C option Required. /J ----> Jog. (Trip Twice & Hold Initial State). /L-----> LIFO for Lines. Pops Last Line Each Call. /Tn ---> Pass Tail (Bottom) n Lines. [D:10] /V ----> Verbose. Echo Text to CRT Until Triggered. Valve defaults to a Filter. $Pipes are Legal in filename. After Loading, Repeated /F or /L Calls Pop Lines until Stack/Queue is Empty. Text is Stored in the Named Pipe, $VALV. ---- Used as a Filter, Valve does just what the name implies, passes or blocks the Text Stream. Default is to pass one line of Text and then terminate. Using the /B option, Valve will block (skip) the first line of Text and pass everything else. VALVE /H is functionally equivalent to "head" in Unix. VALVE /H5 is the Same as VALVE /A5. VALVE /T is functionally equivalent to "tail" in Unix. ---- The /L and /F options spill blocked text into a Buffer File instead of the "Bit Bucket". Calling VALVE without an Inflow Pipe Pops a Line Out of this holding area. Try This: DIR | VALVE /BA5 | VALVE /F > NUL strips the DIR header and Stashes the Listing. VALVE /L > NUL Pops off the last ("bytes remaining") line into "Ye Ole Bit Bucket". VALVE /F "Pops" off the DIR listing, one line at a time until the Buffer File is empty (returns an EOF). VALVE /L /A2 pulls two lines off the End of the Listing. The Buffer File is a Named Pipe, $VALV, which may be "Highjacked" and used as an ordinary Named Pipe. ---- The /Cc option changes the "Trigger" Character from NL to 'c', some spcified character. These "Gating" Flags pass thru unaltered EXCEPT for the one causing the "Trigger" Action. That one gets gobbled. This differs from NL "Gateing Flags" (the Default), which are passed or blocked as needed to assure Text Lines stay properly delimited. ---- The /J (Jog) and /I (Ignore) Options allow Valve to Split Out Enties from a DataBase File like \HELP\MANUAL.HLP (the DOS Manual). Try This: MSO /N \HELP\MANUAL.LST | RSX VALVE /BA$1 /JI /C$$62 \HELP\MANUAL.HLP Notice that Options can be in Any Order & can be Combined ala Unix Flags. ---- The /V option is useful during DeBugging. VALVE is a Public Domain program written in C. ========================================================================== >VU. A "README" style file browser ala Unix "more" w/ PX Pipes. Usage: VU [options][drive:][path]filename [, ...] --> View Text Files. | VU [options] ---> View a Text Stream ala MORE. Options: /A -------------> Query for Initial Search. /C0xhhhhhh -----> Specify Colors. [D:/C0x0F1F0E] /K -------------> Pop w/ Select List. /F \"FindMe\" ----> Jump to Text Match. /R -------------> Honor RAM-Page Tables. /S -------------> CGA Snow Protection. Named Pipes are Legal. Pipes are NOT Errased by Viewing. ---- VU is "MORE" w/ 4-Way Scrolling via Arrow Keys, Searches w/ Repeat & Ignore-Case Options, and PopUp Help on F1. VU can be Fully Piped w/o Lockups, will Display a List of Files or the InFlow from Stdin. The /C option accepts a Hexadecimal Integer such as 0x1F301E, where "1F" sets the Text to "Bright White on Blue", "30" sets the Bars to "Black on Auqa" and "1E" shows Underlined Text in Yellow on Blue. (See DOS Colors above for details). The User can alter the Colors for the current session via F10. If a combination is pleasing, F10 will also report the equivalent /C option. VU is the Display Engine for TIS.BAT, which is the "Business End" of MAN, HELP and TERMS. VU is a Public Domain program written in C. ==========================================================================