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