AMIGALANDIA

AMIGALANDIA --- Blog Retrospectivo Amiga/MorphOS

jueves, 12 de noviembre de 2015

Guía de FastExec en Español

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