Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

6
  • Actually, I looked into your claim and it appears that the use of GetMemB(DS, ....) in the source code does support segment override prefixes. You can follow the definitions of the functions until you get to calc_addr or you can compare other uses of GetMemB in the same source file to see that passing DS actually does allow for overrides. I wrote up a report on the freedos-user mailing list as well as (a direct copy) on my blog: pushbx.org/ecm/dokuwiki/blog/pushbx/2024/… Commented Jul 1, 2024 at 17:55
  • s/freedos-user/freedos-devel/ Commented Jul 1, 2024 at 18:05
  • 1
    @ecm You're right, and it does look like that was already true when I wrote this answer. How embarrassing. I edited the answer. Commented Jul 1, 2024 at 19:22
  • 1
    If I recall, MASM would accept a memory operand for XLAT, even though the only thing the memory operand could possibly do was indicate what segment to use. If segment overrides weren't supported, use of an operand would seem completely pointless and nonsensical. Commented Jul 1, 2024 at 20:05
  • I'd also have to dig out an old hard drive to confirm this, but I suspect strongly that I would have used XLAT with a CS prefix in one of my old games (porting from Turbo 3.0 to Turbo 4.0 was annoying because the code exploited the fact that shapes stored in Const objects were accessible via CS prefix). Commented Jul 1, 2024 at 20:08