foo
authorJohn Tsiombikas <nuclear@mutantstargoat.com>
Wed, 2 May 2018 10:45:40 +0000 (13:45 +0300)
committerJohn Tsiombikas <nuclear@mutantstargoat.com>
Wed, 2 May 2018 10:45:40 +0000 (13:45 +0300)
src/kmain.c
src/vbe.c

index e0d1358..645c87e 100644 (file)
@@ -25,6 +25,7 @@ along with this program.  If not, see <https://www.gnu.org/licenses/>.
 #include "timer.h"
 #include "contty.h"
 #include "video.h"
+#include "vbetest.h"
 
 
 void logohack(void);
index 58cf2e7..d4847d2 100644 (file)
--- a/src/vbe.c
+++ b/src/vbe.c
@@ -9,14 +9,14 @@
 
 #define MODE_LFB       (1 << 14)
 
-extern void *low_mem_buffer;
+extern unsigned char low_mem_buffer[];
 
 struct vbe_info *vbe_get_info(void)
 {
        struct vbe_info *info;
        struct int86regs regs;
 
-       info = low_mem_buffer;
+       info = (struct vbe_info*)low_mem_buffer;
 
        memcpy(info->sig, "VBE2", 4);
 
@@ -25,6 +25,10 @@ struct vbe_info *vbe_get_info(void)
        regs.eax = 0x4f00;
        int86(0x10, &regs);
 
+       if((regs.eax & 0xffff) != 0x4f) {
+               return 0;
+       }
+
        return info;
 }
 
@@ -33,7 +37,7 @@ struct vbe_mode_info *vbe_get_mode_info(int mode)
        struct vbe_mode_info *mi;
        struct int86regs regs;
 
-       mi = low_mem_buffer;
+       mi = (struct vbe_mode_info*)low_mem_buffer;
 
        memset(&regs, 0, sizeof regs);
        regs.es = (uint32_t)low_mem_buffer >> 4;
@@ -41,7 +45,7 @@ struct vbe_mode_info *vbe_get_mode_info(int mode)
        regs.ecx = mode;
        int86(0x10, &regs);
 
-       if(regs.eax & 0xff00) {
+       if((regs.eax & 0xffff) != 0x4f) {
                return 0;
        }