Implement the miscellaneous BIOS system service (INT 15h) handler.
Implement INT 15h, AH = 88h, "Get Extended Memory Size".


svn path=/branches/ntvdm/; revision=60938
This commit is contained in:
Aleksandar Andrejevic
2013-11-11 04:00:10 +00:00
parent 442302eeb3
commit e53821aed0
2 changed files with 27 additions and 0 deletions
+25
View File
@@ -481,6 +481,7 @@ BOOLEAN BiosInitialize(VOID)
RegisterInt32(BIOS_VIDEO_INTERRUPT , BiosVideoService );
RegisterInt32(BIOS_EQUIPMENT_INTERRUPT, BiosEquipmentService );
RegisterInt32(BIOS_MEMORY_SIZE , BiosGetMemorySize );
RegisterInt32(BIOS_MISC_INTERRUPT , BiosMiscService );
RegisterInt32(BIOS_KBD_INTERRUPT , BiosKeyboardService );
RegisterInt32(BIOS_TIME_INTERRUPT , BiosTimeService );
RegisterInt32(BIOS_SYS_TIMER_INTERRUPT, BiosSystemTimerInterrupt);
@@ -1176,6 +1177,30 @@ VOID WINAPI BiosGetMemorySize(LPWORD Stack)
setAX(Bda->MemorySize);
}
VOID WINAPI BiosMiscService(LPWORD Stack)
{
switch (getAH())
{
/* Get Extended Memory Size */
case 0x88:
{
/* Return the number of KB of RAM after 1 MB */
setAX((MAX_ADDRESS - 0x100000) / 1024);
/* Clear CF */
Stack[STACK_FLAGS] &= ~EMULATOR_FLAG_CF;
break;
}
default:
{
DPRINT1("BIOS Function INT 15h, AH = 0x%02X NOT IMPLEMENTED\n",
getAH());
}
}
}
VOID WINAPI BiosKeyboardService(LPWORD Stack)
{
switch (getAH())
+2
View File
@@ -27,6 +27,7 @@
#define BIOS_VIDEO_INTERRUPT 0x10
#define BIOS_EQUIPMENT_INTERRUPT 0x11
#define BIOS_MEMORY_SIZE 0x12
#define BIOS_MISC_INTERRUPT 0x15
#define BIOS_KBD_INTERRUPT 0x16
#define BIOS_TIME_INTERRUPT 0x1A
#define BIOS_SYS_TIMER_INTERRUPT 0x1C
@@ -171,6 +172,7 @@ BOOLEAN BiosScrollWindow(
VOID WINAPI BiosVideoService(LPWORD Stack);
VOID WINAPI BiosEquipmentService(LPWORD Stack);
VOID WINAPI BiosGetMemorySize(LPWORD Stack);
VOID WINAPI BiosMiscService(LPWORD Stack);
VOID WINAPI BiosKeyboardService(LPWORD Stack);
VOID WINAPI BiosTimeService(LPWORD Stack);
VOID WINAPI BiosSystemTimerInterrupt(LPWORD Stack);