Extensor Modo Protegido ZEUS'98 |
El miembro del proyecto ZEUS'98, Daniel Lancha, ha desarrollado:
el modo protegido, | |
el extensor para Watcom | |
y el arranque desde disco. |
Modo Protegido
Para abrir boca creé unos ejemplos simples para MS-DOS de como entrar y salir de modo protegido desde modo real ( no funcionaran en modo virtual ), a modo de prueba.
Estos ejemplos son:
Creación de descriptores, carga del GDT y el IDT, activa P-Bit, habilita A20, muestra Ok por pantalla desde modo protegido, descarga IDT, desactiva P-Bit y sale.
PAG
Lo mismo que PROTETED pero esta vez utilizando el paginado de 4 Kbytes del 386. Construye una tabla de entradas a páginas y otra de páginas realizando unas direcciones lineales que corresponden con los 4 primeros Megas de memoria física.
Similar a los anteriores pero muestra el control de tareas del 386, conmutación, protección,etc..
Estos ejemplos están desarrollados en ensamblador, compilados con el Turbo Assembler de Borland y lincados con el Turbo Link del mismo.
Una vez concertadas, mas o menos, las nuevas características del nuevo ZEUS'98, se penso realizarlo con el compilador Watcom C/C++ en modo protegido que utiliza el extensor DOS4G/W, para lo cual había que realizar un extensor compatible con éste capaz de ser arrancable desde disco, es mas, totalmente independiente del MS-DOS, pero a la vez poder ser cargado desde el mismo.
Este extensor esta aun sin terminar, aunque se han eliminado gran cantidad de bugs.
Por el momento ya esta desarrollada la entrada en modo protegido, filtros para el MS-DOS, paginación, excepciones, interrupción de teclado y timer, así como la mayoría de funciones DPMI, control de tareas, proceso de lincaje, gestión de acceso a disco, etc...
Por el momento vamos por la versión 1.04 del extensor.
Hay creados una serie de archivos de ejemplo que utilizan el extensor para que puedas aprender como funcionan las diferentes secciones de este.
Ejemplo 1
Este primer ejemplo trata de invertir la pantalla texto,
siendo una
prueba del sistema de VIDEO asi como de procedimientos básicos.
Ejemplo 2
En esta prueba se testea el sistema multitarea ,
creando una tarea que muestra un mensaje por pantalla.
Ejemplo 3
Se prueban las clases de C++, su inicializacion y
destruccion, ya que
se sobrecarga el NEW y el DELETE. La clase creada saca un
mensaje
por pantalla en la posicion X e Y indicada.
Ejemplo 4
Este ejemplo prueba la escritura en disco a lo burro.
Se cepilla los 6 primeros sectores de la pista 60. El
resultado correcto
de la prueba tiene que rellenar la pantalla de 'A' solo
parcialmente.
Ejemplo 5
Es una ampliación del ejemplo 2. Creamos cinco tareas
que van sacando
mensajes por pantalla conforme se van ejecutando y
destruyendo.
Arranque
Nuestro arranque se penso hacerlo de momento solo para un disco de 3'' 1/2 por lo que es necesario crear un programa de 512 bytes en ensamblador que ira ubicado en el bootsector ( sector 1 pista 0 cara 0 ) del disco. Este programa se encarga de hacer funciones básicas de la int 21h ( MS-DOS ) como mostrar un mensaje por pantalla o reiniciar el sistema, así como es lógico cargar el ejecutable ( EXE sin overlays ) que sera el sistema operativo en si. Este disco utilizara un disco FAT de 12bits donde el ejecutable estará en la raíz del disco a partir de la pista 1.
Para crear un disco sistema ZEUS tambien se incluye un programilla en Turbo Pascal de Borland que pone el bootsector, el ejecutable y crea la FAT del disco para que funcione correctamente.
ATENCIÓN: Este programa destruye toda la información del disco.
Volver a Indice |
Esta página está hospedada
en Consigue tu Página Web Gratis