Kermit FAQ - MS-DOS Kermit under Windows Can't Find My Port

(Home) (Prev) (Next)

24 MS-DOS Kermit under Windows Can't Find My Port

Q: We use Kermit 3.14 very heavily on our campus. From DOS everything works great. From MS-Windows 3.x, however, sometimes it works but often our users will get a message like:

  Unknown hardware for port, using BIOS...
or:
  Cannot use RTS/CTS on non-UART port

A: First, let's assume that your COM port is not, in fact, an internal "controllerless" modem, such as a Winmodem or RPI modem -- you can't use these with MS-DOS Kermit or, for that matter, with any non-Windows application or in any operating system other than Microsoft Windows. See the sections on RPI modems and Winmodems for more information about this.

Windows and/or Windows communications programs tamper with the PC BIOS, where Kermit goes to find out what ports are available and what their addresses (and IRQs) are. The solution to this problem is to supply this information to Kermit yourself.

Here is a macro you can use to set your port under Windows. MS-DOS Kermit 3.14 is required.

  define PORT -
    if not = \v(argc) 2 end 1 Port number required, -
    if not = 0 \findex(:\%1:,:1:2:3:4:) forward PORT\%1, -
    end 1 \%1 - bad port number, -
    :PORT1, set com1 \x03f8 4, set port 1, end \v(status), -
    :PORT2, set com2 \x02f8 3, set port 2, end \v(status), -
    :PORT3, set com3 \x03e8 4, set port 3, end \v(status), -
    :PORT4, set com4 \x02e8 3, set port 4, end \v(status)

Put this macro definition in your MSCUSTOM.INI file and then just tell Kermit "port 1", "port 2", "port 3", or "port 4" instead of "set port 1", etc, and everything should work as expected.

IMPORTANT: The addresses and IRQs are the most common ones, but they are not going to work on every machine. PS/2s have different addresses and IRQs for COM3 and COM4. Many add-on cards -- especially internal modems -- might use different IRQs altogether, like 5. Again, see KERMIT.BWR for the gruesome details.

Another user found that the following PORT macro also worked satisfactorily:

  define PORT -
    if not = \v(argc) 2 end 1 Port number required, -
    if not = 0 \findex(:\%1:,:1:2:3:4:) forward PORT\%1, -
    end 1 \%1 - bad port number, -
    :PORT1, run {MODE COM1:19,N,8,1}, set port 1, end \v(status), -
    :PORT2, run {MODE COM2:19,N,8,1}, set port 2, end \v(status), -
    :PORT3, run {MODE COM3:19,N,8,1}, set port 3, end \v(status), -
    :PORT4, run {MODE COM4:19,N,8,1}, set port 4, end \v(status)


Kermit FAQ / Columbia University / kermit@columbia.edu