Keep in mind that DIP chips were still common as well, so there is also the problems of the limited number of pins.Most of the EGA registers live on one of the 5 custom LSI chips (save the External registers which are named quite literally, and are indeed some type of 74). IBM designed these chips themselves (unless they contracted it out...), so my conclusion is that they just hated us.
Only the CRTC chip even has an IOR line at all, so you can read those critical light pen latch registers. /s
It's possible it was due to cost or some other limitation that improved by the time the VGA was designed, where suddenly we can read everything. Consolidating the LSI logic probably made it easier, too as you didn't have to run 4 more IOR lines all over the board.
Keep in mind that DIP chips were still common as well, so there is also the problems of the limited number of pins.
That's all well and good until you get to task switching, and have to somehow deal gracefully with the potential mischief caused by code that isn't yours. Not impossible to deal with, but juggling saved video states and trapping port accesses probably didn't improve blood pressure among developers.The SOP with read-only registers is generally you assign a location in RAM that you update whenever your write the register, so if later you need to, say, flip a single bit in it, you can read the current state from said memory location and OR based on that. There really isn't a compelling case for readable configuration registers unless you're stuck trying to reverse engineer something a program that impolitely didn't update the RAM copy did.
That's all well and good until you get to task switching, and have to somehow deal gracefully with the potential mischief caused by code that isn't yours. Not impossible to deal with, but juggling saved video states and trapping port accesses probably didn't improve blood pressure among developers.
Only the CRTC chip even has an IOR line at all, so you can read those critical light pen latch registers. /s
Yeah, that's where it kind of breaks down; ideally everyone's a good boy and uses a documented OS call to touch hardware registers, but that's certainly not how DOS programs generally rolled.
Diagnostics, for one. I can see skipping read back of registers for super simple hardware, but I'd always want to be able to interrogate the state of the hardware for something as complex as a graphics video card.There are lots of peripheral chips where the read function doesn't correspond to the write function. The designers probably didn't think that reading back what was written was necessary. I can see the reasoning--if the programmer wrote a value, surely it's known what was written. Why include circuitry to parrot it back?
Keep in mind this was in 1983 as well when transistors were more expensive.Agree to disagree.