From 451d07d8da9ce8177d3ce25a90c86f534fd19174 Mon Sep 17 00:00:00 2001 From: ripsaw8080 Date: Sun, 10 Sep 2017 11:22:52 +0000 Subject: [PATCH] Point DOS redirected interrupts at a plain IRET as in real DOS. Prevents erroneous detection of an active debugger, which for example fixes sound in Microleague Football 2. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4046 --- src/dos/dos_memory.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/dos/dos_memory.cpp b/src/dos/dos_memory.cpp index 67761a3d..ced851d3 100644 --- a/src/dos/dos_memory.cpp +++ b/src/dos/dos_memory.cpp @@ -400,15 +400,12 @@ void DOS_SetupMemory(void) { callbackhandler.Allocate(&DOS_default_handler,"DOS default int"); Bit16u ihseg = 0x70; Bit16u ihofs = 0x08; - real_writeb(ihseg,ihofs+0x00,(Bit8u)0xFE); //GRP 4 - real_writeb(ihseg,ihofs+0x01,(Bit8u)0x38); //Extra Callback instruction - real_writew(ihseg,ihofs+0x02,callbackhandler.Get_callback()); //The immediate word - real_writeb(ihseg,ihofs+0x04,(Bit8u)0xCF); //An IRET Instruction + real_writeb(ihseg,ihofs,(Bit8u)0xCF); //An IRET Instruction RealSetVec(0x01,RealMake(ihseg,ihofs)); //BioMenace (offset!=4) RealSetVec(0x02,RealMake(ihseg,ihofs)); //BioMenace (segment<0x8000) RealSetVec(0x03,RealMake(ihseg,ihofs)); //Alien Incident (offset!=0) RealSetVec(0x04,RealMake(ihseg,ihofs)); //Shadow President (lower byte of segment!=0) -// RealSetVec(0x0f,RealMake(ihseg,ihofs)); //Always a tricky one (soundblaster irq) + RealSetVec(0x0f,RealMake(ihseg,ihofs)); //Always a tricky one (soundblaster irq) // Create a dummy device MCB with PSPSeg=0x0008 DOS_MCB mcb_devicedummy((Bit16u)DOS_MEM_START);