Added faked support for set event wait flag int 15 call.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@390
This commit is contained in:
parent
328814cf22
commit
9a4a06ff30
1 changed files with 15 additions and 1 deletions
|
@ -22,7 +22,7 @@
|
|||
#include "callback.h"
|
||||
#include "inout.h"
|
||||
#include "mem.h"
|
||||
|
||||
#include "timer.h"
|
||||
|
||||
static Bitu call_int1a,call_int11,call_int8,call_int17,call_int12,call_int15,call_int1c;
|
||||
|
||||
|
@ -136,6 +136,12 @@ static Bitu INT17_Handler(void) {
|
|||
return CBRET_NONE;
|
||||
};
|
||||
|
||||
static void WaitFlagEvent(void) {
|
||||
PhysPt where=Real2Phys(mem_readd(BIOS_WAIT_FLAG_POINTER));
|
||||
mem_writeb(where,mem_readb(where)|0x80);
|
||||
mem_writeb(BIOS_WAIT_FLAG_ACTIVE,0);
|
||||
}
|
||||
|
||||
static Bitu INT15_Handler(void) {
|
||||
switch (reg_ah) {
|
||||
case 0x06:
|
||||
|
@ -149,6 +155,12 @@ static Bitu INT15_Handler(void) {
|
|||
/* Carry should be set but let's just set it just in case */
|
||||
CALLBACK_SCF(true);
|
||||
break;
|
||||
case 0x83: /* BIOS - SET EVENT WAIT INTERVAL */
|
||||
mem_writed(BIOS_WAIT_FLAG_POINTER,RealMake(SegValue(es),reg_bx));
|
||||
mem_writed(BIOS_WAIT_FLAG_COUNT,reg_cx<<16|reg_dx);
|
||||
mem_writeb(BIOS_WAIT_FLAG_ACTIVE,1);
|
||||
TIMER_RegisterDelayHandler(&WaitFlagEvent,reg_cx<<16|reg_dx);
|
||||
break;
|
||||
case 0x84: /* BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS) */
|
||||
//Does anyone even use this?
|
||||
LOG_WARN("INT15:84:Bios Joystick functionality not done");
|
||||
|
@ -181,6 +193,8 @@ static Bitu INT15_Handler(void) {
|
|||
break;
|
||||
default:
|
||||
LOG_WARN("INT15:Unknown call %2X",reg_ah);
|
||||
reg_ah=0x86;
|
||||
CALLBACK_SCF(false);
|
||||
}
|
||||
return CBRET_NONE;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue