VOGONS


First post, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie

On most later PC-compatible systems, reading from an unmapped I/O port always returns $FF. I assume this is due to pull-up resistors basically removing anything that was previously put onto the bus. However, this is not true for all systems. My Tandy 1000 TX, for example, will just return the last byte that was put onto the bus --- either by writing to an unmapped I/O address, or by reading from a readable I/O address.

Open bus behavior matters, for example, when trying to differentiate OPL2 from OPL3. Yamaha and Creative documentation claims that the OPL2's index port will always return $06 when read from. This is not completely true --- bits 1 and 2 (together yielding $06) are actually open bus, and will only return $06 if the bus hardware has said pull-up resistors. On my Tandy 1000 TX, reading from $388 will only yield $06 if you first write a value with bits 1 and 2 set onto the bus!

I wonder how the original IBM PC, XT, AT, and PCjr behave when reading unmapped I/O ports, such as $3FF.

Reply 1 of 2, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie

On my 486 it seems that unused ports below $100 return 0, above that return 255.

On my AT the most common result is 3. (I used a QBASIC program to read the IO ports and display the result. Maybe QBASIC was also doing some port I/O which resulted in 3 being on the bus)

again another retro game on itch: https://90soft90.itch.io/shmup-salad

Reply 2 of 2, by Tiido

User metadata
Rank l33t
Rank
l33t

When ISA is also the FSB as it is case with stuff older than 386 you get last fetched instruction or data read/write on the bus held by capacitance when there are no pull up or pull down resistors on the bus.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜