// Driver implementation for Jank's text frame buffer // Buffer can display 80 columns by 25 Rows // Start of buffer is at (real)address 0x000B8000 // Memory at this section is divided into 16-bit cells // | 15-8 | 7-4 | 0-3 // | Asci | FG | BG #include "types.h" #include "framebuffer.h" static u8* Frame_Buffer = (u8*)FRAME_BUFFER_ADDR; // Writes character to a given cell in the framebuffer // @cell parameter is the logical (linear)index into the buffer void write_cell_fb(u32 cell, u8 c, u8 fg, u8 bg) { Frame_Buffer[cell] = c; Frame_Buffer[cell+1] = (fg & 0x0f << 4) | (bg & 0x0f); } void clear_fb(void) { for(unsigned cell=0;cell> 8) & 0x00ff) ); out_buffer(FB_CMD, FB_LOW_CMD); out_buffer(FB_DATA, position & 0x00ff); } /* generic test func for this module */ void test_fb(void) { clear_fb(); write_cell_fb(FRAME_CELL(0), 'a', Green, White); write_cell_fb(FRAME_CELL(1), 'b', Green, White); write_cell_fb(FRAME_CELL(2), 'c', Green, White); fb_move_cursor(5); }