Conversión código para 6809

Avatar de Usuario
Chema
Mensajes: 2002
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1224 veces
Agradecimiento recibido: 406 veces
Contactar:

Re: Conversión código para 6809

Mensajepor Chema » 08 Mar 2015 23:08

Último mensaje de la página anterior:

Pues dirás lo que quieras, pero a mi me parecen avances importantes... Sigue así que fijo que, a no mucho tardar y casi de repente, vamos a ver una versión medio funcional.... :)

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 09 Mar 2015 18:06

Gracias por los ánimos, Chema.

El problema, y es grave, reside en el hecho de que voy convirtiendo código sin poder probar todas las rutinas del bloque hecho (a veces bien pocas)
Cuando mas adelante se utilizan y dan problemas, a pesar de que comento todas y cada una de la líneas tanto en Z-80 como en 6809 cuesta encontrar los errores
siendo necesario debugar y el GDB es amigable por los pelos ... plan DOS (pre Windows)
La realidad es que estoy tropezando con los mismos problemas una y otra vez:
- Orden de registros en el stack
- Los registros en RAM reg_BC, _DE, _IX, _IY que no siempre los actualizo cuando se modifica el registro que los representa en aquel momento.
Es por esto que pedía si alguien pudiera echarle una ojeada, sin prisas pero con ganas, al código para tratar de pescar esos errores que uno mismo no ve.

Afortunadamente, insertando un desvío a la trampa para cazar errores, he podido ir siguiendo, por trozos, el código y he podido corregir unos cuantos gazapos.
Ahora ya funcionan tanto SCORE como QUIT, lo que de rebote implica que la impresión en la parte superior de pantalla también anda correctamente
Ha sido una alegría ver aparecer el texto correctamente en la parte superior, aunque la primera vez salía en video invertido -thumbup
Y no he utilizado mi sistema (el de las demos iniciales), sinó que he calcado el código del Z-80 (salvo diferencias hardware)

El próximo problema a analizar es el proceso de conversión de órdenes del usuario en bloques (el famoso bloque de 8x25)

seguiré informado del avance del proyecto

saludos
pere

Pd Adjunto situación actual de los fuentes y un VDK para quien quiera hacer algunas pruebas.
En el VDK hay un fichero SAVGAM.BIN por si alguien intenta probar LOAD antes de haber grabado nada ...
Al pulsar QUIT, se muestra el mensaje y hay que pulsar DOS veces para reiniciar (la primera para cargar la pantalla ... de momento no lo hace -507 , la otra para empezar)
Informes bienvenidos -drinks
Adjuntos
25 - Hobbit 6809 v07m.zip
el VDK de pruebas
(20.08 KiB) Descargado 47 veces
Hob68097m.zip
Los fuentes y datos
(111.42 KiB) Descargado 45 veces

Avatar de Usuario
ron
Mensajes: 18162
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1071 veces
Agradecimiento recibido: 1106 veces

Re: Conversión código para 6809

Mensajepor ron » 09 Mar 2015 18:50

Pere, los avances son MUY significativos y cuantiosos. Imagina meterse en tu pellejo o ponerse en tus zapatos. Es para que como poco te de un kernel panic, no es broma.

Creo que una opción asequible para muchos sería ir dando versiones semi funcionales o con semáforos o puntos de control para ir comprobando que lo que tiene que hacer lo hace y que se pueda verificar. De esta manera podrían incluso ponerse a testar aquellos que no tenemos conocimientos avanzados de 6809, pero eso es una idea solamente.

O de lo que tengas en un momento determinado para probar, indicar como se llega, como se lanza y que resultados deben esperarse obtener.

De alguna manera, estructurar el proceso para que puedas ir delegando las pruebas y los tests, y quien se lance a ayudar ya sabe que tendrá que reportar los resultados y los avances.

Luego le doy una vuelta al tinglao, ciertamente estás prácticamente tirando tu solo del carro, pero eres el que tiene el "todo" en el coco y el que sabe como dirigir la orquesta, venga maestro, que no pare la música.

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 10 Mar 2015 17:48

ron escribió:Pere, los avances son MUY significativos y cuantiosos. Imagina meterse en tu pellejo o ponerse en tus zapatos. Es para que como poco te de un kernel panic, no es broma.

No he llegado a momentos de pánico porqué NO tengo prisa, pienso que lo contrario conllevaría 10 veces mas errores de los que estoy cometiendo y lo que cuesta reparar cada uno ya lo sabéis por propia experiencia.

Creo que una opción asequible para muchos sería ir dando versiones semi funcionales o con semáforos o puntos de control para ir comprobando que lo que tiene que hacer lo hace y que se pueda verificar. De esta manera podrían incluso ponerse a testar aquellos que no tenemos conocimientos avanzados de 6809, pero eso es una idea solamente.
O de lo que tengas en un momento determinado para probar, indicar como se llega, como se lanza y que resultados deben esperarse obtener.
De alguna manera, estructurar el proceso para que puedas ir delegando las pruebas y los tests, y quien se lance a ayudar ya sabe que tendrá que reportar los resultados y los avances.

Voy dejando versiones del programa cuando creo que se pueden mostrar para ver el avance (lento) del proyecto.
No voy a preparar versiones para que otros hagan pruebas, si hay que hacer unas pruebas concretas , las hago yo mismo, acabo antes, seguro!
Lo que sucede es que si alguien juega con el programa en la versión que yo subo y trata de hacer cosas, igual encuentra algo que no le cuadra respecto a lo que hace en Spectrum. Estos detalles además de los posible casques o colgadas de programa son los que puede encontrar otra gente que hará cosas que yo ni he intentado hacer ...
Como ejemplo ayer vino mi hijo pequeño (tampoco tanto), y le mostré la situación actual, se puso a trastear y me comentó que el parser si acepta dos órdenes con tal de que la separación sea un espacio en blanco en lugar de una coma. Buena pista para buscar porqué falla con la coma.
Los demás intentos que hizo no dieron resultado, sinó el famoso What?
El mejor betatester es un crio, se dice habitualmente, porqué le hará perrerías que el programador ni se imaginó.
MI hijo (informático, por cierto) me comentó que en versión actual solo permito tener guardada una posición de partida y solo ésta es la que se carga.
Publico mi respuesta:
El nombre del fichero es "SAVGAM.BIN", se ve que solo tienen 6 letras, hasta 8 faltan los dos dígitos que se añadirán en función del número que entre el usuario tanto al grabar como al cargar,
pero de momento tenemos la parte que funciona.
Otra, en Pause no se nota que está todo parado a menos que te fijes que el cursor (signo +) se ha ido a la izquierda. En Spectrum cambian el borde ... Si nos sobraran bytes de RAM (lo dudo)
se podría añadir una rutina que mostrara un signo abajo a la izquierda y lo fuera invirtiendo (blanco-negro luego negro-blanco)

Ya iremos viendo ...
De momento es esperanzador que el programa ya sea capaz de mostrar mensajes en la parte superior de pantalla (de la tabla de mensajes) aunque contengan aquellos códigos entre
corchetes, que han resultado por ser parámetros que se pasan en el stack.

saludos
pere

Avatar de Usuario
ron
Mensajes: 18162
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1071 veces
Agradecimiento recibido: 1106 veces

Re: Conversión código para 6809

Mensajepor ron » 10 Mar 2015 19:09

Una pregunta de novato, ¿ los mensajes han de pasar todos por la pila o simplemente se pasan los parámetros que llaman a los mensajes que están en esa tabla de marras ? ¿ O es que esto es un modo de funcionamiento que aún no está terminado / depurado ?

100_2435.JPG


100_2436.JPG


100_2437.JPG


Esto parece que funciona y que hace lo que se supone que tiene que hacer, pero he de mirar de nuevo que es lo que SI funciona y lo que no. He estado toqueteando un rato y es esperanzador del todo, emociona !!!

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 10 Mar 2015 19:33

ron escribió:Una pregunta de novato, ¿ los mensajes han de pasar todos por la pila o simplemente se pasan los parámetros que llaman a los mensajes que están en esa tabla de marras ? ¿ O es que esto es un modo de funcionamiento que aún no está terminado / depurado ?

Hola Rodrigo,
los mensajes se toman de la tabla de mensajes y están codificados, hay palabras comunes, preposiciones, palabras de diccionario y algunas veces directamente en ASCII.
Lo que sucede es que frecuentemente la frase contiene variables, que pueden ser nombres de personaje, de localización, de objeto o simplemente cifras como el caso de SCORE
entonces la variables en el mensaje están representadas por cifras entre corchetes, que son procesadas en PrintMsg por rutinas distintas (una para cada tipo de parámetro)
Estas rutinas buscan en el stack punteros a los parámetros. Por supuesto el programa tiene que haber metido estos punteros en el stack antes de llamar a la rutina que muestra
el mensaje.
De momento solo he podido probar el de SCORE que busca una cifra (parámetro [16])

Esto parece que funciona y que hace lo que se supone que tiene que hacer, pero he de mirar de nuevo que es lo que SI funciona y lo que no. He estado toqueteando un rato y es esperanzador del todo, emociona !!!

Esta son las pantallas, digamos NUEVAS, hasta ahora solo verificaba que existieran en el diccionario y devolvía su "I DO NOT KNOW ..." en caso contrario.
Ahora ya interactua un poquito con el usuario.
Si haces SAVE, se guarda la posición en disco bajo el nombre de "SAVGAM.BIN" y si haces LOAD la carga sin pestañear (en ambos casos el cursor se va a la izquierda hasta que ha finalizado la operación de disco). Como dije antes esto se modificará para tener hasta 100 posiciones (00-99) pero de momento ya sirve y teniendo en cuenta que no nos movemos, solo es para probar parte del código ...
Sinceramente, a mi me animó muuucho ver aparecer texto correctamente en la parte superior y mas sabiendo que era procedente de la tabla de mensajes, cosa que abre la ventana a poder presentar cualquiera de los muchos que hay y demuestra que la copia textual de las rutinas de Z-80 hechas a rajatabla también funciona! -thumbup
No lo tenía tan claro yo, me guardé mis rutinas por si las moscas, pero ahora sé que puedo archivarlas -507
A ver si se animan mas compañeros a hacer pruebas sin seguir ningun plan concreto, así es posible que alguien detecte un fallo de programa o un funcionamiento incorrecto
Venga, animaros, no lleva mucho rato, todo sea por la causa -drinks

saludos
pere

Avatar de Usuario
ron
Mensajes: 18162
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1071 veces
Agradecimiento recibido: 1106 veces

Re: Conversión código para 6809

Mensajepor ron » 10 Mar 2015 19:44

Si si, he probado el SAVE y el posterior LOAD y chuta de miedo. Eso está comprobado OK.

Agradezco la explicación ya que esclarece muchos detalles, lo que pasa que al no tener en la cabeza lo que tu tienes se hace un poco lioso ( al principio ) , ahora se trata de leer lo que cuentas que has implementado y probarlo, así de sencillo.

Eres un crack ! sigue que lo tienes a tiro !!!

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 10 Mar 2015 20:39

Hola Rodrigo,

creo que hay cosas que están implementadas y ni yo me he enterado -banghead
Estoy convirtiendo bloque a bloque siguiendo la numeración que les puse a los diagramas de verificación que me hice.
Algunas cosas están hechas desde el principio, pero no se han visto los resultados hasta que código posterior hace uso de aquellas rutinas ...
La verdad es que en la parte que convertí recientemente había una tabla que explicaba los comandos aceptados, en los demás casos es probar y acertar -507

Hasta que no haya podido corregir la parte del parser que separa órdenes no empezaré con el bloque 05A, cuyo nombre es:
"05A - ExecuteUsrCommandsBilboEvents y DescribeActionOnScreen (303 lineas).txt" que promete también, pero me temo que requiere a sus compañeros 05B, 05C y 05D
o sea que habrá que pringar bastante, pero seguramente el resultado de esta parte ya sea un avance importante.
Veremos que puedo hacer, lo que resta de semana puedo estar con disponibilidad realmente baja por no decir escasa, pero como he dicho siempre, no tengo prisa alguna.
El lema "Vísteme despacio que tengo prisa" es super válido aquí!

saludos
pere

Avatar de Usuario
Chema
Mensajes: 2002
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1224 veces
Agradecimiento recibido: 406 veces
Contactar:

Re: Conversión código para 6809

Mensajepor Chema » 10 Mar 2015 21:38

Me acabo de instalar el XRoar sólo para probar ésto. La cosa pinta muy bien pere... Como dices hay más cosas dentro de lo que parece.

Yo sólo he tenido respuestas de QUIT y HELP. El resto no dice nada si reconoce el verbo o I DO NOT KNOW THE WORD ... si no lo reconoce.

Buen trabajo!!!

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 10 Mar 2015 21:56

Hola,

Hasta ahora está operativo el chequeo / validación de las palabras entradas, si no son correctas las rechaza con la frase del "I DO NOT KNOW THE WORD ..."
Cuando estás en la primera posición de la línea de entrada de comandos los cursores son convertidos a N, S, E, W
Además en dicha posición, si ha habido un comando ejecutado antes (HELP, SCORE, PAUSE, SAVE, LOAD) al pulsar la tecla @ se repite dicho comando otra vez ... como en el Spectrum48K
Si a medio teclear se pulsa cursor izquierda o la tecla Backspace, se borra el último carácter, pero si pulsas SHIFT+Cursor Izquierda se borra TODO lo que has entrado, tanto si es media línea como si son cuatro completas.

Una observación para XRoar, en modo de teclado traducido, la tecla @ no la recoge y la intercepta Windows abriendo una ventana de selección.
Para poder escribir este signo, hay que entrar en el modo de teclado que se obtiene pulsando CTRL + Z (teclado emulado)
Una segunda pulsación de CTRL + Z te deja con el teclado traducido (PC) de nuevo ...

La orden SCORE debería emitir el mismo mensaje que QUIT, solo que este último se queda esperando DOS teclas (ya encontraré porqué) para reiniciar el juego.
Los comandos LOAD, SAVE envían el cursor a la izquierda y cargan/graban el bloque de datos de/en un fichero, de momento con nombre fijo, una vez realizado, vuelve a su posición.
En teoría PRINT y NOPRINT también actúan pero no se ve su efecto por ahora ...
Otros comandos aceptados sin efecto visible ahora son: ALL, EXCEPT, IT y ONE que forman parte del bloque recién convertido.

Creo que ésto es todo por el momento, por supuesto hay mucha funcionalidad programada pero no visible por ser utilizada en partes todavía no convertidas. Tiempo al tiempo!

saludos
pere

@Chema
muchas gracias por pringar instalando XRoar y hacer pruebas -thumbup

Avatar de Usuario
ron
Mensajes: 18162
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1071 veces
Agradecimiento recibido: 1106 veces

Re: Conversión código para 6809

Mensajepor ron » 10 Mar 2015 22:14

Yo lo he compilado en Linux y mi teclado carece de tecla windoze, estoy salvado

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 10 Mar 2015 23:52

Hola Rodrigo,

todo dependerá de como actúe XRoar en Linux, si no está emulando el teclado de Dragón, no recoge la pulsación de la tecla @ (eso es lo que pasa en entorno Windows)
Ya nos comentarás si @ te ha funcionado sin hacer ningún cambio de teclado (Ctrl+Z)

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 11 Mar 2015 23:18

Buenas tardes,

patético, jajaja, después de muchas pasadas con el debugger GDB y sin encontrar nada raro, me he hartado y he puesto en marcha el SpecEmu con el snapshot original de Spectrum.
Increíble, el original hace lo mismo!!!
Dos comandos separados por coma o por punto dan la misma respuesta que la conversión a 6809 (what? para el segundo).
Por eso acostumbro a pedir ayuda aquí para que usuarios que conozcan el juego mejor que yo (eso es fácil) me comenten que es lo que debe hacer el programa en los puntos en que tengo dudas.
En fin, paso por alto la tontería y tranquilamente podré empezar con el bloque 05A-B-C, éstos si que se dedican ya a convertir las palabras codificadas como punteros en la fase anterior a órdenes,
por lo que podremos ver como los interpreta y genera las líneas de comandos a ser ejecutados ... promete ser interesante -thumbup

Mejor ésto que tener errores y no encontrarlos -507

saludos
pere

jltursan
Mensajes: 2264
Registrado: 20 Sep 2011 13:59
Agradecido : 113 veces
Agradecimiento recibido: 308 veces

Re: Conversión código para 6809

Mensajepor jltursan » 11 Mar 2015 23:32

Pues sí, ójala todos fueran como este :-). ¡Buen trabajo!

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 11 Mar 2015 23:37

por lo menos tenemos la garantía de que el parser además de validar las palabras contra el diccionario, las guarda correctamente y codifica bien los separadores.
A su vez estos son bien interpretados como comandos (si es que lo son).

Me quedo con la penita de no entender porqué entrando:
SCORE HELP
el programa te da la puntuación arriba y te suelta lo de "YOU ARE DOING FINE" abajo, mientras que si entras
SCORE, HELP
Te da la puntuación, pero abajo te responde con WHAT?
En fin, sus motivos tendrían para hacerlo así. Seguro que mas adelante entendemos porqué ... o no -banghead

Saludos
pere

Avatar de Usuario
pser1
Mensajes: 2243
Registrado: 08 Dic 2012 18:34
Agradecido : 315 veces
Agradecimiento recibido: 354 veces

Re: Conversión código para 6809

Mensajepor pser1 » 18 Mar 2015 20:14

Hola de nuevo,
He finalizado el bloque 05A y he actualizado mis documentos de seguimiento para ver donde se encuentra el proyecto ahora mismo.
Adjunto dos documentos resumen para quien pueda y quiera echarles una ojeada.

Detallo la situación de los bloques en que se subdividió el programa
Se han convertido ya los siguientes bloques de código Z-80 (indicando número de lineas de código contenido )
--------------------------------------------------------------------------------------------------------------------------------
239.594 01 - Start y MainLoop - convertido (557 lineas).txt
44.089 02 - 6DD6 y 6E97 - convertido (795 lineas).txt
41.933 03 - SayWhat y PrintMsg - convertido (703 lineas).txt
21.492 04A - IfB17AZeroClearAndJmpTable75D2 (348 lineas).txt
17.105 04B - Despacho rutinas tabla 75D2 mediante JMP ,X (317 lineas).txt
24.763 04C - Despacho rutinas tabla 8271 mediante JMP ,X (392 lineas).txt
19.945 05A - ExecuteUsrCommandsBilboEvents y DescribeActionOnScreen (301 lineas).txt
======================================================================================
- TOTAL YA CONVERTIDO: 3.413 lineas (39,96%) ocupando 6.034 bytes

Quedan esperando en cola para ser convertidos los siguientes ficheros:
-------------------------------------------------------------------------------------
39.138 05B - AnalyzeUsrCommand (679 lineas).txt
37.086 05C - ExecuteGetB6FB y ExecuteAction (589 lineas).txt
49.340 05D - ProcesBilboEvents (769 lineas).txt
57.606 06 - Llamadas desde OBJETOS: 06A-06B (984 lineas).txt
41.437 07 - Llamadas desde SCRIPTS: 07 (658 lineas).txt
79.436 08 - Llamadas desde ACCIONES: 08A-08B (1448 lineas).txt
=======================================================================================
- TOTAL PENDIENTE DE CONVERTIR: 5.127 lineas (60,04%)

Una simple proyección asumiendo que se pueda mantener el nivel de conversión obtenido hasta ahora,
nos dice que el código ocupará: 15.100 bytes cuando solamente disponemos de 11.406 bytes para todo el programa!
Si ésto se cumple, parece que no va a quedar mas remedio que aceptar que el programa requerirá un Dragon64 para ejecutarse.
Entonces, pasando a modo todo RAM (mapa 1) y copiando el Basic y el DOS en RAM, nos aparecerá un área adicional
de 8k menos 256 bytes para I/O en $E000-$FEFF ($1F00 => 7.936 bytes)
Podéis echar una ojeada al documento con la ocupación de memoria.
Cualquier sugerencia para ahorrarnos espacio y cedérselo al programa será muy bien recibida!

saludos
pere
Adjuntos
91 - Mapa de memoria The Hobbit x 6809 - 2015-03-18.zip
(1.48 KiB) Descargado 46 veces
91 - Avance Proyecto The Hobbit x 6809.zip
(772 Bytes) Descargado 56 veces

Avatar de Usuario
ron
Mensajes: 18162
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1071 veces
Agradecimiento recibido: 1106 veces

Re: Conversión código para 6809

Mensajepor ron » 18 Mar 2015 20:29

Bravo PSER1 !!! ya tengo diversión asegurada.

Lo malo es que hay tanto por probar y por hacer... pero bueno, quien diga que esta afición es aburrida, se lleva un capón.

Ya sabes que desde el principio mantuve que nos íbamos a ver avocados a hacer la versión para Dragon64. No se muy bien quien decidió y se empeñó en empotrarla para que funcionase en un Dragon32, yo lo tenía claro desde el principio y eso que dije que en BBC Micro ( 6502 ) funciona con 32Kb de RAM pero sin gráficos, eso si, para la versión de gráficos ha de usarse desde Floppy.

Tan pronto como pueda probar las novedades te cuento la experiencia, muchas gracias Pere, Genio y Figura.


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