|
|
1.1 root 1: #ifndef __VGABIOS_H
2: #define __VGABIOS_H
3:
4: #include "types.h" // u8
5: #include "farptr.h" // struct segoff_s
6:
7: // standard BIOS Video Parameter Table
8: struct VideoParam_s {
9: u8 twidth;
10: u8 theightm1;
11: u8 cheight;
12: u16 slength;
13: u8 sequ_regs[4];
14: u8 miscreg;
15: u8 crtc_regs[25];
16: u8 actl_regs[20];
17: u8 grdc_regs[9];
18: } PACKED;
19:
20: extern struct VideoParam_s video_param_table[29];
21:
22: struct saveBDAstate {
23: u16 video_mode;
24: u16 video_cols;
25: u16 video_pagesize;
26: u16 crtc_address;
27: u8 video_rows;
28: u16 char_height;
29: u8 video_ctl;
30: u8 video_switches;
31: u8 modeset_ctl;
32: u16 cursor_type;
33: u16 cursor_pos[8];
34: u16 video_pagestart;
35: u8 video_page;
36: /* current font */
37: struct segoff_s font0;
38: struct segoff_s font1;
39: };
40:
41: // Mode flags
42: #define MF_GRAYSUM 0x0002
43: #define MF_NOPALETTE 0x0008
44: #define MF_CUSTOMCRTC 0x0800
45: #define MF_LINEARFB 0x4000
46: #define MF_NOCLEARMEM 0x8000
47: #define MF_VBEFLAGS 0xfe00
48:
49: // Memory model types
50: #define MM_TEXT 0x00
51: #define MM_CGA 0x01
52: #define MM_HERCULES 0x02
53: #define MM_PLANAR 0x03
54: #define MM_PACKED 0x04
55: #define MM_NON_CHAIN_4_256 0x05
56: #define MM_DIRECT 0x06
57: #define MM_YUV 0x07
58:
59: struct vgamode_s {
60: u8 memmodel;
61: u16 width;
62: u16 height;
63: u8 depth;
64: u8 cwidth;
65: u8 cheight;
66: u16 sstart;
67: };
68:
69: // vgafonts.c
70: extern u8 vgafont8[];
71: extern u8 vgafont14[];
72: extern u8 vgafont16[];
73: extern u8 vgafont14alt[];
74: extern u8 vgafont16alt[];
75:
76: // Debug settings
77: #define DEBUG_VGA_POST 1
78: #define DEBUG_VGA_10 3
79:
80: // vgabios.c
81: extern int VgaBDF;
82: extern int HaveRunInit;
83: #define SET_VGA(var, val) SET_FARVAR(get_global_seg(), (var), (val))
84: struct carattr {
85: u8 car, attr, use_attr, pad;
86: };
87: struct cursorpos {
88: u8 x, y, page, pad;
89: };
90: int vga_bpp(struct vgamode_s *vmode_g);
91: u16 calc_page_size(u8 memmodel, u16 width, u16 height);
92: void save_bda_state(u16 seg, struct saveBDAstate *info);
93: void restore_bda_state(u16 seg, struct saveBDAstate *info);
94: struct vgamode_s *get_current_mode(void);
95: int vga_set_mode(int mode, int flags);
96:
97: // vgafb.c
98: void vgafb_scroll(int nblines, int attr
99: , struct cursorpos ul, struct cursorpos lr);
100: void vgafb_write_char(struct cursorpos cp, struct carattr ca);
101: struct carattr vgafb_read_char(struct cursorpos cp);
102: void vgafb_write_pixel(u8 color, u16 x, u16 y);
103: u8 vgafb_read_pixel(u16 x, u16 y);
104:
105: // vbe.c
106: extern u32 VBE_total_memory;
107: extern u32 VBE_capabilities;
108: extern u32 VBE_framebuffer;
109: extern u16 VBE_win_granularity;
110: #define VBE_OEM_STRING "SeaBIOS VBE(C) 2011"
111: #define VBE_VENDOR_STRING "SeaBIOS Developers"
112: #define VBE_PRODUCT_STRING "SeaBIOS VBE Adapter"
113: #define VBE_REVISION_STRING "Rev. 1"
114: struct bregs;
115: void handle_104f(struct bregs *regs);
116:
117: #endif // vgabios.h
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.