Karoshi MSX Community
06 de Julio de 2021, 12:09:01 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 ... 3 4 [5] 6 7 ... 9
  Imprimir  
Autor Tema: asMSX: nueva versión  (Leído 71950 veces)
0 Usuarios y 1 Visitante están viendo este tema.
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #60 : 29 de Enero de 2007, 02:02:16 pm »

Toda la razón, Mr. Spock. Son problemas endémicos del asMSX que espero que desaparezcan con el futuro rediseño de la aplicación. La situación actual es bastante chapucera, aunque la herramienta sea más o menos funcional.

Publicaré una última versión 0.12xxxx con algunas mejoras previstas (y necesarias para mis proyectos inminentes), pero emprenderé el rediseño completo de la aplicación. Y para evitar problemas de compatibilidad, el desarrollo se hará 100% en Linux. La práctica ha demostrado que Linux -> Windows, Linux -> Mac es factible. Sin embargo, Windows -> otros no es una opción viable. Windows se lo come todo, pero en otros sistemas más puristas, hay cosecha de segmentations Sad

En breve, última versión beta. Después, iremos a por una versión definitiva y mejor estructurada, portable, etc. Mejor me dejo de airear entresijos y me vuelvo al currelo, que no tengo poco.

Gracias por los bug-reports.
En línea
kabish
Karoshi Maniac
****
Mensajes: 470


caspaflims@hotmail.com
« Respuesta #61 : 11 de Marzo de 2007, 05:36:55 pm »

Un comentario sobre el asmsx..

Con la ultima version q publicaste, tengo un pequeño problema a la hora de definir datos con "db". Si por ejemplo pongo una cadena de este tipo ..

"db 128,128,032,032,032"

Pues me ensambla bien, pero a la hora de ejecutar el codigo pues no funciona como deberia.
Pero si pongo esa misma linea de esta forma

"db 128,128,32,32"

pues funciona de perlas, o incluso si pongo

"db 128,128, 32, 32"

pues tambien va bien.

Espero haberte ayudado en algo.

Nota: Se q hay una directiva para postear codigo, pero no la recuerdo y la ayuda me da un 404. Lo siento.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #62 : 11 de Marzo de 2007, 11:17:23 pm »

Lo creas o no, se trata de una funcionalidad definida:

los números que empiezan por 0 son octales, es decir, números en base 8.

asMSX soporta el formato numérico del C, que interpreta los números que empiezan por 0 como octales. Y también puedes usar hexadecimales como 0x.

Por lo tanto, el 032 que tú indicas, tiene un valor decimal equivalente a 3x8+2x1=26.

Como suele decirse en otros páramos, RTFM.  Wink
En línea
WYZ
Visitante
« Respuesta #63 : 13 de Marzo de 2007, 09:12:18 pm »

Robsy, yo aun tengo problemas con .PHASE. La mayoría de las veces los saltos relativos a etiquetas que estan incluidas entre fase-desfase dan el error "direccion no alcanzable" y las tengo que cambiarpor JP's. A ver que estoy haciendo mal...  por lo demás es un gustazo usarlo cuando cuando el codigo es auto-modificado y debes usar RAM.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #64 : 13 de Marzo de 2007, 11:43:58 pm »

Pues gracias por decírmelo, WYZ, porque no era consciente de este problema. Al no utilizar yo para nada la instrucción PHASE, es muy posible que haya algún bug. Reviso el código y os digo algo aquí mismo Wink
En línea
jjfranco
Visitante
« Respuesta #65 : 14 de Marzo de 2007, 11:42:31 am »

Me podeis explicar para que sirve la instrucción PHASE/DESPHASE Huh Y como se usa.

Gracias.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #66 : 14 de Marzo de 2007, 12:48:15 pm »

Pues básicamente te sirve para ensamblar en una dirección código que después quieras ejecutar en otra. Por ejemplo, suponte que hacer una ROM pero tienes código automodificable que necesitas situar en RAM para que la modificación sea posible.

Te pongo un ejemplo muy tonto, de código dentro de la ROM que se copia a RAM y se ejecuta allí (no es automodificable, es un ejemplo trivial)

Código:
.bios
.page 1
.rom
.start INIT

DESTINO_RUTINA equ 8800h

INIT:
; Copia el código de la rutina de ROM a RAM
ld hl,CODIGO_RUTINA
ld de,DESTINO_RUTINA
ld bc,100h
ldir

; Llama a la rutina copiada en RAM
call DESTINO_RUTINA

; Final del programa
FINAL:
jr FINAL

; Rutina a ser copiada en RAM
; (se ensamblará en la ROM, pero con todas las direcciones ya preparadas para funcionar en RAM, a partir de 8800h)
CODIGO_RUTINA:

.phase DESTINO_RUTINA

... (aquí va el código de la rutina)

.dephase

Espero que sea suficientemente claro. Sigo sin detectar el problema del comando PHASE/DEPHASE y los saltos relativos, WYZ. Sin embargo, he comprobado que si utilizas etiquetas globales (sin @@) te ensamblará correctamente. Tengo que ponerme con un poco más de atención y menos sueño a revisar el código.

¿Para qué utilizo yo PHASE/DEPHASE? Pues exclusivamente para copiar la rutina de interrupción a la dirección adecuada. O para copiar código de la ROM a la RAM para su ejecución desde allí.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #67 : 14 de Marzo de 2007, 05:30:07 pm »

Ok. Ya he detectado el error y he podido corregirlo. Para variar, se trataba de una tontería muy grande. Menos mal que pude detectar que funcionaba bien con variables globales y fallaba con las locales, y con este diagnóstico ha sido fácil dar con el origen de los problemas.  Tongue

Subiré la versión bug-fixed en breve.  Wink

Gracias por el chivatazo, WYZ. Si tenéis algún otro problema, no dejéis de comunicármelo, please.

En línea
jjfranco
Visitante
« Respuesta #68 : 14 de Marzo de 2007, 09:34:50 pm »

Robsy, Gracias por la aclaración.

Solo dos pregunta más y aparco el tema, ¿ que utilidad tiene esto ? ¿para crear megarom con mucho codigo ejecutable, por ejemplo ?
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #69 : 14 de Marzo de 2007, 09:41:51 pm »

Pues las utilidades son diversas, pero por ponerte una muy relacionada con los video-juegos, piensa en el código del replayer de PT3 que adaptó para MSX Dioniso. Utiliza código automodificable, por lo que debe necesariamente ejecutarse desde la RAM. Sin embargo, si has creado una ROM, es memoria no modificable. Solución: usar PHASE/DEPHASE para incluirlo en la ROM pero ensamblándose como si estuviera en una posición en RAM. Entonces, desde la ROM copias el código a RAM y ejecutas allí. Todo perfecto, todo sencillo.

La utilidad que apuntas, de código ejecutable en RAM para un megaROM, también es un buen ejemplo. En cualquier caso, yo simplemente me limité a incluir una función que tienen otros muchos ensambladores y que algún usuario de asMSX me había pedido. Al final, como somos 4 o 5 los que usamos el asMSX, es relativamente fácil incluir lo que me vayan pidiendo Cheesy
En línea
kabish
Karoshi Maniac
****
Mensajes: 470


caspaflims@hotmail.com
« Respuesta #70 : 15 de Marzo de 2007, 06:52:03 am »

Lo creas o no, se trata de una funcionalidad definida:

los números que empiezan por 0 son octales, es decir, números en base 8.

asMSX soporta el formato numérico del C, que interpreta los números que empiezan por 0 como octales. Y también puedes usar hexadecimales como 0x.

Por lo tanto, el 032 que tú indicas, tiene un valor decimal equivalente a 3x8+2x1=26.

Como suele decirse en otros páramos, RTFM.  Wink

Pues gracias por la respuesta, ahora lo veo mas claro.
En línea
WYZ
Visitante
« Respuesta #71 : 18 de Marzo de 2007, 11:15:18 pm »

Ok. Ya he detectado el error y he podido corregirlo. Para variar, se trataba de una tontería muy grande. Menos mal que pude detectar que funcionaba bien con variables globales y fallaba con las locales, y con este diagnóstico ha sido fácil dar con el origen de los problemas.  Tongue

Subiré la versión bug-fixed en breve.  Wink

Gracias por el chivatazo, WYZ. Si tenéis algún otro problema, no dejéis de comunicármelo, please.



Gracias a ti por depurarlo Grin. Seguro que no soy el unico que está a la caza y captura de Bugs de AsMSX, aunque ultimamente deben estar muy escondidos, no se ven muy a menudo.

...Y seguro que somos mas de lo que te inmaginas los usuarios asiduos.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #72 : 19 de Marzo de 2007, 12:38:28 am »

Bueno, os dejo la nueva versión aquí: asMSX 0.12g

Esta versión soluciona el problema detectado por WYZ [gracias por el aviso]. Ahora las etiquetas locales funcionan bien dentro del código PHASEado. Y, además, creo que los fallos de etiquetas no accesibles mejorarán sensiblemente.

Como bonus, he añadido algunos detallitos más:

- IFDEF símbolo: mejora el ensamblado condicional con esta instrucción, que ensambla el código subsiguiente si y solo si el símbolo/etiqueta indicado existen en el código.
- CAS ["nombre"]: asMSX generará directamente un fichero CAS listo para ser cargado directamente en vuestro emulador favorito. En cualquier caso, sólo soporta ficheros tipo BASIC (BLOADables), ROM en página 2 (8000h) y código Z80 sin cabecera.
- WAV ["nombre"]: idéntica a la instrucción anterior, pero genera un fichero WAV que puede ser cargado en cualquier MSX con puerto de cassette.

De nuevo, si encontráis cualquier pega, bug o tenéis alguna sugerencia de mejora, ya sabéis dónde encontrarme.

Y sigo con ganas de saber qué juegos han sido programados con asMSX, más que nada para incluir una referencia en la documentación de la próxima versión...
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #73 : 19 de Marzo de 2007, 01:20:14 am »

Bueno, creo que éste es el listado actualizado de juegos que se han programado con el asMSX, pero no estoy seguro de que la lista sea completa, ni muy fiable. No se han incluido los juegos de menos de 8 KB, aunque todos sabemos que tienen su mérito! Creo que no me he dejado a nadie. Y creo que no he metido a presión a nadie (Juanma, Crappysoft sí usa asMSX, ¿verdad?). El orden es bastante aleatorio, así que si alguien quiere enriquecer la lista, que lo haga. Ya sabéis: juegos publicados, tamaño mínimo de 8 KB, programados en asMSX. Wink

(Grupo MSXdev'03)

1.- TEKI PAKI [16 KB]
2.- GURU LOGIC [32 KB]

(Grupo MSXdev'04)

3.- SNAIL MAZE [8 KB]
4.- STRATOS [8 KB]
5.- SOUKOBAN POCKET [8 KB]
6.- DUCK HUNT [8 KB]
7.- PICTURE PUZZLE [8 KB]
8.- FACTORY INFECTION [8 KB]

(Grupo MSXdev'05)

9.- SAIMAZOOM [32 KB]
10.- NAMAKE'S BRIDGEDROME [16 KB]
11.- GRIEL'S QUEST FOR THE SANGRAAL [32 KB] [+EXTENDED EDITION]
12. ZAMBEZE [32 KB]
13. CRAZY BUGGY [16 KB]

(Grupo MSXdev'06)

14. MALAIKA – PREHISTORIC QUEST [32 KB]
15. DAEDALIAN OPUS [32 KB]
16. WORD INVADERS [8 KB]
17. LOS JARDINES DE ZEE WANG ZU [16 KB]

(Grupo libre)

18.- CLASSIC PONG [8 KB] - opensource
19.- CLASSIC MINE SWEEPER [8 KB] - opensource
20. PHANTOMAS SAGA: INFINITY [32 KB]

Por supuesto, si alguien está interesado en publicar el código fuente de su juego, será bienvenido a la distribución de asMSX, que ahora mismo está un poco anticuada. Tengo que reescribir la documentación, mejorar las herramientas que acompañan al ensamblador, incluir más ejemplos, etc. Tongue
En línea
SapphiRe
Visitante
« Respuesta #74 : 19 de Marzo de 2007, 12:45:51 pm »

Por supuesto, si alguien está interesado en publicar el código fuente de su juego, será bienvenido a la distribución de asMSX, que ahora mismo está un poco anticuada. Tengo que reescribir la documentación, mejorar las herramientas que acompañan al ensamblador, incluir más ejemplos, etc. Tongue

Pues mira, sí. De hecho tengo que volver al código del PONG512 porque el otro día detecté un pequeño bug que es fácil de solucionar y ya que hago una nueva versión pues te lo paso y lo añades a la distribución.

Un saludo
--
Sph.
En línea
Páginas: 1 ... 3 4 [5] 6 7 ... 9
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!