miércoles, febrero 22, 2006

AROS


Como algunos ya sabreis AROS está en un estado ya similar al Workbench 3.1 de toda la vida, es más, en algunos casos más avanzado (aunque en otros aún le falta).

Soy partidario de la emulación transparente de 680x0 como forma de suplir los componentes que aún faltan. Y por qué no, de PPC también.

En el caso de AROS-PPC el trabajo consistiría en modificar exec para que pase los parámetros a las funciones de la misma forma que MorphOS, así como abrir las librerías igual, consiguiendo así compatibilidad con MorphOS. La compatibilidad con 680x0 sería más sencilla así.

Emular un 680x0 transparentemente en AROS x86 tendría una complejidad espantosa. El espacio de memoria debería ser big endian ya que pasamos a las funciones punteros a datos y a estructuras, y el código x86 o 680x0 no tendría una forma sencilla de saber si la estructura está en una memoria big endian o little endian.

Le propuse a Bernd Meyer delimitar dos áreas de memoria usando la MMU, una big endian para los programas 68k, y otra little endian para los nativos, y también usar la memoria en orden inverso como hacía executor en Mac y convertir las direcciones, era muy lioso -las pantallas por ejemplo estarían al revés- pero me dijo que existía alguna posibilidad, aunque remota.

Debido a la enorme complejidad de esa implementación nos olvidaremos de ella. La otra opción es usar al más puro estilo de Amithlon la memoria en modo big endian. La jodienda es que hay que modificar todos los puñeteros fuentes para crear unas estructuras intermedias para que acceda el código x86 de la función, y antes de devolver el resultado, darle la vuelta. Muy pesado si no tienes un emulador de 680x0 integrado desde el primer día, porque te obligaría a reescribir montones de ficheros de código fuente de AROS. Y al final el rendimiento bajaría notablemente debido a que nuestro querido x86 tendría que darle la vuelta a los bytes todo el rato. Lo que quiero decir es que el mismo programa compilado sin cambios para windows y aros iria muchisimo mas lento en AROS.

Creo que la mejor apuesta sería probar AROS-PPC y darle compatibilidad MorphOS. Posteriormente adaptar la emulacion de cpu de uae para que funcionase transparentemente. Así podrías correr nativos sin bajada de rendimiento y como ya habrías integrado el emulador de 680x0, la versión big-endian de AROSx86 sería relativamente más sencilla.

Otra opción para la versión x86big endian sería modificar ArosForAmigaos y transformarlo en x86, y poco a poco ir adaptando TODO el AROS, hasta llegar a la parte del arranque, kernel, drivers y emulador, que ya requerirían mucho más curro.