Conversión código para 6809

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 09 Ene 2015 09:26

Último mensaje de la página anterior:

@Chema,

xD ni se te ocurra pensar esto!
Sin tu intervención habría sido imposible desentrañar el funcionamiento de los scripts y la ejecución de comandos ... por mencionar solamente dos de tus mas importantes hallazgos.

La verdad es que la conversión hecha desde Start hacia adelante, implicaba hacer casi todo nuevo para el 6809, por lo tanto, pocas complicaciones al no tener que respetar mas que la funcionalidad
de cada trozo de código convertido. Ojalá hubiéramos podido explicar la operativa de cada función de forma que leyendo texto (no código) se entendiera totalmente el cometido de cada función.
Pero, una vez empezado el trabajo de conversión, le vas pillando el tranquillo y encima he ido descubriendo que puedo ir gestionando el tema de registros con mas libertad de la esperada ... -grin
Ya veremos las complicaciones (a este respecto) que van a salir con la conversión de las 14 rutinas asociadas a la bendita L_6DD6, parece un reto interesante -thumbup

un abrazo
pere

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 09 Ene 2015 11:31

A fin de tener la misma documentación de todo el proyecto (si nos es posible), adjunto el diagrama correspondiente a la zona
que empieza en Start y llega hasta el final del MainLoop, o sea lo que tenemos ahora mismo convertido a 6809.
La parte operativa ahora son las 13 rutinas de la parte superior.
Las 8 de la parte inferior son las que se tendrán que ir analizando y expandiendo dibujando su diagrama para planificar el uso de los registros ...
De ellas la L_6DD6 es la que tomé para hacer el diagrama anterior.
La idea es irlas haciendo en el orden de aparición (o uso) en el MainLoop

saludos
pere

51 - Start hasta MainLoop - Diagrama.jpg
Diagrama Global del programa

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

Re: Conversión código para 6809

Mensajepor luiscoco » 09 Ene 2015 18:02

Eso es justo lo que yo quería y no me salia, muy buen trabajo, ya te ayudo -thumbup

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 09 Ene 2015 18:31

Hola Luis,

la idea no es hacer el diagrama solamente, sinó pelearse con el código para añadir parámetros, variables devueltas, flags afectados, etc.
Solo como ejempo del trozo de la L_6DD6 con el que me estoy pelando ahora, pongo el dibujo de nuevo

52 - L_6DD6 - Diagrama final.jpg


@Chema
verás que (ab)uso bastante del lápiz por la facilidad de borrado ...

saludos
pere

EDITO: He cambiado el diagrama por la versión final con nombre en todas las rutinas y con indicaciones de parámetros recibidos y resultados devueltos en cada una
Ahora ya toca pasar a codificar y otra vez hay muchas cosas que hay que hacerlas a medida para el 6809

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

Re: Conversión código para 6809

Mensajepor luiscoco » 13 Ene 2015 23:23

Deberíamos tener un listado de lo que ya esta y lo que falta, en que ayudo

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 11:25

Hola Luis,

saber lo que está hecho (o en curso) es muy fácil:
Todas las rutinas que aparecen en el diagrama de la L_6DD6 que he subido y además toda la parte superior del diagrama inicial (el primero que subí con Start hasta MainLoop):
Start, ReStart, MainLoop, LdFile, 85B8,
ClearScreen, 97AD, FillWithZeros, DrawChar,
860D, 864A, GetPosRandom, GetRandom
Si alguien está trabajando en cualquier otra área de programa ... no lo ha comunicado aquí.
Queda pendiente de conversión:
6E97
IfB17AZeroClearAndJmpTable75D2
ExecuteUsrCommandsBilboEvents
PrintMsg
PutChar
PutEnter

Aunque parezcan pocos trozos pendientes, has de tener en cuenta que cada uno abre su propio árbol y puede que en algún caso haya que
subdividir en partes el árbol para no volvernos locos.
La parte vital es analizar desde la última rutina hacia atrás para ir anotando los parámetros que necesita y qué devuelve cada una.
De momento ya he necesitado y utilizado:
reg_BC, con sus reg_B y reg_C
reg_DE, con sus reg_D y reg_E
Te adjunto la versión actual del fuente para 6809.
Está en fase de pruebas la parte de L_6DD6 y sus ramas derivadas ... sigo debugando para corregir comportamientos erróneos.
Si te parece, aunque tedioso, puedes revisar la parte ya hecha, siempre ven mas 4 ojos que dos, ya sabes
De paso verás como he emulado los registros inexistentes BC y DE con RAM o con U,Y cuando era factible.
Si te decides a codificar ya, empieza por alguno de los 6 bloques pendientes.
Te recomiendo, de entrada, que copies el bloque elegido a un documento vacío
Luego lo vas leyendo y vas copiando en el nuevo documento todas las partes llamadas con CALL y controla que los JP, JR deriven a zonas que también tengas copiadas.
Yo las voy añadiendo ordenadas por su posición en memoria de Spectrum.
Por supuesto, verifica que no estén ya hechas, en cuyo caso, solo tendrás que ver como están implementadas por el tema de parámetros a recibir y resultados devueltos.
Ya me dirás alguna cosa

saludos
pere
Adjuntos
H6809-6 (en curso).zip
OJO - está en OBRAS!!
(67.76 KiB) Descargado 61 veces

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 16:48

Hola compañeros,

quería comentar algunas cosas sobre esta conversión a 6809 ...
La primera, cuando he probado la parte de L_6DD6 resulta que contiene una rutina para gestionar y controlar la inactividad del usuario, de forma que
si no tecleas nada, a los 20 segundos (en Spectrum) salta el mensaje "WAIT" y pasa tu turno ...
Bien, al tener rutina de teclado propia para 6809, basada en la ROM, el tiempo que tarda la versión portada es inferior a los dos segundos y además aunque escribiera
me cortaba al llegar a 5 segundos aproximadamente.
Obviamente he cambiado el retardo en L_6DD6 pero ha sido insuficiente y he tenido que añadir un bucle de espera en la rutina GetKey
Para colmo ni siquiera $FFFF daba para conseguir los 20 segundos, así que he tenido que anidar dos bucles de espera y jugar con los valores de ambos mas el retardo de L_6DD6
hasta que por fin viene a tardar unos 21 segundos aprox.

Segundo, he encontrado un bug divertido, puede reproducirse tanto en WilderLand como en SpecEmu al usar el snapshot que tenemos, éste es:
Escribes hasta llenar cuatro líneas de texto y no pulsas intro, dejas pasar el tiempo hasta que el programa decide hacerte pasar, borra tu texto y escribe "WAIT"
Peeero, fijaros que en pantalla aparecen DOS cenefas separadoras, una de las cuales vuela en cuanto escribes y se hace scroll-up
Ya me parecía raro que en nuestro fuente indicara que movia CINCO lineas hacia abajo cuando solo hay que mover cuatro!
En fin, sigo probando y debugando ... es entretenido si eres masoca!

Os adjunto un VDK con el binario ejecutable, basta con hacer RUN"DEMO.BIN"
Al aparecer la pantalla de presentación pulsar cualquer tecla y ya os quedáis bajo control del gestor de entrada de usuario.
Teclead lo que os parezca, esperad que se borre, lo que queráis probar.
Si pulsáis INTRO, el gestor de entrada recoge lo entrado y pasaría a otra rutina, pero de momento está interceptado
y entra en un bucle esperando la tecla "Q" para volver al Intérprete de Basic

No es mucho, pero la infraestructura va creciendo ...

saludos
pere

muestra.jpg
muestra.jpg (23.08 KiB) Visto 1274 veces

permitido.jpg
permitido.jpg (24.15 KiB) Visto 1274 veces

tope.jpg
tope.jpg (29.55 KiB) Visto 1274 veces
Adjuntos
H6809-6.zip
Fuente x 6809 estado actual (en pruebas)
(67.78 KiB) Descargado 61 veces
25 - The Hobbit 6809 (subido RW 2015-01-14).zip
Imagen VDK lista para cargar
(15.78 KiB) Descargado 53 veces

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 17:18

ved la exageración del BUG en Wilderland, tras escribir cuatro lineas de texto y esperar

Imagen

saludos
pere

WilderLand.jpg
WilderLand.jpg (108.99 KiB) Visto 194 veces

Avatar de Usuario
ron
Mensajes: 18951
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2030 veces
Agradecimiento recibido: 1745 veces

Re: Conversión código para 6809

Mensajepor ron » 14 Ene 2015 17:32

Corrobooro que en todas las versiones si no se teclea nada en 20 seg ( aprox ) el programa genera un wait y ejecuta una accion por si mismo.

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 17:44

Hola de nuevo,

ya realizadas todas las pruebas que eran posibles, quedan pendientes para próximas etapas:
- Empleo de @ al inicio de texto (debería repetir comando anterior), dentro de una frase se puede escribir pero no parece tener sentido.
- Imprimir, con sus scrolls, en la parte superior de pantalla, hasta que carguemos una localización no lo veremos en marcha.
- Envío de texto a la impresora, a esperar pues solamente se envía el texto de la parte superior.

Así pues, tomo la siguiente rutina, la L_6E97 puesto que nadie ha avisado de estar trabajando con ella.

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 17:48

ron escribió:Corrobooro que en todas las versiones si no se teclea nada en 20 seg ( aprox ) el programa genera un wait y ejecuta una accion por si mismo.


muchas gracias, Rodrigo

ya daba la impresión de que la 6809 nos iba a dar disgustos por exceso de velocidad allí donde haya bucles de retardo, habrá que multarla -507

saludos
pere

Pd a que mola ver tres cenefas y dos veces WAIT, no parece que si hicieran muchas pruebas del gestor de entrada de comandos del usuario

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

Re: Conversión código para 6809

Mensajepor luiscoco » 14 Ene 2015 19:40

Pues yo había agarrado esa zona justo ayer "L_6DD6"
Por cierto, lo de la espera por 20 seg, tienes ya todas las subrutinas hechas , digo las que van en medio de mainloop?, lo digo porque a lo mejor hacen retraso y no tendrías que hacer tanto retraso en bucles

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

Re: Conversión código para 6809

Mensajepor luiscoco » 14 Ene 2015 19:51

por cierto la "L_6DD6"
lleva tambien las
L_6EDE
L_6EE9
L_6F30
L_6F47
L_6F59
L_6FBA

Hago alguna yo o paso a otro bloque?

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 19:55

@Luis,

pues ya es mala suerte.
Hace ya días que la empecé y ahora está totalmente finalizada y probada.

Si quieres puedes tomar la L_6E97
que solamente llama a:
L_6F30
L_6F47 , L_6F72 y L_6F76 todos en el mismo bloque lógico de código
L_6FBA

La otra alternativa puede ser demasiado dura para empezar ...
- SayWhat que simplemente llama a
PrintMsg ... que puede llegar a ser inmenso y necesitaremos partirlo en mas de un trozo.

Voy a mirar el árbol que cuelga de las otras que faltan
- IfB17AZeroClearAndJmpTable75D2
- ExecuteUsrCommandsBilboEvents
- PutEnter

Una vez hechos, tendremos una visión mas clara de lo que nos espera ... y podremos organizarnos mejor -thumbup

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 19:59

@Luis
como dije al principio, NO se trata de hacer una rutina, sino de tomar todas las rutinas que son llamadas por la que elijas,
hacerte un dibujo del orden en que se llaman y anotar ahí las variables / flags que devuelven así como los registros que
necesitan como parámetros, solo así podrás codificar sin liarla con los registros.

saludos
pere

Pd. en mi anterior mensaje te proponía una que llama a otras cinco que en realidad son dos mas una larga (que tiene tres entradas)

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 20:03

luis46coco escribió:por cierto la "L_6DD6"
lleva tambien las
L_6EDE
L_6EE9
L_6F30
L_6F47
L_6F59
L_6FBA

Hago alguna yo o paso a otro bloque?


Una pregunta, Luis
¿Dónde has visto tu que L_6DD6 llame a estas rutinas que tu mencionas?
es que NO llama a ninguna de éstas!!

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2991
Registrado: 08 Dic 2012 18:34
Agradecido : 697 veces
Agradecimiento recibido: 771 veces

Re: Conversión código para 6809

Mensajepor pser1 » 14 Ene 2015 20:06

@Luis,
sería interesante que utilizaras la última versión del fuente en Z-80
viewtopic.php?f=84&t=200031385&start=580

saludos
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