Some interrupt enhancements.
This commit is contained in:
parent
935ccabe08
commit
a63458d87c
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue