From: Aleksandar Andrejevic Date: Mon, 11 Nov 2013 04:00:10 +0000 (+0000) Subject: [NTVDM] X-Git-Tag: backups/0.3.17@66124~1365^2~257 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=e53821aed0fecbbd62ea92daced5567e635186cb;hp=442302eeb32112c1f49592a0d3dfba0d056a6111 [NTVDM] Implement the miscellaneous BIOS system service (INT 15h) handler. Implement INT 15h, AH = 88h, "Get Extended Memory Size". svn path=/branches/ntvdm/; revision=60938 --- diff --git a/subsystems/ntvdm/bios.c b/subsystems/ntvdm/bios.c index 2363e5ba00f..a08e831e22c 100644 --- a/subsystems/ntvdm/bios.c +++ b/subsystems/ntvdm/bios.c @@ -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()) diff --git a/subsystems/ntvdm/bios.h b/subsystems/ntvdm/bios.h index 7ca303c99f3..8651389dbcd 100644 --- a/subsystems/ntvdm/bios.h +++ b/subsystems/ntvdm/bios.h @@ -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);