int BGA_int_MapFB(void *Dest);\r
// Filesystem\r
Uint64 BGA_Read(tVFS_Node *Node, Uint64 off, Uint64 len, void *buffer);\r
-Uint64 BGA_Write(tVFS_Node *Node, Uint64 off, Uint64 len, void *buffer);\r
+Uint64 BGA_Write(tVFS_Node *Node, Uint64 off, Uint64 len, const void *buffer);\r
int BGA_IOCtl(tVFS_Node *Node, int ID, void *Data);\r
\r
// === GLOBALS ===\r
MODULE_DEFINE(0, VERSION, BochsGA, BGA_Install, NULL, "PCI", NULL);\r
-tDevFS_Driver gBGA_DriverStruct = {\r
- NULL, "BochsGA",\r
- {\r
+tVFS_NodeType gBGA_NodeType = {\r
.Read = BGA_Read,\r
.Write = BGA_Write,\r
.IOCtl = BGA_IOCtl\r
- }\r
-};\r
+ };\r
+tDevFS_Driver gBGA_DriverStruct = {\r
+ NULL, "BochsGA",\r
+ {.Type = &gBGA_NodeType}\r
+ };\r
int giBGA_CurrentMode = -1;\r
tVideo_IOCtl_Pos gBGA_CursorPos = {-1,-1};\r
Uint *gBGA_Framebuffer;\r
/**\r
* \brief Write to the framebuffer\r
*/\r
-Uint64 BGA_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer)\r
+Uint64 BGA_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, const void *Buffer)\r
{\r
if( giBGA_CurrentMode == -1 ) BGA_int_UpdateMode(0);\r
return DrvUtil_Video_WriteLFB(&gBGA_DrvUtil_BufInfo, Offset, Length, Buffer);\r
break;\r
\r
case VIDEO_IOCTL_SETBUFFORMAT:\r
+ DrvUtil_Video_RemoveCursor( &gBGA_DrvUtil_BufInfo );\r
ret = gBGA_DrvUtil_BufInfo.BufferFormat;\r
if(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