Commit a63458d8 authored by Andreas Mohr's avatar Andreas Mohr Committed by Alexandre Julliard

Some interrupt enhancements.

parent 935ccabe
...@@ -55,9 +55,15 @@ extern void WINAPI INT_Int10Handler(CONTEXT*); ...@@ -55,9 +55,15 @@ extern void WINAPI INT_Int10Handler(CONTEXT*);
/* msdos/int11.c */ /* msdos/int11.c */
extern void WINAPI INT_Int11Handler(CONTEXT*); extern void WINAPI INT_Int11Handler(CONTEXT*);
/* msdos/int12.c */
extern void WINAPI INT_Int12Handler(CONTEXT*);
/* msdos/int13.c */ /* msdos/int13.c */
extern void WINAPI INT_Int13Handler(CONTEXT*); extern void WINAPI INT_Int13Handler(CONTEXT*);
/* msdos/int15.c */
extern void WINAPI INT_Int15Handler(CONTEXT*);
/* msdos/int16.c */ /* msdos/int16.c */
extern void WINAPI INT_Int16Handler(CONTEXT*); extern void WINAPI INT_Int16Handler(CONTEXT*);
......
...@@ -18,6 +18,8 @@ static void scroll_window(int direction, char lines, char row1, ...@@ -18,6 +18,8 @@ static void scroll_window(int direction, char lines, char row1,
static int color_pallet[16]; static int color_pallet[16];
static char dummy; /* dummy var used for unneeded CONSOLE function parameter */
#define SCROLL_UP 1 #define SCROLL_UP 1
#define SCROLL_DOWN 2 #define SCROLL_DOWN 2
...@@ -188,8 +190,13 @@ void WINAPI INT_Int10Handler( CONTEXT *context ) ...@@ -188,8 +190,13 @@ void WINAPI INT_Int10Handler( CONTEXT *context )
break; break;
case 0x08: /* READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION */ case 0x08: /* READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION */
FIXME(int10, {
"Read Character and Attribute at Cursor Position - Not Supported\n"); CHAR ch, attr;
TRACE(int10, "Read Character and Attribute at Cursor Position\n");
CONSOLE_GetCharacterAtCursor(&ch, &dummy, &dummy, &attr);
AL_reg(context) = ch;
AH_reg(context) = attr;
}
break; break;
case 0x09: /* WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION */ case 0x09: /* WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION */
......
...@@ -1155,8 +1155,12 @@ void WINAPI DOS3Call( CONTEXT *context ) ...@@ -1155,8 +1155,12 @@ void WINAPI DOS3Call( CONTEXT *context )
DS_reg(context),DX_reg(context) ); DS_reg(context),DX_reg(context) );
{ {
LPSTR data = CTX_SEG_OFF_TO_LIN(context,DS_reg(context),EDX_reg(context)); LPSTR data = CTX_SEG_OFF_TO_LIN(context,DS_reg(context),EDX_reg(context));
LONG length = strchr(data,'$')-data; LPSTR p = data;
_hwrite16( 1, data, length); /* do NOT use strchr() to calculate the string length,
as '\0' is valid string content, too !
Maybe we should check for non-'$' strings, but DOS doesn't. */
while (*p != '$') p++;
_hwrite16( 1, data, (int)p - (int)data);
AL_reg(context) = '$'; /* yes, '$' (0x24) gets returned in AL */ AL_reg(context) = '$'; /* yes, '$' (0x24) gets returned in AL */
} }
break; break;
......
...@@ -111,9 +111,15 @@ int INT_RealModeInterrupt( BYTE intnum, PCONTEXT context ) ...@@ -111,9 +111,15 @@ int INT_RealModeInterrupt( BYTE intnum, PCONTEXT context )
case 0x11: case 0x11:
INT_Int11Handler(context); INT_Int11Handler(context);
break; break;
case 0x12:
INT_Int12Handler(context);
break;
case 0x13: case 0x13:
INT_Int13Handler(context); INT_Int13Handler(context);
break; break;
case 0x15:
INT_Int15Handler(context);
break;
case 0x16: case 0x16:
INT_Int16Handler(context); INT_Int16Handler(context);
break; break;
......
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