}\r
};\r
int giBGA_CurrentMode = -1;\r
- int giBGA_BufferFormat = 0;\r
tVideo_IOCtl_Pos gBGA_CursorPos = {-1,-1};\r
Uint *gBGA_Framebuffer;\r
const tBGA_Mode *gpBGA_CurrentMode;\r
\r
// Map Framebuffer to hardware address\r
gBGA_Framebuffer = (void *) MM_MapHWPages(base, 768); // 768 pages (3Mb)\r
- MM_DumpTables(0, -1);\r
\r
// Install Device\r
if( DevFS_AddDevice( &gBGA_DriverStruct ) == -1 )\r
Uint64 BGA_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer)\r
{\r
if( giBGA_CurrentMode == -1 ) BGA_int_UpdateMode(0);\r
- return DrvUtil_Video_WriteLFB(giBGA_BufferFormat, &gBGA_DrvUtil_BufInfo, Offset, Length, Buffer);\r
+ return DrvUtil_Video_WriteLFB(&gBGA_DrvUtil_BufInfo, Offset, Length, Buffer);\r
}\r
\r
const char *csaBGA_IOCtls[] = {DRV_IOCTLNAMES, DRV_VIDEO_IOCTLNAMES, NULL};\r
break;\r
\r
case VIDEO_IOCTL_SETBUFFORMAT:\r
- ret = giBGA_BufferFormat;\r
+ DrvUtil_Video_RemoveCursor( &gBGA_DrvUtil_BufInfo );\r
+ ret = gBGA_DrvUtil_BufInfo.BufferFormat;\r
if(Data)\r
- giBGA_BufferFormat = *(int*)Data;\r
+ gBGA_DrvUtil_BufInfo.BufferFormat = *(int*)Data;\r
+ if(gBGA_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+ DrvUtil_Video_SetCursor( &gBGA_DrvUtil_BufInfo, &gDrvUtil_TextModeCursor );\r
break;\r
\r
case VIDEO_IOCTL_SETCURSOR:\r
+ DrvUtil_Video_RemoveCursor( &gBGA_DrvUtil_BufInfo );\r
gBGA_CursorPos.x = ((tVideo_IOCtl_Pos*)Data)->x;\r
gBGA_CursorPos.y = ((tVideo_IOCtl_Pos*)Data)->y;\r
+ if(gBGA_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+ DrvUtil_Video_DrawCursor(\r
+ &gBGA_DrvUtil_BufInfo,\r
+ gBGA_CursorPos.x*giVT_CharWidth,\r
+ gBGA_CursorPos.y*giVT_CharHeight\r
+ );\r
+ else\r
+ DrvUtil_Video_DrawCursor(\r
+ &gBGA_DrvUtil_BufInfo,\r
+ gBGA_CursorPos.x, gBGA_CursorPos.y\r
+ );\r
break;\r
\r
default:\r
BGA_int_WriteRegister(VBE_DISPI_INDEX_YRES, Height);\r
BGA_int_WriteRegister(VBE_DISPI_INDEX_BPP, 32);\r
BGA_int_WriteRegister(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_NOCLEARMEM | VBE_DISPI_LFB_ENABLED);\r
- MAGIC_BREAK();\r
LEAVE('-');\r
}\r
\r