diff --git a/vgasrc/clext.c b/vgasrc/clext.c
index 0640752..45fab80 100644
--- a/vgasrc/clext.c
+++ b/vgasrc/clext.c
@@ -315,6 +315,17 @@
             && vmode_g <= &cirrus_modes[ARRAY_SIZE(cirrus_modes)-1].info);
 }
 
+void
+clext_list_modes(u16 seg, u16 *dest, u16 *last)
+{
+    int i;
+    for (i=0; i<ARRAY_SIZE(cirrus_vesa_modelist) && dest<last; i++) {
+        SET_FARVAR(seg, *dest, GET_GLOBAL(cirrus_vesa_modelist[i].vesamode));
+        dest++;
+    }
+    stdvga_list_modes(seg, dest, last);
+}
+
 static u16
 cirrus_vesamode_to_mode(u16 vesamode)
 {
@@ -613,59 +624,6 @@
 
 
 /****************************************************************
- * vesa calls
- ****************************************************************/
-
-void
-clext_list_modes(u16 seg, u16 *dest, u16 *last)
-{
-    int i;
-    for (i=0; i<ARRAY_SIZE(cirrus_vesa_modelist) && dest<last; i++) {
-        SET_FARVAR(seg, *dest, GET_GLOBAL(cirrus_vesa_modelist[i].vesamode));
-        dest++;
-    }
-    stdvga_list_modes(seg, dest, last);
-}
-
-static void
-cirrus_vesa_10h(struct bregs *regs)
-{
-    if (regs->bl == 0x00) {
-        regs->bx = 0x0f30;
-        regs->ax = 0x004f;
-        return;
-    }
-    if (regs->bl == 0x01) {
-        SET_BDA(vbe_flag, regs->bh);
-        regs->ax = 0x004f;
-        return;
-    }
-    if (regs->bl == 0x02) {
-        regs->bh = GET_BDA(vbe_flag);
-        regs->ax = 0x004f;
-        return;
-    }
-    regs->ax = 0x014f;
-}
-
-static void
-cirrus_vesa_not_handled(struct bregs *regs)
-{
-    debug_stub(regs);
-    regs->ax = 0x014f;
-}
-
-void
-cirrus_vesa(struct bregs *regs)
-{
-    switch (regs->al) {
-    case 0x10: cirrus_vesa_10h(regs); break;
-    default:   cirrus_vesa_not_handled(regs); break;
-    }
-}
-
-
-/****************************************************************
  * init
  ****************************************************************/
 
diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c
index 9e1fe1c..c1b03f0 100644
--- a/vgasrc/vbe.c
+++ b/vgasrc/vbe.c
@@ -321,6 +321,26 @@
 }
 
 static void
+vbe_104f10(struct bregs *regs)
+{
+    switch (regs->bl) {
+    case 0x00:
+        regs->bx = 0x0f30;
+        break;
+    case 0x01:
+        SET_BDA(vbe_flag, regs->bh);
+        break;
+    case 0x02:
+        regs->bh = GET_BDA(vbe_flag);
+        break;
+    default:
+        regs->ax = 0x014f;
+        return;
+    }
+    regs->ax = 0x004f;
+}
+
+static void
 vbe_104fXX(struct bregs *regs)
 {
     debug_stub(regs);
@@ -346,6 +366,7 @@
     case 0x07: vbe_104f07(regs); break;
     case 0x08: vbe_104f08(regs); break;
     case 0x0a: vbe_104f0a(regs); break;
+    case 0x10: vbe_104f10(regs); break;
     default:   vbe_104fXX(regs); break;
     }
 }
