home *** CD-ROM | disk | FTP | other *** search
- RS - An RS-232 Port Status Utility
- Author: Fred E. Davis
-
- What RS does.
-
- RS is an uncomplicated utility that prints a full
- status report of a selected RS-232 "COM" port. It provides
- information about the communications protocol, handshake,
- line, error and interrupt status.
-
- How to call RS.
-
- RS is called by entering "RS" followed by either no
- argument or a "1" or "2" then <enter>. The argument
- specifies which COM port you wish to view; "1" will select
- COM1 and "2" will select COM2. When no argument is given or
- an illegal value is used, the result will be the same as
- entering "1". If the specified COM port is not present (or
- not responding), RS will notify you with a "not installed!"
- message. The command syntax is:
-
- [d:][pathspec]RS [1 | 2]<enter>
-
- What it all means.
-
- The report is divided into five sections: A. Protocol,
- B. Handshake Status, C. Line Status, D. Error Status and E.
- Interrupt Status.
-
- A. Protocol
-
- Parity, Rate, Stick and Break. The first four items are
- those values set by the DOS "mode COMx:" command.
-
- 1. Data Bits refers to the number of binary bits used
- to send data. The choices are 5, 6, 7 and 8. Five and
- six are rarely used. Most text can be communicated with
- 7 bits. An exception is a Wordstar formatted text file
- that uses the eighth bit. Most binary files and
- programs are transmitted with 8 data bits.
-
- 2. Stop Bits are used to identify the end of
- transmission of one character. The possibilities are 1,
- 1.5 and 2 stop bits. Most protocols request one stop
- bit; some older (and slower) protocols required 1.5 or
- 2 stop bits.
-
- 3. Parity is used in an error detection function to
- identify a character distorted during transmission. The
- choices are none, even and odd. All of these are likely
- to be encountered. None is most often used with eight
- data bits; odd and even with seven data bits.
- Practically any combination is possible and you should
- refer to the specific protocol requested by an
- application to determine which is right.
-
- 4. Rate refers to the timing of the bits being
- transmitted. The choices are many, though the more
- common ones are 1200, 2400, 4800 and 9600 baud, or bits
- per second. If the rate isn't right you'll soon find
- out! You'll receive either nothing or garbage.
-
- 5. Stick refers to making the parity bit (if used) to
- "stick" at logical 1 or 0. If "stick" is "normal",
- the parity bit function will follow the message in item
- 3. If "stick" is "set" and "parity" is "even", the
- parity bit will be forced to a logical zero. If "stick"
- is "set" and "parity" is "odd", the parity bit will be
- forced to logical one.
-
- 6. Break forces the transmitted data output to stay on.
- It is used mostly in computer terminal communications
- to grab the attention of a computer. If set, any data
- to be transmitted is ignored.
-
- B. Handshake Status
-
- There are six handshake lines: DTR, RTS, CTS, DSR, CD
- and RI. These handshake lines are often used to control the
- transfer of information between the communicating systems,
- but not always. They are more frequently used between
- computers and modems, especially CD and RI. The directions
- "In" and "Out" used here are relative to the COM port. Some
- communications rely on software handshake protocols such as
- XON/XOFF, ETX/ACK and XMODEM (which goes beyond
- handshaking). If hardware handshaking is used, DTR and/or
- RTS must be high to enable the external device to receive.
- Likewise CTS and DSR should be high to enable the COM port
- to transmit.
-
- 1. DTR Out is often used in hardware handshake
- protocols to indicate Data Terminal Ready. Data
- Terminal is an old term referring in this case to the
- computer (PC).
-
- 2. RTS Out notifies the external device that the COM
- port is Ready To Send.
-
- 3. CTS In is the Clear To Send line. It is used often
- in hardware handshake protocols with the DTR line.
-
- 4. DSR In refers to Data Set Ready. It is often used to
- inform a Data Terminal (or computer) that a Data Set
- (such as a modem) is ready to communicate.
-
- 5. CD In is the Carrier Detect input from a modem. It
- is asserted when a communications link is established
- with another modem.
-
- 6. RI In refers to Ring Indicate from a modem. It is
- used primarily for auto-answer operations so the
- computer can accept incoming telephone calls (even on a
- specific number of rings by counting RI transitions).
-
- C. Line Status
-
- The four Line Status bits, Receive Buffer, Transmit
- Buffer, Break Status and Loop Back, refer to the state of
- internal registers and a test function.
-
- 1. Receive Buffer is the register that holds incoming
- data. When holding data that hasn't been read, a "full"
- message will be displayed, otherwise it will be
- "empty".
-
- 2. Transmit Buffer holds data to be sent. When not
- currently holding information waiting to be sent it
- will indicate "empty"; if data is waiting to be sent it
- will show "full".
-
- 3. Break Status indicates the presence of a "Break"
- signal from the sender. This often initiates some form
- of interrupt to normal communications. (See A.6.)
-
- 4. Loop Back is a special state for internal testing
- and verification of hardware and register function.
- When "set", the internal output registers are connected
- to the input registers (and vice versa) such that
- transmitted data is immediately received. It must
- indicate "normal" if communications are to take place.
-
- D. Error Status
-
- The three error status lines, Overrun, Parity and
- Frame, are set by the COM ports receiver to indicate a
- communications problem.
-
- 1. Overrun "set" means that another character has been
- received before the first one has been read by the PC.
- A possible cause for this is a baud rate too high.
-
- 2. Parity "set" means that the last character
- transmission was corrupted somehow. It obviously is
- significant only when parity checking has been enabled
- (See A.3.). Possible causes can be noise in the
- communications lines or improper parity polarity (odd
- or even).
-
- 3. Frame errors occur when a character was received
- without a valid stop bit. Possible causes include
- improper communications protocol (See A.).
-
- E. Interrupt Status
-
- Several conditions in the COM port cause cause
- interrupts to the PCs Microprocessor to demand some service.
- The four conditions are: Received Data Ready (See C.1.),
- Transmit Buffer Empty (See C.2.), Line Status (See D.) and
- Modem Status (See B.).
-
- 1. Output refers to an interrupt control signal that
- can enable or disable all interrupt requests from the
- COM port. If interrupts are to be used, it must show
- "enable".
-
- 2. Data Ready, if enabled, causes an interrupt when the
- Received Data Buffer is full (See C.1.).
-
- 3. Xmit Empty, if enabled, causes an interrupt when the
- Transmit Data Buffer is empty and another character can
- be sent.
-
- 4. Line Status would cause an interrupt, when enabled,
- if C.1., C.2., C.3., D.1., D.2. or D.3. are asserted.
-
- 5. Modem Status, like Line Status, causes an interrupt
- if B.3., B.4., B.5. or B.6 are asserted.
-
- How RS works.
-
- RS is written in assembly language, which explains its
- small size. The speed limitation on its execution is imposed
- by the BIOS and DOS display routines. RS is not a memory
- resident program; it does not trap any interrupts; it uses
- only BIOS and DOS display interfaces; it does not alter the
- port configuration.
-
- After displaying the title message, RS checks the
- "command tail" (any characters entered after the "RS"
- command) to see if any arguments are being passed. If a "2"
- is present, RS will access COM2: starting at port 2F8h. If a
- "1", no argument or an illegal value is passed, RS will use
- COM1: starting at port 3F8h.
-
- RS then reads all of the port registers and buffers
- into temporary RAM buffers used by RS. The Line Control
- Register is read, altered, and restored. RS checks to see if
- a port really exists there by verifying the read/write
- operation. Once all the registers are read, RS then scans
- the values in the RAM buffers to generate the messages to
- the display. This minimizes interruption of port activity.
- In the case of the baud rate, RS first compares the rate
- divisor to a table of standard values. If the port's rate is
- not found, the actual baud rate is calculated and displayed.
-
- RS terminates with a type 4Ch function call to DOS Int
- 21h. If the program executed normally a value 00h is
- returned. If the COM port is not installed or functional, a
- value of 01h is returned.
-
- Fred E. Davis 26 June 1986