Clean up the assembly; remove menutest.c
authorhpa <hpa>
Tue, 18 May 2004 16:54:40 +0000 (16:54 +0000)
committerhpa <hpa>
Tue, 18 May 2004 16:54:40 +0000 (16:54 +0000)
menu/biosio.c
menu/biosio.h
menu/menutest.c [deleted file]

index 33f5593..55cdd01 100644 (file)
 #include "string.h"
 #include "biosio.h"
 
+/*
+ * Note: don't use "r" or "g" for 8-bit values.  Some versions of gcc
+ * will actually try to generate x86-64 registers that way!  Use
+ * "abcd" or "abcdmi", respectively.  Newer gccs have the newer "q"
+ * and "Q" constraints, but older gccs don't know those.
+ */
+
 /* BIOS Assisted output routines */
 
 /* Print character and attribute at cursor */
@@ -44,7 +51,7 @@ static inline char asm_getdisppage(void)
     
     asm("movb $0x0f,%%ah ; "
        "int $0x10 ; "
-       "movb %%bh,%0" : "=rm" (page) : : "eax", "ebp");
+       "movb %%bh,%0" : "=abcdm" (page) : : "eax", "ebp");
     return page;
 }
 
@@ -61,7 +68,7 @@ static inline void asm_getpos(char *row, char *col, char page)
        "movb %%dh,%0 ; "
        "movb %%dl,%1"
        : "=m" (*row), "=m" (*col)
-       : "g" (page)
+       : "abcdmi" (page)
        : "eax", "ebx", "ecx", "edx");
 }
 
@@ -75,7 +82,7 @@ static inline void asm_gotoxy(char row,char col, char page)
     asm volatile("movb %1,%%bh ; "
                 "movb $0x02,%%ah ; "
                 "int $0x10"
-                : : "d" ((row << 8) + col), "g" (page)
+                : : "d" ((row << 8) + col), "abcdmi" (page)
                 : "eax", "ebx");
 }
 
@@ -108,7 +115,7 @@ unsigned char sleep(unsigned int msec)
 void asm_beep()
 {
   // For a beep the page number (bh) does not matter, so set it to zero
-  asm volatile("movb $0x0E07, %%ax;"
+  asm volatile("movw $0x0E07, %%ax;"
               "xor  %%bh,%%bh;"
               "int $0x10"
               : : : "eax","ebx");
@@ -127,17 +134,19 @@ static inline void asm_putchar(char x, char attr,char page)
                 "movw $0x1, %%cx;"
                 "int $0x10"
                 : "+a" (x)
-                : "g" (page), "g" (attr)
+                : "abcdmi" (page), "acdmi" (attr)
                 : "ebx", "ecx", "ebp");
 }
 
 static inline void scrollup()
 {
+  unsigned short dx = (getnumrows()<< 8) + getnumcols();
+  
   asm volatile("movw $0x0601, %%ax;"
               "movb $0x07, %%bh;"
               "xor %%cx, %%cx;"
               "int $0x10"
-              : "+d"((getnumrows()<< 8) + getnumcols())
+              : "+d" (dx)
               : : "eax","ebx","ecx");
 }
 
@@ -307,9 +316,9 @@ static inline unsigned char asm_checkkbdbuf()
   asm volatile("movb $0x11, %%ah;"
               "int $0x16 ;"
               "setnz %0;"
-              : "=r" (ans)
+              : "=abcdm" (ans)
               : 
-              : "%eax");
+              : "eax");
   return ans;
 }
 
index e9bd504..c17cc8f 100644 (file)
@@ -49,7 +49,7 @@ static inline unsigned char readbiosb(unsigned short addr)
 
     asm("movw %2,%%fs ; "
        "movb %%fs:%1,%0"
-       : "=r" (v)
+       : "=abcd" (v)
        : "m" (*(unsigned char *)(unsigned int)addr),
        "r" ((unsigned short)0));
     return v;
diff --git a/menu/menutest.c b/menu/menutest.c
deleted file mode 100644 (file)
index 8dd7069..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- c -*- ------------------------------------------------------------- *
- *   
- *   Copyright 2004 Murali Krishnan Ganapathy - All Rights Reserved
- *
- *   This program is free software; you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
- *   Bostom MA 02111-1307, USA; either version 2 of the License, or
- *   (at your option) any later version; incorporated herein by reference.
- *
- * ----------------------------------------------------------------------- */
-
-#ifndef NULL
-#define NULL ((void *) 0)
-#endif
-
-#include "menu.h"
-#include "biosio.h"
-#include "string.h"
-#include "syslinux.h"
-
-char ONE,TWO,THREE,FOUR,MAIN;
-
-int menumain(void)
-{
-  t_menuitem * curr;
-
-  // Choose the default title and setup default values for all attributes....
-  init_menusystem(NULL);
-  
-  // Choose the default values for all attributes and char's
-  // -1 means choose defaults (Actually the next 4 lines are not needed)
-  //set_normal_attr (-1,-1,-1,-1); 
-  //set_status_info (-1,-1); 
-  //set_title_info  (-1,-1); 
-  //set_misc_info(-1,-1,-1,-1);
-  
-  // menuindex = add_menu(" Menu Title ");
-  // add_item("Item string","Status String",TYPE,"any string",NUM)
-  //   TYPE = OPT_RUN | OPT_EXITMENU | OPT_SUBMENU | OPT_CHECKBOX | OPT_INACTIVE
-  //   "any string" not used by the menu system, useful for storing kernel names
-  //   NUM = index of submenu if OPT_SUBMENU, 
-  //         0/1 default checked state if OPT_CHECKBOX
-  //         unused otherwise.
-
-  FOUR = add_menu(" LEVEL 4 ");
-  add_item("Exit to prompt", "Exit the menu system", OPT_EXITMENU, "exit", 0);
-
-  THREE = add_menu(" 1234567890123456789012 ");
-  add_item("GOTO LEVEL 4","Go one level up",OPT_SUBMENU,NULL,FOUR);
-  add_item("Exit to prompt", "Exit the menu system", OPT_EXITMENU, "exit", 0);
-
-  TWO = add_menu(" LEVEL 2 ");
-  add_item("GOTO LEVEL 3","Go one level up",OPT_SUBMENU,NULL,THREE);
-  add_item("Exit to prompt", "Exit the menu system", OPT_EXITMENU, "exit", 0);
-
-  ONE = add_menu(" LEVEL 1 ");
-  add_item("GOTO LEVEL 2","Go one level up",OPT_SUBMENU,NULL,TWO);
-  add_item("Exit to prompt", "Exit the menu system", OPT_EXITMENU, "exit", 0);
-
-  MAIN = add_menu(" Main Menu ");  
-  add_item("Begin Menu Depth Test","Only Allows Depth Of Two",OPT_SUBMENU,NULL,ONE);
-  add_item("Exit to prompt", "Exit the menu system", OPT_EXITMENU, "exit", 0);
-
-  curr = showmenus(MAIN); // Initial menu is the one with index MAIN
-  if (curr)
-  {
-        if (curr->action == OPT_EXIT) return 0;
-        if (curr->action == OPT_RUN)
-        {
-            if (syslinux) runcommand(curr->data);
-            else csprint(curr->data);
-            return 1;
-        }
-        csprint("Error in programming!");
-  }
-  return 0;
-}
-