Fixed/implemented various interrupt functions.

This commit is contained in:
Jess Haas 1999-03-17 15:29:06 +00:00 committed by Alexandre Julliard
parent ac593bbd41
commit d20375921b
4 changed files with 71 additions and 32 deletions

View File

@ -114,7 +114,7 @@ void WINAPI INT_Int10Handler( CONTEXT *context )
case 0x00: /* 40x25 */ case 0x00: /* 40x25 */
case 0x01: case 0x01:
VGA_Exit(); VGA_Exit();
TRACE(int10, "Set Video Mode - Set to Text - 0x0%x\n", TRACE(int10, "Set VESA Text Mode - 0x0%x\n",
BX_reg(context)); BX_reg(context));
CONSOLE_ResizeScreen(40, 25); CONSOLE_ResizeScreen(40, 25);
CONSOLE_ClearScreen(); CONSOLE_ClearScreen();
@ -124,46 +124,26 @@ void WINAPI INT_Int10Handler( CONTEXT *context )
case 0x03: case 0x03:
case 0x07: case 0x07:
VGA_Exit(); VGA_Exit();
TRACE(int10, "Set Video Mode - Set to Text - 0x0%x\n", TRACE(int10, "Set VESA Text Mode - 0x0%x\n",
BX_reg(context)); BX_reg(context));
CONSOLE_ResizeScreen(80, 25); CONSOLE_ResizeScreen(80, 25);
CONSOLE_ClearScreen(); CONSOLE_ClearScreen();
DOSMEM_BiosData()->VideoColumns = 80; DOSMEM_BiosData()->VideoColumns = 80;
break; break;
case 0x04:
TRACE(int10, "Setting VGA 320x200 4-color mode\n");
VGA_SetMode(320,200,2); /* FIXME is this right/supported? */
break;
case 0x05:
TRACE(int10, "Setting VGA 320x200 4-color mode\n");
VGA_SetMode(320,200,2); /* FIXME is this right/supported? */
break;
case 0x06:
TRACE(int10, "Setting VGA 640x200 2-color mode\n");
VGA_SetMode(640,200,1); /* FIXME is this right/supported? */
break;
case 0x0D: case 0x0D:
TRACE(int10, "Setting VGA 320x200 16-color mode\n"); TRACE(int10, "Setting VESA 320x200 16-color mode\n");
VGA_SetMode(320,200,4); VGA_SetMode(320,200,4);
break; break;
case 0x0E: case 0x0E:
TRACE(int10, "Setting VGA 640x200 16-color mode\n"); TRACE(int10, "Setting VESA 640x200 16-color mode\n");
VGA_SetMode(640,200,4); VGA_SetMode(640,200,4);
break; break;
case 0x0F:
TRACE(int10, "Setting VGA 640x350 2-color mode\n");
VGA_SetMode(640,350,1); /* FIXME is this right/supported? */
break;
case 0x10: case 0x10:
TRACE(int10, "Setting VGA 640x350 16-color mode\n"); TRACE(int10, "Setting VESA 640x350 16-color mode\n");
VGA_SetMode(640,350,4); VGA_SetMode(640,350,4);
break; break;
case 0x11:
TRACE(int10, "Setting VGA 640x480 2-color mode\n");
VGA_SetMode(640,480,1); /* FIXME is this right/supported? */
break;
case 0x12: case 0x12:
TRACE(int10, "Setting VGA 640x480 16-color mode\n"); TRACE(int10, "Setting VESA 640x480 16-color mode\n");
VGA_SetMode(640,480,4); VGA_SetMode(640,480,4);
break; break;
case 0x13: case 0x13:
@ -337,7 +317,6 @@ else {
AL_reg(context)); AL_reg(context));
CONSOLE_ResizeScreen(40, 25); CONSOLE_ResizeScreen(40, 25);
CONSOLE_ClearScreen(); CONSOLE_ClearScreen();
DOSMEM_BiosData()->VideoMode = AL_reg(context);
DOSMEM_BiosData()->VideoColumns = 40; DOSMEM_BiosData()->VideoColumns = 40;
break; break;
case 0x02: case 0x02:
@ -348,18 +327,33 @@ else {
AL_reg(context)); AL_reg(context));
CONSOLE_ResizeScreen(80, 25); CONSOLE_ResizeScreen(80, 25);
CONSOLE_ClearScreen(); CONSOLE_ClearScreen();
DOSMEM_BiosData()->VideoMode = AL_reg(context);
DOSMEM_BiosData()->VideoColumns = 80; DOSMEM_BiosData()->VideoColumns = 80;
break; break;
case 0x0D:
TRACE(int10, "Setting VGA 320x200 16-color mode\n");
VGA_SetMode(320,200,4);
break;
case 0x0E:
TRACE(int10, "Setting VGA 640x200 16-color mode\n");
VGA_SetMode(640,200,4);
break;
case 0x10:
TRACE(int10, "Setting VGA 640x350 16-color mode\n");
VGA_SetMode(640,350,4);
break;
case 0x12:
TRACE(int10, "Setting VGA 640x480 16-color mode\n");
VGA_SetMode(640,480,4);
break;
case 0x13: case 0x13:
TRACE(int10, "Setting VGA 320x200 256-color mode\n"); TRACE(int10, "Setting VGA 320x200 256-color mode\n");
VGA_SetMode(320,200,8); VGA_SetMode(320,200,8);
DOSMEM_BiosData()->VideoMode = AL_reg(context);
break; break;
default: default:
FIXME(int10, "Set Video Mode (0x%x) - Not Supported\n", FIXME(int10, "Set Video Mode (0x%x) - Not Supported\n",
AL_reg(context)); AL_reg(context));
} }
DOSMEM_BiosData()->VideoMode = AL_reg(context);
break; break;
case 0x01: /* SET CURSOR SHAPE */ case 0x01: /* SET CURSOR SHAPE */

View File

@ -68,11 +68,26 @@ void WINAPI INT_Int16Handler( CONTEXT *context )
break; break;
case 0x10: /* Get Enhanced Keystroke */ case 0x10: /* Get Enhanced Keystroke */
FIXME(int16, "Get Enhanced Keystroke - Not Supported\n"); TRACE(int16, "Get Enhanced Keystroke - Partially supported\n");
/* Returns: AH = Scan code
AL = ASCII character */
CONSOLE_GetKeystroke(&AH_reg(context), &AL_reg(context));
break; break;
case 0x11: /* Check for Enhanced Keystroke */ case 0x11: /* Check for Enhanced Keystroke */
FIXME(int16, "Check for Enhanced Keystroke - Not Supported\n"); /* Returns: ZF set if no keystroke */
/* AH = Scan code */
/* AL = ASCII character */
TRACE(int16, "Check for Enhanced Keystroke - Partially supported\n");
if (!CONSOLE_CheckForKeystroke(&AH_reg(context), &AL_reg(context)))
{
SET_ZFLAG(context);
}
else
{
RESET_ZFLAG(context);
}
break; break;
case 0x12: /* Get Extended Shift States */ case 0x12: /* Get Extended Shift States */

View File

@ -1149,7 +1149,6 @@ void WINAPI DOS3Call( CONTEXT *context )
case 0x26: /* CREATE NEW PROGRAM SEGMENT PREFIX */ case 0x26: /* CREATE NEW PROGRAM SEGMENT PREFIX */
case 0x27: /* RANDOM BLOCK READ FROM FCB FILE */ case 0x27: /* RANDOM BLOCK READ FROM FCB FILE */
case 0x28: /* RANDOM BLOCK WRITE TO FCB FILE */ case 0x28: /* RANDOM BLOCK WRITE TO FCB FILE */
case 0x54: /* GET VERIFY FLAG */
INT_BARF( context, 0x21 ); INT_BARF( context, 0x21 );
break; break;
@ -1903,6 +1902,11 @@ void WINAPI DOS3Call( CONTEXT *context )
} }
break; break;
case 0x54: /* Get Verify Flag */
TRACE(int21,"Get Verify Flag - Not Supported\n");
AL_reg(context) = 0x00; /* pretend we can tell. 00h = off 01h = on */
break;
case 0x56: /* "RENAME" - RENAME FILE */ case 0x56: /* "RENAME" - RENAME FILE */
TRACE(int21,"RENAME %s to %s\n", TRACE(int21,"RENAME %s to %s\n",
(LPCSTR)CTX_SEG_OFF_TO_LIN(context, DS_reg(context),EDX_reg(context)), (LPCSTR)CTX_SEG_OFF_TO_LIN(context, DS_reg(context),EDX_reg(context)),

View File

@ -225,6 +225,19 @@ void WINAPI INT_Int2fHandler( CONTEXT *context )
break; break;
} }
break; break;
case 0xd2:
switch(AL_reg(context))
{
case 0x01: /* Quarterdeck RPCI - QEMM/QRAM - PCL-838.EXE functions */
if(BX_reg(context) == 0x5145 && CX_reg(context) == 0x4D4D
&& DX_reg(context) == 0x3432)
TRACE(int, "Check for QEMM v5.0+ (not installed)\n");
break;
default:
INT_BARF( context, 0x2f );
break;
}
break;
case 0xd7: /* Banyan Vines */ case 0xd7: /* Banyan Vines */
switch (AL_reg(context)) switch (AL_reg(context))
{ {
@ -236,6 +249,19 @@ void WINAPI INT_Int2fHandler( CONTEXT *context )
break; break;
} }
break; break;
case 0xde:
switch(AL_reg(context))
{
case 0x01: /* Quarterdeck QDPMI.SYS - DESQview */
if(BX_reg(context) == 0x4450 && CX_reg(context) == 0x4d49
&& DX_reg(context) == 0x8f4f)
TRACE(int, "Check for QDPMI.SYS (not installed)\n");
break;
default:
INT_BARF( context, 0x2f );
break;
}
break;
case 0xfa: /* Watcom debugger check, returns 0x666 if installed */ case 0xfa: /* Watcom debugger check, returns 0x666 if installed */
break; break;
default: default: