assembly bios

assembly - ¿Es posible llamar a bibliotecas de Windows que vivirán en el disco duro de un programa que vive en el BIOS?



(5)

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).

Mi problema es que estamos limitados por el tamaño de la aplicación que podemos mostrar al 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? (Restricción de tamaño de 60 KB en el ejecutable final del programa)

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


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

  • establecer el procesador en modo protegido y memoria de mapa como se esperaba (modelo plano)
  • desarrollar un controlador del sistema de archivos y cargar eso
  • admite todas las tarjetas de video, ratones, monitores, teclados, etc. posibles, incluido el hardware heredado
  • configure el entorno de ejecución para que todas las referencias externas de la DLL solicitada estén presentes, incluidos (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.

Escribí un código de 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.


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


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 bastante razonable basada en caracteres. Me gustaría echar un vistazo a cómo algunos de los cargadores de arranque de Linux hacen esto.



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

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

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