mirror of https://git.ia64.cc/perso/cos2000v2.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.2 KiB
148 lines
4.2 KiB
/*******************************************************************************/ |
|
/* COS2000 - Compatible Operating System - LGPL v3 - Hordé Nicolas */ |
|
/* */ |
|
#include "types.h" |
|
#include "video.h" |
|
|
|
#define TEXTSCREEN 0xB8000 /* debut de la memoire video texte */ |
|
#define GRPHSCREEN 0xA0000 /* debut de la memoire video graphique */ |
|
#define ENDOFVMEM 0xC0000 |
|
|
|
/* Registres VGAs */ |
|
|
|
#define SEQUENCER 0x3c4 |
|
#define MISC_WRITE 0x3c2 |
|
#define MISC_READ 0x3cc |
|
#define CCRT 0x3D4 |
|
#define ATTRIBS 0x3c0 |
|
#define GRAPHICS 0x3ce |
|
#define STATE 0x3da |
|
|
|
/* Taille d'un plan de bit */ |
|
|
|
#define PLANESIZE 0x10000 |
|
|
|
/* Registres VGA */ |
|
typedef struct misc_regs |
|
{ |
|
u8 Miscellaneous_Output_Register; |
|
} misc_regs __attribute__ ((packed)); |
|
|
|
typedef struct sequencer_regs |
|
{ |
|
u8 Reset_Register; |
|
u8 Clocking_Mode_Register; |
|
u8 Map_Mask_Register; |
|
u8 Character_Map_Select_Register; |
|
u8 Sequencer_Memory_Mode_Register; |
|
} sequencer_regs __attribute__ ((packed)); |
|
|
|
typedef struct crtc_regs |
|
{ |
|
u8 Horizontal_Total_Register; |
|
u8 End_Horizontal_Display_Register; |
|
u8 Start_Horizontal_Blanking_Register; |
|
u8 End_Horizontal_Blanking_Register; |
|
u8 Start_Horizontal_Retrace_Register; |
|
u8 End_Horizontal_Retrace_Register; |
|
u8 Vertical_Total_Register; |
|
u8 Overflow_Register; |
|
u8 Preset_Row_Scan_Register; |
|
u8 Maximum_Scan_Line_Register; |
|
u8 Cursor_Start_Register; |
|
u8 Cursor_End_Register; |
|
u8 Start_Address_High_Register; |
|
u8 Start_Address_Low_Register; |
|
u8 Cursor_Location_High_Register; |
|
u8 Cursor_Location_Low_Register; |
|
u8 Vertical_Retrace_Start_Register; |
|
u8 Vertical_Retrace_End_Register; |
|
u8 Vertical_Display_End_Register; |
|
u8 Offset_Register; |
|
u8 Underline_Location_Register; |
|
u8 Start_Vertical_Blanking_Register; |
|
u8 End_Vertical_Blanking; |
|
u8 CRTC_Mode_Control_Register; |
|
u8 Line_Compare_Register; |
|
} crtc_regs __attribute__ ((packed)); |
|
|
|
typedef struct graphics_regs |
|
{ |
|
u8 Set_Reset_Register; |
|
u8 Enable_Set_Reset_Register; |
|
u8 Color_Compare_Register; |
|
u8 Data_Rotate_Register; |
|
u8 Read_Map_Select_Register; |
|
u8 Graphics_Mode_Register; |
|
u8 Miscellaneous_Graphics_Register; |
|
u8 Color_Dont_Care_Register; |
|
u8 Bit_Mask_Register; |
|
} graphics_regs __attribute__ ((packed)); |
|
|
|
typedef struct attributs_regs |
|
{ |
|
u8 Palette_Registers[16]; |
|
u8 Attribute_Mode_Control_Register; |
|
u8 Overscan_Color_Register; |
|
u8 Color_Plane_Enable_Register; |
|
u8 Horizontal_Pixel_Panning_Register; |
|
u8 Color_Select_Register; |
|
} attributs_regs __attribute__ ((packed)); |
|
|
|
typedef struct vgamode |
|
{ |
|
misc_regs misc; |
|
sequencer_regs sequencer; |
|
crtc_regs ctrc; |
|
graphics_regs graphic; |
|
attributs_regs attribut; |
|
} vgamode __attribute__ ((packed)); |
|
|
|
/* fonction obligatoires */ |
|
void VGA_remap_memory(u32 vaddr); |
|
u8 *VGA_detect_hardware(void); |
|
u8 VGA_setvideo_mode(u8 mode); |
|
u8 *VGA_getvideo_drivername(void); |
|
u8 *VGA_getvideo_capabilities(void); |
|
videoinfos *VGA_getvideo_info(void); |
|
u32 VGA_mem_to_video(void *src, u32 dst, u32 size, bool increment_src); |
|
u32 VGA_video_to_mem(u32 src, void *dst, u32 size); |
|
u32 VGA_video_to_video(u32 src, u32 dst, u32 size); |
|
void VGA_wait_vretrace(void); |
|
void VGA_wait_hretrace(void); |
|
void VGA_page_set(u8 page); |
|
void VGA_page_show(u8 page); |
|
void VGA_page_split(u16 y); |
|
void VGA_cursor_enable(void); |
|
void VGA_cursor_disable(void); |
|
void VGA_cursor_set(u16 x, u16 y); |
|
u32 VGA_font_load(u8 * def, u8 size, u8 font); |
|
void VGA_font1_set(u8 num); |
|
void VGA_font2_set(u8 num); |
|
void VGA_blink_enable(void); |
|
void VGA_blink_disable(void); |
|
|
|
static videofonction vgafonctions = { |
|
&VGA_remap_memory, |
|
&VGA_detect_hardware, |
|
&VGA_setvideo_mode, |
|
&VGA_getvideo_drivername, |
|
&VGA_getvideo_capabilities, |
|
&VGA_getvideo_info, |
|
&VGA_mem_to_video, |
|
&VGA_video_to_mem, |
|
&VGA_video_to_video, |
|
&VGA_wait_vretrace, |
|
&VGA_wait_hretrace, |
|
&VGA_page_set, |
|
&VGA_page_show, |
|
&VGA_page_split, |
|
&VGA_cursor_enable, |
|
&VGA_cursor_disable, |
|
&VGA_cursor_set, |
|
&VGA_font_load, |
|
&VGA_font1_set, |
|
&VGA_font2_set, |
|
&VGA_blink_enable, |
|
&VGA_blink_disable |
|
};
|
|
|