La aventura de Ug

Historia del programa

Empecé a escribir La aventura de Ug hacia 1988, como un sencillo experimento sobre cómo se crearía una aventura conversacional en Forth utilizando el propio intérprete de Forth, es decir, sin programar un intérprete específico para el juego, usando por tanto palabras de Forth para los comandos.

Las aventuras conversacionales siempre me han interesado mucho como programador. Por aquellos años estaba escribiendo Finen per Imago, en Z80 para ZX Spectrum. Al igual que con los juegos de acción, nunca me ha gustado mucho jugar con aventuras conversacionales, sino programarlas. Me interesan mucho por su relación con la inteligencia artificial: analizadores lingüísticos y representación de mundos virtuales...

Escribí La aventura de Ug en Abersoft Forth, el sistema Forth que más usé con la ZX Spectrum. Nunca se convirtió en un juego jugable y el fichero debió de perderse en uno de los innumerables cambios de soportes que hice a lo largo de los años... cintas de casete, discos Beta, discos DISCiPLE y finalmente ficheros TAP y otros para usar con emuladores... Por fortuna son muy pocos los programas que he perdido.

En el verano de 2009, recopilando material antiguo para publicar, encontré un viejo listado de La aventura de Ug, con sus pálidos caracteres de impresora matricial sobre papel continuo... Lo tecleé pacientemente en el Abersoft Forth bajo el emulador fuse para que no volviera a perderse.

En enero de 2010 decidí terminar el programa, añadirle las funcionalidades que le faltaban y corregir sus errores.

Editar código Forth en 2010 con más incomodidad que en 1970

Lo más latoso de trabajar con Abersoft Forth es usar un editor de líneas típico de Forth y enfrentar la necesidad de meter con calzador todo el código fuente en sólo diez bloques (el primero, el número 0, no puede usarse para compilar código), pues ese es todo el espacio que el sistema ofrece, en forma de «disco RAM», como solución de compromiso para poder grabar el código fuente en cinta de casete.

Los editores de línea de Forth son muy potentes y eficaces, pero son muy incómodos en una pantalla que tenga menos de 64 columnas; la de la Spectrum tiene 32, lo que supone que muchas veces el código no se lee bien o no cabe todo en la pantalla.

Eché en falta trabajar no ya con un editor de textos normal, sin las limitaciones de los bloques, sino al menos con el original sistema del Ace Forth de la Jupiter Ace, que prescinde de los clásicos bloques del Forth: permite editar las definiciones compiladas y sustituir cualquier entrada del diccionario por la última definición... ¡Una idea tan sencilla como eficaz!

Lo cierto es que para escribir La aventura de Ug he pasado más tiempo intentando ajustar el código fuente en las estrecheces de los bloques que programando.

He echado en falta la versión de Abersoft Forth para microductoras (los microdrives de Sinclair), pero al parecer nunca llegó a comercializarse. Hace meses escribí a John Jones-Steele, el autor de Abersoft Forth, tras localizar la empresa donde actualmente trabaja, preguntándole si él conservaba alguna copia de dicha versión, pero nunca recibí respuesta. Bajo un emulador de Spectrum, trabajar con microductoras es cómodo. Un Forth que grabara y leyera cada bloque de código fuente en un fichero independiente en microductora o disquete sería mucho más cómodo y potente.

Hice una pequeña investigación y descubrí (en World of Spectrum, ¿dónde si no?) dos programas que podrían haberme sido muy útiles. Uno es Full Screen FORTH Editor, un editor de pantalla completa para Abersoft Forth; y otro Forth Microdrive Converter, un modificador de Artic Forth para hacerle usar microductoras en lugar de casetes. Por desgracia no se conserva ninguna copia de ellos, a pesar de que en su día sus autores los anunciaron en publicaciones y los vendieron por correo.

Artic Forth fue el primer sistema Forth que usé en la Spectrum. Tenía un sistema muy útil para copiar cualquier texto de la pantalla en la línea de comandos, lo que facilitaba el trabajo interactivo con el intérprete. Pero su principal limitación es que sólo guardaba un bloque de código fuente en memoria, lo que obligaba a estar usando continuamente el casete y convertía la edición de programas en una pesadilla. Pero usando microductoras hubiera sido muy cómodo.

Así, edité el código fuente de La aventura de Ug con más estrecheces que el genio de Charles Moore a comienzos de los 1970. Pero fue muy interesante.

El argumento

El nombre de Ug es un homenaje al protagonista de las historietas de Hug, el troglodita, un peculiar personaje que aún recuerdo de cuando empecé a devorar historietas en la infancia.

En el mundo de este otro Ug, el de La aventura de Ug, no hay mucho que hacer salvo morir de aburrimiento o morir sin más. Como empecé diciendo, el programa es sólo un experimento de programación, por lo cual, aunque es jugable, no tiene gran interés.

La misión de Ug (en todas las aventuras hay una misión) consiste en encontrar un huevo y llevarlo a su cueva. En el prototipo de 1988 se trataba de un diamante. ¿Cómo no reparé en tamaño anacronismo? Y en cualquier caso, ¿qué utilidad tendría para Ug un diamante? Así que cambié el diamante por un huevo, que Ug puede comerse si quiere (aunque tendrá que ser en La aventura de Ug 2, pues la presente versión tiene un vocabulario muy reducido y no hay manera de comer nada). Resumiendo: Ug deberá salir de su cueva, encontrar el huevo, y regresar con él a su cueva.

En el diminuto mapa hay varios escenarios trampa, que provocan la muerte instantánea o hacen perder todos los objetos (los programadores de aventuras que hacen eso deberían ser colgados de los pulgares; salvo yo porque, como ya he explicado varias veces, La aventura de Ug es un experimento). También hay una serpiente cabreada, ante la cual la salud de Ug se resentirá seriamente a menos que antes haya encontrado un palo.

Por último, La aventura de Ug comparte algo más con esos juegos de aventuras a cuyos programadores deberían colgar de los pulgares: El juego siempre es igual. No hay nada elegido al azar. El mapa no cambia; y la serpiente, el palo y el huevo siempre están en los mismos sitios. Eso es algo que nunca entendí de la mayoría de los juegos de aventuras. No cuesta nada introducir el azar en el programa para darle mayor realismo e interés. Si yo no lo he hecho es porque (lo diré una vez más) este programita es un experimento sin pretensiones, y además porque ya casi no me cabía más código fuente en 10 KiB. Pero La aventura de Ug 2, que verá la luz cualquier década de estas, tendrá esa y otras mejoras.

En fin, tanto si logra su objetivo como si no, al final la única salida para que el pobre Ug ponga algo de acción en su aburrida vida es tirarse a un pozo o a un lago helado.

Vocabulario y sintaxis

La aventura de Ug sólo tiene tres órdenes y siete complementos (algunos de ellos con sinónimos) que internamente no son más que constantes de Forth que quedan en la pila. La palabra UG comprueba el contenido de la pila y ejecuta la orden correspondiente. Por tanto, la sintaxis para darle órdenes a Ug es: ORDEN COMPLEMENTO UG. Ejemplos:


VE NORTE UG
AGARRA PALO UG
VETE SUR UG
DEJA PALO UG

Por capricho, he dado un toque de azúcar sintáctica, definiendo un par de artículos y preposiciones como palabras de Forth que no hacen nada. Aunque al bueno de Ug le da completamente igual, esto nos permite expresarnos más elegantemente:


VE HACIA EL SUR UG
RECOGE EL PALO UG
SUELTA LA SERPIENTE UG
VETE AL OESTE UG

Tampoco costaría nada crear sinónimos de los complementos terminados con una coma, pero no lo he hecho: VE HACIA EL NORTE, UG. También sería posible escribir una palabra UG, que leyera la entrada de texto que la sigue, para poder escribir: UG, VETE AL NORTE. Ambas ideas son interesantes y no se excluyen entre sí, pero tendrán que esperar a otra versión del programa o a otra aventura en Forth. La verdad es que en Forth todo es posible.

Órdenes

Complementos

Abreviaturas

Quien sepa Forth se habrá dado cuenta de que es trivial definir palabras que nos ahorren mucho trabajo, por ejemplo para movernos por el mapa (no importa si ya existen palabras con el mismo nombre en el vocabulario del sistema):


: N VE NORTE UG ;
: S VE SUR UG ;
: E VE ESTE UG ;
: O VE OESTE UG ;

Pantallazos

No hay mucho que ver de una aventura conversacional sin gráficos, pero ahí va:

Listado

Versión original de 1988, inacabada


Screen # 0

 0 LA AVENTURA DE UG
 1 
 2 Version: 1988, inacabada
 3 
 4 Copyright (C) 1988 Marcos Cruz
 5 http://programandala.net
 6 
 7 Licencia/Permesilo/License:
 8 http://programandala.net/licencia
 9 
10 
11 
12 
13 
14 
15 

Screen # 1

 0 ( VARIABLES )
 1 : TASK ;
 2 0 CONSTANT VE
 3 1 CONSTANT DEJA
 4 2 CONSTANT COGE
 5 0 CONSTANT DIAMANTE
 6 1 CONSTANT PALO
 7 2 CONSTANT SERPIENTE
 8 7 CONSTANT NORTE
 9 4 CONSTANT SUR
10 5 CONSTANT ESTE
11 6 CONSTANT OESTE
12 0 VARIABLE SUJETO
13 0 VARIABLE VERBO
14 0 VARIABLE OBJETOS
15 0 VARIABLE LUGAR -->

Screen # 2

 0 ( MAPA )
 1 : LLENAR
 2 35 0 DO SALIDAS I + C! LOOP ;
 3 0 0 0 6
 4 7 0 0 5
 5 0 8 9 4
 6 5 0 9 6
 7 4 6 8 2
 8 0 5 7 1
 9 0 0 6 0
10 1 3 5 0
11 0 2 4 0
12 LLENAR
13 
14 
15 -->

Screen # 3

 0 ( RUTSERPE )
 1 : RUTSERPE
 2 OBJETOS 2+ C@ LUGAR @ =
 3 IF CR ." HAY UNA SERPIENTE VENENOSA QUE SE CABREA Y TE ATACA"
 4 CR OBJETOS 1+ C@ 0=
 5 IF ." PERO LE SACUDES UN PALAZO Y LA DEJAS TIESA"
 6 10 OBJETOS 2+ C!
 7 ELSE ." TE PEGA UN BOCADO Y LA PALMAS AL INSTANTE" QUIT
 8 THEN
 9 THEN
10 ;
11 
12 
13 
14 
15 -->

Screen # 4

 0 ( PAISAJE )
 1 : PAISAJE LUGAR @ CASE
 2 0 OF ." ESTAS EN TU CUEVA"
 3 OBJETOS C@ 0= IF CR ." LO CONSEGUISTE" QUIT THEN ENDOF
 4 1 OF ." HAS ENTRADO EN EL PANTANO Y LA HAS PALMADO" QUIT ENDOF
 5 2 OF ." HAS CAIDO EN UN POZO SIN FONDO" QUIT ENDOF
 6 3 OF ." ESTAS EN UN CAMINO DESIERTO" ENDOF
 7 4 OF ." ESTAS EN UN VALLE VERDE" ENDOF
 8 5 OF ." ESTAS EN EL DESFILADERO DEL     OFIDIO" RUTSERPE ENDOF
 9 7 OF ." ESTAS EN EL ATAJO DE LA COLINA" ENDOF
10 8 OF ." TE HAS AHOGADO EN UN LAGO HELADO" ENDOF
11 8 OF ." ESTAS EN LA GRUTA DEL DIAMANTE"
12 OBJETOS C@ IF CR ." EL BRILLO DEL DIAMANTE SAGRADO  TE
13 CIEGA LOS OJOS" THEN ENDOF
14 ENDCASE ;
15 -->

Screen # 5

 0 ( MOVER )
 1 : MOVER
 2 -3 SUJETO +!
 3 SALIDAS LUGAR @ 4 * + SUJETO @ + C@ DUP 0=
 4 IF CR ." NO HAY SALIDA POR AHI" DROP
 5 ELSE 1 - LUGAR ! THEN
 6 CR PAISAJE - ;
 7 
 8 -->
 9 
10 
11 
12 
13 
14 
15 

Screen # 6

 0 ( DEJAR COGER NO )
 1 : DEJAR
 2 OBJETOS SUJETO @ + DUP C@ 0=
 3 IF LUGAR @ SWAP C! CR ." DEJADO" CR
 4 ELSE DROP CR ." NO LO TIENES"
 5 THEN ;
 6 : COGER
 7 OBJETOS SUJETO @ + C@ DUP DUP 0=
 8 IF DROP DROP CR ." YA LO TIENES"
 9 ELSE LUGAR @ =
10 IF 0 SWAP C! CR ." COGIDO" CR
11 ELSE DROP CR ." NO LO VEO POR AQUI"
12 THEN THEN ;
13 : NO CR ." NO PUEDES HACER ESO" CR ;
14 
15 -->

Screen # 7

 0 ( UG EMPEZAR )
 1 : UG
 2 SUJETO ! DUP DUP VERBO !
 3 2 > SWAP 0 < OR NOT
 4 IF VERBO @ CASE
 5 0 OF 6 3 TEST IF MOVER ELSE NO THEN ENDOF
 6 1 OF 1 0 TEST IF DEJAR ELSE NO THEN ENDOF
 7 2 OF 1 0 TEST IF COGER ELSE NO THEN ENDOF
 8 ENDCASE
 9 CR ." Y AHORA QUE?" CR
10 ELSE CR ." NO ENTIENDO" CR
11 THEN ;
12 : EMPEZAR 0 LUGAR ! 8 OBJETOS C! 4 OBJETOS 1+ C! 8 OBJETOS 2+ C!
13 CLS ." BIENVENIDO A LA AVENTURA DE UG" CR PAISAJE ;
14 
15 ;S


Versión de 2010-01-29, terminada


Screen # 0

 0 La aventura de Ug
 1 
 2 Una aventura conversacional
 3 troglodita y primitiva
 4 
 5 Version: 2010-01-29
 6 
 7 Escrita en Abersoft Forth
 8 para la Sinclair ZX Spectrum
 9 
10 Copyright (C) 1988,2010 Marcos Cruz (http://programandala.net)
11 
12 Licencia/Permesilo/License:
13 http://programandala.net/licencia
14 Instrucciones:
15 http://programandala.net/es.programa.la_aventura_de_ug

Screen # 1

 0 ( Cargador)
 1 FORTH DEFINITIONS DECIMAL : TASK ;
 2 : .TITULO ." La aventura de Ug" CR CR ;
 3 CLS .TITULO ." Cargando..."
 4 2 LOAD
 5 3 LOAD
 6 4 LOAD
 7 5 LOAD
 8 6 LOAD
 9 7 LOAD
10 8 LOAD
11 9 LOAD
12 10 LOAD
13 
14 
15 

Screen # 2

 0 ( Variables y utilidades)
 1 0 VARIABLE LUGAR 0 VARIABLE ORDEN 0 VARIABLE COMPLEMENTO
 2 7 CONSTANT #OBJETOS 0 VARIABLE OBJETOS #OBJETOS 2 - ALLOT
 3 4 CONSTANT #SALIDAS ( puntos cardinales)
 4 255 CONSTANT X ( punto cardinal sin salida)
 5 254 CONSTANT MANO ( localizacion de objetos en inventario)
 6 255 CONSTANT LIMBO ( localizacion de objetos eliminados)
 7 4 CONSTANT COLOR 7 CONSTANT COLOR-ORDEN 2 CONSTANT COLOR-MUERTO
 8 : DEPTH ( --u) SP@ S0 @ - -2 / ;
 9 : OBJETO ( u--a) OBJETOS + ;
10 : AHI ( u1 u2--) OBJETO C! ; : CERRADA? ( a--f) X = ;
11 : DONDE ( u1--u2) OBJETO C@ ;
12 : AQUI? ( u--f) DONDE LUGAR @ = ;
13 : MIO? ( u--f) DONDE MANO = ;
14 : MIO ( u--) MANO SWAP AHI ;
15 : PAUSE KEY DROP ; : B- 0 BRIGHT ; : B+ 1 BRIGHT ;

Screen # 3

 0 ( Vocabulario)
 1 0 DUP CONSTANT VE CONSTANT VETE
 2 1 DUP DUP CONSTANT DEJA CONSTANT SUELTA CONSTANT TIRA
 3 2 DUP DUP DUP
 4 CONSTANT COGE CONSTANT TOMA CONSTANT AGARRA CONSTANT RECOGE
 5 : LA ; : EL ; : HACIA ; : AL ;
 6 0 DUP CONSTANT NORTE CONSTANT N
 7 1 DUP CONSTANT SUR CONSTANT S
 8 2 DUP CONSTANT ESTE CONSTANT E
 9 3 DUP CONSTANT OESTE CONSTANT O
10 4 CONSTANT HUEVO 5 CONSTANT PALO 6 CONSTANT SERPIENTE
11 : .COMPLEMENTO ( u--) CASE N OF ." NORTE" ENDOF S OF ." SUR"
12 ENDOF E OF ." ESTE" ENDOF O OF ." OESTE" ENDOF
13 HUEVO OF ." HUEVO" ENDOF
14 PALO OF ." PALO" ENDOF SERPIENTE OF ." SERPIENTE" ENDOF
15 ENDCASE ;

Screen # 4

 0 ( Mapa)
 1 0 CONSTANT CUEVA 1 CONSTANT PANTANO 2 CONSTANT POZO
 2 3 CONSTANT CAMINO 4 CONSTANT VALLE 5 CONSTANT DESFILADERO
 3 6 CONSTANT ATAJO 7 CONSTANT LAGO 8 CONSTANT GRUTA : X, X C, ;
 4 0 VARIABLE (MAPA) ( cueva:) X, CAMINO C, X, X,
 5 ( pantano:) X, VALLE C, X, X, ( pozo:) X, X, X, X,
 6 ( camino:) CUEVA C, ATAJO C, VALLE C, X,
 7 ( valle:) PANTANO C, LAGO C, DESFILADERO C, CAMINO C,
 8 ( desfiladero:) POZO C, GRUTA C, X, VALLE C,
 9 ( atajo:) CAMINO C, GRUTA C, LAGO C, X, ( lago:) X, X, X, X,
10 ( gruta:) DESFILADERO C, X, X, X,
11 : MAPA ( --a) (MAPA) 2+ ; : >MAPA ( u--a) #SALIDAS * MAPA + ;
12 : .SALIDA ( a u--) SWAP OVER + C@ CERRADA?
13 IF DROP ELSE .COMPLEMENTO SPACE THEN ;
14 
15 

Screen # 5

 0 ( Argumento)
 1 : QUE COLOR-ORDEN PAPER QUIT ;
 2 0 VARIABLE MUERTO : MUERE 1 MUERTO ! QUE ; : VIVE 0 MUERTO ! ;
 3 : VIVO? MUERTO @ IF COLOR-MUERTO PAPER
 4 CR ." UG HA MUERTO Y NO PUEDE OIRTE" SP!
 5 CR ." QUIZA QUIERAS " B+ ." EMPEZAR" B- ."  OTRA VEZ" QUE THEN ;
 6 : PELEA SERPIENTE AQUI?
 7 IF CR ." LA SERPIENTE SE CABREA Y ME     ATACA"
 8 CR PALO MIO? IF ." PERO LA GOLPEO CON EL PALO Y LA DEJO TIESA"
 9 LIMBO SERPIENTE AHI
10 ELSE ." ME PEGA UN BOCADO Y LA PALMO AL INSTANTE" MUERE
11 THEN THEN ;
12 : OBJETIVO HUEVO MIO? IF CR ." LO CONSEGUI"
13 CR ." EL HUEVO YA ESTA EN MI CUEVA" QUE THEN ;
14 : PERDIDO LIMBO PALO AHI LIMBO HUEVO AHI
15 CR ." SI LLEVABA ALGO LO HE PERDIDO ENEL AGUA CENAGOSA" ;

Screen # 6

 0 ( Paisaje y cambio de lugar)
 1 : .SALIDAS CR ." HAY SALIDA HACIA: " CR
 2 LUGAR @ >MAPA #SALIDAS 0 DO DUP I .SALIDA LOOP DROP ;
 3 : .E ." ESTOY EN " ; : .PAISAJE ( u--) CR CASE
 4 CUEVA OF .E ." MI CUEVA" OBJETIVO ENDOF
 5 PANTANO OF .E ." EL PANTANO" PERDIDO ENDOF
 6 POZO OF ." CAIGO EN UN POZO SECO Y ME MATO" MUERE ENDOF
 7 CAMINO OF .E ." UN CAMINO DESIERTO" ENDOF
 8 VALLE OF .E ." UN VALLE VERDE" ENDOF
 9 DESFILADERO OF .E ." UN DESFILADERO" ENDOF
10 ATAJO OF .E ." EL ATAJO DE LA COLINA" ENDOF
11 LAGO OF ." CAIGO AL LAGO HELADO Y MUERO" MUERE ENDOF
12 GRUTA OF .E ." LA GRUTA MISTERIOSA" ENDOF ENDCASE .SALIDAS ;
13 : .QUE CR ." Y AHORA QUE?" QUE ;
14 
15 

Screen # 7

 0 ( Movimiento y objetos presentes)
 1 : SALIDA ( u1 u2--u3)
 2 #SALIDAS * MAPA + + C@ ;
 3 0 VARIABLE VISTO
 4 : .VEO VISTO @ 0= IF CR ." VEO: " THEN 1 VISTO ! ;
 5 : .VISTO ( u--) DUP AQUI?
 6 IF .VEO .COMPLEMENTO ELSE DROP THEN ;
 7 : .VISTOS 0 VISTO ! SERPIENTE 1+ HUEVO DO I .VISTO LOOP ;
 8 : >LUGAR ( u--) DUP LUGAR ! .PAISAJE .VISTOS PELEA ;
 9 : MOVER COMPLEMENTO @ LUGAR @ SALIDA DUP CERRADA?
10 IF DROP CR ." NO HAY SALIDA HACIA EL " COMPLEMENTO @
11 .COMPLEMENTO ELSE >LUGAR THEN ;
12 
13 
14 
15 

Screen # 8

 0 ( Manipular objetos)
 1 : HECHO CR ." HECHO!" ;
 2 : DEJAR COMPLEMENTO @ MIO?
 3 IF LUGAR @ COMPLEMENTO @ AHI HECHO
 4 ELSE CR ." NO LO TENGO!"
 5 THEN ;
 6 : COGER COMPLEMENTO @ MIO?
 7 IF CR ." YA LO TENGO"
 8 ELSE COMPLEMENTO @ AQUI?
 9 IF COMPLEMENTO @ MIO HECHO
10 ELSE CR ." NO VEO ESO POR AQUI"
11 THEN THEN ;
12 
13 
14 
15 

Screen # 9

 0 ( Comprobaciones)
 1 : FUERA? ( n1 n2 n3--f) DUP >R SWAP > SWAP R> SWAP < OR ;
 2 : ENTRE? ( n1 n2 n3--f) FUERA? 0= ;
 3 : COMPLEMENTO? ( n1 n2--f) COMPLEMENTO @ ENTRE? ;
 4 : ORDEN? ( n1 n2--f) ORDEN @ ENTRE? ;
 5 : PORTABLE? ( --f) HUEVO SERPIENTE COMPLEMENTO? ;
 6 : DIRECCION? ( --f) NORTE OESTE COMPLEMENTO? ;
 7 : NO CR ." NO PUEDO HACER ESO" ;
 8 : FRASE? ( u1 u2--f) DEPTH 2 = IF COMPLEMENTO ! ORDEN !
 9 VE COGE ORDEN? NORTE SERPIENTE COMPLEMENTO? AND
10 ELSE SP! 0 THEN ;
11 
12 
13 
14 
15 

Screen # 10

 0 ( Principal)
 1 : UG ( u1 u2--) COLOR PAPER VIVO? FRASE?
 2 IF ORDEN @ CASE
 3 VE OF DIRECCION? IF MOVER ELSE NO THEN ENDOF
 4 DEJA OF PORTABLE? IF DEJAR ELSE NO THEN ENDOF
 5 COGE OF PORTABLE? IF COGER ELSE NO THEN ENDOF
 6 ENDCASE .QUE
 7 ELSE CR ." NO ENTIENDO" CR
 8 THEN ;
 9 : COLORES 0 FLASH B- 0 GOVER 0 INK COLOR PAPER COLOR BORDER ;
10 : EMPEZAR COLORES CLS 0 LIST
11 GRUTA HUEVO AHI DESFILADERO SERPIENTE AHI VALLE PALO AHI
12 ."   " B+ ." Pulsa una tecla para empezar" B- SPACE
13 PAUSE CLS .TITULO VIVE CUEVA >LUGAR .QUE ;
14 EMPEZAR
15 


Descarga

Ficheros de cinta de casete virtual

Estos ficheros contienen el código fuente del programa, tal como lo graba Abersoft Forth en cinta de casete (11 KiB). Hay que usar cualquiera de ellos como fichero de cinta de entrada en un emulador bajo el que ya esté funcionando Abersoft Forth, usar el comando LOADT para cargarlo y a continuación 1 LOAD para compilarlo y arrancarlo.

Instantáneas del sistema

Estas instantáneas están tomadas cuando el juego ya ha sido compilado y arrancado y sólo espera la pulsación de una tecla para empezar.

Publico tres formatos diferentes, el más reciente y versátil SZX y los más antiguos SNA y Z80. Cualquiera de ellos, cargado en un emulador que lo acepte, permite empezar a jugar a La aventura de Ug de inmediato.

Glosario

KiB
kibiocteto (1024 octetos)
RAM
Random Access Memory (memoria volátil de lectura y escritura)