Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void *vg_init(unsigned short mode) {
- struct reg86u reg86;
- vbe_mode_info_t info;
- struct mem_range range;
- int r;
- reg86.u.b.intno = 0x10;
- reg86.u.w.ax = 0x4F02;
- reg86.u.w.bx = 1 << 14 | mode;
- if (sys_int86(®86) != OK) {
- printf("set_vbe_mode: sys_int86() failed \n");
- return NULL;
- }
- vbe_get_mode_info(mode, &info);
- range.mr_base = info.PhysBasePtr;
- range.mr_limit = range.mr_base + info.XResolution * info.YResolution * info.BitsPerPixel;
- if (OK != (r = sys_privctl(SELF, SYS_PRIV_ADD_MEM, &range)))
- panic("video_txt: sys_privctl (ADD_MEM) failed: %d\n", r);
- video_mem = vm_map_phys(SELF, (void *) range.mr_base, info.XResolution * info.YResolution * info.BitsPerPixel);
- h_res = info.XResolution;
- v_res = info.YResolution;
- bits_per_pixel = info.BitsPerPixel;
- printf("physical address: %x\n",info.PhysBasePtr);
- return NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement