logo
Inicio  •  Noticias  •  Fichas y artículos  •  Foros  •  Perfil  •  Buscar  •  Registro
 Ingreso
Nombre:

Contraseña:

Recordar



¿Recuperar la contraseña?

Regístrese

 ZONADEPRUEBAS 3.0

 Buscar

Búsqueda avanzada

 Nuevos Miembros
freshko 13/7/2012

uukrul
13/7/2012

Hark0
12/7/2012
erniman 5/6/2012
biblio74 2/6/2012

jrodriguezv
2/6/2012

kazin79
8/5/2012
jgnavarro 7/5/2012
pinace 7/5/2012

jad2
24/4/2012

 ¿Quién está en línea?
19 usuario(s) en línea (2 usuario(s) navegando Fichas y articulos)

Registrados: 0
Invitados: 19

más ....

 RetroZONADEPRUEBAS
Zonadepruebas 2.0
Zonadepruebas 1.0
Antiguos foros

Fichas y articulos > Artículos > Emulando Advent tal y como fue creada
Emulando Advent tal y como fue creada

Publicado por Colossus el 10/7/2004 (6607 lecturas)


Como tal vez ya sepáis la primera aventura conversacional de la historia fue 'advent' (también llamada "Adventure", "Colossal Cave", "La aventura original" en España...). Es un programa tan influyente que inspiró a los fundadores de compañías como Adventure International, Infocom o Sierra. Podéis encontrar más información sobre ella en www.rickadams.org/adventure/index.html.

Hace tiempo que me apetecía ejecutar advent en un emulador de la máquina en la que fue programada, en una versión tan fiel al original como fuera posible. Finalmente decidí intentarlo en serio, y acabé consiguiéndolo, pero fue mucho más complicado de lo que pensaba. He decidido explicar aquí, paso a paso, todo el proceso, por si alguien siente curiosidad por reproducir un trocito de historia en su propia casa (espero vuestros comentarios al respecto). Vamos allá.


1. ¿La Aventura Original?

Lo primero era saber cómo fue realmente advent. Y esto no resultó tan fácil de averiguar como pudiera parecer.

Lo que todo el mundo sabe es que advent fue originalmente programada en FORTRAN por William Crowther, y ampliada posteriormente por Don Woods en los años 70. Pero... ¿cuándo y en qué ordenador hicieron Crowther y Woods sus respectivas versiones? ¿Se conserva en algún sitio el código fuente original de alguna de ellas? No es fácil seguirle la pista a advent porque ha habido literalmente cientos de versiones para todos los ordenadores imaginables (como muestra ver Adventure Family Tree). Y la información que hay en Internet es imprecisa y contradictoria.

Para no alargarme demasiado diré que, tras mucho indagar, llegué a las siguientes conclusiones:

  1. William Crowther realizó su "advent preliminar" en 1975, en un ordenador DEC PDP-10.

  2. Don Woods encontró una versión del programa de Crowther en un DEC PDP-10, y programó su versión (lo que hoy consideramos "La Aventura Original") en otro PDP-10 en 1976.

La primera afirmación es sólo la conjetura más probable. La fecha podría tener un error de un año arriba o abajo, y el ordenador tal vez fuera otro modelo de PDP o un CDC 6600. La segunda afirmación es totalmente fiable por que ¡el propio Don Woods me lo confirmó en un mail el 19-6-2003! (pero ver apartado 7 más abajo). Por desgracia Woods no sabe cuándo ni en qué ordenador hizo Crowther su versión.

Aclarado esto quedaba decidir cuál de los códigos fuente que circulan por la red era el más parecido al original. Le pregunté de nuevo a Woods por el que me parecía el mejor candidato (ifarchive.org/if-archive/games/source/adv350-pdp10.tar.gz) y me contestó que "Esa parece ser mi versión de 1976. La única versión más antigua sería la de Crowther, y yo no conservo una copia." De hecho parece que nadie conserva una copia más antigua que esa, por lo que ya tenía lo que estaba buscando (pero ver apartado 7 más abajo). Ahora faltaba compilarlo y hacerlo funcionar en el emulador adecuado.


2. El emulador.

Necesitaba un PDP-10 emulado. Escogí el SIMH (simh.trailing-edge.com), capaz de emular decenas de ordenadores antiguos.

Para hacerlo funcionar en Linux, en mi caso un Red Hat 7.3, lo primero es descargarse los fuentes en la página del emulador (hay también ejecutables para Windows). Para compilar, crear en el directorio del SIMH un directorio llamado bin, y sustituir /BIN por ./bin/ en el makefile. Ejecutar 'make all'. Esto crea los ejecutables de los distintos emuladores, incluyendo el pdp10 que necesitamos. El emulador, sin embargo, resulta completamente inútil sin el software adecuado.


3. Dando vida a un PDP-10.

Esto fue, con mucho, lo más difícil de todo el proceso. El DEC PDP-10 es un ordenador antiguo, muy diferente a lo que estamos acostumbrados a ver hoy en dia. Me llevó mucho tiempo saber qué necesitaba instalar en el ordenador emulado, y más todavía averiguar cómo se utilizaba lo instalado. Lo que precisamos es básicamente una imagen de un disco duro virtual para el simulador, con el sistema operativo TOPS10 y un compilador de FORTRAN instalados. Hay dos formas de conseguirlo:

  1. Forma difícil (la que yo empleé): Consiste en bajarse las imágenes de cintas de backup del TOPS10 y el FORTRAN de pdp-10.trailing-edge.com e instalarlo todo desde cero. Es muy laborioso pero se aprende bastante. Yo lo conseguí siguiendo un par de logs que encontré en la red. Por si a alguien se anima los he puesto en tops10inst.txt y fortv11bas17inst.txt. Aunque no vayáis a usarlos resulta muy interesante echarles un vistazo para apreciar cómo eran los sistemas operativos de la época.

  2. Forma fácil: Bajarse una imagen de disco con todo instalado. Tenéis una en www.shocking.com/~talon/pdp10 (este enlace ya no está activo, la dirección es ahora www.steubentech.com/~talon/pdp10). Yo la he probado y funciona, pero el resto de este artículo se basa en una imagen obtenida mediante la "forma difícil". Usando la imagen precompilada el proceso será casi idéntico al aquí descrito, pero puede ser necesario algún pequeño cambio.


4. Metiendo los fuentes en el ordenador emulado.

Ahora que tenía un PDP-10 funcionando necesitaba una manera de pasar las fuentes al ordenador emulado, pues la idea de teclear los más de 300Ks de código y datos no me resultaba demasiado atractiva. Por suerte encontré un programa capaz de volcar ficheros a una imagen de cinta de backup utilizable por el emulador. Se llama backwr.

El procedimiento a seguir sería:

  1. Bajarse las fuentes de advent del ifarchive.

  2. Bajarse la utilidad backwr de ftp.stacken.kth.se/pub/pdp10/backwr

  3. Una vez descomprimido todo y compilado el backwr (con 'make') ejecutar './backwr cTf advent.tap adven.f4 advn2.f4 adven.dat'. Con esto volcamos los ficheros en un formato reconocible por la unidad de cinta emulada.

Para mayor comodidad, y para facilitar la vida a los usuarios de Windows, he colocado el fichero en advent.tap (pulsar con el botón derecho sobre el enlace para salvarlo si el navegador os muestra el contenido del fichero en lugar de abrir una ventana de diálogo para la descarga). He subido también la utilidad backwr a la zona de descargas por si dejara de estar disponible en la red.


5. Restaurar, compilar y ejecutar.

Ya casi estaba. El problema de la compilación pensaba haberlo resulto cuando encontré un hilo en GoogleGroups donde alguien explicaba el proceso con bastante detalle. Por desgracia dicha explicación era demasiado vaga en un punto: "Utilizar la utilidad BACKUP del TOPS10 para cargar los ficheros". Pues bien, tenía el emulador, el compilador de FORTRAN, instrucciones para la compilación, una cinta con los fuentes... ¡pero no sabía cómo utilizar la utilidad de BACKUP para traerme los ficheros al disco duro de trabajo!

Me leí un montón de fragmentos de manuales arcaicos, pero en todos daban demasiadas cosas por supuesto, y nada parecía funcionar. Decidí entonces pasar de la teoría a la práctica. Después de estudiarme varios documentos con sesiones de TOPS10 conseguí finalmente, a base de intuición-prueba-error, dar con la secuencia de comandos que necesitaba. Una vez cargados los fuentes la compilación no fue difícil. Y, tras cuatro dias de trabajo, pude disfrutar de advent tal y como fue concebida en 1976.

Aquí va lo que falta para completar el puzzle. Un log de mi sesión de compilación en el PDP10, profusamente comentado: compilaradvent.txt.


6. WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS?

"Cuando hallabas una zona nueva de tierra desconocida, sentías como si de verdad estuvieras allí, descubriéndola por ti misma. Se tiene todo tipo de sensaciones que no obtienes cuando simplemente lees."

Roberta Williams, hablando de advent en una entrevista de 1984.


7. Actualización: la versión de Crowther.

En agosto de 2007, Dennis G. Jerz publicó un extenso artículo llamado Examining Will Crowther's Original “Adventure” in Code and in Kentucky, en el que detalla las conclusiones de sus investigaciones sobre advent. El texto, extremadamente interesante y muy bien documentado, revela varios aspectos que se desconocían sobre el programa. Por ejemplo concluye que el código de Crowther data, efectivamente, de 1975-76, pero que Woods comenzó a trabajar en su versión en 1977 (y no en 1976 como el propio Woods creía hasta que Jerz se puso en contacto con él).

Con todo, lo más sorprendente del artículo es el anuncio de que en 2005 ¡se logró recuperar el código fuente original de Crowther! Examinando copias de respaldo de la Universidad de Stanford se localizó la cuenta que Woods tenía en el Stanford Artificial Intelligence Lab por aquel entonces, y entre esos datos había varios ficheros con las primeras revisiones de Woods y el código original de Crowther. Dichos ficheros están preservados en www.ifarchive.org/if-archive/games/source/adv_crowther.zip (en el archivo comprimido, los ficheros advf4.77-03-11 y advdat.77-03-11 son la versión de Crowther).

El proceso para compilar y ejecutar dichos archivos en un simulador de PDP-10 sería similar al descrito más arriba. Además, desde la distribución R 1.4, la imagen de disco para PDP-10 que se ofrece en //www.steubentech.com/~talon/pdp10/ incluye ya la versión de Crowther compilada por lo que basta descargar dicha imagen y ejecutarla en un simulador. La misma página ofrece un log de una sesión de emulación a modo de ejemplo.

Postdata: En la versión de Advent original existía un casi olvidado modo especial de mantenimiento (llamado MAGIC MODE), que desapareció en la mayoría de las conversiones posteriores. Para acceder a dicho modo hay que superar una enrevesada prueba de autentificación que incluye la introducción de una clave que es necesario calcular en tiempo de ejecución. Tras examinar el código en Fortran he logrado descifrar el algoritmo que genera dicha clave, y he programado una pequeña utilidad que hace el trabajo por nosotros. Incluye instrucciones, y podéis encontrarla en la zona de descargas. También existe una versión en línea.

Autor:
Texto: Colossus


Consultar artículo original en los antiguos foros


Explorar artículos
Artículo anterior El nacimiento de "Stella" Enviar y recibir archivos de PC a Atari Portfolio Artículo siguiente
Los usuarios son responsables de sus propios comentarios.
Autor Hilo
bisarma
Enviado: 6/11/2005 16:37  Actualizado: 6/11/2005 16:37
Ni un día lejos de aquí
Conectado: 28/9/2004
Desde: Sotrondiu-Asturies
Envíos: 131
 Impresionate el articulo
Enhorabuena por este articulo y menuda comedura de tarro que tuviste que hacer para emular en estado puro el Advent.

Articulos como este te meten en ganas de ponerte a investigar movidas por la red pero ya!!!!!!.
chernobil
Enviado: 7/11/2005 14:04  Actualizado: 7/11/2005 14:04
Vida extra
Conectado: 23/9/2004
Desde: Valladolid (España)
Envíos: 1665
 Re: Impresionate el articulo
La aventura original de Spectrum me la pase entera con un amigo en un dia, nos levatamos, paramos para comer rapido y por la tarde nos piramos las clases para seguir jugando. Todo hay que decir que con ayuda de algunas Microhobbys en mano y los articulos del Viejo Archivero para algunos atascos.
Era la primera aventura conversacional que nos dio un vicio tremendo y siempre la recordare como la mejor.
Por cierto tu labor de investigacion realmente estupenda. Se nota que te gusta el tema y que ademas posees unos conocimientos que muchos no tenemos. Gracias por aprobecharles/compartirles con nosotros.
timofonic
Enviado: 16/8/2007 0:12  Actualizado: 25/7/2009 1:12
Como en su casa
Conectado: 6/2/2007
Desde:
Envíos: 158
 ¡Ha aparecido el código de la versión de Crowther de la Aventura Original!
Examining Will Crowther's Original "Adventure" in Code and in Kentucky (originalmente aquí)

Descarga del código fuente

Ha aparecido la versión de Crowther, lo pongo como recordatorio a todos.

Fuente: Barrapunto
ron
Enviado: 16/8/2007 0:16  Actualizado: 16/8/2007 0:16
Vida extra
Conectado: 28/11/2004
Desde:
Envíos: 3270
 Re: ¡Ha aparecido el código de la versión de Crowther de ...
ME encanta, fabuloso artículo digno de reseña
10000 puntos

currada poderosa !

Saludos
garillete
Enviado: 26/8/2007 0:19  Actualizado: 26/8/2007 0:19
Vida extra
Conectado: 8/5/2006
Desde: Madrid Provincia
Envíos: 2437
 Re: ¡Ha aparecido el código de la versión de Crowther de ...
Juego Adventure 350 En flash

link a Adventure

Saludos
Colossus
Enviado: 19/9/2007 14:02  Actualizado: 19/9/2007 14:03
Vida extra
Conectado: 5/5/2004
Desde: Vigo/España
Envíos: 4678
 Actualizado artículo sobre la emulación de Advent
Se actualiza el artículo para reflejar la aparición del código fuente de la versión de Crowther y precisar algunas fechas a la luz de los nuevos datos aportados por el artículo de Dennis G. Jerz.

Un saludo: Colossus
garillete
Enviado: 6/1/2008 13:44  Actualizado: 6/1/2008 13:44
Vida extra
Conectado: 8/5/2006
Desde: Madrid Provincia
Envíos: 2437
 Re: ¡Ha aparecido el código de la versión de Crowther de ...



Anillo de Coleccionistas Hispanos de Ordenadores y Consolas logo_anillo
[ Unirse al Anillo | Homepage del Anillo | Sitio al azar | << Previo | Siguiente >> ]

Logos, marcas e imágenes propiedad de sus respectivos poseedores. Comentarios propiedad y responsabilidad de cada autor
Salvo que se indique lo contrario el contenido original de esta página puede utilizarse libremente siempre que se cite como fuente a www.zonadepruebas.com
Queda terminantemente prohibido el uso o enlace externo de cualquier contenido presente en Zonadepruebas que no sea original de la propia Zonadepruebas

© 2003-2012 Zonadepruebas - http://zonadepruebas.org/backup - Aviso legal -