1
0
Fork 0

add compatibility POST chaining, certain game exiting should look better now (ripsaw, sort of fixes a hangup with Astro Dodge)

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3698
This commit is contained in:
Sebastian Strohhäcker 2011-04-22 14:18:00 +00:00
parent 81d9c369aa
commit 832f1bf0d4
2 changed files with 11 additions and 6 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2002-2010 The DOSBox Team
* Copyright (C) 2002-2011 The DOSBox Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -106,6 +106,7 @@
#define BIOS_DEFAULT_IRQ0_LOCATION (RealMake(0xf000,0xfea5))
#define BIOS_DEFAULT_IRQ1_LOCATION (RealMake(0xf000,0xe987))
#define BIOS_DEFAULT_IRQ2_LOCATION (RealMake(0xf000,0xff55))
#define BIOS_DEFAULT_RESET_LOCATION (RealMake(0xf000,0xe05b))
/* maximum of scancodes handled by keyboard bios routines */
#define MAX_SCAN_CODE 0x58

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2002-2010 The DOSBox Team
* Copyright (C) 2002-2011 The DOSBox Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -911,10 +911,14 @@ public:
callback[10].Set_RealVec(0x18);
RealPt rptr = callback[10].Get_RealPointer();
RealSetVec(0x19,rptr);
// set system BIOS entry point too
phys_writeb(0xFFFF0,0xEA); // FARJMP
phys_writew(0xFFFF1,RealOff(rptr)); // offset
phys_writew(0xFFFF3,RealSeg(rptr)); // segment
// power on selftest routine location
phys_writeb(Real2Phys(BIOS_DEFAULT_RESET_LOCATION)+0,0xEA); // FARJMP
phys_writew(Real2Phys(BIOS_DEFAULT_RESET_LOCATION)+1,RealOff(rptr)); // offset
phys_writew(Real2Phys(BIOS_DEFAULT_RESET_LOCATION)+3,RealSeg(rptr)); // segment
// reset jump (directed to POST)
phys_writeb(0xFFFF0,0xEA); // FARJMP
phys_writew(0xFFFF1,RealOff(BIOS_DEFAULT_RESET_LOCATION)); // offset
phys_writew(0xFFFF3,RealSeg(BIOS_DEFAULT_RESET_LOCATION)); // segment
/* Irq 2 */
Bitu call_irq2=CALLBACK_Allocate();