mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-09 07:06:47 +00:00
🐛 修复了printk在输出\t时,背景颜色不正确的bug,以及屏幕滚动的bug
This commit is contained in:
parent
832442af6a
commit
f95fa63972
@ -51,7 +51,7 @@ int printk_init(const int char_size_x, const int char_size_y)
|
|||||||
|
|
||||||
ul *tmp1;
|
ul *tmp1;
|
||||||
// 初始化2M物理页
|
// 初始化2M物理页
|
||||||
for (ul i = 0; i < (pos.FB_length<<2); i += PAGE_2M_SIZE)
|
for (ul i = 0; i < (pos.FB_length << 2); i += PAGE_2M_SIZE)
|
||||||
{
|
{
|
||||||
// 计算当前2M物理页对应的pdt的页表项的物理地址
|
// 计算当前2M物理页对应的pdt的页表项的物理地址
|
||||||
tmp1 = phys_2_virt((ul *)(*tmp & (~0xfffUL)) + (((fb_virt_addr + i) >> PAGE_2M_SHIFT) & 0x1ff));
|
tmp1 = phys_2_virt((ul *)(*tmp & (~0xfffUL)) + (((fb_virt_addr + i) >> PAGE_2M_SHIFT) & 0x1ff));
|
||||||
@ -69,7 +69,7 @@ int printk_init(const int char_size_x, const int char_size_y)
|
|||||||
|
|
||||||
kdebug("width=%d\theight=%d", pos.width, pos.height);
|
kdebug("width=%d\theight=%d", pos.width, pos.height);
|
||||||
|
|
||||||
while(1)
|
while (1)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ void auto_newline()
|
|||||||
pos.y = pos.max_y;
|
pos.y = pos.max_y;
|
||||||
int lines_to_scroll = 2;
|
int lines_to_scroll = 2;
|
||||||
scroll(true, lines_to_scroll * pos.char_size_y, false);
|
scroll(true, lines_to_scroll * pos.char_size_y, false);
|
||||||
pos.y -= lines_to_scroll;
|
pos.y -= (lines_to_scroll-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -674,7 +674,7 @@ int printk_color(unsigned int FRcolor, unsigned int BKcolor, const char *fmt, ..
|
|||||||
|
|
||||||
while (space_to_print--)
|
while (space_to_print--)
|
||||||
{
|
{
|
||||||
putchar(pos.FB_address, pos.width, pos.x * pos.char_size_x, pos.y * pos.char_size_y, BLACK, BLACK, ' ');
|
putchar(pos.FB_address, pos.width, pos.x * pos.char_size_x, pos.y * pos.char_size_y, FRcolor, BKcolor, ' ');
|
||||||
++pos.x;
|
++pos.x;
|
||||||
|
|
||||||
auto_newline();
|
auto_newline();
|
||||||
@ -723,6 +723,9 @@ int do_scroll(bool direction, int pixels)
|
|||||||
|
|
||||||
memcpy(pos.FB_address, (pos.FB_address + src), sizeof(unsigned int) * (pos.FB_length - src));
|
memcpy(pos.FB_address, (pos.FB_address + src), sizeof(unsigned int) * (pos.FB_length - src));
|
||||||
memset(pos.FB_address + (pos.FB_length - src), 0, sizeof(unsigned int) * (src));
|
memset(pos.FB_address + (pos.FB_length - src), 0, sizeof(unsigned int) * (src));
|
||||||
|
for (int i = 0; i < 1000; ++i)
|
||||||
|
for (int j = 0; j < 1000; ++j)
|
||||||
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -811,7 +814,7 @@ int scroll(bool direction, int pixels, bool animation)
|
|||||||
*/
|
*/
|
||||||
int cls()
|
int cls()
|
||||||
{
|
{
|
||||||
memset(pos.FB_address, BLACK, pos.FB_length*sizeof(unsigned int));
|
memset(pos.FB_address, BLACK, pos.FB_length * sizeof(unsigned int));
|
||||||
pos.x = 0;
|
pos.x = 0;
|
||||||
pos.y = 0;
|
pos.y = 0;
|
||||||
return 0;
|
return 0;
|
||||||
@ -843,7 +846,7 @@ void set_pos_VBE_FB_addr(uint *virt_addr)
|
|||||||
pos.FB_address = (uint *)virt_addr;
|
pos.FB_address = (uint *)virt_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint* get_pos_VBE_FB_addr()
|
uint *get_pos_VBE_FB_addr()
|
||||||
{
|
{
|
||||||
return pos.FB_address;
|
return pos.FB_address;
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user