Commit d2037592 authored by Jess Haas's avatar Jess Haas Committed by Alexandre Julliard

Fixed/implemented various interrupt functions.

parent ac593bbd
......@@ -114,7 +114,7 @@ void WINAPI INT_Int10Handler( CONTEXT *context )
case 0x00: /* 40x25 */
case 0x01:
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));
CONSOLE_ResizeScreen(40, 25);
CONSOLE_ClearScreen();
......@@ -124,46 +124,26 @@ void WINAPI INT_Int10Handler( CONTEXT *context )
case 0x03:
case 0x07:
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));
CONSOLE_ResizeScreen(80, 25);
CONSOLE_ClearScreen();
DOSMEM_BiosData()->VideoColumns = 80;
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:
TRACE(int10, "Setting VGA 320x200 16-color mode\n");
TRACE(int10, "Setting VESA 320x200 16-color mode\n");
VGA_SetMode(320,200,4);
break;
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);
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:
TRACE(int10, "Setting VGA 640x350 16-color mode\n");
TRACE(int10, "Setting VESA 640x350 16-color mode\n");
VGA_SetMode(640,350,4);
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:
TRACE(int10, "Setting VGA 640x480 16-color mode\n");
TRACE(int10, "Setting VESA 640x480 16-color mode\n");
VGA_SetMode(640,480,4);
break;
case 0x13:
......@@ -337,7 +317,6 @@ else {
AL_reg(context));
CONSOLE_ResizeScreen(40, 25);
CONSOLE_ClearScreen();
DOSMEM_BiosData()->VideoMode = AL_reg(context);
DOSMEM_BiosData()->VideoColumns = 40;
break;
case 0x02:
......@@ -348,18 +327,33 @@ else {
AL_reg(context));
CONSOLE_ResizeScreen(80, 25);
CONSOLE_ClearScreen();
DOSMEM_BiosData()->VideoMode = AL_reg(context);
DOSMEM_BiosData()->VideoColumns = 80;
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:
TRACE(int10, "Setting VGA 320x200 256-color mode\n");
VGA_SetMode(320,200,8);
DOSMEM_BiosData()->VideoMode = AL_reg(context);
break;
default:
FIXME(int10, "Set Video Mode (0x%x) - Not Supported\n",
AL_reg(context));
}
DOSMEM_BiosData()->VideoMode = AL_reg(context);
break;
case 0x01: /* SET CURSOR SHAPE */
......
......@@ -68,11 +68,26 @@ void WINAPI INT_Int16Handler( CONTEXT *context )
break;
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;
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;
case 0x12: /* Get Extended Shift States */
......
......@@ -1149,7 +1149,6 @@ void WINAPI DOS3Call( CONTEXT *context )
case 0x26: /* CREATE NEW PROGRAM SEGMENT PREFIX */
case 0x27: /* RANDOM BLOCK READ FROM FCB FILE */
case 0x28: /* RANDOM BLOCK WRITE TO FCB FILE */
case 0x54: /* GET VERIFY FLAG */
INT_BARF( context, 0x21 );
break;
......@@ -1903,6 +1902,11 @@ void WINAPI DOS3Call( CONTEXT *context )
}
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 */
TRACE(int21,"RENAME %s to %s\n",
(LPCSTR)CTX_SEG_OFF_TO_LIN(context, DS_reg(context),EDX_reg(context)),
......
......@@ -225,6 +225,19 @@ void WINAPI INT_Int2fHandler( CONTEXT *context )
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 */
switch (AL_reg(context))
{
......@@ -236,6 +249,19 @@ void WINAPI INT_Int2fHandler( CONTEXT *context )
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 */
break;
default:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment