__________________________________________________ T H E M O D E M D O C T O R Version 3.0S /3.0R Hank Volpe Copyright 1989,1990 108 Broadmoor Drive Tonawanda NY 14150 __________________________________________________ Section 1. Forward ...................................................1 Introduction...............................................2 Section 2. Starting MDR....................................3 Section 3. First Time Setup................................4 A. Test Modem/UART......................................5 B. Uart Tests ......................................... 7 C. Return to main menu ................................ 8 Section 4. The Main Menu.................................. 8 4.01 Hot-Key Selection ................................ 9 4.1 Login In Comm ports ..............................10 4.11 What do IRQ's and Comm ports do?..................10 4.12 Port assignments and their meanings...............11 4.13 Testing Defective Ports...........................12 4.2 Regs .............................................13 4.3 Carrier Tests ....................................20 4.31 Modem Driver modules..............................20 4.32 Types of Carrier Tests............................21 4.33 AT Instruction Set tests..........................21 4.34 Uart or Dumb Modem Tests..........................22 4.35 Error Messages....................................23 4.4 Loopback Tests ...................................24 4.41 Loopback test Error Messages......................25 4.5 Manual ...........................................26 4.6 Setup Mode .......................................26 4.7 Exit Program .....................................26 Section 5.Error Messages and Their Meanings...............27 5.1 Log In errors .....................................27 5.2 Carrier Errors ....................................27 5.3 Loopback Errors ...................................29 5.4 Setup Errors ......................................30 Section 6. Special Modes and Information .................32 6.1 Using Modem Drivers ...............................32 6.2 Using the Command Line switch /s ..................34 6.3 Using the Hot-Keys ................................35 6.4 Logging in defective ports.........................36 6.5 What tests cannot do ..............................37 6.6 Quirks with some modems ...........................37 Section 7. Benefits of Registration ......................38 The Modem Doctor Version 3.0 Documentation Page 1 Copyright (c) Hank Volpe 1989,1990 Forward ------- Welcome to the Modem Doctor. This documentation along with the program is a good source of information about how Uarts and Serial Ports work with Modems in your Personal Computer. There are two versions of the Modem Doctor; The Shareware version 3.0S and the Registered Version 3.0R. There are some differences between the two. Both however are full- functioned diagnostics tools. The differences between the two are as follows; Version 3.0S supports COM1 through COM4 Version 3.0R supports COM1 through COM8 Version 3.0S supports speeds to 2400 bps Version 3.0R supports speeds to 38,400 bps Version 3.0S does not include Manual Log-in of Comm ports, the Digital or the Analog Loopback testing supported in Version 3.0R. This documentation covers both versions, however the feature differences above are provided for your reference. I sincerely hope that you take a good look at the program and the documentation. The Modem Doctor is about as complete a diagnostic tool you can find for your Serial Port and Modem. A complete Program History follows the documentation. The Modem Doctor Version 2.2 was received very well nationally and internationally, Version 3.0 now adds more tests, more user features and more flexibility for you to use. Version 3.0S is Shareware and may be freely copied and distributed. You have a limited license to use Version 3.0S during a fair-evaluation period. After that time you must order the Modem Doctor in order to continue using it. Please be fair and make your decision based on what you see. Version 3.0R is a Registered Version with additional features and is licensed to one user only (unless you have a site license). No copies may be made (except for archival purposes) and you may not distribute Version 3.0R without violation of Copyright laws and you license to use the Modem Doctor. If you are using the Shareware version and wish to order, please use the Order form included with this package or see Section 7, Benefits of registration at the end of this documentation. The Modem Doctor Version 3.0 Documentation Page 2 Copyright (c) Hank Volpe 1989,1990 Section 1. Introduction - ------------------------- The Modem Doctor is a professional diagnostic tool designed to work with IBM-PC's and compatibles. There are two versions of the Modem Doctor, the Shareware Version and the Registered Version. The Registered Version of the Modem Doctor contains complete diagnostics for 8250 and compatible UARTS, RS-232 data lines, and Carrier tests. Some of the many diagnostic features of the Registered Version are; ** Support for COM 1 through COM 8 using system IRQ's 3,4,5 or 7 ** Baud Rates from 300 to 38400 bps !! NEW !! ** Support for Courier HST/Dual Standard/V.32 Modems [+] ** Auto-detection of Modems that use &T0 diagnostics ** Auto log-in of COMM ports 1 - 4 to DOS for use by other programs ** Manual log-in of up to 8 COMM ports for Non-Standard Hardware,including those with defective Uarts (on manual selection). !! NEW !! ** On-screen Display of all 8250 /16450/ 16550 Uart registers ** On-screen Display of Modem S-Registers ** Full Diagnostic tests of UART and RS-232 Channels including; -- ALL UART REGISTERS -- ALL RS-232 Handshaking Signals -- 8259 Interrupt Controller Mask Registers -- Digital Loopback UART Tests including Chips with Tri-stated OUT2 signals -- Analog Loopback Data Tests ** Full Diagnostic Checks of "AT" Instruction Set Modems; -- Carrier Tests on both Originate and Answer Frequencies -- Carrier Test interface for "Dumb" Modems or Data Channels -- Modem Microprocessor Command Channel Diagnostics -- Support for High Speed Modems -- Support for Modems that use the alternate &T0 self test mode The Modem Doctor Version 3.0 Documentation Page 3 Copyright (c) Hank Volpe 1989,1990 ** Interactive Mode with 4K Communications Buffer for; -- TTY mode Interactive Communications over serial port or Modem while on-line -- Custom Designed Tests...Help Menu Included -- On-Line "Hot-key" Viewing of 8250 UART Registers ** Hot-Keys for selecting the Baud rate and to Force a Modem Microprocessor test mode. !! NEW !! ** User Selection of Modem Drivers. Like Printer Drivers, these software modules add more selections and more test capability to The Modem Doctor. !! NEW !! ** New Status Bar that continuously displays the Port, Speed, Microprocessor Status, and Modem Driver selections. !! NEW !! ** Command Line Mode interface for setting up a modem to an initialization string contained in a user created file; !! NEW !! -- A Small text file contains the port (and optional address), the speed, and the string to send to the modem. Any text editor can create the file at any time! The Modem Doctor is copyrighted by Hank Volpe. The Shareware Version of this program may be distributed on Bulletin Board Systems or in Public Domain Libraries as long as a Fee is not charged for its duplication or acquisition (except for BBS systems that charge a user fee for system access).Under no conditions can anyone accept payment for the Modem Doctor but Hank Volpe or agents authorized for resale by Hank Volpe. The Modem Doctor is distributed on as "As-is" basis, with no warranties for usefulness or suitability expressed or implied. Users of the Shareware version are granted a limited license to use this program. Section 2. Starting MDR ------------------------ The Modem Doctor has been designed to work with PC-Type serial ports and "AT" Instruction Set (so called Hayes Compatible[++]) Modems. The Modem Doctor requires at least 1 serial port to Operate. MDR is written to run under MS or PC DOS 2.2 or higher, requires a MDA or CGA adaptor and at least 90K of program memory. When MDR is started, it will use the last text mode that the display adaptor was in (Color or Black /White). MDA or CGA are the two execution modes regardless of what kind of adaptor is in use. The Modem Doctor Version 3.0 Documentation Page 4 Copyright (c) Hank Volpe 1989,1990 Code has been included to work with hardware-incompatible display adapters as long as they are at least IBM-PC Bios compatible. This is operator selectable at runtime. To start MDR, type MDR from the dos prompt. If you wish to use the Bios compatible mode instead of direct display writes, start the program using the Bios switch ; MDR /B Registered Versions 3.0 and higher also can be run to quickly program and setup a Modem. To use this mode start the program with the setup switch ; MDR /S (see Section 3). Section 3. First Time Setup --------------------------- MDR checks to see what hardware is available and reports its results to you. Displayed on the bottom line is the serial number unique to each copy Press any key to continue. -[ ports ]-- | | Use COMM 1 | | Use COMM 2 | | Use COMM 3 | | Use COMM 4 | --------------- Next, you are instructed to pick from a list of valid Comm ports. The only ports that are listed are valid ports that MDR found when it first started. The Registered Version allows you to add ports that are not "standard" ports, (check the section on Login). Use the arrow keys to find your selection, and then press return to select. -[ Baud ]-- | 300 BPS | | 1200 BPS | | 2400 BPS | * | 4800 BPS | * | 9600 BPS | * | 19200 BPS | * | 38400 BPS | * ------------- *=Registered Versions Only A window now opens showing you valid Comm port speeds. Select a speed from this menu. Please note, don't select a speed faster than your modem can handle. The reason for faster speeds is so communication links can also be tested. Use the arrow keys and press return to make your selection. -[ Select an Option ]-------------- | Test Modem / port 1 to 300 BPS | | Test the UART Hardware Only | | Don't set up modem, return to Menu | ------------------------------------- The Modem Doctor Version 3.0 Documentation Page 5 Copyright (c) Hank Volpe 1989,1990 At this point you are in the options menu. If you select Test Modem, a series of commands and tests will be performed to make sure the modem is on line and running. If you select Test UART Hardware, only the 8250 UART will be tested. The modem will not be setup. This selection is useful only if you wish to test an RS-232 line or a "dumb" modem. Selection 3 aborts to the main menu. (NOTE: Version 3.0 includes new "HOT-KEYS" to force the Modem Doctor to believe you are using a Modem with a Microprocessor and for changing the baud rate. Read Section 4 on the menu system for more details). A. Test Modem/ UART --------------------- Preliminary Diagnostic Checks of Hardware ----------------------------------------- A 16550AN Uart has been detected Testing Modem Microprocessor ---------------------------- Modem Microprocessor Command Bus Active Modem reports a 9600 bps Modem installed Modem Microprocessor Accepts Setup Commands Modem Microprocessor ON-LINE Modem - UART Status appears correct Press any key to continue Above is displayed then normal test results with a modem. First step tests the UART to Modem hardware. If any connection errors are discovered, they are reported to the screen. If no errors are detected, the Modem Doctor will check to see what type of Uart is installed. There are differences between the different types of Uarts, and the Modem Doctor uses this test to determine how to test the Uart and what registers to display to the screen. Next, the the modem command bus is tested and if its compatible, the modem ID information is queried from the Modem Processor. Finally, the modem is setup for diagnostics. Note: These setup strings do not overwrite any non-volatile storage. If all is ok, all the UART registers and the First 16 Modem S registers are displayed. This display is not shown the next time you log in a Comm port unless you press the space bar. If the modem does not respond to certain parts of the tests, error messages are reported. The Modem Doctor Version 3.0 Documentation Page 6 Copyright (c) Hank Volpe 1989,1990 Testing Modem Microprocessor ---------------------------- Modem Microprocessor Command Mode Not Detected Software Reset Initiated This message is displayed if the modem did not respond the first time for a query to its status. This could happen for any number of reasons, including that the modem was still on- line and not in the command mode. A soft-reset is performed, which essentially tries to wake the processor up. No Response...resetting Modem Microprocessor ...attempt #1 No Response...resetting Modem Microprocessor ...attempt #2 No Response...resetting Modem Microprocessor ...attempt #3 After 3 soft-resets, the Modem Doctor assumes that the modem is jammed and needs a hardware reset. A hardware reset is the program equivalent of turning the modem on and off again. This is the only way to reset some internal modems that get "jammed" when the computer is first turned on. Clearing a "jam" usually takes no more than 2 attempts. Trying a Hardware reset of the Modem Microprocessor The Hardware reset is performed, and again the modem microprocessor is strobed for its status. Software Reset Initiated After a hardware reset, a soft reset is performed again, attempting to wake the processor up. If this fails, the following message is displayed; Modem Microprocessor Did Not Accept Setup Commands Trying a Hardware reset of the Modem Microprocessor After one more attempt at waking the modem up, the Modem Doctor assumes that the modem is not compatible and based on the status given it by the UART, it will report if the device is off or not connected. WARNING..This unit does not have a Compatible Modem attached WARNING..The Modem Device appears to be off or not connected The registers are now displayed for diagnostic tests, and a conclusion based on the status of the registers is displayed. There are many reasons why the modem/UART could fail. See the error code section for details. If the UART is fine, but the modem is not compatible, the program will tell you that the UART hardware tests ok and display this in a window to the right of the register display. The Modem Doctor Version 3.0 Documentation Page 7 Copyright (c) Hank Volpe 1989,1990 Note: The reason for testing the Modem command set so extensively is so there can be no doubt about the Modem accepting commands. You can force The Modem Doctor to believe it has a Modem with a Compatible Microprocessor by using the "HOT-KEY ALT-F". See Section 4 about Menu system commands. B. UART Tests --------------- The UART test is performed every time either the Modem or the UART test is selected. Essentially, the UART test programs all of the registers of the UART and looks to see that the correct values have been placed in them. If any one of the registers fails to set, the Modem Doctor will display all of the registers and a diagnostic message. After that, it looks to see that an RS-232 loop is active. If not, it displays an error message saying that the loop is either disconnected or a register in the UART is defective. If all checks well, the type of Uart chip that is installed is returned. The type of Uart chip is important for the way the Modem Doctor will test and display the Uart. Essentially there are 3 types it can detect; 8250-B This is the original Uart installed in many PC's and Serial Port add-on cards. 16450/8250-A This is an upgraded Uart that fixes a bug in the interrupt enable register of the 8250-B and also tri-stated the OUT2 pin of the chip during loopbacks. It also adds a scratch-pad register as the highest register. This register is tested by the Modem Doctor but not displayed because it never has what you would consider as a "correct" setting. The 16450 is used primarily in 80286 (AT) systems because of its increase in throughput over the 8250-B  16550 This chip is essentially a faster 16450. However, it cannot be used in a FIFO buffering mode, but it does allow for a programmer to use multiple DMA channels and thus increase throughput on an AT or higher class computer system. 16550AN This chip is a faster 16450 with a built in Transmit and Receive FIFO buffer. It also allows multiple DMA channel access. You should see this chip in your 80386 or RISC type machine. You should also consider installing this chip if you do any serious communications at 9600 bps or higher. Whenever a 16450,16550 or 16550AN is displayed, different diagnostics and/or different register mnemonics are displayed. The 16550AN's ability to enable and disable The Modem Doctor Version 3.0 Documentation Page 8 Copyright (c) Hank Volpe 1989,1990 FIFO mode is also tested. In any case and with any Uart, each register is checked for proper values. If anyone of them fail, a window will open and display a possible cause for the problem. Preliminary Diagnostic Checks of Hardware ----------------------------------------- Testing UART Hardware Only -------------------------- A 8250-B Uart has been detected Modem - UART Status appears correct The first time through these tests, the registers will display for diagnostics. Unlike the modem tests, only the UART registers are displayed. From then on, if the test results are correct, you will be prompted if you wish to have the registers displayed. If a test fails at any time, you will always see the registers displayed along with an appropriate diagnostic message. C. Return to main menu ---------------------- Selecting this returns you to the main menu, this allows you to change an entry made in error without having to wait for the diagnostic checks to fail. In any event, after any of these tests have been run, you will then enter the Modem Doctor's Main Menu. Section 4. The Main Menu ---------------------------- -------------------------- The Modem Doctor ----------------- |Log-in Regs Carrier Loopback Manual Setup End Program| ------------------------------------------------------------- All of the above selections are toggled using the arrow keys and selected using the return key. Pressing the down arrow displays a brief message about what each function does. Log-in COMM ports ------------------ The ROM-BIOS only looks for COMM ports 1 and 2. Use this section to manually log-in a COMM port that cannot be detected by DOS. Entries are also good after you quit UART Register Diagnostics ------------------------- This test section can be used to check the contents of an 8250 UART and the 8259 Interrupt Controller mask register. White = Active, Gray = Not Active The Modem Doctor Version 3.0 Documentation Page 9 Copyright (c) Hank Volpe 1989,1990 Carrier Mode Tests ------------------ This tests runs a AT Instruction Set modem in an test of the Carrier Originate and Answer frequencies. An AT Instruction Set Modem or a modem with Manual Carrier selection is required Loopback/ UART Tests ------------------ This test is designed to check out a RS-232 COMM port for proper operation. No Modem is required for this test however this test is not for an Internal Modem, although it can be run as a test of the command channel. Manual Interactive Tests ------------------------- This test is designed to check out the command channels and user interface to a AT Instruction Set Modem. You can also use it with an RS-232 loop or to send your own commands. Setup Diagnostics ------------------------- Use this test section to return to the setup mode to change a port assignment or a Baud Rate to a new value. Only Logged-in Comm ports can be accessed. Exit Program ------------- Quit the program, all vectors and interrupt tables are restored. 4.01 Hot-Key selection ---------------------- In addition to these menu selections, there are two Hot-Keys that are active at nearly all times in the Modem Doctor. The ALT-B combination can be used to change the baud rate from the main menu and from inside the Manual test section. A window will pop-up and you can pick your desired serial port speed. This can save a lot of time when you wish to test a modem at various speeds. Using the Setup / Test Modem & Uart mode is the safest way (because it verifies the modem microprocessor accepts commands properly at the selected speed), however if you use the ALT-B command, you will take a short-cut that can help you when testing your modem. The Modem Doctor Version 3.0 Documentation Page 10 Copyright (c) Hank Volpe 1989,1990 The other Hot-Key active from the main menu is ALT-F, or FORCE Micro on-line. Actually, there is no "force" involved. By pressing this key,you force the Modem Doctor to believe there is a AT Instruction set compatible modem attached. This can be handy for troubleshooting a modem that doesn't work properly at certain speeds or under certain conditions. The Setup Test Modem & Uart section will not allow any AT Instruction set Carrier tests on modems that it cannot properly setup. The ALT-F combination bypasses this and allows such testing. When you press ALT-F, you will notice the Status Bar will say that a modem microprocessor is on- line. 4.1 Login In Comm ports ----------------------- When you select this menu, you are offered these choices --[ Comm port Login ]----------- | Let me Auto Detect COMM ports | | You Manually Enter COMM ports | | Return To Main Menu | --------------------------------- Option 1 repeats what the Modem Doctor does when you first begin to run the program. Option 2 allows you to enter a "non" standard port address and assign one of the two Interrupt lines to use with the UART. Option 3 returns to the main menu. 4.11 What do IRQ's and COMM Ports do ? --------------------------------------- Each time a character is received by a modem, it has to get the attention of the computer by raising an Interrupt Request Line (IRQ). PC type computers have 8 of these lines, AT type computers have at least 16. The 8259 Interrupt controller chip handles these requests for attention. By design, COM1 uses IRQ4 and COM2 uses IRQ3. IRQ7 is assigned to a printer, IRQ5 to the Hard Drives. It is possible to use COM1 and COM2 or COM3 and COM4 at the same time, but you cannot use COM1 and COM3 or COM2 and COM4 at the same time because these share IRQ lines. If you needed to use 3 or more COMM ports at the same time, you would need to use another IRQ line. The best bets are IRQ7 and IRQ5, because they may be available when you need them. IRQ7 is really only needed by programs that use printer interrupts (background type spoolers for example). IRQ5 is used by fixed disks. It may or may not cause a conflict if you use this IRQ line with your modem. PC type computers are quite limited because they only have 8 IRQ lines and most are reserved. AT type computers have 16 IRQ lines. A good tip would be to consult your Hardware manual to find out if you can or can't use these other IRQ's. However, if you do not need to use 3 or more COMM ports at one time, then it is best to stick to the reserved IRQ4 and IRQ3 for all of your activity. The Modem Doctor Version 3.0 Documentation Page 11 Copyright (c) Hank Volpe 1989,1990 4.12 Port assignments and their meaning --------------------------------------- Like IRQ lines, certain Port addresses were reserved to work with the PC's external hardware devices. Two of these were reserved by all manufacturers; 3F8 (HEX) and 2F8 (HEX). Although only two COMM ports were supported by the original ROM-BIOS, there are two additional port memory locations available for use by MS-DOS and PC-DOS applications. These reserved Port addresses are 3E8 (HEX) and 2E8 (HEX). Most internal modems come with these 4 ports as selections along with several IRQ line combinations. There is a "quirk" in the way that the ROM-BIOS logs in these ports. If the Power on self-tests (POST) do not find a 3F8 serial port but they do find a 2F8, then the 2F8 serial port is mistakenly assigned to COM1. To add to this, the reserved IRQ line for COM1 is IRQ4. But this serial Port of 2F8 is using COM2's address, which means it needs IRQ3 instead of IRQ4. So, if you are trying to use Basic, Pascal, or DOS for COM1 operations, the serial port or modem will not be able to work. The general rule thus is "No COM1 without COM2". The Modem Doctor when it is run will correct this login problem and correctly assign COM2's port address to COM2, and it will also leave the ROM-BIOS logged in COM1 (actually COM2 again) at COM1. People who have such setups will see the Modem Doctor state there are two COMM ports, but actually, there are two different assignments for the same port. These addresses for PC's are standardized in order for Communication programs to properly work. As stated above, the industry standards are; COMM 1 3F8 COMM 2 2F8 COMM 3 3E8 COMM 4 2E8 IRQ4 IRQ3 IRQ4 IRQ3 COMM 5 3F8 COMM 6 2F8 COMM 7 3E8 COMM 8 2E8 IRQ7 IRQ7 IRQ5 IRQ5 The port addresses for serial ports (1-4) are held in a reserved area of Memory. The "base port" of each of these UARTS is saved in a distinct area. When you first start the Modem Doctor, the program checks these locations to see if there are any Comm ports already logged in by Dos. If not, a search is conducted for the PC's default Comm 1 and Comm 2 port values and these are logged in. Next, a search is performed for the other industry standard Comm ports. Some PC's already log these in, however IBM-PC's and those that mimic exactly their ROM-BIOS routines do not log in a COMM 3 or a COMM 4. The Modem doctor will, and as a side benefit, these stay logged in until the next warm or cold boot is performed on your computer. Why would dos not log in a port? Well, some multi-tasking programs overwrite this area to prevent "swapping" of communication programs and it is The Modem Doctor Version 3.0 Documentation Page 12 Copyright (c) Hank Volpe 1989,1990 possible that they might not be properly restored on exit. Next, a search is made for the Custom Comm ports 5-8. These ports are not held in DOS at all, but are held in program memory by the Modem Doctor after a user logs the port in using the Manual log in mode (see below). If one of these Ports is found, it will be added to the Comm Port option menu for you to use when you test the Modem. The reason for the custom ports is to help users who are using non-standard interrupt lines (IRQ7,IRQ5). Unlike the DOS logged-in ports, these assignments disappear when the Modem Doctor is exited. The Modem Doctor follows the accepted arraignment of these Comm Port /IRQ line pairings. However, you do have full control at all times over all Port addresses and IRQ assignments and can change them using the Manual Login Mode. As far as the 2 Options presented by the Login Mode, option 2 is the only real option available. Please use it with caution. The only real need for this option is for logging in a COMM port that does not use any of the listed industry standards as its base port address or IRQ line assignments. Consult your serial port or Modem's user manual to make sure you enter the exact port address and select the correct Interrupt line to use with it. Otherwise the Modem Doctor will not recognize or be able to test any device hooked to this port. Protection is included in this routine to keep someone from accidentally entering a port that is used by the system board, display adaptors, or fixed disk adaptor. Entering any of these values, or an error, will result in the display; "WARNING...RESERVED port...RETRY ENTRY" After running Option 1 or 2 , you must tell the Modem Doctor which COMM port you wish to use so that testing can begin. Pressing the ESCAPE key is the same as Option # 3 and returns you to the main menu. 4.13 Testing defective Ports ---------------------------- Whenever the Modem Doctor checks to see if a port is working properly, it checks the status of several registers. If a Uart Chip appears "dead", the Modem Doctor will tell you that the port was not "found". Previous versions of the Modem Doctor would not allow a defective serial port to be logged in for testing. Now you can use the Manual mode and override this setting. If you tell the Modem Doctor for example to use serial Port 2F8 as COM2 and you do not have a COM2, the message "COM2 not Found" will be returned with an option "Override [Y/N] ?". Answering "Y" will force the login of this port. Certainly there is no benefit to testing a non-existent port, but a port that is defective may not be logged-in. So, you now have the option to test this defective port hardware to pinpoint a problem. Combined with the register display and diagnostics, you will most likely be able to pin-point any Uart problem quickly and easily. The Modem Doctor Version 3.0 Documentation Page 13 Copyright (c) Hank Volpe 1989,1990 4.2 Regs ------------- The register display section can be an invaluable diagnostic tool. What this does is "poll" all of the status registers of the UART, and the Interrupt Controller to tell you exactly what is going on. When you use the setup mode, the Modem Doctor checks all of these registers for correct information. If something wrong is discovered, a warning is displayed on the screen telling you what the Modem Doctor believes is wrong. Many different error conditions are checked, see the error code section for a listing. Each register contains a Mnemonic for each one of the data bits. Bits that are a logic low ( = 0) are displayed in low intensity, those that are a logic high (= 1) are displayed in high intensity. On a color monitor, this is easy to see. On a Mono Monitor, make sure you have the brightness and contrast controls properly adjusted to see the difference between the two status conditions. -[ Line Control Register ]---------- | DLB STB STP EPS PEN STB WS1 WS0 | ------------------------------------ This register controls many of the setup characteristics of your UART and how it behaves to your PC. This register is responsible for setting baud rate, setting break code transmission, parity, and the length of the serial stream word. When you enter the setup mode, DLB Divisor Latch Used to access the baud rate registers. Should be 0 for the Modem Doctor STB Set Break If High, the modem transmits a break signal, should be 0 normally. STP Stick Parity Should be 0 normally EPS Even Parity select High = Even Parity..should be 0 normally PEN Parity Enable Enable Parity checks, should be 0 normally STB Stop Bits Number of stop Bits, should be 0 normally to Indicate 1 stop bit character only. WS1 Word Length Select 1 WS0 Word Length Select 0 These two bits are used to determine the serial data word length. Both should be High normally to indicate a length of 8 bits. The Modem Doctor Version 3.0 Documentation Page 14 Copyright (c) Hank Volpe 1989,1990 -[ Line Status Register ]----------- | TSE THE BI FE PE OE DR | ___________________________________ The line status register reports error conditions that might have occurred between the PC and the UART. TSE TX Shift Register A High indicates that all characters Empty sent to the UART were transmitted. Should be High Normally. THE TX Holding Register A High indicates that the UART can now Empty accept a new character from the PC. Should be High Normally. BI Break Interrupt A High indicates that a break signal was received. Should be Low Normally FE Framing Error A High indicates that a serial data train did not have a proper stop bit. Should be Low Normally. PE Parity Error A High indicates that the received serial data's parity did not match what the UART was programmed to receive. Should be Low Normally. OE Overrun Error A High indicates that a character in the receive buffer was not read by the PC in time, and another character overwrote and destroyed it. Should be Low Normally. DR Data Ready A High indicates that a character has been received and is ready to be read by the PC from the Receiver Buffer. Should be Low normally for these test, but can vary while data is coming in from the Modem. The Modem Doctor Version 3.0 Documentation Page 15 Copyright (c) Hank Volpe 1989,1990 -[ Modem Control Register ]--------- | LP OT2 OT1 RTS DTR | ------------------------------------ The Modem Control register handles all of the interfacing between the UART and the modem. Only 5 signals are needed to handle this LP LOOP A High indicates that the Loopback digital diagnostic has been activated. This feature only works with 8250 UARTS or those that are 100% Compatible. This is used in the Digital Loopback test. OT2 OUT 2 A High enables the UART to generate interrupts. A Low disables interrupts. This should always be high for testing purposes. OT1 OUT 1 On 100% compatible modems, a High on this pin will perform a Hardware reset of the modem in some compatible designs. Normally this is a Low. RTS Request to Send A Handshaking signal that is used by some modems to enable data transfer between the Modem and the UART. Should be High for testing purposes. DTR Data Terminal Ready A Handshaking signal that is used by some modems to enable data transfer between the Modem and the UART. Should be High for testing purposes. The Modem Doctor Version 3.0 Documentation Page 16 Copyright (c) Hank Volpe 1989,1990 -[ Modem Status Register ]---------- | RLS RI DSR CTS DRD TER DDR DCS | ------------------------------------ The Modem Status Register returns the status of the control signals sent by the modem to the UART. RLS Received Line Detect A High indicates that a carrier has been received by the modem. When the Analog tests are run, this should be High. If it is not, it is still possible that the Modem is ok, however the cable from the Modem to the UART (for externals only) might not have a complete circuit due to faulty wiring of the RS-232 cable. This signal is very important for some communications programs to operate properly. RI Ring Indicator A High indicates that the modem detected a Ringing signal on the phone line. DSR Data Set Ready This is part of the DTR/DSR Handshaking pair that is used by some modems to control the flow of data. Should normally be a High. CTS Clear to Send This is part of the RTS/CTS Handshaking pair that is used by some modems to control the flow of data. Should normally be a High. DRD Delta Received Line Signal Detect A High indicates that the Received Line Signal has changed state. Some Communications programs use this also as an indication that a Carrier was detected by the modem. TER Trailing Edge Indicator A High indicates that the Ring Indicator changed state. Some Communications programs use this as an indication that the phone as Rung. DDR Delta Data Set Ready Indicates that the DSR signal has changed state. DCS Delta Clear to Send Indicates that the CTS signal has changed state. The Modem Doctor Version 3.0 Documentation Page 17 Copyright (c) Hank Volpe 1989,1990 If a 8250-B / 16450 or 8250A Uart was detected, the following is displayed -[ Interrupt ID Register ]---------- | ID1 ID0 ITP | ------------------------------------ The Interrupt ID Register is used to tell the CPU what kind of interrupt occurred. ID0 Interrupt Bit 2 ID1 Interrupt Bit 1 These two signals are a binary code which can be read by the CPU to tell what kind of interrupt occurred. Both Bits high indicates an error occurred or a Break Interrupt was received. Bit 2 high and Bit 1 low indicates that data is ready to be read by the CPU. Bit 1 High and Bit 2 low indicates that a Ring signal or Carrier signal was received. For testing purposes, only the Data ready mode is used. ITP Interrupt Pending A Low indicates that an interrupt has occurred. For testing purposes, this should always be high if data was successfully read by the Modem Doctor. If it is not, then an interrupt did occur but the CPU did not respond. Suspect a problem with an interrupt Controller Chip or the UART interrupt generating capability. If a 16550 or 16550AN chip was detected, the register selection uses the enhanced register display The Modem Doctor Version 3.0 Documentation Page 18 Copyright (c) Hank Volpe 1989,1990 -[ Interrupt ID Register ]---------- | FEM FEL ID2 ID1 ID0 ITP | ------------------------------------ FEM FIFO Enable MSB This is the Most significant Bit of the FIFO Register. It should be high on both the 16550 and 16550AN if the FIFO Buffering is enabled. Normal Modem Doctor status shows this as a Logic Low (unless testing is performed). FEL FIFO Enable LSB This is the Least significant Bit of the FIFO Register. It should be a high on the 16550AN only! The 16550 always displays this bit low. Again, the normal Modem Doctor status will show this as a Logic Low (unless testing is performed). ID2 FIFO Timeout This signal is raise high by a 16550AN to indicate that it is holding characters for the CPU to read, but it is less than what the CPU has requested to be interrupted for. The FIFO buffer can be as deep as 14 characters. If only 8 have come in, the CPU will not be interrupted. The 16550AN is programmed to interrupt after a period of time has gone by during which no characters were received in order to force the CPU to get what it is currently storing. Normal operation should keep this line low, if it is high at any time there is a problem with the UART. The Modem Doctor Version 3.0 Documentation Page 19 Copyright (c) Hank Volpe 1989,1990 -[ Interrupt Enable Register ]------ | ESI ELI ETI ERI | ------------------------------------ The Interrupt Enable register is programmed to allow certain types of interrupts to occur. ESI Enable Status A High causes the UART to generate an Interrupt whenever RI or RSD signals in the Modem Status register go high. Should be low for testing. ELI Enable Line A High causes the UART to generate an Interrupt whenever an error or break interrupt is detected in the Line Status Register. Should be low for testing. ETI Enable Transmitter A High causes the UART to generate a Holding Register interrupt whenever the THE signal of the Empty Interrupt Line Status register goes High. Should be low for testing. ERI Enable Receive Data A High causes the UART to generate an Ready Interrupt whenever Data is ready to be read by the CPU. The DR line of the Line Status register going to a high state generates this condition. This signal should be High for testing purposes, since it is the only interrupt needed by the Modem Doctor. -[ Interrupt Mask Register ]-------- | IQ7 IQ6 IQ5 IQ4 IQ3 IQ2 IQ1 IQ0 | ------------------------------------ The Interrupt Mask Register is contained on the 8259 Priority Interrupt Controller on your Computer's Motherboard. Each one of these Hardware Interrupts corresponds to an external device. IQ7 Printer Interrupt (can be used by Custom COM5 or COM6) IQ6 Floppy Disk Interrupt IQ5 Hard Drive interrupt (can be used by Custom COM7 or COM8) IQ4 COM1 Interrupt (also COM3) IQ3 COM2 Interrupt (also COM4) IQ2 reserved by IBM (Gateway to second 8259 on AT's) IQ1 Keyboard Interrupt IQ0 Timer Interrupt The Modem Doctor Version 3.0 Documentation Page 20 Copyright (c) Hank Volpe 1989,1990 Under Normal Conditions, IQ0,IQ1 and IQ6 should be lit, along with IQ4 if testing COM1 (or COM3) or IQ3 if testing COM2 (or COM4). In addition, other lines could be lit depending on your computer. The only line the Modem Doctor looks for is the IQ4 or IQ3 lines (depending on which serial port you are testing). 4.3 Carrier Tests ----------------- The Carrier test section is used to test your modem's ability to detect a carrier, demodulate signals on the originate frequency and answer frequency, and to properly control the RLS (Received Line Signal) and CD (Carrier Detect) Modem Status/Control lines. All of these are essential elements for good data communication. When you select carrier tests, a pull down menu is displayed. Option 1 prompts you to run the Carrier tests. Option 2 offers you the chance to select a custom modem driver. Option 3 allows you to return to the main menu (pressing ESCAPE also does the same thing as option 3). 4.31 Modem Driver Modules -------------------------- Although your AT Instruction set modem is based on a defacto standard developed by Hayes, there are several "supersets" of this instruction set for various modems. Currently, the Modem Doctor supports 3 different software Modem Drivers for testing; Generic Compatible, &T0 instruction set, and Courier HST/V.32. When the Modem Doctor is running the setup mode, it queries the Microprocessor for its type identification. Based on this information, a Modem Driver is selected for use. Basically, all 2400 bps and lower modems are assigned the Generic Driver, and all 9600 and higher modems are assigned the Courier HST/V.32 driver. The &T0 instruction set modems are tested in a different manner with a different set of instructions. Previous versions of the Modem Doctor would automatically switch to the &T0 instruction set if the modem was a 2400 bps modem and if it failed to properly detect a carrier during testing. This function is still built into the Modem Doctor, but you can optionally select the &T0 driver yourself before beginning your testing in order to speed things up. Auto-selection added about 10 seconds a pass that can now be eliminated. If you desire to select the &T0 set for your modem instead of letting the Modem Doctor do it for you. NOTE: Don't select this instruction set unless you know for sure that your modem is 100% instruction set compatible with the Hayes 2400 or 2400B. Hayes 1200 bps and lower, and almost all other 2400 bps and lower modems use the Generic Driver. You will find that 99% of all modems will work properly with this assignment, in fact, if you disable all data compression and Fixed link assignments from any high speed The Modem Doctor Version 3.0 Documentation Page 21 Copyright (c) Hank Volpe 1989,1990 modem (including the Courier's), the Generic Driver will test these modems properly also! This allows people with high-speed modems that are not supported currently to use the Modem Doctor for testing. If you have a high-speed modem that is not supported, you can use a Combination of the Manual mode and the Generic Modem Driver to test these modems also. 4.32 Types of Carrier Tests ----------------------------- The Carrier tests are designed to test your modem under actual use conditions (minus a telephone line). Your Modem uses two different frequency bands for communication. These are the Originate and Answer frequencies. AT Compatible modems can select these under command of the Modem Doctor via the appropriate Modem Driver module. So called "Dumb" Modems have front-panel switches that you must use to properly test the modem. The Modem Doctor supports both types of tests, one of which is automatically selected by the Modem Doctor depending on the hardware it detects. 4.33 AT Instruction Set Tests ----------------------------- AT Instruction Set Modem Test - If you selected the Test Modem/UART option from the setup menu and a Modem with a compatible Microprocessor was detected, or if you have forced the Modem Doctor to use the AT instruction set tests via the Hot-Key ALT-F, the Modem Doctor will test the Originate and Answer frequencies of your modem automatically. Before running this test, make sure you have disconnected the modem from the telephone line, because the modem will go off-hook and sometimes the dial-tone will interfere with testing. If you press ESCAPE in this menu, you return to the main menu. Any other key continues. You will be prompted to enter a "Loop Count". If you select a count of 1, you will be able to hear the connecting tones on your speaker. If you select a count greater than 1, then the speaker is turned off. After you make your selection, two windows will open on your screen. One contains data that is being sent to the modem, the other Data that has been received by the modem. All of the characters from Binary 0 to Binary 255 are transmitted. Some of these will look strange because they are characters of the Extended Character set. The Modem Doctor takes a great deal of care in preserving the normal condition of your modem before testing, and sends all the character strings necessary to test without disturbing any non-volatile memory settings. If you have an external modem, you will see the data being sent and acknowledged before testing begins. While it is setting up, the Modem Doctor tells you what is going on, including that the Modem is reset, that commands are being sent, and that it is waiting for a carrier. The Modem Doctor waits up to 15 seconds for either the word CONNECT or the The Modem Doctor Version 3.0 Documentation Page 22 Copyright (c) Hank Volpe 1989,1990 RLS signal to go active. If this does not happen, the Modem Doctor switches to the &T0 command set that is used by Hayes 2400's and several other clones. This test is just as valid as a full carrier test and verifies both the modem and the Uart signal paths as does the traditional carrier test. If you switch to this mode, you will be informed via the screen and the message "CARRIER NOT DETECTED" will be displayed. Also, if you have an external modem, you might see the "Modem Ready" light flashing throughout this test. If you selected the &T0 instruction set yourself from the Modem Driver selection menu, then the &T0 set will be used exclusively. This selection s mainly a convenience for some users (because the Auto-detection method takes a little longer), however it will not test any other kind of modem properly. If you are unsure, let the Modem Doctor figure it out for you. Note, if you select more than 1 itineration and change you mind, press ESCAPE anytime during the test. At the next available loop-repeat time the Modem Doctor Will abort testing and give you your current status. 4.34 Uart or Dumb Modem Tests ----------------------------- This test works the same as the AT Instruction Set Modem test with two main exceptions. First, Your modem must be able to generate a carrier on its own on the answer and originate frequencies. Most external "dumb" modems have front panel switches for this function. Most are marked as AL (for Analog Loopback). If your modem can generate this, answer yes and follow the prompts on the screen. All testing is performed as above, except you setup the modem instead of the Modem Doctor using its Modem Driver software. Whenever the Modem Doctor is working with the Micro in the "Off-line" mode, the Dumb mode tests are used. You are prompted if your modem can generate a carrier. Answer yes to start the testing. You are then told to place your modem in the Analog Loop mode and force the carrier detect on. Most dumb modems will light the CD light on the front pane of the modem when you press the AL switch. This CD light sends a RLS (Received Line Signal) status word to the Uart. The Modem Doctor looks for this before it will allow testing in this dumb mode. If your modem cannot generate a carrier indication, you can still test an analog loopback using the Loopback function in the registered version and select the Analog Loopback tests (this is explained later in the documentation). The Modem Doctor Version 3.0 Documentation Page 23 Copyright (c) Hank Volpe 1989,1990 4.35 Error Messages ------------------- If A RLS (Received Line Detect) signal is not received before testing begins, this indicates that either A Carrier is not being generated (or properly received in self test) by the modem, or an RS-232 Cable to an external modem is improperly wired. Although RS-232 loops will work fine without an RLS signal being wired, there is no way for the modem Doctor to detect on a Dumb Modem if a carrier was generated. On a AT Instruction Set Modem, the Modem Doctor alternately looks for the word "CONNECT" to be sent from the modem if there is no RLS signal available. If you wish your all of your communications programs to work properly, you should get a cable with this signal wired. If an Error is detected during the Analog test, the error Counter is incremented. There are two error counters; One is used for the Originate Mode, and the other for the Answer Mode. If you receive an error, it could be due to a problem with a UART or a Modem at a certain Baud Rate. Try testing at other Baud rates to determine if the errors repeat. Also Errors could occur on only the Originate or the Answer frequency. This is more prevalent at higher baud rates. Finally, make sure that the modem was disconnected from the Phone line before testing. The Dial-tone interferes with some modems. One other possibility exists, that there could be a problem with a cable or interrupts not properly being generated or properly handled by the CPU. Run the Digital/Loopback tests and if the problem repeats, you might have a bad UART or motherboard problem. Although it is unlikely, if power is removed from the modem or a cable falls off (or who knows what else), the Modem Doctor waits a pre-determined period of time for an interrupt to occur. If none is detected, the warning "Modem Queue Failure" or "Modem Receiver Failure" will be displayed in one of the windows. These might also be displayed if the Modem never acknowledged a character being transmitted, or never sent one back. Again, the only conditions that would cause this would be a cable being removed between the modem and the Uart, the power being removed to the modem, or the modem "blowing up" via some unnatural means during the test. If the RLS (Received Line Signal) is constantly active from the modem, the Modem Doctor will tell you that you might have a problem with a cable or the modem and that the test results might not be valid. Reason for this is that the Modem Doctor never did detect a carrier because the UART said it was already there. This can be traced in nearly all cases to the Modem. Change the setting of the Modem to let the Carrier Detect (CD) act normally. It should never be set to be forced on for a PC. If so, not only the Modem Doctor, but other communications programs will not operate properly. The Modem Doctor Version 3.0 Documentation Page 24 Copyright (c) Hank Volpe 1989,1990 4.4 Loopback Tests ------------------- The Loopback tests were designed for two purposes. First, to test an RS-232 loop including cables that are properly terminated with a loopback plug, and second, to run a digital loopback test on 8250 and 100% Compatible UARTS. Additionally, the Analog portion of this test can be used to test a dumb modem that does not generate a CD (Carrier Detect) signal when the AL switch is thrown on the front panel. Selecting Loopback and pressing return fetches this menu; -[ Loopback Tests ]----------- | Analog Loopback using a PLUG | | Digital Loopback 8250 UARTS | | Loopback Plug Technical Data | | Return To Main Menu | -------------------------------- Analog Loopback tests require that you attach a Loopback plug either to the back of the Comm port connector on your computer, or at the end of a RS-232 Cable. This test is designed for external Modems, however you could run this on an internal modem as a test of the command channel's ability to receive characters. Caution should be used on internal modems, for some will fail this test. If this happens, don't be concerned. However this test should NEVER fail with a Loopback Plug, unless you were trying to drive the line at an excessive rate. Remember, the faster the data rate, the shorter the lines should be, and the faster the computer should be to handle it. With a loopback plug on the back of the serial port, speeds of 38400 bps should run fine even on a slower PC. If you experience problems at 38400 but not at 19200, chances are your hardware is fine (if you are using an 8250-B). In extensive testing with PC's at 4.77 mhz, the original 8250-B performed flawlessly at 38400 bps. Dumb modems can use this test also (as explained above and in the section regarding Carrier tests). Digital Loopback tests require that you have an 8250-B, 8250A,16450, 16550, 16550AN or other 100% compatible UART in your system. These UART's have built-in diagnostics. If you are using a PC compatible internal modem or a PC compatible Serial Card, then you will definitely have a compatible Uart installed. There is a design difference between the 8250-B and other compatible chips in this series. Some of the differences were explained above, but the important difference for the Loopback test is the way the different Uarts will respond. The 8250-B allowed its OUT2 signal to become active during loopback testing. The OUT2 signal is used by PC compatible machines to gate the interrupt signal off of the serial board (or internal modem). Later designs (8250A, 16450, 16550,16550AN) tri-stated this line. As a result, the self- The Modem Doctor Version 3.0 Documentation Page 25 Copyright (c) Hank Volpe 1989,1990 test diagnostics will not allow the interrupt signal to gate off the board and interrupt the CPU. This would cause all digital loopback tests on these improved chips to fail. The Modem Doctor handles this by a brute-force read of the Uarts. By sampling the Interrupt ID register, the presence of an interrupt is detected, then the receiver buffer register is read. This method is not as efficient as a true interrupt-driven test would be, but it is accurate. The Uart does generate the ID for an interrupt, the character is pulled out of the Uart, its just that the presented speed on the screen is not as fast as it should appear to be. When running this test on an 8250-B, you will see the true speed of the interrupt handling and processing. On others, you will see the brute-force method. Each is an accurate test of the Uart and valid at any baud rate selected. If this test does not run, but yet the Analog test and all other tests run fine, it means that you do not have a compatible UART installed. Some UARTS that are not 8250's have a problem entering this mode properly. If the test does not start, do not be alarmed, because only 8250 and true compatibles will pass this test. However this test will NEVER start and then fail unless you do have a hardware problem. You should never pick up a character error using this test. If you do, you have a bad UART or CPU Motherboard Problem. Both Tests open up windows (like the Analog test) and send and receive characters to the UART. If you wish to know how to build a loopback plug, select the Loopback Plug technical data section. Pressing ESCAPE is the same as Option 4 and returns you to the main menu. 4.41 Loopback Test Error messages --------------------------------- Essentially the error messages for these tests are simple. In the Loopback test mode, if a character is received incorrectly, the error counter is advanced and a report is issued at the end. If the Analog or Digital tests fail to receive or transmit characters, the messages will explain that either the Transmit Queue, the Receive Queue failed, or that the Uart did not respond to the tests. The last message may be displayed if you have a non-compatible Uart. If the Uart fails to setup properly for the Digital Loopback test (does not program its registers properly), a warning is displayed that there is an error in one of the registers. The message will explain what is wrong and what it expects. See the warning message section for more details The Modem Doctor Version 3.0 Documentation Page 26 Copyright (c) Hank Volpe 1989,1990 4.5 Manual ---------- As well written as the Modem Doctor is, there exists the possibility that a Modem or a system might not be compatible with the diagnostics. The Manual section allows you to send your own string commands to the Modem, read back data, and in fact you could use this as a Mini-communications program. If you select this mode, a window opens with the banner Interactive Mode. At the Bottom are listed the "Hot-Keys" you can use; ALT-B This opens a window for you to change the baud rate. Note: if you are on-line with a service this might cause an error between the computer and the modem. Off-line conditions should work properly. ALT-C Clears the screen. This only clears the window of data, and leaves all your prompts. ALT-R This displays the UART registers...handy for real- time troubleshooting of RS-232 loops. ALT-H Help..this displays the basic AT Command set instructions that you could use to control your modem. Note that this is only a basic set. Some modems have many extensions to this, so for advanced work, consult your owners manual. ALT-X Exits the interactive mode and returns to the main menu. 4.6 Setup Mode -------------- This section was covered above. Use this to change the serial port under test, the baud rate, and the type of test to be run. 4.7 Exit Program ---------------- This is the only way to exit the Modem Doctor. This is necessary because the interrupt tables and controllers of your PC must be returned to their original state in order to avoid problems after you use the Modem Doctor. Pressing Control-C or Control-Break during the Modem doctor will cause one of two things to happen. First, it will ignore what you have done if it is critical that the program not be interrupted, or second, if it is at all possible to exit without damage, a window will open telling you that you can control- break abort if you wish..answer yes or no. You can Control-Break during all tests and at times from menus. If you choose to quit, the Modem Doctor cleans things up properly and exits to dos. Please remember this is just an emergency way of doing an exit. Use the Exit function from the main menu as the correct way to end the program. The Modem Doctor Version 3.0 Documentation Page 27 Copyright (c) Hank Volpe 1989,1990 5.0 Error Messages and their Meanings ------------------------------------- The Modem Doctor, if presented with an error, will make a diagnosis of the problem. In most cases, this should be enough for you to figure out what is wrong and go on from there to correct it. 5.1 Log In errors ----------------- ALL Available COMM ports are in use...Press to Return -COM1 through COM8 are logged in and no new ports can be added COMx Not Found -A COMM port (x) was not located at the port address specified. This is normal during auto-selection, but not if a manual selection was entered. If a manually entered address did not work, check your Modem owners manual to make sure you entered it correctly. You can override and force a port to be logged (during manual selection) if you wish as a way to find out what is wrong with a serial port, but if you do so, do it with caution. If the Modem Doctor determines a port is defective, and even if you override it, you will only be able to check the UART registers for the problem. No other test will run. WARNING...RESERVED port...RETRY ENTRY - You entered a port address that is assigned to a critical Motherboard or CPU address port. Your entry was an error..check your modem owners manual to get the right port. 5.2 Carrier Errors ------------------ WARNING...CARRIER FAILURE...Status Registers Displayed above followed by; RLS (Received Line Signal Detect indicates that a carrier has not been received by the UART Check modem or connector wiring - This indicates that a "dumb" modem did not signal the UART that it has received a carrier (or is generating one). Make sure that your dumb modem lights the CD light during the test (or alternately raises the RLS line to the Modem). A modem with a Microprocessor will not display this error. NOTE.Carrier (RLS Line) active, it should not be..test may not be valid (also displayed at the end of test loops) - Check your modem to make sure that Carrier isn't forced high. Most Modems have a CD forced High or follows Carrier detect switch. It should be set to allow the modem to follow a Carrier detection to insure that your modem works properly The Modem Doctor Version 3.0 Documentation Page 28 Copyright (c) Hank Volpe 1989,1990 with all communications programs. The Modem will continue testing after a 2 second delay. The RLS line was Active from the UART when it should not be -Check to see that the modem is not in the forced CD mode. &T1 Loopback signal Sent...waiting 5 seconds to start of test - The Modem Doctor did not find a carrier within 15 seconds, so it switched to the &T command set that some modems use. If you use the &T0/&T1 driver for your modem then you will not need the 15 second delay. Please read the section on Modem Drivers for more information. Modem not responding to the Analog originate test or; Modem not responding to the Analog Answer test -A "AT" Instruction Set Modem did not go into the self test mode. The Modem Doctor looks for the word "CONNECT" or the RLS Line to go high, indicating that a Carrier was received from the modem. A possible reason for a perfectly working modem to generate this is if the wrong baud rate was selected for testing. "AT" Instruction Set Modems return identifications that can be read by the Modem Doctor. If you suspect you selected the incorrect baud rate, go to setup and select 300 baud and try again. If it doesn't work this time, you might have a problem with your modem generating a self test. Modem Transmit Error -The Modem Doctor attempted to send a character to the Modem, but the status of the Transmit Holding Register indicated that the character was never sent. This will abort a test. Check cable wiring and that somehow the modem did not get disconnected from the serial port or inadvertently turned off. Modem Queue Failure -A character was sent to the modem, but nothing, not even the wrong character was sent back to the Computer from the Modem. This test is driven by interrupts, however if they fail to happen, a brute-force method is tried one time and if that still fails to get a character, then this error message is displayed. Check cable wiring and again make sure that somehow the modem did not get disconnected from the serial port or inadvertently turned off. CARRIER NOT DETECTED -Some Modems in the self-test mode do not raise a carrier (RLS) or send the word CONNECT. Instead, the MB (Modem Busy) light blinks on the Modem. Two such modems are the Hayes 2400B and the CTS Modems. In this case, the self test continues, but the words CARRIER NOT DETECTED are displayed in the message window instead of CARRIER ON. This The Modem Doctor Version 3.0 Documentation Page 29 Copyright (c) Hank Volpe 1989,1990 test is just as valid for these modems as any other as long as you notice the light blinking on the modem. If the Generic Modem Driver is used with &T0/&T1 modems, this will be a normal message as it switches to the alternate test set and continues the test. Modem Analog Test passed without any errors in Originate and Answer Modes - Normal results of the testing. "You had a total of x Originate Errors and x Answer Errors - An error was detected on character transmission by the Modem Doctor. Use the window display to isolate the error if you wish, or run the test again, making sure that the phone line is disconnected. 5.3 Loopback Errors ------------------- UART not responding using Analog Loopback Plug mode -No characters were received over the RS-232 Loop. Make sure you are using a proper RS-232 cable and a proper Loopback plug No Loopback Plug or General Failure of the Hardware -None of the handshaking signals (RTS/CTS DTR/DSR) were detected (or generated) by the UART. Either you have a bad cable, a bad loopback plug or a faulty UART. NO CTS Handshake detected. Continuing test even though plug/modem maybe bad -The Loopback mode looks for RTS/CTS handshaking before it starts. If it is not there, it could be because the cable does not have the RTS/CTS pair connected or because the loopback plug or DCE equipment is defective. Since it doesn't know, it gives the loop the benefit of the doubt and starts the test. If the test runs fine from this point on, then the RTS/CTS pair is either not wired in your cable or your loopback plug is not wired correctly. The reason for this display is because many high-speed modems use the RTS/CTS pair for hardware flow-control, so its presence is vital. Loopback Transmit Error -The Modem Doctor attempted to send a character to the UART, but the status of the Transmit Holding Register indicated that the character was never sent. This will abort a test. If you are performing the Analog Loopback test, check cable wiring and that somehow the modem did not get disconnected from the serial port or inadvertently turned off. If you are running a digital loopback test, then this indicates that the UART is failing to send characters. If you have an 8250 or compatible UART, then this would indicate a problem. If your UART is more or less compatible, then this message might get displayed. The Modem Doctor Version 3.0 Documentation Page 30 Copyright (c) Hank Volpe 1989,1990 Loopback Queue Failure -A character was sent to the modem, but nothing, not even the wrong character was sent back to the Computer from the Looping source. This test is driven by interrupts, however if they fail to happen, a brute-force method is tried one time and if that still fails to get a character, then this error message is displayed. If you are performing the Analog Loopback test, check cable wiring and again make sure that somehow the Loopback source (Plug or Modem) did not get disconnected from the serial port or inadvertently turned off. If you are running a digital loopback test, then this indicates that the UART is failing to loop characters. If you have an 8250 or compatible UART, then this would indicate a problem. If your UART is more or less compatible, then this message might get displayed Analog Loopback Test passed without any errors - Normal result of test You had a total of x Errors - At least one error was detected...this is the normal result if a UART does not respond to any test. UART not responding to the Digital Loopback test -No characters were looped internally through the 8250 UART. Suspect a non-compatible UART. If this test starts and then fails, suspect the UART. UART Registers did not set for Loop back test -The UART Modem Control Registers did not program properly. This should indicate a hardware failure of the UART under all circumstances (including use with a non-compatible UART). UART Digital Test passed without any errors - Normal result of test 5.4 Setup Errors ---------------- Modem Microprocessor Did Not Accept Setup Commands -Commands were sent to setup the modem for testing, the Modem did not acknowledge. Suspect a non-compatible modem or a possible hardware failure. Modem Status Register readings show that there is no status coming back from the modem to the UART. If this is an external modem, check" that the cable is plugged in. -The only conditions that the UART will not have any status is if an External Modem is off or not connected, if the RTS/CTS and DTR/DSR lines are not active in an external cable ,or the UART has a serious hardware problem. In the case of a Uart problem, most likely other diagnostic error messages will be received. The Modem Doctor Version 3.0 Documentation Page 31 Copyright (c) Hank Volpe 1989,1990 Line Control register readings show that the word length selected is incorrect. -WS1 and WS0 should both be on indicating that 8 bit words are to be used. The UART is defective or communications to the UART are suspect. Line Status Readings show that the Tx Holding Register THE or the Tx Shift Register TSE is not resetting properly. UART is suspect or connections to the UART from the computer. -The Tx Holding Register and the TX Shift Register both should be empty whenever the Modem Doctor Polls the register (in between interrupts). If these are not, then the case is 99% of the time due to a bad status from the UART. A cable could cause a problem, but its very unlikely. Modem Control register readings show that either DTR,RTS or OT2 signals are not set properly. -DTR and RTS are essential for communications. OT2 is essential for interrupts. UART is suspect or connections to the UART from the computer Interrupt ID register readings show that an interrupt is pending when none should be. UART is suspect or connections to the UART from the computer. Interrupt Enable register readings show that ERI Enable Receiver ints is not set properly. UART is suspect or connections to the UART from the computer. 8259 Interrupt Controller has not responded to setting the IRQ(x) line. This problem is on the system board of your computer. Run your computer diagnostics program to locate the error. -This error may be displayed if you also try to log-in a defective Comm port, or if the 8259 failed to set the correct interrupt line. IRQ4 = COM1/3, IRQ3 = COM2/4, IRQ5 = COM7/8, IRQ 7 = COM5/6. If this error was displayed when logging in a defective Comm port, yet the controller responds properly on correctly operating Comm ports, then the error report can be safely ignored. I cant find a COMM port -If Dos does not Log in Comm 1 or Comm 2 and if no port is Auto-Detected, then the Modem Doctor Aborts for there is no reason to run the program. WARNING...This COMM port is MODEM STATUS/CONTROL REGISTER IS DEFECTIVE -The Modem status register is one of the registers tested during auto-login detection. If it doesn't respond properly, the UART is probably defective and this message is displayed. The Modem Control register is also checked. Failure of either of these usually indicates your Uart is defective. The Modem Doctor Version 3.0 Documentation Page 32 Copyright (c) Hank Volpe 1989,1990 Section 6. Special Modes and Information ---------------------------------------- The Modem Doctor supports a wide range of "AT" instruction set modems. There are however "supersets" of instructions that manufacturers have used to enhance the capability of their modems. Although there is some structure in this area, not all commands intermix between different brands and lines of modems. This situation is analogous to PC computer printers, and it calls for a similar approach. The Modem Doctor now supports the use of "Modem Drivers" to meet these special needs. Additionally, due to the increase in computers using the ISA bus, there are more interrupt lines free to be used by modem manufacturers. For test purposes, you can use IRQ3,4,5,7 for your hardware testing. Using the special /S switch, you can send initialization codes to your modem from a batch file or other command-line need to setup the modem for use. Finally, to add some flexibility to the Modem Doctor's diagnostics, some special "Hot-keys" have been added. These have been discussed above in an operational sense, however in this section you will get some ideas of how these can help you speed up testing and test defective or non-compatible hardware. 6.1 Using Modem Drivers ----------------------- Most Modem's today are built on the original "AT" instruction set that was developed by Hayes Micromodems in their 1200B series. This driver, named the Generic Driver in the Modem Doctor, is used exclusively if the modem returns an ID indicating it is a 300,1200 or 2400 bps modem. Also, if the modem does not return an ID, this Generic Driver is used. The Generic Driver can be used to test nearly all modems, however there are some 2400 bps modems that were built using the command structure that Hayes Micromodems put into their 2400B line. These modems used an "&" for some modem setup and command functions. The Modem Doctor has a driver for these modems called the "&T0/&T1" driver. Using this driver, the Modem Doctor can perform a simulated carrier test. During your testing of this type of modem, you will notice the MB (Modem Busy) light flashing on your external modem. This driver (and all others) is user selectable, however the Modem Doctor will automatically switch to it when performing the carrier tests if the Modem was detected to be a 2400 bps modem. The last driver currently supported is for US Robotics Courier HST and HST Dual/Standard V.32 Modems. The Modem Doctor recognizes these modems upon initial testing and sets up its test parameters a certain way to compensate for their Carrier self test limitations. The Modem Doctor Version 3.0 Documentation Page 33 Copyright (c) Hank Volpe 1989,1990 Because of the trellis-encoded Async/modulation of the USR HST Mode, the maximum Carrier test Baud rate is 2400 bps (see the USR Manual for this info). To work around this, the Modem Doctor Programs these modems to use a fixed DTE/DCE Rate with the &B1 Parameter, allowing communications to and from the modem at speeds up to 19200 bps. When working in the V.32 mode however, the Carrier test (and all loopback tests ) can be performed at 9600 since the modulation is symmetrical again. Also when the selected baud rate is higher than 2400 bps, the MNP Protocol switch is set to &M0, otherwise if there was an error, the Modem would try to correct it instead of passing the error on to the Modem Doctor. None of these changes is saved to the non-volatile ROM, so you should not experience a problem. However, the V.32 and Dual Standard Modems might experience a problem if register S13 is not set to 1. This is the default from the factory and insures that the modem will be reset when the DTR line is dropped. If you are experiencing a problem, use the interactive mode and type S13=001. This change is not permanent. If you are using a USR Dual Standard Modem, then the Modem Doctor will test whatever mode is active via the B switch. If the current Modem setting is B0, then the V.32 mode will be tested, if B1 is set, then the HST mode will be tested. You can change this setting to whatever you wish by using the Interactive mode, type ATZ, then type ATB0 &W or ATB1 &W. This has to be written to the firmware in order to stay valid throughout all the testing, but the ATZ command before a save will always recall your settings, insuring you have only changed the one parameter. Please note, this is included for advanced users and is one of the reasons for the interactive mode. It is not necessary for you to do this to test your modem unless you wish to. For more information, see the section regarding "Quirks". As mentioned above, all of the Modem Drivers are self- selecting, but can be user-selected. The status line of your screen will display the current Port assignment, the current Baud rate, the status of the Microprocessor, and the current Modem Driver being used. Select carrier test from the Main menu and move the bar to "Select Modem Commands". You will be given a choice of the available drivers. After you select, the status line will be updated, and you can either start the test or return to the main menu. The reason for Modem Drivers is to allow more individualized testing of a particular type of modem, and to allow for more modems to added to the list of specially supported modems. Although not supported in version 3.0, the program will in the future be able to access external modem drivers that can be provided to a customer for special testing or to enhance the abilities of the Modem Doctor. If you wish to have a custom interface written, please contact us for pricing and appropriate information that we will need to do this for you. The Modem Doctor Version 3.0 Documentation Page 34 Copyright (c) Hank Volpe 1989,1990 6.2 Using the Command Line Mode switch /S ----------------------------------------- There can be special occasions where you need to initialize and test a modem before another program can be run. The Modem Doctor now supports a method to do this. Using the command line switch /S, you can instruct the Modem Doctor to "wake-up" a Modem and send an initialization string to it. Although similar to our product Comset, it offers some additional flexibility but does not allow the serial port only setup that Comset does. To use this special mode, you need to have a companion file named MDR.DAT that you create with any ASCII text editor that follows this format; All information must start on the first space on each line and can consist of up to 3 lines. Line 1 and Line 2 are required. Line 1 = Port Number 1 through 8 and an optional Port address in [] ( For settings greater than Port 4, this address is required). Line 2 = the Baud Rate you wish to use (300-38400 or 3-384 are acceptable) Line 3 = the initialization string you wish to send. This string must start with AT and can be up to 80 characters long. If no string is included in the file, or if it does not begin with the letters AT, then ATZ is automatically sent to the modem. Example..to setup Port 2 to 19200 and set S7 to 255; Make a file called MDR.DAT that looks like this; 2 [2F8]<--note for Port 1-4 unless it is non-standard [2F8] is not needed 192 AT S7= 255 Next, start the Modem Doctor by typing MDR /S As long as the MDR.DAT file is in the current working directory, these commands will be sent. If not, you will get an error message stating that MDR.DAT could not be found. Why not have the Modem Doctor search all directories for the file? Well, the reason is so that you can put MDR.EXE in a Dos path but have individualized setup MDR.DAT files in different subdirectories for different programming needs. Instead of constantly changing the file, make different ones and call MDR.EXE. It will only use the MDR.DAT file in the current working directory. After the initialization string is sent, the Modem Doctor will wait up to 10 seconds for the word "OK" to return from the modem. If it does not, you will get a message saying the modem failed to setup. In either case, whatever your modem sent to the Modem Doctor will be displayed. If you see the The Modem Doctor Version 3.0 Documentation Page 35 Copyright (c) Hank Volpe 1989,1990 word "ERROR", that was sent from the modem, it probably means that your initialization string was not correct. No message returning could indicate a problem with the modem, or an invalid baud rate. When it finishes executing, the Modem Doctor returns an errorlevel to the calling program. An errorlevel of 0 is normal, an errorlevel of 99 indicates a failure. You can use these errorlevels to control batch processes if you wish to. Also, this mode of the Modem Doctor uses bios screen writes, so all of the information displayed can be redirected to a printer, a file, or whatever other DOS device you wish. Example...to send the output of this test to a file called Test.txt... MDR /S > TEST.TXT or MDR /S >> TEST.TXT (if you wish to append an existing Test.txt file. If the Modem Doctor setup was successful, the modem's DTR and RTS lines stay active, if not, they are dropped. If you need more specialized command-line modes of operation, you might consider Comset. Comset allows Serial Ports and Modems to be setup at various rates and under various conditions. Registered Modem Doctor users get a 15% discount! You can find Comset on most BBS's as COMSET6.ZIP. 6.3 Using the Hot-Keys ---------------------- Hot-Keys are combinations of the ALT key plus a letter. The Modem Doctor adds several of these Hot-keys to make it easier to test modems at different baud rates and to circumvent some of the error checking that the program performs under normal circumstances. ALT-B Change Baud rate - If you are testing a system that you suspect has a problem, it is best to use the setup mode when changing the baud rate. The Setup mode will test all the registers, and the modem microprocessor (if selected) and assure you that all the hardware is communicating properly at each baud rate. However, if you feel a system is running fine, using the ALT-B from the main menu can save time when running tests at different baud rates. Press ALT-B and select the baud rate (taking care not to select a rate higher that what your modem is rated for if you are doing modem tests). ALT-B works from the main menu, and from inside the Manual interactive mode. ALT-C Clear Screen - This key is only active inside of the Manual interactive mode and is used to clear the text window of any characters. The Modem Doctor Version 3.0 Documentation Page 36 Copyright (c) Hank Volpe 1989,1990 ALT-F Force Microprocessor on-line - The Modem Doctor has many tests built-in to verify the working condition of a microprocessor-based modem and will not allow a modem to be tested in the "AT" instruction set mode if it has not properly addressed and setup a modem microprocessor. Using the ALT-F combination forces the Modem Doctor to perform tests as if it had properly setup a modem. This feature should be used with care, however its primary benefit is to help you test a malfunctioning modem to see exactly what commands it will respond to. Pressing ALT-F also updates the status bar to indicate that the modem microprocessor is on- line (which may or may not be the case after this command was issued). ALT-R Register Display - This is only active inside of the Manual interactive mode and is used to display the status of all Uart registers on the screen for diagnostic purposes. ALT-X Exit Mode - This is only active inside of the Manual interactive mode and is used to exit this mode. 6.4 Logging in Defective Ports ------------------------------ If a serial port Uart is defective, the Modem Doctor will refuse to log it in for testing. This is necessary because there is no way for it to know what ports are defective and what are non-existent. However in Version 3.0, you can now log-in a defective chip for testing. The procedure to do so is explained above under Manual Login. The reason for doing so however might not have been apparent. If any register of a serial port is defective, it might not function properly. Logging in this defective port will give you the full benefit of the Uart and Serial port diagnostics. Error messages will be displayed, in most cases there will be multiple error messages. There are two possible causes of a defective port; the Uart chip and the Serial Port address system. If it is a chip, simply replacing the chip fixes the problem. If it is a serial port instead, then the same problem will repeat. How do you approach this? Well for starters, check that the strapping on your serial port board matches the correct COMM port assignment (ie strapped for COM1 for COM1..etc). Next, if there is user selectable IRQ assignments, make sure it again matches the COMM port assignment (IRQ4 for COM1/3, IRQ3 for COM2/4, IRQ5 for COM7/8, IRQ7 for COM6/7). If all this is set properly, then you can suspect the chip, but also the Serial Port hardware that gates the address of the chip to the computer. Finally, if you get warnings about status, but the chip logs in, then you might just have a bad cable from the computer to the modem (NOTE: The Modem Doctor does not consider this an error but simply displays a warning and allows the Uart to be logged-in for use). The Modem Doctor Version 3.0 Documentation Page 37 Copyright (c) Hank Volpe 1989,1990 6.5 What tests cannot Do ------------------------ Although I tried to be extremely thorough in my tests, there are somethings that tests just cannot do or pinpoint. If you are having problems with excessive line-noise, you might have a bad connection between your modem and your telephone wiring in the house. Another possibility, although remote, is that your modem does not offer the correct input impedance to the telephone line. This can cause poor connections. The problem is with the electronic design of the modem, and again, it is more prevalent in inexpensive modems. Also, tests cannot check that the communications program you are using is set up correctly. At times, installing a communications package can be very challenging for a novice user. Tests also cannot check the wiring in your serial Cable. The Modem Doctor will tell you if a handshaking pair is missing, but it cant tell you why. It could be because the UART is bad, but more than likely, your RS-232 Cable doesn't carry all of the handshaking signals to or from the external modem or serial device. This can be important if you are using a high-speed modem. Most High-speed modems will drop the CTS line when their communication buffers are full. Previous Modems ignored the RTS/CTS signals and instead used the DTR/DCE pair. What this means is that if you buy a new modem, it might not work with the older-cable (yet at the same time the older modem will work..which might lead you to believe that you have a defective modem). 6.6 Quirks with Some Modems --------------------------- Carrier tests - Some Modems have two "AT" instruction sets, usually referred to as Compatible and Enhanced. If your modem does not perform a carrier test at speeds below 4800, then this is usually the case. Some modems provide a dip- switch or a toggle switch to select either mode. Setting your modem to the Standard Compatible Mode should get rid of your problems below 4800 bps. Also, make sure you select the Generic Compatible Modem Driver unless you are sure your modem matches the modem's that have special drivers written especially for their use. At speeds above 4800 bps, the Modem Doctor is only compatible with USR V.32, Dual Standards (V.32 and HST) and HST brand of modems. If you wish to test another brand of modem that is not compatible, simply turn off any modem-hardware error correcting using the Manual mode and following the information in your modem users manual. Then select the Generic Modem Driver and you should be able to test your modem properly. Finally, if only one of the tests (Originate or Answer) runs and NO CARRIER is displayed for the other, the problem lies with the Enhanced Command settings of your modem. Hayes Modems use &T1 through &T8 commands for their 2400 and also have The Modem Doctor Version 3.0 Documentation Page 38 Copyright (c) Hank Volpe 1989,1990 other special switches. The &T0 command set is tried by this version of the Modem Doctor automatically, however there is no compensation for any other type of modems that use non-standard commands. Again for the sake of compatibility with the widest range of modems at speeds below 4800, this cannot be corrected for in this version. Considering the vast numbers of "AT" compatible modems in the marketplace, these two exceptions are minor and will not affect most users. Finally, users of 8250 compatible UARTS that do not support the Digital (Chip) Loopback will get an error. This should be of no concern. However if the test runs for a while, then fails, it could indicate a problem with your UART. This is explained in the pull-down window in the program. The Modem Doctor has been tested on about 25 Modems from Major Manufacturers and on a variety of Clones and Compatibles (plus the "Real Thing"). It is possible that a certain combination of hardware still might give problems, however if you are a registered user, I will find a way to make it work. Section 7. Benefits of Registration ------------------------------------ Thank you for your registration. The Current Registered Version # of the Modem Doctor is 3.0R. All Registered Users are entitled to free Maintenance updates and these will be reflected by changes in the decimal fraction number..ie 3.01, 3.02. Also, if a new super-duper version comes out (4.X or 5.X), all registered users will be able to update for only $5 (plus $ 2 for shipping,handling plus tax where applicable). If you have trouble with the Modem Doctor, or questions, feel free to call or write. When doing either you will need to have the Version Number, your serial number, and in some cases the Module Identification Number. The Version number is displayed when you first start the program along with the serial Number. The Module Identification Numbers can be displayed at any time from the main menu after you pass the initial setup mode. Simply type a # sign, and all of the modules that make up the Modem Doctor will display their version numbers on the screen. Right now, all Modules have identical version numbers from program to program, but in the future, there could be custom modules for registered users, so in this case the Module ID could become important. You can reach us with your questions at 716-694-7484 or write to ; Hank Volpe 108 Broadmoor Drive Tonawanda NY 14150 Thanks again for registering the Modem Doctor. The Modem Doctor Version 3.0 Documentation Page 39 Copyright (c) Hank Volpe 1989,1990 Notes - [+] References to USR /Courier/Dual Standard/HST Copyrighted by US Robotics [++] References to AT Instruction Set ,Smartmodem,Hayes Copyrighted by Hayes Inc. References to MNP refer to An error free protocol Copyrighted by Microcom Inc. Disclaimer - It is not the intent of the Author to recommend any brand of modem over another nor to infringe on the Copyrights of the Manufacturers by mentioning their products. A modem fits a need, and whatever one works for you is the one you should have. As time goes on, more modems will be added to the list of "special enhanced " tests. The modems mentioned are done so only because of the popularity they enjoy and for no other reason. The Modem Doctor Version 3.0 Documentation Page 40 Copyright (c) Hank Volpe 1989,1990  Modem Doctor History Ver 3.0 - New tests added for 16450/16550/16550AN Uarts. Improved Control-Abort handling, Regs command now performs a full diagnostic call when activated. Hot-Keys added (Force Micro, Baud Rate Select). Modem Driver software added to program, Status Bar added to program. Support for IRQ 3,4,5,7 added via COM1 through COM8 log-ins. Speed increased to 38.4KB. /S Command line option added for setup of a modem including batch file errorlevel support. Escape key functionality added to Carrier Tests and the loopback tests. Ver 2.2 - Corrects a bug in Ver 2.1 Communication routines that caused some modems to lock-out because they were waiting for two carriage returns to begin. Also it added 4 diagnostic Uart tests Ver 2.1 - This version was a Beta test. A Beta tester accidentally uploaded this to several boards. Please remove all Ver 2.1S software that you may find. Ver 2.0 - This version also was a Beta test with support for COM1-2 and 2400 bps maximum Ver 1.0 - First test version