I'm sorry, it's all my fault!
Let me explain.
A while ago -- well, 20+ years ago -- I was reading Wine code over and discovered a number of problems big and small. I have no recollection of what they actually were, but I shipped the list off to Alexandre who took at least some of my suggestions. Including one that was wrong.
And that is why we have code like http://source.winehq.org/git/wine.git/blob/HEAD:/dlls/krnl386.exe16/instr.c#...
That FIXME is old -- older than the bug, actually. The answer is that no, it's not correct, but it used to be. "outsb" allows segment override, even if insb does not, see http://x86.renejeschke.de/html/file_module_x86_id_223.html
The wine source file has gone though a few renames since then. I tracked it back to here: http://source.winehq.org/git/wine.git/history/58371aa361c7b119a5880b2f69d845...
The first bad version occurs on 960114 -- so long ago that two-digit years were still a thing.
I realize that it doesn't matter in practical terms. The code is unlikely to have been run multiple times over the past 20 years. Still, it's my fault.
Morten Welinder
PS: Please don't take my word for it. I really don't want to return in 2036 with an update.
PPS: Keep up the good work!