• Please review our updated Terms and Rules here

Tandy 100HX port help please

hargle

Veteran Member
Joined
Nov 30, 2007
Messages
1,397
Location
minneapolis, MN
Just got my first tandy 1000HX machine up and running, and I'm trying to figure out why the XT-IDE controller isn't working on it. I've discovered that there is some really, really funky IO port stuff going on in it.

If I do the following things in debug, I get different answers:

-i 80
results in 0e

in al, 80

results in ba

mov dx, 80
in al, dx

results in ae

WTF?

Every single port I read does this same change of values when reading in from the same port. How is that possible?
 
Do you have anything options other than the memory card installed? That is, does it behave like this when the XT-IDE is not installed? What if you disconnnect the ISA adapter you made? Still the same results?

I'll try the same thing on the HX I have as well as an SX and see what I get. It will take a couple of days.

Kelly
 
yep, same thing with or without the XTIDE, the home made adapter cable, and even without the memory expansion module. It's a core thing.

I'd appreciate the checkout of another machine.
 
If it helps, I have an ADP-50L with a 2.18T BIOS, the "T" I believe singifying Tandy compatibility. I could dump the BIOS for you.

Lots of ports in the Tandy 1000 are write only, so it is not surprising if you get random values if you try to read from the port. I/O 80H is not used.
 
Last edited:
Have you looked at the disassembly of your program snippets?

I was similarly puzzled by a strange but predictable input from
a non-existent memory location.
It turned out to be the last byte of the operation making the access.
Makes sense.
 
If the I/O port doesn't exist, or the device it belongs to isn't responding, the return is whatever noise was left on the bus. That is, you're not guaranteed any specific value.

Drifting off topic a bit, that's another design deficiency in the PC architecture--there's no "deadman" facility on bus accesses. Many other system designs have a simple timer (usally a one-shot) that is enabled on an I/O or memory access and reset when a device or memory responds. If no response, usually an NMI is triggered. This makes it easy for the system to determine how much memory and what I/O devices are present.
 
Have you looked at the disassembly of your program snippets?
those were my code snippets. ;)
it was written in assembly, in debug.

on every machine I've ever used, I have always seen unused (non decoded) IO ports return FF.

I can live with unused ports being goofy, but the fact that our IDE controller card, which is explicitly supposed to decode at 300h, was doing the exact same thing. Move the card into any other machine, and it does what you expect it to do. It's like our card doesn't exist in tandyland.

I'm trying to determine more if this is an anomaly with the Tandy in general, my particular tandy, or the gin and tonic I had before playing around with the machine.

Obviously, the next thing I need to do is try other cards in the machine and see if those IO ports start decoding, and then bring out the logic analyzer and see if we're getting an IO read signal when I try and access the card.

My concern is that this is lower level than I really want to be; I'm a software guy and I don't want to debug hardware! I'll be spinning my wheels for weeks.
 
Sorry, I meant machine code bytes and addresses, not disassembly.
Because of prefetch, the echoing byte might be found beyond the IN.
 
ok, well, two things:

1) i'm an idiot. the card I was trying to get to decode at 300h was actually jumpered to decode at 380h, so it's no wonder I couldn't find it at 300h.
Once I realized this, the card decoded properly at 380h as expected.

2) because of this, I no longer care about how unused IO ports act weird on a tandy machine. It's an anomaly, and I don't think it's right, but there's not much I can do about it, so I'm going to close the case on this thread.

thanks all for your help!
 
Well, just a general comment.

Is the value of a read from an unused port actually defined?



Mike
 
not being a hardware guy, I can't say for sure.
In my mind, I always pictured that the address lines had pull ups on them so they didn't float, and that if no device responded at the specified request, you'd just read back all 1's.

I do a LOT of poking around on machines for my job, easily 15 years worth of snooping through hardware in IO and memory spaces, and I have never, ever seen anything do this before. In all of my work, unused IO and memory always report back FF's.

that said, all of my work in the past 15 years has also been on modern machines at the time I was working on them. These old beasties from the dawn of the PC age obviously are different.
 
well unfortunately, my 1000HX was recently thrown in the garbage by a grandfather who figured it was trash but when i had it i did notice that there was some weird IO stuff like you describe when i was trying to hook up an ISA serial card and was poking around with the ports manually.

tandy 1000-series systems tend to just be funky machines in general.
 
Back
Top