-
Notifications
You must be signed in to change notification settings - Fork 4
Cómo arrancar DIV
Normalmente, para arrancar DIV únicamente nos tenemos que preocupar de ejecutar D.EXE
. Sin embargo, a la hora depurar hay que tener en cuenta que se pone en marcha un flujo de ejecución que involucra varios procesos.
DIV es una aplicación de 32 bits que se ejecuta en MS-DOS, un sistema operativo diseñado para funcionar en modo real de 16 bits. Gracias a los gestores de memoria y los extensores de DOS, podemos superar las limitaciones del sistema operativo para acceder a todas las ventajas del modo protegido del 386. El extensor de DOS que usa DIV se llama DOS/4GW y se encuentra en su propio ejecutable, DOS4GW.EXE
, incluido en el directorio SYSTEM
dentro de DIV.
Los primeros extensores de DOS requerían ser ejecutados explícitamente, pasándoles el programa que realmente queríamos ejecutar como parámetro. Por ejemplo, con GO32, el extensor incluido originalmente con DJGPP, teníamos que arrancar GO32 PROGRAMA.EXE
en vez de simplemente PROGRAMA.EXE
. Esto tiene sentido porque el extensor es lo primero que debe entrar en funcionamiento, para preparar la CPU para el modo protegido (entre otras cosas, dependiendo del extensor) antes de entrar en el main
de nuestro programa. Más tarde, por conveniencia, los extensores cambiaron de estrategia. Algunos se incorporaban en el propio EXE del programa, otros lo que hacían era incorporar un stub (y otros permitían elegir cualquiera de las dos opciones). Un stub es un pequeño programa cuya misión es ser lo primero en ejecutarse (por tanto, en modo real de 16 bits), para buscar el extensor y ejecutarlo. Es decir, viene a ser prácticamente equivalente a un fichero BAT con la línea DOS4GW PROGRAMA.EXE
.
Los desarrolladores originales de DIV decidieron modificar el stub para darle más trabajo aparte de simplemente buscar DOS4GW y ejecutarlo. Puede encontrarse en el árbol del proyecto con el nombre wstub (la 'w' es de Watcom, ya que es un stub modificado a partir del que se incluía con Watcom). Su tarea ahora no es arrancar un único proceso, sino varios distintos dependiendo de la CPU detectada y de las acciones del usuario. A continuación se muestra un diagrama de flujo (aproximado, simplificado) de las tareas que involucran a wstub:
POR HACER…