1
0
Fork 0

move int3 default handler a bit (work around bug in Alien Incident)

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2536
This commit is contained in:
Sebastian Strohhäcker 2006-03-07 21:08:32 +00:00
parent 78dbd4109e
commit ddc3811ead

View file

@ -415,18 +415,16 @@ void DOS_SetupMemory(void) {
/* Let dos claim a few bios interrupts. Makes DOSBox more compatible with
* buggy games, which compare against the interrupt table. (probably a
* broken linked list implementation) */
// BioMenace (segment of int2<0x8000)
callbackhandler.Allocate(&DOS_default_handler,"DOS default int");
//Shadow president wants int 4 to point to this.
real_writeb(0x70,0,(Bit8u)0xFE); //GRP 4
real_writeb(0x70,1,(Bit8u)0x38); //Extra Callback instruction
real_writew(0x70,2,callbackhandler.Get_callback()); //The immediate word
real_writeb(0x70,4,(Bit8u)0xCF); //An IRET Instruction
real_writed(0,0x01*4,0x700000);
real_writed(0,0x02*4,0x700000); //BioMenace
real_writed(0,0x03*4,0x700000);
real_writed(0,0x04*4,0x700000); //Shadow President
// real_writed(0,0x0f*4,0x700000); //Always a tricky one (soundblaster irq)
real_writeb(0x70,4,(Bit8u)0xFE); //GRP 4
real_writeb(0x70,5,(Bit8u)0x38); //Extra Callback instruction
real_writew(0x70,6,callbackhandler.Get_callback()); //The immediate word
real_writeb(0x70,8,(Bit8u)0xCF); //An IRET Instruction
real_writed(0,0x01*4,0x700004);
real_writed(0,0x02*4,0x700004); //BioMenace (segment<0x8000)
real_writed(0,0x03*4,0x700004); //Alien Incident (offset!=0)
real_writed(0,0x04*4,0x700004); //Shadow President (lower byte of segment!=0)
// real_writed(0,0x0f*4,0x700004); //Always a tricky one (soundblaster irq)
// Create a dummy device MCB with PSPSeg=0x0008
DOS_MCB mcb_devicedummy((Bit16u)DOS_MEM_START);