Skip to content
Snippets Groups Projects
Commit a63458d8 authored by Andreas Mohr's avatar Andreas Mohr Committed by Alexandre Julliard
Browse files

Some interrupt enhancements.

parent 935ccabe
No related merge requests found
......@@ -55,9 +55,15 @@ extern void WINAPI INT_Int10Handler(CONTEXT*);
/* msdos/int11.c */
extern void WINAPI INT_Int11Handler(CONTEXT*);
/* msdos/int12.c */
extern void WINAPI INT_Int12Handler(CONTEXT*);
/* msdos/int13.c */
extern void WINAPI INT_Int13Handler(CONTEXT*);
/* msdos/int15.c */
extern void WINAPI INT_Int15Handler(CONTEXT*);
/* msdos/int16.c */
extern void WINAPI INT_Int16Handler(CONTEXT*);
......
......@@ -18,6 +18,8 @@ static void scroll_window(int direction, char lines, char row1,
static int color_pallet[16];
static char dummy; /* dummy var used for unneeded CONSOLE function parameter */
#define SCROLL_UP 1
#define SCROLL_DOWN 2
......@@ -188,8 +190,13 @@ void WINAPI INT_Int10Handler( CONTEXT *context )
break;
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;
case 0x09: /* WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION */
......
......@@ -1155,8 +1155,12 @@ void WINAPI DOS3Call( CONTEXT *context )
DS_reg(context),DX_reg(context) );
{
LPSTR data = CTX_SEG_OFF_TO_LIN(context,DS_reg(context),EDX_reg(context));
LONG length = strchr(data,'$')-data;
_hwrite16( 1, data, length);
LPSTR p = data;
/* 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 */
}
break;
......
......@@ -111,9 +111,15 @@ int INT_RealModeInterrupt( BYTE intnum, PCONTEXT context )
case 0x11:
INT_Int11Handler(context);
break;
case 0x12:
INT_Int12Handler(context);
break;
case 0x13:
INT_Int13Handler(context);
break;
case 0x15:
INT_Int15Handler(context);
break;
case 0x16:
INT_Int16Handler(context);
break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment