2010-02-16 4 views
8

Estoy tratando de escribir un programa que será una opción de BIOS (después de POST). Me gustaría que la aplicación tenga una buena GUI en lugar de estar basada en texto (hay varias razones para esto, la localización es una de ellas).¿Es posible llamar a bibliotecas de Windows que vivirán en el disco duro desde un programa que vive en el BIOS?

Mi problema es que estamos limitados por el tamaño de la aplicación que podemos mostrar en el BIOS.

¿Es posible utilizar MASM32 para "vincular" a la dll en el disco duro para que podamos usar las API de Windows para desarrollar la GUI?

¿O hay una API que esté disponible para nosotros para crear la GUI que se puede vincular al ejecutable final? (60K restricción de tamaño en el programa ejecutable final)

Cualquier ayuda que pueda dar sería muy apreciada, gracias de antemano.

Respuesta

9

Es posible. Todo lo que tendría que hacer es:

  • establezca el procesador en modo protegido y mapa de memoria como se esperaba (modelo plano)
  • desarrollar un controlador de sistema de archivos y la carga que
  • apoyo todas las posibles tarjetas de vídeo, ratones, monitores, teclados, etc., incluyendo potencialmente hardware heredado
  • configurar el entorno de ejecución de modo que todas las referencias externas de la DLL solicitado están presentes, incluyendo (para Windows) KERNEL32, GDI, etc.

Hay mucho en esto, y no es fácil. Sin embargo, un ejemplo que se acerca es MenuetOS, un entorno impresionantemente compacto. Pero nace completamente de un replanteamiento completo de cómo implementar un entorno de GUI.


He escrito el código BIOS que simula una interfaz GUI. La tarjeta de video se mantiene en modo texto, la fuente se ve más bonita, los separadores de celdas de texto se desactivan y se reconoce el mouse. Con una animación simple, todo encajó en 60 KiB más o menos.

+0

Me gusta esta respuesta: D, ¿cómo encajas eso en 60k? : D –

+0

¿Podría mostrar imágenes o caracteres Unicode como chino? –

+4

Tengo un impresionante algoritmo de compresión de código para hacerlo. Pero aún no he resuelto el descompresor. :-) – wallyk

5

No, no es posible. Una aplicación de Windows requiere que el sistema operativo Windows se ejecute en la parte superior, por lo que el BIOS debe haber arrancado el SO y haber terminado de ejecutarse antes de que se pueda usar una GUI (o aplicación de consola) de Windows. Incluso para acceder a los archivos DLL en el disco, necesita un sistema de archivos, que no estará disponible hasta que el sistema operativo se haya iniciado.

Sin embargo, en 60K, debería poder incluir una GUI basada en caracteres bastante razonable. Me gustaría echar un vistazo a cómo algunos de los cargadores de arranque de Linux hacen esto.

0

No hay implementaciones de BIOS que lo admitan. Pero en teoría es posible, pero tenga en cuenta que primero debe desarrollar todo el sistema operativo :)

+0

No estoy tratando de crear un sistema operativo, estoy tratando de escribir un módulo que se ejecutará en el BIOS. Puedo garantizar que Windows 7 estará en la computadora, sin embargo, este código debe ejecutarse en el BIOS antes de que se cargue el sistema operativo. –

0

Quizás le interese consultar el código fuente de XOSL - un old boot manager que tenía una buena interfaz gráfica de usuario con ventana.

0

No estoy seguro si la solicitud es realmente posible. (Teniendo en cuenta el contexto de la pregunta)

Para que esto funcione, deberá inicializar todo el entorno de Windows de Microsoft para usar las funciones de la API para dibujar una GUI.

Por curiosidad, ¿qué haces en este programa de BIOS?

Cuestiones relacionadas