PDA

View Full Version : Need info on the 8250 UART BIOS pach used in the IBM XT



rorypoole
May 27th, 2006, 04:13 PM
I want to replace the 8250 UART in my IBM XT with a 16550A but the original 8250 UART had several bugs so the original IBM BIOS includes code to work around these flaws, but this made the BIOS dependent on the flaws being present so subsequent parts like the 8250A, 16450 or the faster 16550A 16550D could not be used in to upgrade the original 8250 in the IBM PC or IBM PC/XT.

So any information on the BIOS pach used in the IBM XT would be very usefull to me.

mbbrutman
May 27th, 2006, 04:18 PM
You should try to find the data sheets for the 8250 and the 16450 or 16550A. Besides the data sheets, National Semiconductor will have application notes that might address those specific bugs.

As a backup, you can take a look at the BIOS listings of a PC XT and a PC AT, and see the differences in the serial port code. The BIOS listings are in the technical reference manuals from IBM.

rorypoole
May 27th, 2006, 08:34 PM
where can I get technical reference manuals

rorypoole
May 27th, 2006, 09:16 PM
From what I can find online the 16550 is pin compatible with the 8250, its the IBM XT BIOS thats the problem.

mbbrutman
May 28th, 2006, 07:21 AM
The name of the books are "Technical Reference Personal Computer XT", "Technical Reference Personal Computer AT", etc. They are published by IBM and were extra cost options when you purchased a PC from them. Mine cost me $75 in 1985 when I purchased it for a PCjr. There is a lot of good information in the books, including the BIOS listing for everything except Microsoft's built-in BASIC and the wiring schematics for the machine.

Yes, they are pin compatible. The XT BIOS coded around the bug in the 8250, so saying that the XT BIOS is the problem is not entirely correct. :-)

Keep in mind that you only really care about the BIOS bugs if you are going to use the BIOS. The BIOS is just software, and you can do anything the BIOS is doing with your own software. If you were to drop a 16550A in place of an 8250 you would just need to do some more programming. (I.e, don't rely on the BIOS to setup the data rates anymore ...)

Do you do any x86 assembly language programming? Now would be a good time to learn. :-)

modem7
June 1st, 2006, 04:42 AM
Re "Keep in mind that you only really care about the BIOS bugs if you are going to use the BIOS"
Yes, in fact, modem/serial software such as Procomm didn't use the BIOS routines at all - it set up and communicated with the UART directly.

The 8250 had a single receive buffer, whereas the 16450 had a three level buffer. You sometimes had to allow for that when writing your own code that communicated with the UART directly.

You can of course program using a higher level language than x86 assembly language. In case you're interested, I've attached Turbo Pascal source code for a serial port diagnostic program I wrote back in about 1990. It doesn't use the BIOS routines. It works on PC's, XT's and early model PS2's (but it will probably hiccup on anything post 1990). Designed to run in DOS only (ie. not a DOS shell within Windows).

mbbrutman
June 1st, 2006, 06:30 AM
Another alternative is to use a FOSSIL driver .. I'm quite certain none of those would use the BIOS directly. That would give you the buffering support for your programs, but not for things like Procomm which insist on manipulating the hardware directly.