I've come across an issue that may be relevant, it hasn't solved my issue with the CX(s)4235(yet), but I thought ID mention it as it may help others....
The more experienced on here may well correct me and indeed may well be aware of the issue ! apologies if I'm teaching my grandmother to suck eggs...
But it looks like in parts of the book386 only partial io address decoding is done, so you do get aliases, worth keeping in mind when you set IO addresses for sound cards etc...
TLDNR, keep io address assignments below 3FFh to be 100% safe. edit now ive done the maths AFAIK anything under 600h should be OK
The internal sound card, so that's the COVOX, OPL & Joystick ports have addresses fixed in hardware, but they are only decoding address lines A0 to A9, so will alias above 3FFh - apparently this was par for the course for ISA cards in the AT era...
The covox and the OPL only read from their addresses, so the only danger there is that if there is a clash they will just produce noise. The joystick port has data in both directions, I believe one address to tell it to 'fire' the timers and the results go on another address...
The M5113 multi IO chip does better, it seems to have A0 to A10 connected, so prob not an issue, it only aliases above 7FFh, i cant ever recall setting an address above this!
The RTL8019AS has 20 address lines, so better still...
Note that even though the M5113 & RTL8019 do better address decoding , that doesn't mean its 100% safe to use addresses over 3FFh for them, the other devices can alias into them...
So the easy option is to avoid using addresses above 3FFh (default on the CX4235 for WSS & CTRL are 534 & 538), I don't think the odds of a clash above 3FFh are that high, but if you want to use addresses above this and be 100% sure you'd have to do the maths...
Edit Ive done some maths, 530h, 530h & 538h should be safe from the internal soundcard alias, youd need to have something with 10bit partial address decoding @ address of 130h, 134h, and 138h to be a problem.
For ref, the aliases for the internal soundcard are:
Joystick:
201h aliases to 601h, A01h, E01h, 1201h, etc
202h aliases to 602h, A02h, E02h, 1202h, etc
covox:
278h aliases to 678h, A78h, E78h, 1278h, etc
OPL:
378h aliases to 788h, B88h, F88h, 1388h, etc.
Which are all above addresses Id expect to see, so, after all that long post, maybe not such a big issue!...