#ifndef VGA_H #define VGA_H #include #include "string.h" #include "interrupts.h" #include "port.h" #include "driver.h" #define NOF_MODE_REGS 66 typedef struct { int x; int y; int color_depth; uint8_t regs[NOF_MODE_REGS]; uint8_t *segment; } vga_mode_t; typedef struct { driver_t base; interrupt_t *interrupts; port8_t misc_port; port8_t crtc_index_port; port8_t crtc_data_port; port8_t sequencer_index_port; port8_t sequencer_data_port; port8_t graphics_controller_index_port; port8_t graphics_controller_data_port; port8_t attribute_controller_index_port; port8_t attribute_controller_read_port; port8_t attribute_controller_write_port; port8_t attribute_controller_reset_port; vga_mode_t mode; void *context; } vga_t; typedef struct { driver_vtable_t base; } vga_vtable_t; void vga_init( vga_t *vga, void *context ); void vga_activate( void *obj ); void vga_deactivate( void *obj ); void vga_deinit( void *obj ); void vga_print_info( void *obj ); vga_mode_t vga_make_mode( const int x, const int y, const int color_depth ); bool vga_set_mode( vga_t *vga, const vga_mode_t mode ); bool vga_supports_mode( const vga_mode_t mode ); typedef struct { int R; int G; int B; } vga_color_t; vga_color_t vga_make_RGB( int R, int G, int B ); void vga_set_pixel( vga_t *vga, const int x, const int y, const vga_color_t color ); void vga_draw_rectangle( vga_t *vga, const int x, const int y, const int w, const int h, const vga_color_t color ); #endif // VGA_H