MENÚ BOOT

 

ZIP file
(12 Kb)
Javier Guerra
Badajoz, marzo 2008

  Indice:
Descripción
Características
     Opciones
     Limitaciones
Cómo funciona
Un ejemplo
     BOOT
     MENU_BAS como BOOT
     MENU_CFG
     MENU_LST
     DIR del soporte
Notas

Contenido del archivo zip:
boot
menu_bas (el programa)
menu_cfg (configuración)
menu_lst (listado)
menu_scr (imagen de fondo)
menu_txt (info sobre menu)

Descripción

El programa 'MENUBOOT' está pensado para su uso en discos y/o microdrives que contengan varios programas en el mismo soporte y que requieran de distintos ficheros BOOT o EXEC para ser ejecutados. Sirve pues para facilitar la selección de programas mediante un menú una vez insertado el soporte en el lector.

También resulta útil para ejecutar una aplicación que admita el uso de distintos ficheros de datos o para cualquier cosa susceptible de ser lanzada desde un fichero BOOT.

En definitiva, el 'MENUBOOT' no es más que un BOOT de BOOTs interactivo.

Características

Opciones

El programa es capaz de mostrar una lista de aplicaciones, resaltando una de ellas, así como mostrar la información correspondiente a cada una de las entradas, permitiendo hacer su elección mediante las teclas 'Arriba', 'Abajo' y 'Espacio'.

Si no existe el fichero de configuración menu_cfg, el programa mostrará por defecto sólo una ventana central con las opciones del menú y su información. Esto ocurre si está activado el TK2 o bien no se indica el valor de conf$ en el programa menu_bas.

La ventana donde se muestra el menú y la información puede ser movida de sitio, y redimensionada. También la anchura de menú puede ser redimensionada, siendo la anchura de la ventana de información inversamente proporcional a los cambios de la anchura del menú, es decir, si ampliamos la anchura del menú reduciremos la anchura del espacio de información. Afortunadamente siempre podemos cambiar la anchura total para compensar, teniendo como límite el ancho de la pantalla. Podemos, además, intercambiar el orden de visualización de menu e info.

Las entradas en el menú no están limitadas a la altura de la ventana. Si el número de entradas del menú excede la altura en caracteres de la ventana de menú, se mostrará un indicador  en la ventana del número de opción seleccionada y del total de opciones del menú, y podrá hacerse scroll con las opciones del menú en la ventana.

Si un nombre de opción en 'menu_lst' contiene caracteres "_", se sustituirán en el menú por un espacio en blanco.

La primera línea del texto informativo acerca de cada aplicación se muestra resaltada automáticamente.

Podemos cambiar todos los valores respecto a los colores de papel y tinta, la sombra de la ventana, el resaltado del menú, el marco de las ventanas, etc...

Dependiendo  de la configuración del fichero menu_cfg, el programa puede mostrar un fondo de pantalla con un color de fondo y una captura de imagen sobre él que colocaremos en la dirección de memoria de pantalla deseada. La imagen puede tener la altura que deseemos (no superando la altura de pantalla en pixels, es decir, 256), pero la anchura de la imagen debe ser la anchura de la pantalla (512 o 256, según el modo de pantalla), pues los datos se cargan directamente con LBYTES.

Se muestra también, en este último caso, un título en una línea, un subtítulo en dos líneas y una nota al pie en una línea, con la información acerca del contenido general del disco que estamos mostrando.

El programa NO requiere ninguna extensión al sistema como p.ej. Toolkit II u otras, ya que está escrito en SuperBASIC estándar, pero el uso de TK2 permite detectar si existe un fichero de configuración y hace uso de los valores por defecto PROG_USE y DATA_USE..., así pues su uso es recomendable (1).

Limitaciones

El programa cuenta con algunas limitaciones:

Cómo funciona

El programa, que tiene el nombre MENU_BAS, se carga mediante la facilidad del sistema de cargar ficheros BOOT al introducir el soporte y pulsar F1 o F2.

Establece el modo de pantalla y la ubicación de los archivos, carga el resto de parámetros a través de MENU_CFG o por defecto y dibuja las ventanas en la pantalla.

Seguidamente lee el archivo MENU_LST para conocer la información del soporte y las aplicaciones que debe mostrar, y las muestra. La estructura del archivo MENU_LST es auto-explicativa. Ver más abajo.

A continuación nos da la opción de que seleccionemos las distintas entradas del menú, mientras nos va mostrando la información correspondiente a cada una de ellas que se encuentra en cada archivo _INFO de cada aplicación.

P.ej. Si tenemos un juego que se llama JUEGO_EXE que queremos ejecutar, deberemos crear un archivo JUEGO_INFO para el 'MENUBOOT'. Este _INFO debe adaptarse al tamaño de la ventana de información del programa.

Su primera línea será mostrada resaltada por defecto en el programa.

A parte del _INFO podemos adjuntar un _TXT con información más específica si necesitamos más explicaciones para hacer funcionar la aplicación, pero este _TXT no se mostrará desde el programa.

Por último, una vez seleccionada la aplicación, sólo nos resta pulsar 'Espacio' para ejecutarla. El 'MULTIBOOT' llamará al _BOOT del programa que queramos ejecutar con un LRUN. De igual forma que con el _INFO en el ejemplo anterior, deberemos crear un JUEGO_BOOT que contenga las instrucciones de carga de la aplicación, por ejemplo:

 100 REM carga juego
110 EXEC_W JUEGO_EXE
Una vez lanzada la opción el programa termina, a no ser que tengamos activado el valor multi en el archivo MENU_CFG. En tal caso el programa permite lanzar tantos programas e instancias de programas como deseemos hasta pulsar ESC.

Ejemplo

BOOT

El BOOT que se adjunta carga el TK2 y lanza el programa MENU_BAS:
 disp$='flp1_' : TK2_EXT : DATA_USE=disp$ : PROG_USE=disp$ : DEST_USE=disp$ : LRUN menu_bas
Este BOOT es un ejemplo de cómo podemos cargar los valores que usaremos por defecto en caso de que compilemos MENU_BAS (2). Tras la compilación sólo debemos sustuir  LRUN menu_bas por:
 EX menu_exe
Si vamos a ejecutar MENU_BAS sin compilar, podemos incluso renombrar MENU_BAS por BOOT y quitar los REMark de las primeras líneas de MENU_BAS para cargar el TK2 como se indica en la siguiente sección.

MENU_BAS como BOOT

Las primeras líneas del programa MENU_BAS son las únicas que deberás alterar en caso de usar MENU_BAS como BOOT o en cualquier otro caso. Estas líneas son:
 100 REMark programa boot-menu
110 REMark version 1.4 - jav 2008
120 :
130 extension=1 : REMark TK2 cargado S/N
140 :
150 IF extension THEN
160   REMark Borra los REMarks siguientes
170   REMark si usas 'menu_bas' como BOOT
180   REMark TK2_EXT
190   REMark DATA_USE="flp1_"
200   REMark PROG_USE="flp1_"
210   disp$=PROGD$
220 ELSE
230   disp$="flp1_"  : REMark disp. x def.
240   ch_fi=4        : REMark canal x def.
250 END IF
260 conf$="menu_cfg" : REMark configuraci.
270 menu$="menu_lst" : REMark lista menu
280 :
290 REMark Programa
300 :
...
Si activamos el valor de extension (valores 0|1, línea 130) haremos uso del TK2 y sus facilidades. El valor por defercto es 1, y el resto de los valores de la configuración están pensados para que pueda compilarse el programa menu_bas.

En caso de usar MENU_BAS como BOOT y activar extension, podemos quitar los REMarks de las líneas 180 a 200.

Si indicamos conf$="" (cadena vacía, línea 260) el programa tomará los valores por defecto ignorando los de MENU_CFG. Igualmente, se tomarán los valores por defecto si tenemos activada la variable extension y configurado convenientemente conf$ pero no existe MENU_CFG.

El archivo MENU_LST y la configuración de menu$ es imprescindible para el uso del programa en esta versión.

Podemos sustituir los valores de conf$ y menu$ convenientemente, y renombrar los correspondientes archivos.

disp$ indicará el directorio por defecto donde buscar los archivos necesarios.

MENU_CFG

El contenido y los parámetros del fichero MENU_CFG son autoexplicativos. Edita el fichero MENU_CFG para cambiar la apariencia del menú.

Si tenemos cargado TK2 y no hay un fichero MENU_CFG disponible, el programa toma ciertos valores preprogramados por defecto.

MENU_LST

Se muestra a continuación la estructura de un archivo MENU_LST de ejemplo con tres aplicaciones. La estructura y las lineas con '*****' deben respetarse hasta la línea marcada como '***** Fin de los datos':

 ***** info para menú de programas
***** Versión - 1 línea 1
***** descripción: 4 lineas de texto
Texto del título
Texto del subtítulo linea 1
Texto del subtítulo linea 2
Nota al pie
***** número total de programas - 1 línea
3
***** listado de programas - 1 línea por programa
aplica_1
aplica_2
aplica_3
***** Fin de los datos
Lo que sigue a la lista será ignorado

DIR del soporte

Listado de archivos completo que contendrá el soporte que empleemos para el MENU_LST anterior. Los ficheros _TXT no son necesarios:

 BOOT
MENU_BAS
MENU_CFG
MENU_SCR
MENU_LST
LEEME_TXT
APLICA_1_BOOT
APLICA_1_EXE
APLICA_1_INFO
APLICA_1_TXT
APLICA_2_BOOT
APLICA_2_EXE
APLICA_2_INFO
APLICA_2_TXT
APLICA_3_BOOT
APLICA_3_EXE
APLICA_3_INFO
APLICA_3_TXT
...
Mínimo listado, usando MENU_BAS renombrado como BOOT (no se listan los ficheros APLICA_* en este caso):
 BOOT
 MENU_LST
 ...
Llamando a MENU_EXE (MENU_BAS compilado) desde el BOOT (no se listan los ficheros APLICA_* en este caso):
 BOOT
 MENU_EXE
 MENU_LST
 ...

Notas

Recuerda definir la variable disp$ en el BOOT para indicar la ruta desde donde se ejecutarán los programas.

Cargue en el _BOOT de cada aplicación las extensiones y/o parámetros que el programa requiera para su perfecta ejecución.

__________

(1) TK2 ya es de libre distribución y uso. Puede encontrarse en casi todas las controladoras y tarjetas de expansión para QL o bien junto a los emuladores de nuestra web. Podemos cargar TK2 desde disco ya que el código de este es totalmente reubicable. Ver manual TK2 reconfigurable para un ejemplo del código de carga.

(2) Sin duda será necesario repasar el código fuente para evitar los WARNING del compilador y hacer su funcionamiento más rápido sustituyendo, por ejemplo, las variables numéricas por variables enteras (variable%) o terminando todos los IFs con END IF... etc.


Sinclair QL Recursos en Castellano Alojado en / Hosted at:
Sinclair QL Recursos en Castellano
Sinclair QL Spanish Resources