VScom 200,210,400,800,
110H,200H,210H,400H,410H,800H, 100L,110L,200L,210L,400L,800L PCI
|
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: |
VScom 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.
|
|
|
|
| |