Análisis del Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 30 Sep 2014 17:11

Último mensaje de la página anterior:

Hola Luis,
lo que pretendía decirte es que, aceptando que sobraban DOS BYTES, éstos deben quitarse de la fila de arriba
y por tanto luego faltarían dos, que son los que están comentados y que constituyen el enlace al sinónimo (que debe ser descomentado para compensar los dos que ahora eliminamos).
Echa una ojeada a todas las demás palabras que tienen vinculado un sinónimo (su último byte suele ser $C0) y tras él viene el DW con la dirección del sinónimo.

Sobre las direcciones ...
En todos los docs que corren por ahí, la posición de las palabras es la misma, todos empiezan en $6000 el índice y las palabras en $6040
Si miras las otras tablas, por ejemplo de descripciones de ubicaciones, mensajes y cualquiera que apunte a palabras, verás que siempre usan esta área: $6040-$6BFF

Ya de paso:
He encontrado la parte donde están las fuentes de los caracteres de Spectrum (mainFont), los he exportado a Dragón y me he creado un fichero de 768 bytes con ellos.
Con un simple programa Basic he verificado que contiene los datos para 96 signos y he decidido adaptar las utilidades que escriben en la parte de arriba y en la de abajo de la
pantalla para que usen y compartan este juego de caracteres. Funciona sin problemas, otra cosa que no inventamos sinó que usamos la original del juego.
Además con ésto, al reducir de dos a un juego de caracteres, nos hemos ahorrado unos 500 bytes que no son mucho, pero ya verás como al final rogaremos tener algunos mas -507

saludos
pere

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 52 veces
Contactar:

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor luiscoco » 30 Sep 2014 17:29

Ahh ok
Edito: corregido el problema de la L
Voy a reparar algunos TAB mal y seguiré pasando comentarios de las fuentes de @Pser1

@Pser1 Que bien!!!

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 30 Sep 2014 18:20

Hola Luis,

ánimo que nos espera un palizón tremendo en cuanto empecemos con el código!
Los datos ya provocan vértigo, así que no veas el resto -507
Estoy limpiando los discos en los que he estado trabajando hasta ahora, para obtener uno parecido al que subí la última vez con un solo pantallazo de José Luis (el inicial)
y a partir de ahí, el programa interpreta (solamente) las direcciones de movimiento que le pides y va cambiando de ubicación indicando la descripción de la misma y detallando las
posibles salidas. Así puedes navegar por TODO el mapa del juego. En cuanto tenga un VDK presentable lo pondré en el hilo de Pruebas
Los textos que veréis ya está realizados utilizando el MainFont de Spectrum ;-)
NOTA: Los textos no pasan por ningún procesador de frases así que las palabras pueden quedar cortadas a final de linea y seguir en la siguiente.
Las rutinas de formación de frases y de proceso de mensajes todavía hay que destriparlas del desensamblado para poder convertirlas.

saludos
pere

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 52 veces
Contactar:

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor luiscoco » 30 Sep 2014 18:41

Uff Barbaro
Encontré mas bloques que poner desde tu fuente, así que necesito un día mínimo.
A lo mejor los chequeo con el programa por si hay errores

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 30 Sep 2014 18:54

perfecto Luis,
tenemos todo menos prisa -thumbup

Si puedes, descárgate el VDK que he subido en el hilo de Pruebas y pasa un rato recorriendo las ubicaciones del mapa a tu antojo.
Se recomienda tener el mapa a la vista, así de paso puedes verificar que no hay errores en la base de datos de ubicaciones (que contiene las posibles salidas)
Las descripciones de las ubicaciones pueden aparecer raras porqué todavía no sabemos como decodifica exactamente ciertos tokens al imprimir, pero ya dan una idea.

saludos
pere

jltursan
Mensajes: 2608
Registrado: 20 Sep 2011 13:59
Agradecido : 183 veces
Agradecimiento recibido: 509 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor jltursan » 30 Sep 2014 22:51

Aquí os dejo el binario de la versión 1.2 de Spectrum:

https://drive.google.com/file/d/0B-KmfOWpt2ZkWE4zNkRIT2Z3OVk/edit?usp=sharing

Ya se ha mencionado antes, todo el trabajo que se realice sobre este binario, de forma automatizada o manual, debería ser complementario con el ya realizado. Aquí no se tira nada... :-)

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 52 veces
Contactar:

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor luiscoco » 01 Oct 2014 04:53

@Pser1 La parte de tus fuentes por bloques (Archivo "Hobbit - Datos por BLOQUES (en curso - pere).txt")
; LocationTable (79 rooms pointer) que esta en la dirección $B984 pasa a la direccion $B9E0 debido a que el gab mencionado es mas grande en nuestro fuente
y cambiare todos los labels apuntadores.

Solo por avisar

Código: Seleccionar todo

===================================================================================
; HERE IS A GAP FROM $B6DA to $B983  =  $2AA -> 682 FREE BYTES
===================================================================================
;
; LocationTable (79 rooms pointer)
;
LB984  FDB LBA2E,LBA3B,LBE77,LBE88,LBA49,LBA60,LBA74,LBA85
       FDB LBE99,LBA93,LBAA4,LBABB,LBACF,LBC7E,LBAE0,LBAF1
       FDB LBC0E,LBC22,LBC30,LBC44,LBC6D,LBC8F,LBCA0,LBEAA
       FDB LBCBA,LBCCE,LBCE2,LBCF9,LBD0A,LBD1E,LBD2C,LBD40
       FDB LBD51,LBD65,LBD79,LBD90,LBDA7,LBDB8,LBDC9,LBDDD
       FDB LBDF1,LBE05,LBE19,LBE2D,LBE3E,LBE66,LBE55,LBEE6
       FDB LBEBB,LBECF,LBEF1,LBF02,LBB05,LBB19,LBB27,LBB3E
       FDB LBB55,LBB63,LBB77,LBB8E,LBB9F,LBBB3,LBBC4,LBBD2
       FDB LBBE6,LBBFA,LBF16,LBF27,LBF38,LBF4C,LBF60,LBF71
       FDB LBF85,LBF99,LBFAA,LBFBB,LBFC9,LBFD7,LBFE5,LBFF6
; End of LocationTable
; last byte occupied is $BA23 (verified)

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 52 veces
Contactar:

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor luiscoco » 01 Oct 2014 08:10

TODAS LAS DESCRIPCIONES LISTAS
HOBASM_V7.ZIP
(113.99 KiB) Descargado 61 veces

Hay que probar a compilarlo

¿Que hacemos ahora?

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 01 Oct 2014 12:14

Buenos días Luis,

necesitaré tiempo para comparar las novedades en esta versión 7 respecto a la anterior v6

He parado lo que estaba haciendo y subo los dos documentos en que estaba trabajando:
1 - El conjunto de tablas que contienen datos de cadenas para mostrar por pantalla = Base de Datos de Mensajes
2 - Recopilación de subrutinas necesarias para procesar la información contenida en la Base de datos de mensajes
para mostrarla en pantalla.

Estoy convencido de que se pueden compaginar las dos tareas:
- Validar y asegurarnos de que NO hay errores en la Base de Datos y convertirla en un pack binario para el programa
- Analizar las líneas de código del otro documento y añadir las partes que sean necesarias así como eliminar lo sobrante.

El objetivo es acabar con una explicación funcional detallada de como trabaja el programa para hacer estas tareas.
Luego lo pasaremos a 6809. Mejor así que intentar convertir lineas de código de Z80 a 6809 de una en una o casi.
De lo que recuerdo (todavía ,me sorprende!) varias instrucciones de Z80 acabarán en una sola de 6809.
Los accesos a memoria indexados con autoincremento son una maravilla en 6809 y en Z80 una pesadilla!

Bien, a lo que íbamos, tras echar una ojeada a parte del código, me siento con ganas de hincarle el diente también.
Pero, de momento si te parece, voy a dedicarme a mirar tu versión 7 para no meter la pata con las etiquetas y empezaría
a pasarlo a DskDream (si cabe) para compilar la Base de Datos.
Recuerda que es IMPRESCINDIBLE tener claro cuanto espacio necesitamos, ya que TODAS las etiquetas que van mas allá de $7FFF
se tienen que cambiar/reubicar en Dragón, y para optimizar memoria hemos de saber cuanto espacio hay que reservar para dicha BBDD.
Ya hice una aproximación en el otro documento que subí sobre Uso de Memoria.

Tu, que conoces el Z80 mucho mejor que yo, podrías empezar a destripar código, empezando por PrintMsg e ir analizando las
rutinas llamadas (que no son pocas).
Yo intentaré bajarme algunos documentos, para mi, imprescindibles para refrescar la memoria:
- Arquitectura de la CPU (registros)
- Juego de opcodes del Z80 (con algún ejemplo, sobre todo de modos de direccionamiento)
- Mapa de memoria del Spectrum para saber donde está ubicada cada cosa.

nada, que nos vamos a divertir -thumbup

ya me dirás que te parece la idea ...

saludos
pere
Adjuntos
__Hobbit - CodigoZ80ParaImprimir.zip
Rutinas ensamblador Z80 para Imprimir
(8.18 KiB) Descargado 63 veces
__Hobbit - Datos por BLOQUES (BBDD).zip
Base de datos
(26.01 KiB) Descargado 56 veces

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 52 veces
Contactar:

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor luiscoco » 01 Oct 2014 14:37

pser1 escribió:Recuerda que es IMPRESCINDIBLE tener claro cuanto espacio necesitamos, ya que TODAS las etiquetas que van mas allá de $7FFF
se tienen que cambiar/reubicar en Dragón, y para optimizar memoria hemos de saber cuanto espacio hay que reservar para dicha BBDD.
Ya hice una aproximación en el otro documento que subí sobre Uso de Memoria.

Hola, tengo una objeción con esto, a ver, que yo sepa si es para Dragon 64 o casi cualquier coco, si se pasa la ROM a RAm (si es que se necesita algo de la ROM) y pasarnos a RAM, ese problema no existiría, por supuesto no serviría para Dragon 32 ni para cocos con menos de 64 Kb. no lo veo tan grabe por ahora, luego podríamos sacar una versión para 32k, no me parece que nos forcemos tanto al principio. o me equivoco en algo.

Con respecto a la version 7 solo se tocaron los comentarios los DB y DW, incluso los Labels y address chequeados con el programa en basic, me falta compilarlo y reparar los posibles errores de comas o puntos y comas, pero la data debe esta bien.

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 52 veces
Contactar:

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor luiscoco » 01 Oct 2014 14:58

Con respecto a __Hobbit - Datos por BLOQUES (BBDD).txt no se que hacer, creo que excepto los font ya esta todo mejorado e incluido en V7.
Ayúdame con esto por favor. o es la version para 6809?

Con respecto a __Hobbit - CodigoZ80ParaImprimir.txt
Imprimir es mostrar en pantalla, no?
De donde sale este?, de la versión windows?, de la versión que estamos usando? a primer vuelo no me parece?

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 01 Oct 2014 15:45

Hola Luis,
pienso que en principio deberíamos proponernos que funcionara en un D32 con unidad de discos, esta configuración se come:
desde $8000-$BFFF para el Basic
desde $C000-$DFFF para el DOS
Con lo que pasando a MAP1 en un Dragón 64, se obtendrian además de los 32K standard, otros 8k menos 256 bytes desde $E000 hasta $FEFF (por la SAM y los I/O)
Muy poco beneficio ... otra cosa sería poder pasar del Basic pero ésto es casi misión imposible ya que el D.O.S. lo utiliza bastante intensivamente ... habría que experimentar
y es complicado pasar del Basic para hacer las pruebas.
En principio, las pantallas gráficas las queríamos cargar desde disco, luego el DOS es necesario.
No sabemos todavía con exactitud que cantidad de espacio ocuparán el programa y los datos.
De los datos, asumiendo que ya están bien acotados, puede calcularse fácilmente cuanto espacio necesitan.

Voy a dedicarme a ello y en cuanto tenga datos concretos los subiré en este mismo hilo, proponiendo una ubicación para ellos que deje el máximo espacio libre para el programa.
Ten en cuenta que pese a reubicarlos no deberíamos tener problemas ya que mantendremos los nombres de las etiquetas. Por lo tanto en NINGUNA parte debe haber código que
llame a piñón (hardcode) a estas etiquetas con cifras hexadecimales , deben ser llamadas siempre usando estas etiquetas como origen, ya se encargará el compilador
de resolver las direcciones realmente ocupadas.

Los datos del fichero de código ensamblador Z80 están sacados del desensamblado tuyo versión 6, partiendo de las rutinas que tenemos en C yendo a las etiquetas mencionadas.
Deberíamos ser capaces de meter en este documento TODO el código Z80 que se emplea para presentar mensajes en pantalla con todas las subrutinas y tablas indirectas que se empleen.

Empezando en PrintMsg y siguiendo todas las derivaciones a subrutinas llamadas desde ahí, añadiendo partes que parecen relacionadas con presentar mensajes en pantalla .... acabé con ésto.
El documento está tal como me quedó ayer por la noche ... posiblemente a medias, algo falta y sobra parte también, la tengo tabulada fuertemente hacia la derecha.
Puedes modificar el documento como creas conveniente y subirlo una vez retocado. Al final tendremos que comentar cada línea para poder convertirla en funciones (subrutinas) en codigo para 6809

Saludos
pere

Edit: se volvió loco el sistema y crei que no lo había subido ... sido indicado que el último post es tuyo (?)

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 01 Oct 2014 15:52

Hola Luis,

como mi anterior mensaje no marcó que yo había actualizado el hilo, te envío este solo para ver si se cambia el último usuario que ha hecho un post ...

saludos
pere

Edit: parece que ahora si se enteró. Murphy no descansa!

Avatar de Usuario
luiscoco
Mensajes: 2410
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 36 veces
Agradecimiento recibido: 52 veces
Contactar:

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor luiscoco » 01 Oct 2014 16:55

pser1 escribió:Ten en cuenta que pese a reubicaros no deberíamos tener problemas ya que mantendremos los nombres de las etiquetas. Por lo tanto en NINGUNA parte debe haber código que llame a piñón (hardcode) a estas etiquetas con cifras hexadecimales , deben ser llamadas siempre usando estas etiquetas como origen, ya se encargará el compilador de resolver las direcciones realmente ocupadas.

Eso es cierto, yo mas que nadie quiero empezar a cambiarlas, pero por ahora sirven.

Recordemos que tenemos 2 lineas de trabajo o al menos yo lo veo así. he insisto me encanta la tuya, mas que la mía.
Según la mía, convertimos un programa de Spectrum de cassette, que
1.- No utiliza DOS y creo que tampoco ROM Basic
2.- Dibuja las pantallas en vivo, y no utiliza rutinas de ROM LINE, CIRCLE, PAINT (bueno, ni se si spectrum las tiene) (Puedo estar equivocado)
3.- Una vez cargado, no necesita de nada mas
Yo se que tu quieres mucho mas, pero veo que todos los impedimentos son por eso (excepto ayudarse a las pruebas con Basic y DOS).

Lo ideal era esperar a tener todo documentado en Z80 para empezar a pasar a 6809. como ya se ha empezado, noto que están quedando trozos en formato (digamos que viejo) FCB y labels como L7295 sin los 2 puntos ni el underscore o piso "L_". no se si los compiladores 6809 lo entienden así mejor, si esto es cierto, entonces estamos usando un compilador para Z80 poco compatible con los de 6809 y habrá que modificar mas, no es que sea un problema grave, pero no puedo comparar tu versión de data con los cambios que hizo mi programa basic para que los datos estuvieran ok.

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 02 Oct 2014 10:35

Hola Luis,

retomo la situación en el foro para todos los demás.
Hay muchos compiladores para 6809 y cada uno tiene sus exigencias
El Dream y el DiskDream aceptan encantados FCB y FDB, mientras que para etiquetas son muy pobres
y solo admiten seis letras, por lo que los dos puntos reducen esta cifra.
Tras haber comprobado que el compilador en entorno PC llamado LWASM nos puede ir bien, nos podemos adaptar a sus exigencias, a saber:
- Las etiquetas son libres con tal de que empiecen en la primera columna, podríamos usar los dos puntos, aunque (como en C o Java) yo lo restringiría
solamente al área de código, dejando las etiquetas de datos sin los dos puntos (es una propuesta)
- Las directivas de definición de datos cambian, acepta FCB, FDB, FCC y también los modificados .DB .DW (hemos de decidir cuales queremos emplear)
Ademas hemos de emplear el mismo número de espacios para los tabuladores ... ¿Cuántos usas tu?
Una vez consensuados estos tres puntos, ya no tendremos problemas al intercambiar ficheros

Si esperamos a codificar para 6809 cuando tengamos TODO el código Z80 triturado y explicado, vamos a esperar una eternidad antes de empezar.
Me parece que, si somos capaces de separar trozos de código por funcionalidad, podemos avanzar mas y además tendremos oportunidad de ir haciendo pruebas parciales
del proyecto

Por lo que respecta a los gráficos, la incompatibilidad entre las dos máquinas es absoluta. Puedes intentar convertir una de las pantallas, por ejemplo la primera
marcada en tu último desensamblado versión 7 con la etiqueta L_CC43. Creo que solamente con conseguir una explicación del contenido de este bloque ya estaríamos contentos.
En Dragón cada pantallazo se llevaría 4032 bytes, asi que si hay 22, se nos comerían 88704 bytes lo cual sería imposible.
Esto implica que estos pantallazos se dibujan sobre la marcha y me parece que imitar esto va a ser mucho peor que limitarse a cargar de disco la imagen adecuada a cada
ubicación cuando corresponda.
Se aceptan propuestas...

Ya lo iremos comentando.

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 02 Oct 2014 11:53

Hola de nuevo,

he estado reubicando, sobre el papel, las partes de datos y las pocas tablas de acceso a rutinas que tenemos controladas en el documento de Base de Datos y en el desensamblado versión 7 de Luis
y he obtenido el documento que os adjunto .

En el veréis las áreas reservadas por el sistema, gráficos, stack y luego bloques que combinan partes de los datos para encajarlos lo mejor que se puede dentro del mapa de memoria de Dragon
De esta forma nos quedan libres unos 12129 bytes para el programa entero. Las rutinas para escribir en pantalla ya están ubicadas y descontadas.

Cada bloque tiene una dirección de inicio, pero he hecho que TODAS sean contiguas, de forma que se pueda compilar con un único ORG y, por tanto, que nos genere un bloque binario sin agujeros, de paso veremos si ocupa los bytes esperados

Trataré de reubicar los trozos de datos de la forma inidcada en el documento adjunto, insertaré el ORG pertinente y trataré de compilar con el LWASM, ya os contaré como ha ido el intento -507

Os estoy explicado los pasos que voy a hacer, pero afortunadamente, podemos hacer los cambios que creamos oportunos, así que vuestras aportaciones serán bien recibidas -thumbup

saludos
pere
Adjuntos
03 - Hobbit - Uso Memoria - Dragon-CoCo2 v2.0.zip
Mapa de memoria Dragon-CoCo2 x Hobbit
(2.01 KiB) Descargado 49 veces

Avatar de Usuario
pser1
Mensajes: 2594
Registrado: 08 Dic 2012 18:34
Agradecido : 506 veces
Agradecimiento recibido: 656 veces

Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.

Mensajepor pser1 » 02 Oct 2014 14:14

Hola Luis,

El primer intento de compilación ha dado errores por las siguientes etiquetas inexistentes:
En la LOCATION TABLE se hace referencia a las no encontradas siguientes:
L_BC16, L_BC2A, L_C042

Por si acaso, al ser tan grande el fuente, lo he ido compilando poco a poco, he empezado con un trocito y mientras compilaba bien, le he ido añadiendo partes,
hasta que ha mostrado estos 3 errores.
Tengo que salir y tardaré en volver ...
¿Podrías tu, Luis, mirar cuales son los valores reales a poner en estos lugares mirando tu desensamblado v7 ?
En cuanto regrese contacto de nuevo contigo, para poder continuar con mas partes de la BBDD

muchas gracias de antemano
pere


Volver a “Proyecto The Hobbit 6809 por pser1”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado