• Please review our updated Terms and Rules here

XT-IDE Rev 2 UART Location

evildragon

Veteran Member
Joined
May 29, 2007
Messages
1,646
Location
Tampa Florida
Ok, so I have been looking real hard to see if I can even use the UART on the rev 2 XT-IDE. Documents on the card, seem to be missing one crucial piece of information I need, where is the UART being decoded? I know jumpers P12 set the IO, but I have no idea what the settings are.

I see in everyones picture that on P12, people are putting a jumper closest to the IDE port. But where is this being decoded?

All software I have tried to use, to use this UART, just can't find any COM ports more than the 1 serial port already built into the computer. Any help would be greatly appreciated.
 
If you look at the schematic it should be reasonably clear.

https://files.pbworks.com/download/Wc4zEmmA8j/n8vem-sbc/44294918/Printing XT-IDE V2-sch.pdf

It looks like the address bits A9-A3 are compared by U11 74LS688 with P12 and JP3, where a jumper installed pulls the U11 bit low and no jumper installed allows the bit to be pulled high by RR3


Code:
I/O Address Bit:   9  8    7   6   5   4     3   2  1  0
Jumper P12 / JP3:  H 1-2  3-4 5-6 7-8 9-10  1-2  X  X  X
H - Fixed High, X - Don't Care

With no jumpers installed in P12 and JP3 it should match address 0x3F8 - 0x3FF.

If you install jumper P12 1-2 it should match address 0x2F8 - 0x2FF.

If you need a different I/O address just convert the address to binary and install an appropriate jumper where the binary address bits are zero.
 
If you look at the schematic it should be reasonably clear.

https://files.pbworks.com/download/Wc4zEmmA8j/n8vem-sbc/44294918/Printing XT-IDE V2-sch.pdf

It looks like the address bits A9-A3 are compared by U11 74LS688 with P12 and JP3, where a jumper installed pulls the U11 bit low and no jumper installed allows the bit to be pulled high by RR3


Code:
I/O Address Bit:   9  8    7   6   5   4     3   2  1  0
Jumper P12 / JP3:  H 1-2  3-4 5-6 7-8 9-10  1-2  X  X  X
H - Fixed High, X - Don't Care

With no jumpers installed in P12 and JP3 it should match address 0x3F8 - 0x3FF.

If you install jumper P12 1-2 it should match address 0x2F8 - 0x2FF.

If you need a different I/O address just convert the address to binary and install an appropriate jumper where the binary address bits are zero.

Well we have a problem here then. I don't even have JP3. I would like to use 0x2f8, but it would appear with P12 set with a jumper nearest the IDE connector, it's decoding at 2f0, but nothing is looking there.
 

Hmm, I don't know the revision history of the XT-IDE REV 02 PCB layout.

My REV 02 PCB matches the one in this photo (except my boards have 5112 screened on the right side where it is 5111 in this photo) where JP3 is immediately to the right of P12 and immediately above Pin 34 of the 16550 UART. Basically it is the right most jumper of a 6-position dual row header which makes up both P12 and JP3 together, while your photo only shows pads for a 5-position jumper in that location.

http://www.waste.org/~winkles/xtiderev2.jpg

I got my boards directly from Andrew. If you also got your board directly from Andrew maybe he can explain the discrepancy between the boards.

-Glen
 
Hi

That's an XT-IDE V2 prototype board from the pre-production batch. I have no idea how you've gotten it unless you were one of the initial build and test builders. I can tell it is one of the 4PCB prototype boards because of the silkscreen and it has tinned ISA card edge pins.

Honestly, a pre-production prototype is going to be weird. I'd either patch it manually with cuts and jumpers or trash it. They've served their purpose but were never meant to be used full time. They were pre-production prototype boards and inherently temporary units.

I hope this helps. Thanks and have a nice day!

Andrew Lynch
 
Hmm, I don't know the revision history of the XT-IDE REV 02 PCB layout.

My REV 02 PCB matches the one in this photo (except my boards have 5112 screened on the right side where it is 5111 in this photo) where JP3 is immediately to the right of P12 and immediately above Pin 34 of the 16550 UART. Basically it is the right most jumper of a 6-position dual row header which makes up both P12 and JP3 together, while your photo only shows pads for a 5-position jumper in that location.

http://www.waste.org/~winkles/xtiderev2.jpg

I got my boards directly from Andrew. If you also got your board directly from Andrew maybe he can explain the discrepancy between the boards.

-Glen

Well the only thing I can think of, is that my board was almost a prototype. ;) But I figured that the 5 positions should still be the same though. But if they decode at 2f8 and mine seemingly is at 2f0, then there must be a difference. I have the same one as Jeff when we tested.
 
Hi

That's an XT-IDE V2 prototype board from the pre-production batch. I have no idea how you've gotten it unless you were one of the initial build and test builders. I can tell it is one of the 4PCB prototype boards because of the silkscreen and it has tinned ISA card edge pins.

Honestly, a pre-production prototype is going to be weird. I'd either patch it manually with cuts and jumpers or trash it. They've served their purpose but were never meant to be used full time. They were pre-production prototype boards and inherently temporary units.

I hope this helps. Thanks and have a nice day!

Andrew Lynch

I was helping with Jeff. Remember? I got the IDE decoding before even he did, haha.

It won't be a terrible loss if I can't actually use the UART on it, that's ok. I was just kind of hoping I could get something out of it. This is the one btw I had to replace the 74ls688 on btw. Were there changes to that for the EEPROM in the final batch?
 
I was helping with Jeff. Remember? I got the IDE decoding before even he did, haha.

It won't be a terrible loss if I can't actually use the UART on it, that's ok. I was just kind of hoping I could get something out of it. This is the one btw I had to replace the 74ls688 on btw. Were there changes to that for the EEPROM in the final batch?

Hi
I think you can use UART but it is stuck at the IO addresses ending in 0. I would try to cut and jumper the 74LS682 so that it accepts A3 (I think) then it will be able to decode at addresses ending in 8

Thanks and have a nice day!

Andrew Lynch
 
Hi
I think you can use UART but it is stuck at the IO addresses ending in 0. I would try to cut and jumper the 74LS682 so that it accepts A3 (I think) then it will be able to decode at addresses ending in 8

Thanks and have a nice day!

Andrew Lynch

It doesn't have a 682 anymore. In it's place is a 688, because with the 682 the computer was unable to POST. Do I still treat it the same way?
 
No matter where the IO is decoded for the UART, you can still use it; I have one of those prototype cards too, and the boot over serial option is able to scan enough IO ports that it'll find it. How are you planning on using it? What software?

If you are planning on actually using it for software that we didn't write (like a mouse or laplink perhaps) you might just have to update the BIOS data area at 40:0-40:7 to add the base address of where the port is to the available list of COM ports. A tiny .com program loaded in your autoexec should take care of that, and then other software can see and hopefully use it.
 
I dunno if you will be able to use the high speed crystal with it, or even if you have a high speed crystal in yours.
When I was playing around with laplink and the XTIDE2, laplink has an advanced COM port setup screen where you can actually type in the base address of the COM port and it worked. If bananacom doesn't have anything like that, it is probably scraping the addresses of available COM ports from 40:0. If you're not familiar with how to do it, it is super easy to modify this area of memory with debug- I can write up a couple steps to show you.
 
Sure, please show me, I'd be interested to see if it works, because Bananacom doesn't allow me to select the IO. Besides, learning is the most important, rather than just making a TSR. ;)

Mine does have an oscillator installed, as to the speed though I don't know what it was.
 
Assuming your card is set to 2f0 (adjust as needed)
boot to DOS
start debug.exe
at the - prompt, type "d 40:0" and press enter (no quotes)
the display will look something like this:

C:\>debug
-d 40:0
0040:0000 F8 03 F8 02 00 00 00 00-BC 03 78 03 78 02 C0 9F ..........x.x...
0040:0010 23 C8 F0 80 02 00 00 20-00 00 2C 00 2C 00 64 20 #...... ..,.,.d
0040:0020 20 39 34 05 30 0B 3A 27-30 0B 0D 1C 00 00 00 00 94.0.:'0.......
0040:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0040:0040 D1 00 C3 00 07 8B 3E E2-CA 03 50 00 40 1F 00 00 ......>...P.@...
0040:0050 00 0A 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0040:0060 07 06 00 D4 03 29 30 0F-1C 00 F0 00 1E 1B 0E 00 .....)0.........
0040:0070 00 00 00 00 00 00 08 00-14 14 14 14 01 01 01 01 ................
-
The bytes above that say "F8 03" and "F8 02" are the base addresses for COM1 and COM2 respectively. The 2 sets of "00 00" following are the base addresses for COM3 and COM4. Since they are 00 00, that means COM3+4 are not installed.
Yours may or may not be different, depending on what other COM ports you may have in your machine that your BIOS has detected.

If you have no COM ports in your machine, you may find these first few bytes as all 00's.
What you want to do is add in the next available COM port and set the base address to where your UART is on the XTIDE.
So, if you have no other COM ports installed, you're going to add COM1, so type this:
-e 40:0
debug responds with:
0040:0000 00.
type in f0 and then press the space bar. Debug prints the next byte and a dot: 00.
type in 02 and then press enter.
You've just updated the 2 bytes in memory.

Repeat the above d 40:0 and the display should show your new byte changes.

to exit debug, type q and then enter. Start banacom and see what happens.
You will have to do this every time you reboot the machine. (a small .com program to do this for you is easy to write)

=====================================
that MIGHT be all you need to do to get banacom to see you have a COM port, at COM1, and its base address is 2f0.
If it still doesn't see it, we may have to adjust the equipment list results that come back from Int 11h. Report back with your findings and we'll go the next step.

As for the UART speed, the oscillator speed is printed right on the can itself. The high speed Oscillator is 7.3728MHZ according to the wiki. This is likely too fast for banacom to work with, as most COM programs back in the day topped out at 57.6k. If you can't configure the COM port to 460k baud, you won't be able to talk over it and you will have to get a slower oscillator. that's the next failure point after the 2 I've already covered here. ;)
 
The computer already has a COM1 built into the motherboard, so right now it reports F803, 0000.. I need it at COM2.

So I gave it the following bytes: F8, 03, F0, 02.

Bananacom still wouldn't see COM2. However, "syschk" DOES see it now, and I identifies the UART and it's IRQ correctly. Checkit3 does NOT see it either.

So that command did work somewhat.
 
ok, the next step may be changing what is reported by INT 11h (get equipment list)
When INT 11h is called, the BIOS merely scoops up the value in memory sitting in 40:10 (just down the road from where we were playing earlier).
So now we need to change bits 11:9 of that value.

back in debug:
-d 40:10
mine shows a value of 23 c8, yours will be different. You can see my data in my earlier post where I show the debug data.
You need to use the same -e 40:10 command as we demonstrated above to change whatever value you have and increment the value in bits 11:9 by 1, since we've added 1 COM port to your machine.

If you need help with this, let me know what your value is at 40:10

After this, we are quickly running out of my brain's ability to get to the next step. How the baud rate is determined/set I'm not 100% sure on without doing some research. hopefully someone else can chime in and carry the torch.
 
Yea I'll definitely need help with this, I'm not that good with DEBUG.

IMG_1877_zpsa2e185c2.jpg


That's the contents.
 
grrr. lost my previous attempt at this.
ok, I cannot see your screenshot- my workplace blocks lots of photo hosting sites.
anyway, we can step through this with an example.

c:\>debug
-d 40:10
0040:0010 27 42 00 77 02 00 00 20-00 00 32 00 32 00 34 05 'B.w... ..2.2.4.
...

The 27 42 are the 2 bytes we're targeting, and since we're only concerned with bits 11:9, we really only need that "42" since that value has all the bits 15:8.

42 in hex breaks down to 0100 0010 in binary. (you can do this in google!)
------------------------------^^-bits 11:9 are 001
Add 1 to that value. New value is 010.
roll it back in 0100 0100 = 44

you want change "42" to "44" in debug:
-e 40:11
0040:0011 42.
---------------^^
you will type 44 here and then enter
done.
-q

this change, combined with the earlier one that sets the base address for your 2nd com port, should now have tricked the BIOS/software into seeing 2 COM ports.
 
Last edited:
Back
Top