X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fdos%2Fvbe.c;fp=src%2Fdos%2Fvbe.c;h=d5d75dff5f62804f8790d4b5d52b97654fe56201;hp=0000000000000000000000000000000000000000;hb=2c4602e53eaab44272ea5cd62667c939e6d2f61b;hpb=e306e700b04607927f659948590c2c2ed234157e diff --git a/src/dos/vbe.c b/src/dos/vbe.c new file mode 100644 index 0000000..d5d75df --- /dev/null +++ b/src/dos/vbe.c @@ -0,0 +1,28 @@ +#include "vbe.h" +#include "cdpmi.h" + +int vbe_getinfo(struct vbe_info *info) +{ + void *lowbuf; + uint16_t seg, sel; + struct dpmi_regs regs = {0}; + + if(!(seg = dpmi_alloc(512 / 16, &sel))) { + return -1; + } + + regs.eax = 0x4f00; + regs.es = seg; + regs.edi = 0; + dpmi_int(0x10, ®s); + + if(regs.eax & 0xff00) { + dpmi_free(sel); + return -1; + } + + lowbuf = (void*)((uint32_t)seg << 4); + memcpy(info, lowbuf, sizeof info); + dpmi_free(sel); + return 0; +}