• Please review our updated Terms and Rules here

PC I/O woes.....

prime

Experienced Member
Joined
Sep 20, 2009
Messages
153
Location
Coventry, UK
Hi all,

I finally think I've got to the bottom of the problems I was having with interfacing a DS12887 with the PC-RETRO board.
The PC-RETRO is a chip for chip copy of the 64K-256K 5150 board and so therefore has all it's problems / limitations, namely incomplete address decoding of the I/O space.

I intially tried the interface at I/O 0x140, 0x141, that initially seemed to work then the next day just returned gibberish.
So next I tried the "standard" AT compatible location of 0x70,0x71, and to my surpprise writing to it beeped the speaker and killed the keyboard.

So I went off and studied the IBM tech ref manual, seems that in the second instance the PPI at 0x60, is allocated a block of 32 bytes, so I was hitting a mirror of that at 0x70.
But an interesting thing was that in the tech ref for the 5150 (section 1-10 system unit), it lists 0x100-0x1FF as "Not usable", looking at the schematic I'm not sure why, but that did seem to be the case which is why 0x140 didn't work.
Interestingly the 5160 tech manual doesn't list anything for this range, but seems to have the same decoder circuit so I assume would have the same problem.

Anyway adjusted the hardware (and software) to address it at 0x240, 0x241 and it appears to be working absolutely without problems.

Oh and curses to IBM not deocding A10-A15 of the I/O space meaning that everything above 0x400, is just mirrors of 0x000-0x3FF :( :( :(

Cheers.

Phill.
 
That's not exactly true--there are some IBM cards (I think that the cluster adapter was one, but I'd have to check O&A to make sure) where the upper bits of the 16 bit I/O address are used as a card instance qualifier. It's mostly that the cards that don't decode the upper 6 bits.
 
But an interesting thing was that in the tech ref for the 5150 (section 1-10 system unit), it lists 0x100-0x1FF as "Not usable", looking at the schematic I'm not sure why, but that did seem to be the case which is why 0x140 didn't work.
Interestingly the 5160 tech manual doesn't list anything for this range, but seems to have the same decoder circuit so I assume would have the same problem.
The 5150 and 5160 motherboards decode different I/O address ranges.
See the 'Increased I/O port range for expansion cards to use' section at [here].
 
The 5150 and 5160 motherboards decode different I/O address ranges.
See the 'Increased I/O port range for expansion cards to use' section at [here].

Ahh well that does explain the flakeyness when operatin at 0x140 then, sometimes the RTC was able to 'win' the bus contention, and it looked like things where working. Other time the buffer 'won' and things got corrupted.

Cheers.

Phill.
 
Back
Top