eobish

annotate src/dos/vbe.h @ 7:6a350c554e46

started DOS port
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 19 Jan 2015 15:49:14 +0200
parents
children
rev   line source
nuclear@7 1 #ifndef VBE_H_
nuclear@7 2 #define VBE_H_
nuclear@7 3
nuclear@7 4 #include "inttypes.h"
nuclear@7 5
nuclear@7 6 #define VBE_ATTR_LFB (1 << 7)
nuclear@7 7 #define VBE_MODE_LFB (1 << 14)
nuclear@7 8
nuclear@7 9 #pragma pack (push, 0)
nuclear@7 10 struct vbe_info {
nuclear@7 11 uint8_t sig[4];
nuclear@7 12 uint16_t version;
nuclear@7 13 uint32_t oem_str_ptr;
nuclear@7 14 uint8_t caps[4]; /* capabilities */
nuclear@7 15 uint32_t vid_mode_ptr; /* vbefarptr to video mode list */
nuclear@7 16 uint16_t total_mem; /* num of 64k mem blocks */
nuclear@7 17 uint16_t oem_sw_rev; /* VBE implementation software revision */
nuclear@7 18 uint32_t oem_vendor_name_ptr;
nuclear@7 19 uint32_t oem_product_name_ptr;
nuclear@7 20 uint32_t oem_product_rev_ptr;
nuclear@7 21 uint8_t reserved[222];
nuclear@7 22 uint8_t oem_data[256];
nuclear@7 23 };
nuclear@7 24
nuclear@7 25 struct vbe_mode_info {
nuclear@7 26 uint16_t mode_attr;
nuclear@7 27 uint8_t wina_attr, winb_attr;
nuclear@7 28 uint16_t win_gran, win_size;
nuclear@7 29 uint16_t wina_seg, winb_seg;
nuclear@7 30 uint32_t win_func;
nuclear@7 31 uint16_t scanline_bytes;
nuclear@7 32
nuclear@7 33 /* VBE 1.2 and above */
nuclear@7 34 uint16_t xres, yres;
nuclear@7 35 uint8_t xcharsz, ycharsz;
nuclear@7 36 uint8_t num_planes;
nuclear@7 37 uint8_t bpp;
nuclear@7 38 uint8_t num_banks;
nuclear@7 39 uint8_t mem_model;
nuclear@7 40 uint8_t bank_size; /* bank size in KB */
nuclear@7 41 uint8_t num_img_pages;
nuclear@7 42 uint8_t reserved1;
nuclear@7 43
nuclear@7 44 /* direct color fields */
nuclear@7 45 uint8_t rmask_size, rpos;
nuclear@7 46 uint8_t gmask_size, gpos;
nuclear@7 47 uint8_t bmask_size, bpos;
nuclear@7 48 uint8_t xmask_size, xpos;
nuclear@7 49 uint8_t cmode_info; /* direct color mode attributes */
nuclear@7 50
nuclear@7 51 /* VBE 2.0 and above */
nuclear@7 52 uint32_t fb_addr; /* physical address of the linear framebuffer */
nuclear@7 53 uint32_t reserved2;
nuclear@7 54 uint16_t reserved3;
nuclear@7 55
nuclear@7 56 uint8_t reserved4[206];
nuclear@7 57 };
nuclear@7 58 #pragma pack (pop)
nuclear@7 59
nuclear@7 60 struct vbe_info *vbe_get_info(void);
nuclear@7 61 struct vbe_mode_info *vbe_get_mode_info(unsigned int mode);
nuclear@7 62
nuclear@7 63 int vbe_set_mode(unsigned int mode);
nuclear@7 64
nuclear@7 65 int vbe_set_palette_bits(int bits);
nuclear@7 66 void vbe_set_palette(int idx, int *col, int count, int bits);
nuclear@7 67
nuclear@7 68 void print_mode_info(FILE *fp, struct vbe_mode_info *modei);
nuclear@7 69
nuclear@7 70 #endif /* VBE_H_ */