• Please review our updated Terms and Rules here

56k serial port

evildragon

Veteran Member
Joined
May 29, 2007
Messages
1,646
Location
Tampa Florida
I got an ISA card that's got a serial port, in which when in my modern PC, ran fine at 56k.

I put it in my PS/2 model 25, and I can't seem to get it to work reliably over 19200.. It works fine at 19200, but anything over and I get corrupted characters on the screen (terminal emulator to my domain controller)..

Does the ISA cards not have their own serial controller?
 
It's a case of "can't get to the interupts fast enough". I had the same kind of problems with fast optical readers back in "mini" days.
 
Basic PC architecture lession:

The serial card has a UART on it. The UART takes data from the computer 8 bits at a time and makes it into a serial data stream, or takes a serial data stream and converts it back to a byte. The speed of the serial data stream is programmable to match a modem, another UART, or whatever is on the other end of the serial cable.

The UART has a limited ability to buffer bytes coming from the wire. Early UARTs such as the 8250 only buffer 1 byte at a time. Newer UARTS such as the 16550 buffer up to 16 bytes. If the computer doesn't get the bytes from the UART quick enough, they are overwritten and become 'lost'.

The computer can either poll the UART, or set it to generate an interrupt. Polling is faster but takes much more CPU to do it. Interrupts allow the computer to do other things in between bytes being received, but each interrupt is slow compared to polling.

Your computer is too slow. It might be bad software that is not using the UART effectively, or it might be busy doing other things (like writing the screen) and it can't get to the bytes on the UART fast enough.
 
I got an ISA card that's got a serial port, in which when in my modern PC, ran fine at 56k.

I put it in my PS/2 model 25, and I can't seem to get it to work reliably over 19200.. It works fine at 19200, but anything over and I get corrupted characters on the screen (terminal emulator to my domain controller)..

Does the ISA cards not have their own serial controller?

The built-in serial port UART on the 8086-based (8MHz) Model 25 is just an 8250, with no FIFO buffers, so it also doesn't turn on the FIFO buffers of an add-in card. You are doing a direct connection (null modem cable) to the DC? With knowledge of what COM port on the adapter you could try a little stub program to turn on the FIFO buffers (in the 'Undocumented PC' book they also has routines to test the fastest link speed over a null modem cable) if present (which will help the interrupt occurances quite a bit; What communications program are you using?).

Even the Model 25 286 (10MHz) planar has only a 16450 UART level (still no FIFO buffers). The 25SX (386SX at 16 or 20MHz) probably has a 16550 level, but I haven't directly checked. Which model do you have, and is your serial adapter 8-bit or 16-bit?
 
The built-in serial port UART on the 8086-based (8MHz) Model 25 is just an 8250, with no FIFO buffers, so it also doesn't turn on the FIFO buffers of an add-in card. You are doing a direct connection (null modem cable) to the DC? With knowledge of what COM port on the adapter you could try a little stub program to turn on the FIFO buffers (in the 'Undocumented PC' book they also has routines to test the fastest link speed over a null modem cable) if present (which will help the interrupt occurances quite a bit; What communications program are you using?).

Even the Model 25 286 (10MHz) planar has only a 16450 UART level (still no FIFO buffers). The 25SX (386SX at 16 or 20MHz) probably has a 16550 level, but I haven't directly checked. Which model do you have, and is your serial adapter 8-bit or 16-bit?
my model 25 is the 8086 XT model..

On the IBM, I am using BananaCom, and on the Domain Controller (win2k3, pentium iii), i am in fact using a null modem cable..

I forget what I used on the DC, but it allows the IBM to "log in" with Active Directory credentials, and gives the IBM the DOS prompt from the DC, and even gives me internet access too...

the serial adapter is 16-bit.. though 16-bit, it does work in my 286 (in it's 8-bit slot), at fast speeds fine (33K I think was the fastest it would do on it)
 
my model 25 is the 8086 XT model... the serial adapter is 16-bit.. though 16-bit, it does work in my 286 (in it's 8-bit slot), at fast speeds fine (33K I think was the fastest it would do on it)
Usually the 16-bit serial port adapters are just that way to be more configurable on IRQ settings. Is it just one serial port, more, or even parallel ports? Do you see which UART is used? What COM port and IRQ do you have the port you are using set to?

Some later communications programs do turn the UART FIFOs on if present. With some knowledge of how things are laid out it is possible to investigate. There are also utility programs already written that turn on the UART FIFOs too (later model computers did this automatically in their ROM BIOS routines, or let the post-DOS OS or communications program easily do it.

I have easy access to a DOS program that checks if the FIFO buffers are on if that level of UART is present. It came with the book I said, "Undocumented PC" and actually had a bug that would turn the buffers off in the detection routine. Once I knew of the bug I rewrote that section (in Assember) not to have that behavior.

Others could probably give the math to say roughly what speed you could expect to be the maximum. Be aware, if the communications program is running the UART as an 8250 the maximum rate is about 19,200bps. What more the FIFO buffers could give remains to be seen.
 
Usually the 16-bit serial port adapters are just that way to be more configurable on IRQ settings. Is it just one serial port, more, or even parallel ports? Do you see which UART is used? What COM port and IRQ do you have the port you are using set to?

Some later communications programs do turn the UART FIFOs on if present. With some knowledge of how things are laid out it is possible to investigate. There are also utility programs already written that turn on the UART FIFOs too (later model computers did this automatically in their ROM BIOS routines, or let the post-DOS OS or communications program easily do it.

I have easy access to a DOS program that checks if the FIFO buffers are on if that level of UART is present. It came with the book I said, "Undocumented PC" and actually had a bug that would turn the buffers off in the detection routine. Once I knew of the bug I rewrote that section (in Assember) not to have that behavior.

Others could probably give the math to say roughly what speed you could expect to be the maximum. Be aware, if the communications program is running the UART as an 8250 the maximum rate is about 19,200bps. What more the FIFO buffers could give remains to be seen.

the 16-bit card also has parelell, IDE and floppy stuff on it too (and i think "game/midi")... though the XT ignores the storage stuff, as I figured, as the card don't have a BIOS for it..

I left the card settings default, on what the jumpers were set at, as they are not even marked..
 
the 16-bit card also has parelell, IDE and floppy stuff on it too (and i think "game/midi")... though the XT ignores the storage stuff, as I figured, as the card don't have a BIOS for it..

I left the card settings default, on what the jumpers were set at, as they are not even marked..

Any visible UARTs (40-pin DIP, marked as '8250', '16450', '16550', etc.)?
 
Perhaps the UART circuitry is implemented within a custom (Winbond) chip?
Undoubtably, but most likely at the 16450 level (just an 8250 with improved timing, but no FIFOs). There are 8-bit cards with 16550-level UARTs (usually a 16C1552, with two serial ports and a parallel port). I've got a few around.
 
Back
Top