In the late MS-DOS era, what were the state of the art software tools for reverse engineering and patching binaries, i.e. .exe and .com files?
A simple list of the tools that were "state of the art", widely used, or considered excellent, and what they were used for, for DOS would suffice. However, the answer to this question might also depend on the answer to "What do you want to do with such a tool?". For this reason I have provided a concrete example with a use case, consider the following:
I have an old game I would like to run, but my DOS machine has too much RAM. The game issues a simple error: "Program too big to fit in memory". I have reason to suspect that it is indeed extended memory which is "insufficient", and not simply a lack of conventional memory which would typically be the case. This is beyond the point anyway, but this might be due to an integer overflow or similar issue. I want to find whatever code is doing this and just NOP it out, patch the binary, and see if that makes the problem go away.
I would like a tool that allows me to search for strings in memory, in particular that above-mentioned error. It would be nice if the tool could list references to the string. Obviously I would want to be able to have basic debugging functionality as well, breakpoints, watchpoints, etc.
Finally, I would like to be able to patch the .exe file and save it.
Obviously, I could use modern tools for this particular problem, such as IDA pro, on a modern system, but I would like to do it on the DOS machine, partly just to play around with such tools.