A composite image of two screenshots, both showing DOS Navigator's hexeditor, with the affected byte-pattern above, and below with the fix.
https://files.mastodon.social/media_attachments/files/113/495/402/529/709/633/original/326066e12a183020.jpg
I involuntarily (cheers @root42!) spent my Saturday on tracing down an ancient Turbo C bug. ๐
The intr() function, used to call DOS/BIOS interrupts will pass the wrong BP register value to the interrupt. BP is heavily used in stack handling, so intr() generates a BP-reload-and-INT-trampoline on the stack, but the BP reload offset it creates is off-by-four.
Fix: Look for the sequence C6 46 F4 E2 in affected binaries, and change E2 to DE.
More details in reply. ๐งต
Bobinas P4G is a social network. It runs on GNU social, version 2.0.1-beta0, available under the GNU Affero General Public License.
All Bobinas P4G content and data are available under the Creative Commons Attribution 3.0 license.