dlnash@ut-ngp.UUCP (Donald L. Nash) (12/07/85)
Here's the User's Guide for PC-More. Don Nash UUCP: ...!{ihnp4,allegra,seismo!ut-sally}!ut-ngp!dlnash APRA: dlnash@ngp.UTEXAS.EDU -------------------------cut here------------------------- PC-Write by Donald L. Nash December, 1985 Version 1.2 Section 1: Introduction PC-More is a pager program similar to the UNIX* more program. It is designed to work on the IBM Personal Computer, PC XT, and PC AT, as well as compatibles. The purpose of PC-More is to display a file one screenful at a time for easy viewing. The PC-DOS "type" command can do this, but the text scrolls too fast for most people to read. Beginning with version 2.0, PC-DOS supplied its own version of a more filter, but it is extremely limited in its usefulness, since it can only display one screenful at a time. People who are used to the UNIX version of more expect to be able to move through the file in any increment they choose, not just a screenful at a time. PC-More corrects this problem. Section 2: Invoking PC-More PC-More can be used to read from a file or to read from a pipe. To invoke PC-More to read from a file, simple type the following in responce to the PC- DOS prompt: A>more file1.ext [file2.ext ... ] The part in brackets is optional. It simply means that you can type any number of filenames after the word "more." When PC-More reaches the end of one file, it will automatically go on to the next one on the command line. Moving between files is explained below. If you want PC-More to read from a pipe, where it will read the output of some other command as its input, then you would invoke it like this: A>command | more where "command" is some program or PC-DOS command which writes to the PC-DOS stdout device (usually the console screen). In either case, PC-More accepts the same commands once it is invoked, with a few exceptions explained below. Constructs like this: A>command | more file1.ext [file2.ext ... ] *UNIX is a trademark of ATT Bell Laboratories. - 1 - should ALWAYS be avoided. If you would expect PC-More to read from the pipe first, then go on to the files, you would be wrong. Under PC-DOS, there is no way to tell directly if the stdin and stdout devices have been redirected through a pipe. PC-More simply assumes that if there are no filenames on the command line, then it must be reading from a pipe. This is somewhat risky, but it is the only way to go when using PC-DOS. The above construction will confuse PC-More into thinking that stdin has not been redirected, producing potentially hazardous results for some of the commands (explained in the next section). Section 3: PC-More Commands Part 1: Motion Commands If you have used programs like PC-More before, then you should skip the first four parts of this section, since they are something of a tutorial description of the PC-More commands. Part 5 has a summary of all the commands which will probably be enough for you. Once PC-More has been invoked, it will clear the screen and display the first screenful of data. When the screen fills, the following message appears on the bottom line of the screen: --filename.ext-- where "filename.ext" is the name of the file from which PC-More is reading. If it is reading from a pipe, then "filename.ext" will be "stdin." You may now type any of the PC-More commands. To see the next screenful of data, simply type a space. The screen will clear and the next screenful will appear. PC-More will clear the screen every time it reaches the bottom with the following exceptions: 1. Advancing one line at a time will never clear the screen, even if it is full. This is a feature which allows you to display two lines which may be on different (but consecutive) screens. 2. If the screen is not full when the prompt appears and command is given which will fill the screen and cause scrolling, then PC-More will not clear the screen when it fills. An example of this would be the following situation: The screen is currently full. The user types 'h' to request the next half screen of data. The screen is cleared and the next half screen appears at the top of the screen. The user then types - 2 - a space to see the next full screen. The text will scroll down until it hits the bottom of the screen. PC-More will not clear the screen to display the rest of the data. Instead, it will scroll up the text already on the screen. Now that the issue of screen clearing is out of the way, the other two motion commands can be described. To advance only one line, hit the return key. The next line will appear and the prompt will reappear. To advance half a screen, which would be the next 12 lines, hit the 'h' key in responce to the prompt. The screen will be cleared if necessary and the next 12 lines will appear, followed by the prompt. These three commands can be preceded by a numeric argument up to three digits long. This argument will tell the following motion command to repeat itself the specified number of times. Note that when the "advance one line" command is given an argument, it will clear the screen when necessary. As an example of using arguments, the following command will show the next five screenfuls of data without pausing or clearing the screen when given to the prompt: 5<sp> Here, <sp> means "hit the space bar." Similarly, <cr> would mean "hit the enter key." Only the three motion commands will use the argument. The other commands will simply ignore the argument and clear it when they finish. The final motion command is 'r', for "rewind file." This will reset the read/write pointer to the beginning of the file. This is handy if you accidently pass up what you are looking for. You can rewind the file and start over at the beginning. While this is not as handy as backward paging commands would be, it is all that is available at the moment. Backward paging commands may come out in future versions of PC-More. Important Note: "rewind file" will not work if you are reading from a pipe! There is no way to tell PC-DOS to rewind the pipe. Part 2: File commands If you listed more than one filename on the command line which invoked PC- More, then you can move between them with the 'n' "next file" and 'p' "previous file" commands. When PC-More reaches the end of a file, it pauses and prints out the following prompt: --filename.ext [EOF]-- - 3 - This means that there is no more data in the current file. Any of the forward motion commands described above will automatically move to the next file on the command line. You can go on to the next file at any time by simply typing 'n' in responce to the prompt. The current file is closed and the next file is opened. If you are on the last file (or if you are reading from a pipe), then typing 'n' will cause PC-More to exit, since there is no next file. If you wish to go to the previous file on the command line, then simply type a 'p'. The current file is closed and the previous file is opened. If you are reading from the first file on the command line (or from a pipe), then 'p' will have no effect other than printing a message on the last line which says that you are already on the first file. If you wish to read from some file that is not listed on the command line, type 'f'. The prompt is replaced with the message: New file: You may now type the name of the file you wish to read from. If you make a typo, use the backspace key to fix it. If you try to backspace over the prompt, then the command is aborted. Likewise, if you type a control-G at any time while entering the new filename, the command will be aborted. Control-G can be used at any time to erase either the numeric argument or any text arguments that some of the commands prompt for. You may use "open new file" at any time, even when you are reading from a pipe. The rest of the pipe is ignored. However, you will not be able to edit the new file or push to an inferior command interpreter. These commands and their restrictions are explained below in Part 3 of this section. Part 3: Running Other Programs Under PC-More If you wish to execute a PC-DOS command, run a program, or load in inferior command interpreter, then use the '!' "push to DOS" command. '!' may be followed by an optional command which PC-DOS is to execute. This command may an internal PC-DOS command or a program on disk. If the '!' is not followed by any text, then the DOS command interpreter is loaded. When a DOS command finishes, or when a program exits, or when you type "exit" to the inferior shell, control returns to PC-More and the last screen of data is redisplayed. This command will NOT work properly when reading from a pipe. If you try to push to an inferior shell, PC-More will prevent this from happening. If you try to execute a PC-DOS command or run a program, you are asked to confirm that you really want to do this. To confirm, type 'y'. These precautions are - 4 - necessary. If you were to push to an inferior shell or any program which reads from the DOS stdin device, then the lines of data from the pipe will be executed as if PC-DOS was reading from a batch file. This is because stdin has been redirected, so any calls to it go to the pipe. Because of this misfeature of PC-DOS, PC-More tries to protect you from disaster. Note that when you are reading from a pipe and you use the 'f' "open new file" command, stdin is still redirected and this command is still disabled. WARNING: If you invoke PC-More from a pipe and with arguments on the command line as you were warned not to do in Section 2, then strange things will happen if you try to use '!'. PC-More will not know that stdin has been redirected and will blindly let you push to an inferior shell. You will then find out first hand what happens. No harm is done, but you must reboot you PC to stop the process. Since a file is open when this happens, you may loose data. As a special case of the above command, you can call up an editor on the current file by typing 'e', for "edit current file." The name of the editor to use is obtained by translating the environment variable EDITOR. If EDITOR is not set, then the PC-DOS line editor "edlin" is used. To set the environ- ment variable EDITOR, type the following to PC-DOS before invoking PC-More: A>set editor=whatever.exe The word "editor" does not need to be capitalized. However, there must be no spaces to the left of the = sign. Spaces are significant and will be part of the variable name. PC-More will NOT recognize the following: A>set editor = whatever.exe If you type something like this, you will get "edlin" when you type 'e'. If you are reading from a pipe, then 'e' is disabled, even if you use the 'f' command to switch to a real file. This is done as a precaution. If your editor uses PC-DOS function calls to read from stdin, then you are in the same trouble as you would be in if you pushed to an inferior shell. You editor would begin reading from the pipe. The same warning about invoking PC-More from a pipe and with arguments applies here as well. Part 4: Other commands If you forget what the PC-More commands are, type '?', which is the help command. It will print a summary of the commands known to PC-More. - 5 - Typing a 'v' will print the version number of your copy of PC-More. If you are entering a numeric argument for the motion commands or a text argument for the '!' or 'f' commands, then you can cancel the argument by typing control-G. This will also abort the '!' and 'f' commands and return you to the PC-More command level. Of course, there is a quit command for PC-More as well. Type 'q' and you will be returned to the process which called PC-More (usually PC-DOS). Part 5: Command Summary Here is a summary of all PC-More commands. If you have used programs like PC-More before (which most of you probably have), then this is probably all you will need to be able to use PC-More: <sp> next screen <cr> next line h next half screen r rewind the current file e edit the current file n go to the next file p go to the previous file f open a new file ! push do DOS ^G clear argument or abort '!' or 'f' ? help v print the version number q quit to DOS Section 4: Source Notes and Portability Concerns PC-More is written in Computer Innovations C86 version 2.20G. The code is pretty straight-forward and heavily commented. It should not be very hard to determine what a piece of code does. I made extensive use of external variables in PC-More. There are 8 external variables in the program. This is necessary because they are used by several functions. Some of the external variables are used by only two functions, but one function does not always call the other one directly. Instead, funtion a() and funtion c() may both use a variable, but a() does not call c(). Rather, a() calls b() which then calls c(). This isn't the best style of programming, but PC-More is small and not very complicated. Besides, - 6 - all external variables start with the characters "x_", to they are easy to spot. There are only three functions used in PC-More which may not be supplied with other C compilers. These are: key_getc() This function reads a character directly from the keyboard rather than from stdin. It returns an int with the ASCII code of the character typed in the lower byte and the scan code of the key struck in the upper byte. In PC-More, the scan code is masked off to zero. This function will wait for a key to be struck and the return key is not needed to make it return. crt_cls() This function is used to clear the screen and home the cursor. crt_mode() The crt_cls() function has a bug in it. When it clears the screen, the forground color (the color in which the characters are printed), is set to zero. The call crt_mode(7) corrects this bug. You probably don't need to use this function. If you don't want to clear the screen each time, or you don't have a function to clear the screen, simply eliminate all calls to crt_cls() and crt_mode(). You should also eliminate all references to the variable npl in the main() routine. All the other functions I used in PC-More are available in the standard UNIX C libraries under 4.2 BSD. If your compiler does not come with some of these functions, look them up in section 3 of the UNIX manual to find out what they do. Section 5: Conclusion As a final note to add to the end of this manual, I'd like to say that PC-More is a public domain program. You can copy it, modify it chop it up, whatever you want to do, but please don't sell it. I welcome any comments, bug fixes, new features (searches and backward paging would be nice), etc. My e-mail address is: UUCP: ...!{ihnp4 | allegra | seismo!ut-sally}!ut-ngp!dlnash ARPA: dlnash@ngp.UTEXAS.EDU - 7 -