BOOT

QJUMP Ltd, 24 King Street, Ramton, Cambs.CB4 4Q (Reino Unido)

Manual traducido del inglés por E. DE JESUS
QLAVE 1988

La mayoría de los programas del QL pertenecen a una de las siguientes dos categorías principales, "extensiones residentes" y "programas transitorios". El SuperToolkit II es un ejemplo de una extensión residente, Quill lo es de un programa transitorio. Tal como su nombre indica, una extensión residente se diseña para ser cargada al principio de cada sesión de trabajo con el QL, y permanece residente por el resto de la sesión. De forma similar, un programa transitorio se carga cuando se le necesita, y puede ser eliminado de la memoria del QL cuando no se le necesite más.

Los programas invocados mediante "hotkey" son un caso especial diferente a los dos anteriores, ya que estos programas residen permanentemente, pero se empieza un programa transitorio al pulsar la "hotkey".

La situación se complica por el hecho de que algunos programas transitorios precisan de la presencia de un grupo particular de extensiones residentes, las cuales no pueden ser cargadas mientras haya programas transitorios presentes en el QL. La primera restricción es impuesta por el mismo programa, mientras que la segunda la impone el QDOS.

Este problema es suavizado por la facilidad BOOT del QL, que está pensada para ser usada en la carga de todas las extensiones residentes necesarias, las cuales pueden proceder de fuentes diferentes. El fichero BOOT se usa también en muchos programas comerciales para permitir a los usuarios el acceso inmediato al nuevo logicial - algunos usuarios no sobrepasan nunca este punto ¡ y reinicializan su QL cada vez que quieren cambiar de programa !.

La modificación de los programas BOOT para hacer frente a los nuevos logiciales, puede ir de muy fácil a imposible. Es fácil para los programas que se cargan con EXEC disN_nombredefichero, en cuyo caso no es necesario modificar tu propio fichero BOOT. Conversiones difíciles son aquellos casos en los que el fichero BOOT del programa original cae en la tentación de incluir mensajes de copyright, preciosos bordes, sonidos musicales u otros métodos de obscurecer los trozos útiles del código del fichero. Ficheros BOOT imposibles son aquellos que incluyen POKEs, o empiezan una aplicación con una sentencia CALL - estos pueden ser usados en algunas ocasiones, pero requieren el trabajo de un experto buceador en el código máquina, para poderlos convertir a una forma higiénica.

Para modificar tus propios programas BOOT, debes determinar que extensiones residentes son necesarios para ejecutar el logicial. Se puede determinar este extremo leyendo el manual o examinando el propio fichero BOOT del programa; puede pensarse que es una extensión residente cualquier código cargado por sentencias como la siguiente:

base=RESPR(tamaño):LBYTES disN_nombredefichero,base:CALL base

Puedes copiar las sentencias a tu propio fichero BOOT en el lugar apropiado, y puedes copiar también a tu disco BOOT normal el propio fichero contenedor de las extensiones. La forma anterior puede encontrarse repartida en varias líneas, u obscurecida por métodos como el de reservar solamente un área con el procedimiento RESPR y cargar mediante LBYTES varios ficheros dentro de dicha área. El fundamento, sin embargo, sigue siendo el mismo.

En los siguientes ejemplos, los tamaños dados para los ficheros no son necesariamente precisos: deberás usar el menú "Ficheros" de QRAM o el SuperToolkit II para encontrar el tamaño real necesario. Se asume que el medio BOOT es "flp1_", el cual, evidentemente, puede ser cambiado por cualquiera de tu elección. Todos los ejemplos usan la versión "ptr_gen" de la Interfase del Puntero, la cual trabaja tanto con la Interfase Interna para Ratón de QJUMP como con la Interfase del SuperMouse de Sandy, además de con el teclado. Esta versión sustituye a las versiones anteriores "ptr_kbd", "ptr_imi", etc. y a la invocada mediante el comando POINTER del SuperMouse de Sandy.

1. Un ejemplo sencillo de fichero BOOT para cargar y activar QRAM

100 base=RESPR(12388):LBYTES flp1_ptr_gen,base:CALL base

110 base=RESPR(7762):LBYTES flp1_wman,base:CALL base

120 base=RESPR(25882):LBYTES flp1_hotkey,base:CALL base

130 HOTKEY

La sentencia HOTKEY de la línea 130 empieza el programa transitorio llamado HOTKEY, el cual es el responsable de que al pulsar "ALT"+"/" se empiece QRAM. Una vez que empieza el programa HOTKEY, no es posible reservar espacio para ninguna otra extensión residente sin eliminar dicho programa HOTKEY. Por ello la sentencia HOTKEY debe ser colocada después de todas las sentencias RESPR del fichero BOOT.

2. Incluyendo el SuperToolkit II con QRAM

100 base=RESPR(16384):LBYTES flp1_tk2_rext,base:CALL base

110 base=RESPR(12388):LBYTES flp1_ptr_gen,base:CALL base

120 base=RESPR(7762):LBYTES flp1_wman,base:CALL base

130 base=RESPR(25882):LBYTES flp1_hotkey,base:CALL base

140 HOTKEY

o bien

100 TK2_EXT

110 base=RESPR(12388):LBYTES flp1_ptr_gen,base:CALL base

120 base=RESPR(7762):LBYTES flp1_wman,base:CALL base

130 base=RESPR(25882):LBYTES flp1_hotkey,base:CALL base

140 HOTKEY

La línea 100 inicializa el SuperToolkit II, en el primer caso a partir de un fichero "tk2_rext" creado mediante la versión configurable del Toolkit, en el segundo caso a partir de la ROM de una interfase de disco convenientemente equipada.

3. Un fichero BOOT con QRAM y QTYP juntos

100 base=RESPR(5424):LBYTES flp1_qtyp_qspell,base:CALL base

110 base=RESPR(12388):LBYTES flp1_ptr_gen,base:CALL base

120 base=RESPR(7762):LBYTES flp1_wman,base:CALL base

130 base=RESPR(29538):LBYTES flp1_hotkey,base:CALL base

140 HOTKEY

Como en el caso del SuperToolkit II, se cargan las extensiones SPELL de la forma normal: el programa QTYP propiamente dicho se supone incluido en el "flp1_hotkey" junto a QRAM.

4. SuperToolkit II, QMON, QRAM, QTYP, QPTR y disco RAM/amortiguador de impresora

100 base=RESPR(16384):LBYTES flp1_tk2_rext,base:CALL base

110 base=RESPR(11242):LBYTES flp1_qmon_bin,base:CALL base

120 base=RESPR(5424):LBYTES flp1_qtyp_qspell,base:CALL base

130 base=RESPR(12388):LBYTES flp1_ptr_gen,base:CALL base

140 base=RESPR(7762):LBYTES flp1_wman,base:CALL base

150 base=RESPR(29538):LBYTES flp1_hotkey,base:CALL base

160 base=RESPR(9234):LBYTES flp1_qptr,base:CALL base

170 base=RESPR(5108):LBYTES flp1_ramprt,base:CALL base

180 HOTKEY

200 OUTLN #0;512,256,0,0

210 IF RMODE=8 THEN

220 WINDOW #0;448,40,32,216

230 ELSE

240 WINDOW #0;512,50,0,206

250 END IF

260 AT #0;1,0

De la forma señalada, se cargan todos los productos QJUMP. A parte de tener que cargar "wman" después de "ptr_gen", el orden de los ficheros no tiene importancia. Como siempre, la llamada HOTKEY debe venir después. La línea 200 y las siguientes son necesarias para el correcto funcionamiento del Toolkit del Puntero (QPTR).

5. QRAM y el Editor de Digital Precision

100 base=RESPR(6074):LBYTES flp1_xtras,base:CALL base

110 base=RESPR(12388):LBYTES flp1_ptr_gen,base:CALL base

120 base=RESPR(7762):LBYTES flp1_wman,base:CALL base

130 base=RESPR(29538):LBYTES flp1_hotkey,base:CALL base

140 HOTKEY

El Editor de Digital Precision está escrito en SuperBasic y necesita el Turbo Toolkit para funcionar, de manera que en el fichero BOOT se carga el fichero "xtras". Se puede comenzar una copia del editor en cualquier momento ejecutándola desde el SuperBasic mediante la sentencia:

EXEC flp1_edt_bin

Por supuesto, el editor puede también ser ejecutado a partir del menú "Ficheros" de QRAM.

6. QRAM y el sistema "runtime" de Q_Liberator y sus extensiones

100 base=RESPR(10016):LBYTES flp1_qlib_run,base:CALL base

110 base=RESPR(1928):LBYTES flp1_qlib_bin,base:CALL base

120 base=RESPR(1476):LBYTES flp1_qlib_ext,base:CALL base

140 base=RESPR(12388):LBYTES flp1_ptr_gen,base:CALL base

150 base=RESPR(7762):LBYTES flp1_wman,base:CALL base

160 base=RESPR(29538):LBYTES flp1_hotkey,base:CALL base

170 HOTKEY

Este ejemplo carga las extensiones usadas para ejecutar el compilador Q_Liberator, el cual puede entonces ser ejecutado de la forma detallada en su manual. Como se carga también el sistema "runtime", cualquier programa que no lo incluya puede ser también ejecutado.

Con QRAM se incluye una utilidad llamada BOOT_MAKE que puede usarse para acelerar la carga de las extensiones residentes colocándolas todas juntas en único fichero, el cual se cargará más rápidamente que los ficheros individuales por separado. Puede haber, como efecto secundario, una pequeña reducción de la cantidad de memoria requerida.

BOOT_MAKE produce dos ficheros: un fichero en SuperBASIC nombrado normalmente "flp1_boot", y el fichero con las extensiones residentes que recibirá el mismo nombre pero acabado en "_rext". Los ficheros de extensiones pueden ser copiados desde cualquier número de medios fuente al fichero "_rext", cambiando el medio fuente si fuera necesario; como los ficheros son siempre escritos en el fichero "_rext" del medio de destino, éste debe permanecer en el mismo dispositivo hasta que BOOT_MAKE acabe. El diálogo para producir un fichero BOOT equivalente al descrito en el anterior ejemplo 5 podría ser el siguiente:

Boot filename> flp1_boot

Command (ESC to finish)>

Extension file (ESC to finish)> flp2_xtras

Extension file (ESC to finish)> flp2_ptr_gen

Extension file (ESC to finish)> flp2_wman

Extension file (ESC to finish)> flp2_hotkey

Extension file (ESC to finish)>

Command (ESC to finish)> hotkey

Command (ESC to finish)
Nombre del fichero Boot> flp1_boot

Comando (ESC para acabar)>

Fichero de extensiones (ESC para acabar)> flp2_xtras

Fichero de extensiones (ESC para acabar)> flp2_ptr_gen

Fichero de extensiones (ESC para acabar)> flp2_wman

Fichero de extensiones (ESC para acabar)> flp2_hotkey

Fichero de extensiones (ESC para acabar)>

Comando (ESC para acabar)> hotkey

Comando (ESC para acabar)> 

El fichero BOOT resultante sería:

100 base=RESPR(52106):LBYTES flp1_boot_rext,base:CALL base

110 HOTKEY

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