diff --git a/src/hardware/vga.h b/src/hardware/vga.h index 88e9ce4d..4d3427d5 100644 --- a/src/hardware/vga.h +++ b/src/hardware/vga.h @@ -20,13 +20,18 @@ #define VGA_H_ #include +#include "dosbox.h" +#undef TEXT +#undef GRAPH +/* conflicts with int10.h */ enum { TEXT, GRAPH }; enum { GFX_256C,GFX_256U,GFX_16,GFX_4,GFX_2, TEXT_16 }; typedef struct { bool attrindex; + Bit16u cursor; } VGA_Internal; typedef struct { diff --git a/src/hardware/vga_draw.cpp b/src/hardware/vga_draw.cpp index 9a173da1..1a120999 100644 --- a/src/hardware/vga_draw.cpp +++ b/src/hardware/vga_draw.cpp @@ -176,7 +176,8 @@ void VGA_DrawTEXT(Bit8u * bitdata,Bitu pitch) { draw_start+=16*pitch; }; VGA_StartRetrace(); - + + if(!(vga.internal.cursor & 0x2000)){ /* Draw a cursor */ if (((Bitu)vga.draw.cursor_col*8)>=vga.draw.width) return; if (((Bitu)vga.draw.cursor_row*16)>=vga.draw.height) return; @@ -186,5 +187,6 @@ void VGA_DrawTEXT(Bit8u * bitdata,Bitu pitch) { } vga.draw.cursor_count++; if (vga.draw.cursor_count>16) vga.draw.cursor_count=0; + } }; diff --git a/src/ints/int10.cpp b/src/ints/int10.cpp index 635de150..bef20fe2 100644 --- a/src/ints/int10.cpp +++ b/src/ints/int10.cpp @@ -25,6 +25,7 @@ #include "video.h" #include "inout.h" #include "int10.h" +#include "../hardware/vga.h" /* Maybe move this thing */ #define TEXT_SEG 0xb800 @@ -38,7 +39,8 @@ static Bitu INT10_Handler(void) { INT10_SetVideoMode(reg_al); break; case 0x01: /* Set TextMode Cursor Shape */ - LOG_WARN("INT10:01:Set textmode cursor shape not supported"); + vga.internal.cursor=reg_cx; // maybe write some memory somewhere + LOG_DEBUG("INT10:01:Set textmode cursor shape partially supported: %X",reg_cx); break; case 0x02: /* Set Cursor Pos */ //TODO Check some shit but not really usefull