HelpPC 2.10 Help Documentation
Audience This program and accompanying databases are designed for the intermediate to advanced programmer that knows what he's doing, but just can't remember specific information necessary to program advanced features of the PC or PS/2. The default distribution is comprised of a collection of information found in manufacturer technical reference manuals, various commercial books, technical topics discussed on CompuServe's technical forums, public domain articles and my own snooping, all organized in a single database. The help topics include BIOS interrupts, DOS interrupts, DOS functions, EMS and Mouse functions, BIOS and DOS data structures, diagnostic codes, DOS commands, 80x86 assembler instructions, Standard and vendor specific C functions and various hardware specifications. The program can also be used as a quick reference utility for any collection of text. Installation This utility requires the following: DOS 2.0 or greater 64K of free RAM a hard disk system is recommended Installation involves two steps. First, simply dearchive the HelpPC.EXE file (may be HelpPC.ZIP or HelpPC.ARC). Second, issue the following command: SET HLP=d:dirname (no blanks, except between "SET HLP") Where 'd:' is the drive and 'dirname' is the directory where the help .TXT files exist (this should be fully qualified, with or without the trailing '\'). The HelpPC.COM and HelpTsr.COM files can exist anywhere they can be accessed through the DOS command search path (PATH). The "SET HLP=" command should be placed in the AUTOEXEC.BAT file to allow access to HelpPC each time your machine is restarted. As an example, if the files HelpPC.NDX and the .TXT files reside in a directory named C:\HELPPC then use: SET HLP=C:\HELPPC or SET HLP=C:\HELPPC\ The name HelpPC was chosen to avoid conflict with the HELP command available with some OEM versions of DOS. I'd recommend that you rename HelpPC.COM to a name you find convenient and easy to remember such as "H.COM", "HELP.COM" or "INFO.COM". The HelpPC utilities work with various TSR's resident, but as with all TSR's there's always the possibility of conflict. If you find a problem please pass along as much information as you can to me via the address listed below. Background As programmers, we tend to gather massive amounts of books, journals and magazines. Each of these items have some important detail that is generally out of our reach since we can't carry them with us everywhere we go. That's why I started this project, to free myself from having to first find the manuals or articles and then weed through all the mundane text to get to an answer. In the past few years HelpPC has saved me a lot of time previously spent rummaging through manuals. HelpPC initially began somewhere around 1985 when I decided that I spent way too much time searching for the same information over and over again. At that time my primary references were David Powell's BIOS & DOS quick reference cards and Peter Norton's "Programmers Guide to the IBM PC". I generated an indexed help file from David Powell's original work and slowly added information to each topic. The result of several years work is no longer a duplicate of David's fine work but a complete database of PC technical topics. Each time I had to look up a new PC related topic, I made a note that it should be added to the database. As time passed the database grew more and more complete and I found little need to look to other sources for information. I then began adding information people were requesting in messages on CompuServe's IBMPRO, BPROGB, MSSYS (now MSLANG and MSOPSYS), CLMFORUM and IBMCOM forums. The database is forever growing with each new feature and specification made available. All information included within HelpPC has been confirmed against available sources. The comparison of information usually progressed along the same paths. Initially Norton's "Programmers Guide to the IBMPC" and Duncan's "Advanced MS-DOS" were the two sources I turned to for verification. Later I began using Dettemann and Kyle's "DOS Programmers Reference", Thom Hogan's "The Programmers PC Sourcebook", and the "MS-DOS Encyclopedia". When something wasn't covered well in any of these references or there was a discrepancy, I turned to the "IBM PC/XT Technical Reference Manual" , the "IBM PC/AT Technical Reference Manual" and the "DOS Technical Reference Manual". All hardware specific information is verified with the respective vendor's technical specification manuals. Credit is given to the sources if any of their data is included in HelpPC (see topic Bibliography for a listing). One note I should make clear is that the information on many of the topics appears as if it were straight out of Norton, Duncan, Dettemann or from Ralf Brown's interrupt list. These and many other sources were referenced but none of the material is plagiarized and any similarity is due to the nature of the material. If you compare any of the aforementioned references, they all contain approximately the same data in very similar formats. The main program is a quick reference utility that allows quick viewing of the help database from the DOS command line. The program, which is approximately 10K in size, is written in C with a little assembler sprinkled in for speed/size optimization. A 43 and 50 line mode is supported for those that like to squint. A TSR version is also included with this release which has several enhancements over the command line utility. These include dual monitor support and context sensitive help (see below for more information). HelpPC Command Line Usage The command line version of HelpPC has three modes of operation. At first the most useful will be the menu driven interface that allows you to point and shoot at your topic. Entering HelpPC without a command line puts you in menu mode. The second mode is the command line mode which allows you to specify the text to search for on the command line. The third mode is available from either of the two other modes and prompts you for information. Prompted mode becomes the default after using the command line mode. To switch between prompted mode and menu mode, use the F1 key. Here's a list of the navigational keys: Esc Exit current screen or HelpPC End Moves text or menu to the last line/item Home Moves text or menu to the first line/item PgUp Moves text or menu to page top or previous page PgDn Moves text or menu to page bottom or next page F1 Switches from menu to prompting mode and vice versa Alt-P Write current topic to printer. HelpPC has builtin error detection for normal printers but if LPT1 is redirected to a serial printer the system may hang until the printer is ready. This is an undesirable though common behavior with DOS and serial printers. Alt-W Write text to file HelpPC.DAT in the current directory Alt-X Exit HelpPC and without clearing current screen Tab Move to next subtopic link (Right Arrow also) BackTab Move to previous subtopic link (Left Arrow also) Enter Jump to highlighted subtopic link HelpTSR Usage HelpTSR is a popup utility similar to the HelpPC utility. The following is a list of additional features found in HelpTSR: 1. Supports context sensitive help within editors such as Brief, Epsilon, Fastwrite, Microsoft Editor, Norton Editor, PC-Write, PWB, Qedit, dBASE and many other editors. This means you can position your cursor on a text item and HelpPC will popup with information on the topic if it's available. This is very useful when editing source code and you need to know how to use a function or command. An example would be while editing an assembler file, you need to know what flags are affected by an "ADC" instruction. You just position your cursor on the "ADC" instruction and press the hot keys. Help information for the "ADC" instruction is displayed. Epsilon and the Norton Editor may require special setup for the HelpTSR to popup (see notes below). This feature can be disabled via the /M option. 2. Supports single or dual monitor systems (1 Color and 1 Mono). On dual monitor systems you can get popup help on the alternate monitor without disturbing your current screen. Dual monitor support frees 4k of memory since the video screen isn't saved. 3. Supports alternate popup key sequences to avoid conflict with other TSR's and buggy keyboard BIOS's. 4. Has a similar interface to the command line version but with options to customize the behavior during popup. 5. Supports TSR removal to free RAM. 6. Supports command line options to control the behavior when the TSR pops up. An example would be whether to popup in menu or prompted mode or to disable context sensitive help. 7. Network compatible so several people can view the databases at one time. 8. Requires only 32K (28K if dual screen support is used). The size of the resident memory varies depending on the size of the index. The default distribution, requires 37K to maintain 1350 topics on a single monitor system. This can also be trimmed down by removing unneeded topics from the default help files. 9. Capable of being loaded high to conserve low DOS memory using one of the 386 memory managers or DOS 5.0's LOADHIGH command. 10. The alternate monitor is blanked after 10 minutes to preserve the screen. This feature can be disabled via the /B option. 11. Integrity checking to safeguard against unruly code often found in development environments. Before popping-up HelpTSR checksums its internals and refuses to popup if corrupted by another program or stray pointer. If another program stomps on memory owned by HelpTSR, it may have also destroyed other vital areas within the system which could lead to severe problems. It is recommended that you reboot the system should this occur. This is a safety measure added to HelpTSR to improve confidence in these environments. HelpTSR sounds a long tone when this condition is detected. If the data files are changed or reindexed after HelpTSR is resident, HelpTSR must be unloaded from memory (/U option) and then reloaded. This is because HelpTSR maintains checksum information on the help index when it is loaded. If the data or index files change these checksums will no longer be valid. Here's how to use HelpTSR from the command line: HelpTSR [options] Where "options" is zero or more of the following: /? list this help information. If other options are supplied also, they are ignored. /B disable alternate monitor blanking. When dual monitor support is chosen, the alternate monitor is blanked if the help screen is stagnant for over 10 minutes. Although this option is available, it's usually a good idea to allow the alternate monitor blanking to avoid monitor burn in. /D dual monitor support. If two monitors are available, the alternate monitor can be used to display the help text. This avoids disruption of the active display. The screen is blanked after 10 minutes if the HelpPC screen is stagnant. This will not blank a screen under the control of another program such as a debugger. /M menu mode as default. This option forces HelpTSR to display the main menu and ignore any context sensitive help. Prompted mode is available if requested via the F1 key. /P prompted mode as default. This option forces HelpTSR to come up in prompted mode if no current word context is supplied. Normally HelpTSR will popup in menu mode in this situation. Menu mode is available if requested via the F1 key. /U unload HelpPC and free memory. This option overrides all other options except /?. All other options are ignored as HelpTSR will attempt to remove itself. If another resident program has hooked HelpTSR's interrupt vectors, HelpTSR will not unload and displays a message indicating this condition. /1 use Ctrl-Shift-H to popup instead of Alt-Left-Shift-H. Some Tandy 1000's have an Alt Key BIOS bug which requires changing the popup hotkey. /2 use Ctrl-Kp5 to popup instead of Alt-Left-Shift-H /3 use Ctrl-Shift-Kp5 to popup instead of Alt-Left-Shift-H /4 use Alt-Shift-F1 to popup instead of Alt-Left-Shift-H Other Utilities Also included are two command files INDEXHLP.COM and BUILD.BAT. INDEXHLP.COM is the file index utility. Usage is very simple; you just include the files you plan to index on the command line. Issuing the INDEXHLP command gives instructions on usage. BUILD.BAT is a batch file provided to simplify use of INDEXHLP. It preset to index the default databases in the distribution and allows you to specify your own additional databases. BUILD without parameters indexes only the default databases. If any file names are supplied, they are also indexed. Here's an example: BUILD is equivalent to INDEXHLP asm c dos hardware interrupt tables misc Both of these command lines will index the default databases. To add additional databases just append the filename (extension isn't necessary if .TXT is used) to the list. Here's an example: BUILD custom is equivalent to INDEXHLP asm c dos hardware interrupt tables misc custom Creating your own Help Files HelpPC in its standard form can handle 1800 indexed topics and 16 independent help files. If you find you need a larger capacity, please contact me at one of the addresses below. Each file must have its own title which will show up in the main menu. Each topic following the file title (see below) will show up in the subtopic menu. Note that HelpPC will adjust the menu format based on the screen height and the number of items in the main menu. HelpPC text files are simple ASCII files that contain control codes in column one. Each file must contain a menu title in the first line. The remainder of the file consists of keyed lines and help text. Each line must end with a CR/LF pair (standard DOS format) and shouldn't be longer than 79 characters. Tabs position the text at 8 character tab positions. The following is a list of keys and special characters (keys are found in column 1, special characters appear in columns 1-80): '@' in column 1 indicates a file title which will appear in the main topic menu. This must be the very first line in the file and has a maximum length of 40 characters (excluding the '@'). ':' in column 1 indicates a subtopic key. Multiple keys separated by colons ':' can be entered on the same line. Single spaces are allowed in a key, multiple spaces are compressed to single. '%' in column 1 indicates a highlighted title line. '^' in column 1 indicates a centered highlighted title. ' ' (space) in column 1 indicates normal text. '~' Tilde is used to mark text as a subtopic link. Use two tilde characters to represent an actual tilde in the data. A word or phrase enclosed between tilde's will become a subtopic link for the current topic. TAB in column 1 starts text in column 9 any other character in column 1 is truncated Use the BUILD command to index/reindex the default help text files. To add your own files to the index use the command: BUILD [fname [file2 ...]] This information is available in HelpPC with the topic "HELPPC FORMAT". Limits of the HelpPC program Max items in main topic menu: 16 Max items in subtopic menu: 512 Max topics in index: 1800 Max size of topic text: 16384 bytes Max lines of text per topic: 512 lines Max topic key length: 20 bytes Max file title length: 40 bytes No limit on file size Special Editor Considerations With Epsilon, you must setup a TSR popup key. This is done by issuing the "program-keys" command and choosing one of the hotkey options [1..4]. Option 4 is the default popup key sequence for HelpTSR. Quit from the menu using 'Q' and then issue the "write-state" command to make the configuration permanent. The Norton Editor may need configured on a few video systems, though there is no rule to determine which. If you try to popup HelpTSR while in the Norton Editor and the context sensitive help does not work, then the editor is not using a real cursor (may be using reverse video). To configure the Norton Editor in this situation, do the following: F5 Format Menu C Select cursor type (change to a blinking cursor) F3 File Menu S Save Modified Editor configuration (it will prompt you for the filename) Miscellaneous Notes If the HelpPC program is used in a batch file, the parameters to it must not be variable parameters (%0..%9), because DOS strips out commas when it parses batch file parameters. Commas are valid in topics and if removed by the command parser will change the command line presented to HelpPC. This usually results in the "Topic not found in index" message. HelpTSR works in MS Windows DOS sessions. If HelpTSR is loaded before MS Windows, HelpTSR is available in any following DOS windows. If HelpTSR is loaded from with a DOS window, it is active until the window is destroyed. HelpTSR will not popup over a graphics screen. 43/50 Line users Some versions of DOS and ANSI.SYS replacements do not handle 43/50 line mode correctly. If the bottom half of the display does not scroll correctly in 43/50 line mode, either upgrade to a newer DOS or set 43/50 line mode through a program like NANSI.SYS. This is a problem in some DOS versions and not HelpPC. Files included with HelpPC BUILD.BAT - A batch file that uses INDEXHLP to rebuild the help index. This is the simplest way to index the databases. HELPPC.COM - A display utility that reads the index and databases and displays the information. I recommend that you rename this program to something you find convenient to use like "H.COM", "HELP.COM" or "INFO.COM". I prefer "HELP.COM", which conflicts with the DOS HELP command that is supplied with some OEM versions of MS DOS. HELPPC.DOC - The file you're reading now. HELPPC.NDX - The data index. Contains index information on data in each of the .TXT files. HelpPC finds this file through the environment variable "HLP". HELPTSR.COM - Context sensitive help TSR. The program interface is similar to the command line utility HELPPC.COM but has advance features. INDEXHLP.COM - The help file index utility. Type INDEXHLP for information on usage. README - A brief description of how to get started. REGISTER.FRM - A registration form. This is also included with the registered versions should one choose to redistribute HelpPC. Data Files: ASM.TXT - Assembler programming topics. C.TXT - ANSI, Microsoft and Turbo C functions and C programming topics. This may be split into C.TXT, MSC.TXT and TC.TXT in future releases of HelpPC. DOS.TXT - DOS commands database. HARDWARE.TXT - Hardware relative programming topics. INTERRUP.TXT - Documented and undocumented interrupt topics. MISC.TXT - Miscellaneous topics that have no logical grouping. TABLES.TXT - Tables, structures and formats of BIOS, DOS and other programming related tabular information. Version News 2.10 Added subtopic linking, tab support, 486 instructions and timings. 2.0 Major revision of the user interface including menus. This is the first shareware release. Help index utility is included and TSR becomes available with registration. Some versions went out with David Powell referenced as David Wilson. This was an error and I apologize to David Powell for this accident. 1.5 A minor bug in the 43/50 line mode of version 1.4 has been fixed. Over 900 topics are now included. 1.2 EMS and Mouse functions were added to the database. Over 750 topics were included. (limited distribution) 1.1 Maintenance release of the database. Several topics were added and existing ones were cleaned up. 1.0 Original release. Registration This software is shareware. If you find this program or accompanying data of some value and continue to use either after a 30 day trial period registration is required. Registration costs in the United States ( otherwise) and provides you with the latest version of the program and the databases. It also places you on the update mailing list. Registration provides the resources to continue work on HelpPC. A registration form is included in the file REGISTER.FRM. This file is enclosed with the registered version also to make it easier to distribute HelpPC to friends and colleagues. Here's the pricing schedule for HelpPC. Number of copies Price per copy 1 per diskette 2-5 per diskette 6+ per diskette per upgrade (any version) Add for addresses outside the U.S. Thanks to the following: David Powell of IBM for his BIOS/DOS reference cards which gave me the idea that started all of this. Jeff Miller of CompuServe for supporting the project and providing helpful feedback. Mark Grim, Bernd Schemmer and Robert Rosenbach for entering/passing along data for HelpPC. Phil George and Ted Stephens for supporting and testing throughout the project cycle. Dave Drown, Jerry Gibson, Kevin Hughes, Charles Lazo III, Jim Milligan, David Powell (of CCS) and Ali Vardag for testing and/or providing feedback. Ray Duncan, Chris Dunford, Richard K. Herzog, Jim Kyle, Micheal Mohle, Chip Rabinowitz, Mike Rubenstein and Barry Simon for sharing their vast knowledge with the rest of us on CompuServe. Ralf Brown for maintaining "the" interrupt lists. Brett Salter and The Periscope Company for the great support and the awesome Periscope debugger which was the main bug buster used in writing HelpPC. In Closing Use it, try to break it or just tell me what you did or didn't like about it or what you'd like to see added. If you find any discrepancies, errors or typos, I would appreciate corrections and any suggestions for improvement. If at all possible, please contact me using one of the below addresses and I will try to correct the problem immediately. Additions to the help files are welcome and can be submitted to me via any of the following addresses. If the information you provide is used in HelpPC, you will be given credit for the work. Please share this program with your friends; but please, if you do redistribute this software, distribute it in its original .ARC, .ZIP or LHARC form, without modification. If you think it's a worthwhile program, please register. Your registrations will allow continued development on HelpPC. I can be reached at any of the following addresses: US Snail: David Jurgens 1550 Alton Darby Creek Road Columbus, Ohio 43228 CompuServe: 70004,30 (read daily) 71270,2422 (read weekly) Disclaimer The program contained herein, in its original form, is designed to work with PC's which are completely IBM DOS and IBM BIOS compatible and has been tested on a myriad of PC's and compatibles. The information contained within the help databases is correct to the best of my knowledge and ability. Since it was compiled from various sources, some in complete disagreement and some continually changing specifications, I cannot be responsible for omissions, inaccuracies or plain errors of any type. I make no claims to value of the enclosed programs or files, or their behavior and assume no liability for damages either from the direct use of this product or as a consequence of the use/misuse of this product. Hence this program and all information contained within SHOULD BE USED AT ONE'S OWN RISK. This disclaimer is included to absolve me from legal issues brought about by today's litigious society.