4 #include "config.h" // CONFIG_VGA_EMULATE_TEXT
5 #include "types.h" // u8
6 #include "farptr.h" // struct segoff_s
7 #include "std/vga.h" // struct video_param_s
10 #define SR_HARDWARE 0x0001
13 #define SR_REGISTERS 0x0008
14 #define SR_SAVE 0x0100
15 #define SR_RESTORE 0x0200
18 #define MF_LEGACY 0x0001
19 #define MF_GRAYSUM 0x0002
20 #define MF_NOPALETTE 0x0008
21 #define MF_CUSTOMCRTC 0x0800
22 #define MF_LINEARFB 0x4000
23 #define MF_NOCLEARMEM 0x8000
24 #define MF_VBEFLAGS 0xfe00
29 #define MM_HERCULES 0x02
30 #define MM_PLANAR 0x03
31 #define MM_PACKED 0x04
32 #define MM_NON_CHAIN_4_256 0x05
33 #define MM_DIRECT 0x06
46 // Graphics pixel operations.
48 struct vgamode_s *vmode_g;
65 // Custom internal storage in BDA
66 #define VGA_CUSTOM_BDA 0xb9
74 #define BF_PM_MASK 0x0f
75 #define BF_EMULATE_TEXT 0x10
76 #define BF_SWCURSOR 0x20
78 #define GET_BDA_EXT(var) \
79 GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
80 #define SET_BDA_EXT(var, val) \
81 SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
82 #define MASK_BDA_EXT(var, off, on) \
83 SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
85 static inline int vga_emulate_text(void) {
86 return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
90 #define DEBUG_VGA_POST 1
91 #define DEBUG_VGA_10 3
95 extern u8 vgafont14[];
96 extern u8 vgafont16[];
97 extern u8 vgafont14alt[];
98 extern u8 vgafont16alt[];
101 extern struct video_save_pointer_s video_save_pointer_table;
102 extern struct video_param_s video_param_table[29];
106 extern int HaveRunInit;
107 #define SET_VGA(var, val) SET_FARVAR(get_global_seg(), (var), (val))
109 u8 car, attr, use_attr, pad;
114 int vga_bpp(struct vgamode_s *vmode_g);
115 u16 calc_page_size(u8 memmodel, u16 width, u16 height);
116 u16 get_cursor_shape(void);
117 struct cursorpos get_cursor_pos(u8 page);
118 int bda_save_restore(int cmd, u16 seg, void *data);
119 struct vgamode_s *get_current_mode(void);
120 int vga_set_mode(int mode, int flags);
121 extern struct video_func_static static_functionality;
124 void init_gfx_op(struct gfx_op *op, struct vgamode_s *vmode_g);
125 void handle_gfx_op(struct gfx_op *op);
126 void *text_address(struct cursorpos cp);
127 void vgafb_move_chars(struct cursorpos dest
128 , struct cursorpos src, struct cursorpos movesize);
129 void vgafb_clear_chars(struct cursorpos dest
130 , struct carattr ca, struct cursorpos movesize);
131 void vgafb_write_char(struct cursorpos cp, struct carattr ca);
132 struct carattr vgafb_read_char(struct cursorpos cp);
133 void vgafb_write_pixel(u8 color, u16 x, u16 y);
134 u8 vgafb_read_pixel(u16 x, u16 y);
135 void vgafb_set_swcursor(int enable);
138 extern u32 VBE_total_memory;
139 extern u32 VBE_capabilities;
140 extern u32 VBE_framebuffer;
141 extern u16 VBE_win_granularity;
142 #define VBE_OEM_STRING "SeaBIOS VBE(C) 2011"
143 #define VBE_VENDOR_STRING "SeaBIOS Developers"
144 #define VBE_PRODUCT_STRING "SeaBIOS VBE Adapter"
145 #define VBE_REVISION_STRING "Rev. 1"
147 void handle_104f(struct bregs *regs);