|
MAIN
SUPPORT
FAQs
DOS compatible

DOS-Compatibility with the PCI-cards made by Vision Systems
VScom 200,210,400,800,
110H,200H,210H,400H,410H,800H, 100L,110L,200L,210L,400L,800L PCI
Definitions:
Very frequently there is the question whether the PCI cards
of VScom-series are DOS compatible, i.e. they shall run under DOS.
Even this kind of question opens a big space for misunderstandings.
To clarify these, and to give additional configuration hints, this
document is written.
First some definitions must be given, to avoid misunderstandings
right at the beginning. In most cases the question above does not mean,
whether the cards are DOS compatible (this are all cards with 2 and 4 serial
ports). The meaning is, whether an existing application can operate with
the serial ports
There are different levels of Compatibility:
- DOS compatible:
In DOS serial ports are named "COM1:" through "COM4:".
Access is via pseudo files, with exactly these names.
Thus it is possible to reset an attached modem via
Echo AT&F>COM3:
to the factory setting. The "file" COM3 is opened, some
characters are sent/written to this.
At this point it is emphasized, DOS has no knowledge of addresses or
interrupts.
- BIOS compatible:
To perform the above operation and all further functions, DOS calls the
BIOS. To be precise, these are the functions of Int 14h. To this
functions the serial port is named by a number from 0 through 3.
Programs by themselves also may call these functions, to perform additional
operations with the port. E.g. this is the only way to change transmission
parameters. Normally the program MODE is used for this. Terminal programs
like Telemate can use this API. The maximum speed possible here is
9600 Baud.
A program supplied by Vision Systems assures this level of
Compatibility. As an effect the DOS compatibility is also guaranteed.
Just to remove a very common error: the sentence
"COM1 is 03F8h"
is simply wrong. When starting the PC the BIOS searches for serial ports.
Depending on the manufacturer of the BIOS the searched ranges are flexible.
BIOSes of today typically search the range 03F8h, 02F8h, 03E8h and 02E8h.
But the PS/2-systems only use the first two of these, and six very other.
Very old PCs did only search the first two.
- FOSSIL compatible:
This is the name of a BIOS extension, very common in the mailbox scene.
It is the operation mode, which is closest to something called a
DOS-"driver". The Int 14h is extended, to support higher
speed, more ports, interrupt- and buffer-operation. There are common
shareware products. Our cards operate with most of them, even the
cards with 8 ports.
Applications using this interface, will run in Windows'9x and NT4
without changes. There are shareware products giving this interface
there.
- PC Hardware compatible:
The serial ports act like usual serial ports of a PC. To be very precise
this means compatible to the 8250 UART, for newer applications
also as a 16450 or a 16550 UART. They are able to generate an
interrupt, and they occupy an address range of 8 Byte length.
Here are the most problems. Typical DOS programs (more than 98%) use the
serial ports in this operation mode. This says these programs itself
are neither DOS nor BIOS compatible, they are PC compatible. Because
they access the hardware directly, they should be adjustable to the
actual hardware configuration.
And exactly that is the critical point. Some programs only allow
configurations with certain addresses, others fail in several
interrupt configurations.
Support:
Vision Systems delivers a program called
VSPCIDOS,
which constructs BIOS compatibility. The addresses of up to four serial
and three parallel ports are inserted in BIOS. Additionaly this program
displays the actual configuration. No more is needed, the ports may be
configured with the MODE instruction.
Unfortunately this is not sufficient in most cases, because the
applications itself are only compatibel to hardware. The optimal case
here is, the applications accept a "clean" configuration, the settings
match the actual situation of the hardware. Alternatively the hardware
may be emulated, see more below. For correct
configuration of the applications some items are involved:
- PCI is a Plug & Play system. This implies all
resources are assigned by the BIOS itself. In this special case
these are the addresses and the interrupts. Therefore these are
not configurable.
- In general PCI cards only receive one interrupt. As a consequence
all ports use the same IRQ. If a program shall use two or more
ports simultaneously, it must be able to correctly handle this.
- Especially the cards with 4 and more ports and all cards from the
H-series must use a block addressing
scheme. This is a restriction of the PCI bus. A large address
range is assigned, wherein smaller sections represent the ports.
- The cards from the H-series utilize
a FIFO of 128 Byte length.
- All serial ports are set to an 8 times clock rate in the
base configuration. Therefore the maximum speed is not 115200,
it is 921600 bps. The base configuration may be changed in
a way, which reduces this to 115200 bps again.
- PCI defines only four interrupts (IntA through IntD). If more
than four PCI components are in a system, at least two of them
use the same interrupt. This is explicitely foreseen in the
specifications of PCI bus. But this means interrupt-sharing
with another card, which is very unusual for old ISA systems.
Typical programs can not handle this.
- The I/O addresses used by PCI are much above 1000h, i.e. they
need more than 10 significant bits. Some programs have a problem
even with this. Namely MSD.EXE does only display ports, if the
addresses are lower than 03FFh. But this is not related to a
successful operation of these ports via the BIOS, e.g. printing
to LPT2.
Emulating old hardware:
If an application fails to operate under these circumstandes,
there is another option. The driver
VSEMUIO can emulate the ports.
This is it accepts a all ports with address and IRQ, but makes them
available with another address and another IRQ. Doing this it also
corrects the 8fold speed of some ports. The applications notice this
address and IRQ as a "normal" port.
This requires loading of EMM386 or a compatible Memory Manager.
And of course this tool can not resolve IRQ conflicts. If the cards
utilizes the same IRQ as a SCSI controller, there is a high
probability this controller will not operate.
Decision criteria:
Before operating a PCI card in DOS there are a lot of data
to check. And one should face to change the software. Existing software
is used for longer time to secure already invested money. It is necessary
to get matching hardware. But this will become more and more difficult
as time passes. It requires more work to adjust the systems to the software
(if possible). One can see, future systems will block applications from
accessing the hardware. This is the task of drivers.
To prove an existing program, this list of checks may be useful:
- Free choice of interrupts?
This should be possible. Otherwise it is very difficult to
adjust the system.
- Is interrupt sharing possible?
If not, the ports may only used one after the other.
- Does it uses the BIOS? Or even FOSSIL?
Then it will operate 4 ports without a problem. With
assistance of a FOSSIL-driver the efficiency may be increased
even more.
- Is it possible to enter every possible address value?
This would be very nice. Maybe a dynamic configuration
(Plug&Play) is possible.
- Are addresses limited to 12 (or 10) bit length?
In this case the address of the PCI card must be changed
after BIOS assigned one. In principle this is possible, but it
may fail on some mainboards. Especially if many (more than 4)
PCI slots are available.
- Does it allow only the four most usual (i.e. 03F8h,02F8h,03E8h,02E8h)
addresses?
Very bad. It is likely also the interrupts are not configurable.
- Does it allow only COM1 through COM4 as input?
This program is very old (and written badly), one should seriously
face the option of writing an enhanced version.
It is impossible to configure a PCI card in a way to match the old
configuration of the IBM PC. This is the combination of
addresses/IRQ as 03E8/4 and 02E8/3.
|