Fixed/implemented various interrupt functions.
This commit is contained in:
parent
ac593bbd41
commit
d20375921b
|
@ -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 */
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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)),
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue