FastExec es una utilidad importante y se utiliza frecuentemente
en el Amiga. Por ese motivo me interesé en traducir su AmigaGuide. Su objetivo es optimizar exec.library utilizando memoria fast
en lugar de memoria chip (más lenta). Se encuentra igualmente en Aminet en formato AmigaGuide.
Aunque fue shareware, ahora es gratuito.
============================================================ 24 de Agosto 1997 Torbjörn Andersson presenta FastExec 2.9 Dominio Público ============================================================ 1. Contenidos ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Contenidos ............................................ 1 Introducción ............................................ 2 Requerimientos ............................................ 3 Instalación ............................................ 4 Utilización ............................................ 5 Comentarios ............................................ 6 Reportar Fallos ............................................ 7 Historia ............................................ 8 Créditos ............................................ 9 Autor ........................................... 10 2. Introducción ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ La mayoría de programas utiliza memoria fast de forma automática en mi Amiga, pero no exec.library, la librería de mayor utilización en AmigaOS, ni tampoco expansion.library. Permanecen en memoria chip más lenta. Como es una pérdida de tiempo, programé FastExec. FastExec instalará una notificación con la prioridad de expansion.library mas dos. Una vez exec- o exec- y expansion.library se han inicializado tras reiniciar, la notificación o etiqueta de FastExec se ejecuta. Primero configura la caché si se indicó mediante la línea de comandos. Luego parchea AddMemList() en exec.library. Si se indicó añadirá por último la memoria no-autoconfig. Posteriormente se devuelve el control al sistema. Cuando se hace una llamada a AddMemList(), el parche emplea la función original para añadir memoria al sistema. Luego trata de reservar memoria fast moviendo exec.library a esta memoria. Hay opción de mover otras cosas a memoria fast. Si no se pudiera mover expansion.library a memoria fast porque fue añadida más tarde, se parcheará AddLibrary() para tratar de reubicarla. Otra característica de FastExec es que puede parchear las rutinas de interrupción del exec, para acelerar un poco el sistema. Con kickstart 1.2/1.3, MakeLibrary() queda parcheada de forma automática de modo que las bases de las librerías son alineadas como longword. 3. Requerimientos ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ FastExec requiere memoria fast real. Bajo AmigaOS 1.2/1.3 es necesaria Arp.library 4. Instalación ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Edite el fichero S:Startup-Sequence para dar inicio a FastExec. Recomiendo situarlo justo después de SetPatch o quizá incluso antes. La primera vez para probarlo, edite las primeras líneas de este modo: ask "Use FastExec?" if warn FastExec REBOOT endif Más tarde podrá utilizar su entorno habitual sin depender de si FastExec funciona o no, pues no se garantiza que lo vaya a hacer. No redirija la salida a NIL:, FastExec sólo ofrece información si se produce algún error. 5. Utilización ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Uso : FastExec [SYSINFO] [REMOVE] [REBOOT] [NOEXEC] [PATCH] [FASTEXP] [FASTSSP] [FASTVBR] [FASTMEM] [FASTINT] [CACHE 0xhhhhhhhh] [ADDRESS 0xhhhhhhhh] [ADDMEM <base> <size> <attr> <pri> ...] Todo valor puede ser indicado tanto en modo decimal como en modo hexadecimal. Escriba "0x" antes de hexadecimal. Las opciones no tienen efecto si FastExec ya se hizo residente. (excepto para SYSINFO y REMOVE). SYSINFO ¯¯¯¯¯¯¯ Muestra diferentes informaciones acerca del sistema. REMOVE ¯¯¯¯¯¯ Si FastExec instaló con anterioridad su etiqueta residente, será eliminada. No liberará la memoria que ocupó hasta que reinicie. REBOOT ¯¯¯¯¯¯ Instala la etiqueta residente y reinicia. En otro caso se instalará la etiqueta pero no se realizará reinicio alguno. NOEXEC ¯¯¯¯¯¯ No tratará de mover exec.library a memoria fast, en caso de que no funcionase y prefiera utilizar otras opciones. PATCH ¯¯¯¯¯ Parchea las rutinas de interrupción de exec. La función principal es que ExecBase está embebida en instrucciones lea en lugar de ser leídas desde la ubicación $4, algo útil si tiene chips AGA o utiliza Enforcer. FASTEXP ¯¯¯¯¯¯¯ Realoja expansion.library en memoria fast. FASTSSP ¯¯¯¯¯¯¯ Realoja la pila de supervisor en memoria fast. FASTVBR ¯¯¯¯¯¯¯ Realoja el registro de base de vector en memoria fast. El procesador 68000 no cuenta con VBR. (Los datos de SYSINFO siempre indicarán que es cero). FASTMEM ¯¯¯¯¯¯¯ Realoja las cabeceras de listas de memoria en memoria fast. Un efecto colateral interesante es que ShowConfig (versión 39.1) indica que tenemos ~3970.0 meg CHIP... FASTINT ¯¯¯¯¯¯¯ Realoja la memoria para listas de servidores de interrupciones en memoria fast. CACHE ¯¯¯¯¯ Llama a CacheControl() con el parámetro suministrado. Más abajo tiene valores de utilidad como los definidos en exec.i. Tenga en cuenta que el 68000 y el 68010 no tienen caché. Y el 68020 sólo cuenta con caché de instrucciones. CACRF_EnableI = 0x00000001 (Activa caché de instrucciones) CACRF_IBE = 0x00000010 (Activa burst para instrucciones) CACRF_EnableD = 0x00000100 (Activa caché de datos) CACRF_DBE = 0x00001000 (Activa burst para datos) CACRF_CopyBack = 0x80000000 ADDRESS ¯¯¯¯¯¯¯ Aguarda a la memoria que comience desde esta dirección a ser añadida antes de mover nada. Si esta memoria contase con la prioridad más alta (al añadirse), se moverá exec.library a la misma. Es de gran utilidad si exec.library ya se encontrase en memoria fast, pero puede disponer de memoria aún más rápida. ADDMEM ¯¯¯¯¯¯ Añade memoria a la lista de memoria del sistema. Puede resultar útil si contamos con memoria no autoconfig. Utilice "5" para atributos si no sabe qué más utilizar. Pondré mi memoria como ejemplo. Esta es la información que obtengo de ella con FastExec mediante el parámetro SYSINFO: MEMORY HEADERS: Address Name Lower Upper Type Pri $08000000 DKB1240_Memory $08000020 $08800000 $0005 10 Si lo configurase manualmente y quisiera que FastExec lo hiciera de ahora en adelante, escribiría lo siguiente: FastExec ADDMEM 0x08000000 0x00800000 5 10 6. Comentarios ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Las opciones FASTVBR y PATCH no funcionan con VMM (V3.3a), al menos para mí. Supongo que no es algo demasiado extraño, cuando menos para la opción PATCH. FastExec permanece residente en memoria, pero en ciertos sistemas la memoria fast no se sitúa en su lugar habitual después de hacer reset. Entonces el sistema no encontrará exec.library con su información relativa a los elementos residentes en memoria. FastExec ni discos RAD podrán en tal caso sobrevivir a un reinicio. Tengo conocimiento de otros problemas relativos a FastExec, pero no dispongo de mucho tiempo o de equipos en los que hacer pruebas. En caso de que quiera realizar pruebas, el archivo incluye el código fuente. 7. Reportar Fallos ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Si se enfrenta a algún problema, intente ser tan preciso como sea posible. No sirve de mucho decir que FastExec tiene muchos errores o que "no funciona". ¿Qué hace exactamente?.¿Qué ocurre realmente? Me gustaría saber qué opciones son las que no funcionan. Si sólo emplea las opciones REBOOT y NOEXEC, no tendría por qué haber problema alguno (puesto que lo único que hace es reiniciar una vez). Dígame si lo que no funciona es eliminar NOEXEC, o el uso de cualquier opción extra. ¿Cuáles de ellas?. ¿Cómo reacciona FastExec si utiliza su Startup-Sequence original (sin añadir FastExec) y sin utilidades añadidas? ¿Ha probado a ejecutar SetPatch primero y FastExec a continuación? ¿Ha probado a ejecutar FastExec primero? Si utiliza el menú de arranque del Amiga para desactivar las cachés, ¿se produce algún cambio? ¿Cómo se comporta FastExec con las herramientas de depuración Enforcer y MungWall? Si FastExec no es compatible con algunos otros programas, ¿cuáles son?. ¿Están libres de Enforcer Hits? También, puede indicarme la salida ofrecida con la opción "FastExec SYSINFO", tanto con FastExec instalado como si no. También me interesa conocer el hardware que está utilizando. 8. Historia ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 1.0 (26.11.95) · Primera versión. 1.1 (14.1.96) · lib_NegSize bajo KS 1.3 queda ahora ajustada al valor correcto, no 0. · No ajusta los flags de atributo de memoria MEMF_LOCAL/MEMF_24BITDMA bajo KS 1.3. · Bajo KS 1.3 se emplea la cadena "expansion ram" al hablar de memoria fast. · No se modificará la prioridad que tenga la memoria fast, estando siempre ajustada de antemano a 10. · Podría errar al localizar kickstart, ciertas comprobaciones junto a métodos alternativos lo tornan más seguro. · Si el kickstart es versión 2.0 o superior, FastExec buscará en el kickstart todo lo que necesite del mismo. Que FastExec funcione dependerá de la versión de kickstart, pero más de cómo esté creado. Si no existen demasiadas diferencias, FastExec tendría que funcionar con cualquier versión de kickstart. · Modificada cierta información de salida del argumento SYSINFO, y se documenta que el argumento existe. :) · BOARDADDR es capaz de manejar más de una dirección. 2.0 (21.4.96) · Reescritura del código central, debería funcionar mejor. · Ahora es capaz de realojar ciertos elementos en memoria fast, siendo el traslado de expansion.library opcional. · Se añaden parches para funciones de gran utilización en exec. · Es posible ajustar las cachés muy al inicio del arranque. · Es posible añadir memoria no-autoconfig. · SYSINFO muestra todas las librerías, y en el tipo de memoria en que se encuentran. · FastExec se convierte en software gratuito. 2.1 (25.8.96) · Información de FPU de SYSINFO corregida. · Al cambiar de ratón FastExec desactivaba la memoria fast. Supongo que podría haberlo corregido, pero en su lugar eliminé esa opción. · No puede liberar la antigua cabecera de memoria chip con kickstart 1.2/1.3, puesto que su alineación no es correcta (la opción FASTMEM provocaba una alerta FreeTwice). · Se corrige un error en FASTINT bajo kickstart 1.2/1.3. · Se añade la opción NOFASTEXEC. 2.2 (29.8.96) · Se incorpora la opción LOCAL. 2.3 (11.9.96) · Se renombra la opción NOFASTEXEC como NOEXEC. · Se añade la opción PCMCIA. · El parche AddLibrary() restaura la antigua función una vez que se ha movido expansion.library. 2.4 (9.11.96) · Genera ciertos errores si falla la instalación. · Recupera la antigua función AddMemList() una vez que la primera memoria dell tipo MEMF_FAST se ha añadido. 2.5 (18.1.97) · FastExec pasa a ser de dominio público, e incluye código fuente en el archivo. 2.6 (21.5.97) · Se corrige un error del parche Switch() para equipos con FPU. · Ajusta CACRF_WriteAllocate cuando se utiliza la opción CACHE. · Reserva memoria para la etiqueta residente con MEMF_REVERSE. · Utiliza ReadArgs() (KS 2.0+). · No libera memoria para la antigua exec.library bajo KS 1.3 en caso de que eb_ExecBase de expansion.library no pueda ser sustituido. · Se elimina la opción PCMCIA. 2.7 (28.5.97) · No consigue liberar memoria que haya sido empleada por elementos trasladados a memoria fast, a menos que se utilice la opción FREEOLD. · SYSINFO lista KickMem y KickTag. · Eliminada la opción LOCAL. · ADDMEM no aceptaba prioridad negativa. · No es posible restaurar la antigua función AddMemList(). · Comprobación de memoria por añadir mejorada comparada con la que ya se encontraba añadida en el parche AddMemList(). · Intenta mover expansion.library directamente en el parche AddMemList(). Se parchea AddLibrary() para realizar la tarea. · Utiliza arp.library/GADS() bajo KS 1.3. · Se reorganizan los parches de interrupciones. No parchea la interrupción 7. Funciona con KS 1.2/1.3. · Se eliminan parches para las funciones de Exec, puesto que estaban lejos de ser perfectos. 2.8 (10.6.97) · Corregido un error en la opción FASTVBR. · Se añade la opción ADDRESS. · Reserva 8 bytes extra antes de la etiqueta residente, algo necesario puesto que se pueden corromper durante el arranque. 2.9 (24.8.97) · Se genera un ejecutable puro y utilizable como residente (adecuado si se utiliza SYSINFO a menudo). · SYSINFO lista las interrupciones. · SYSINFO no suministra argumentos cero para cadenas a RawDoFmt(), lo que elimina Enforcer hits bajo KS 1.2/1.3. · Se añade la opción REMOVE. · Se retira la opción FREEOLD. La pila de Supervisor no se libera nunca, el resto si. · Se corrige un error en la opción FASTMEM. 9. Créditos ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Gracias a: · Todos aquellos que se registraron cuando FastExec era shareware (o en adelante). · Todos los que colaboraron de forma más o menos exitosa para ayudarme a corregir errores. · Amiga Shopper por su amabilidad a la hora de pedir permiso antes de incluir FastExec en sus discos de portada, e incluso por mandarme un ejemplar de la revista. 10. Autor ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Ejecutable FastExec y documentación creados por Torbjörn A. Andersson. Correo ordinario: Torbjörn Andersson Knöppletorp 4379 S-380 31 LÄCKEBY SUECIA Email: d95ta@efd.lth.se Página web: http://www.efd.lth.se/~d95ta Te adoro - AMIGA
No hay comentarios:
Publicar un comentario