Karoshi MSX Community
06 de Julio de 2021, 12:09:34 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 2 3 [4] 5 6 ... 9
  Imprimir  
Autor Tema: asMSX: nueva versión  (Leído 71950 veces)
0 Usuarios y 1 Visitante están viendo este tema.
paco
Karoshi Newbie
*
Mensajes: 12


« Respuesta #45 : 22 de Noviembre de 2006, 04:12:08 pm »

Contesto rápidamente:

  • Versión para Linux / Mac / etc - estuve haciendo pruebas para compilar asMSX en Linux, y fracasé. Es decir, no fracasé: el programa se compilaba perfectamente. Sin embargo, el ensamblador petaba por todos los lados, debido a que hay por ahí algún puntero inicializado de cualquier manera que no he podido localizar. Windows se lo traga todo, pero Linux es más precavido y lanza una excepción. Tengo que arreglarlo, palabrita. En cuanto a la versión para Mac (OS/X en adelante), me van a echar un cable (espero).

Yo estoy extremadamente interesado en su versión para Linux.
Si te apetece podría echarlo un vistazo

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


« Respuesta #46 : 22 de Noviembre de 2006, 11:11:10 pm »

El problema es que ahora mismo no tengo ningún PC cerca con Linux instalado. Puedo tratar de hacer alguna prueba en una máquina virtual, pero no garantizo que el resultado sea el adecuado Sad

Y lo que es peor, tampoco tengo tiempo ahora para hacer pruebas de este tipo. La fecha límite de entrega de MSXdev'06 se acerca peligrosamente...  Tongue
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #47 : 23 de Noviembre de 2006, 08:49:09 am »

Pues me estoy planteando hacer una versión del asMSX para Palm OS para poder MSXear en cualquier lugar  Cheesy

Eso sí, ponerte a tirar código con el graffitti puede ser una auténtica tortura.  Tongue
En línea
pentacour
Karoshi Lover
***
Mensajes: 177


mgalious@hotmail.com
WWW Email
« Respuesta #48 : 23 de Noviembre de 2006, 09:42:06 am »

Pues me estoy planteando hacer una versión del asMSX para Palm OS para poder MSXear en cualquier lugar  Cheesy
Eso que has dicho es muy muy friki.

Me gusta!  Grin
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #49 : 23 de Noviembre de 2006, 10:41:00 am »

¿La liberación del código fuente es una posibilidad? Roll Eyes
En línea

Doom dee doom dee doom
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #50 : 22 de Enero de 2007, 11:23:45 am »

Ya he detectado porqué me casca el asMSX cuando lo compilo para Linux. La instrucción que me da problemas es STRTOK. En Windows funciona bien (creo), pero en Linux me produce por sistema un segmentation fault. Viendo la documentación de la instrucción, indica lo siguiente:

BUGS: Never use this instruction.

Cojonudo. Alguna idea de cómo solucionarlo? Puedo reprogramarlo a pelo, pero no me apetece mucho, la verdad. Sabéis si hay algún switch del GCC que me permita que esta instrucción funcione? O alguna alternativa? La uso para "limpiar" strings de los caracteres que no me interesan.
En línea
burguera
Visitante
« Respuesta #51 : 22 de Enero de 2007, 11:44:17 am »

Citar
BUGS: Never use this instruction.

Joer, pues menudo "BUG"

Ni idea de si hay algún switch o similar. De hecho, yo he usado en más de una ocasión el strtok con gcc y no me ha dado ningún problema (creo). Seguramente buscando por internet encuentres algún listado alternativo al strtok.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #52 : 22 de Enero de 2007, 11:54:42 am »

Toni: los programas en los que has utilizado STRTOK eran para Windows o para Linux? En Windows funciona perfectamente (más o menos) mientras que en Linux la cosa no tira. En cualquier caso, voy a probar si me aguanta bien con la opción -fwriteable-strings.
En línea
burguera
Visitante
« Respuesta #53 : 22 de Enero de 2007, 12:08:44 pm »

Para ambos, Windows y Linux. Aunque, claro, una cosa es el uso sencillote que pude hacer yo para parsear unos ficheros de configuración y otra cosa será el uso que debe hacer el asMSX. La verdad es que se me hace extraño que no funcione bajo Linux, y que no haya ninguna alternativa... al fin y al cabo, es una función muy necesaria y tampoco hace nada tan enrevesado. Lamento no poder ayudarte más, pero seguro que en internet hay más de una solución a esto, seguro que a más gente le ha pasado lo mismo.
En línea
burguera
Visitante
« Respuesta #54 : 22 de Enero de 2007, 12:10:26 pm »

Supongo que ya lo sabías, pero ¿has tenido en cuenta esto?

Citar
The strtok() function uses a static buffer while parsing, so it's not thread safe. Use strtok_r() if this matters to you.

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


« Respuesta #55 : 22 de Enero de 2007, 12:42:46 pm »

He usado ambas y cascan las dos.

Con cosas tan sencillas como:

char *puntero,*texto="Hola, chiquitin";

main()
{
 puntero=strtok(texto," ");
}


Pues esto me genera un segmentation como una catedral en Linux.  Cry
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #56 : 22 de Enero de 2007, 12:47:52 pm »

Puedo confirmar que "strtok_r" funciona en Linux, este podría ser un ejemplo de parseo básico:

Código:

char *token, *cadenatmp, *loquequeda, *pStr;

if ( (cadenatmp = strdup(cadena)) == NULL) return ERROR;

pStr = cadenatmp;
for (;;) {
token = strtok_r(pStr," ",&loquequeda);
if (!token) break;
pStr = loquequeda;
printf("Token obtenido : [%s]", token);
} // for

free(cadenatmp);

Si en cadena le pasas la cadena que quieres tokenizar, en el bucle se irán extrayendo las palabras (separadas por espacios) que aparecen en dicha cadena. Se saca un duplicado de la cadena original por si es necesario que permanezca intacta; esto evidentemente no tiene porque ser así, dependerá del uso que requiramos.
En línea

Doom dee doom dee doom
burguera
Visitante
« Respuesta #57 : 22 de Enero de 2007, 01:08:32 pm »

Robsy, así de pronto se me ocurre que la inicialización que haces del string no finaliza con un cero... no recuerdo si el compilador lo añade en estos casos, pero creo que no. Prueba a poner un \0 al final. Aunque tampoco creo que sea eso...
En línea
pentacour
Karoshi Lover
***
Mensajes: 177


mgalious@hotmail.com
WWW Email
« Respuesta #58 : 22 de Enero de 2007, 01:55:57 pm »

He usado ambas y cascan las dos.

Con cosas tan sencillas como:

char *puntero,*texto="Hola, chiquitin";

main()
{
 puntero=strtok(texto," ");
}


Pues esto me genera un segmentation como una catedral en Linux.  Cry

Peta porque el "Hola, chiquitin" es un const char* (hablando con propiedad, es un literal constante que no debería ser modificado) y strtok intenta escribir en él. Pero si haces lo que te comenta jltursan con el strdup por ejemplo, no debería petar...

Si no, pídelo y se te hace un Strtok a medida y ya está  Cool
« Última modificación: 22 de Enero de 2007, 02:23:41 pm por pentacour » En línea
burguera
Visitante
« Respuesta #59 : 26 de Enero de 2007, 12:04:15 pm »

Robsy, por si te sirve de ayuda, encontré dos bugs en el asMSX (uso la versión con soporte megarom, aunque no hago nada con megaroms).

El primer bug es una tontería... tenía que meter datos a pelo con "db", y eso que tenía una línea donde el primer dato era, casualmente, dbh. Me daba un syntax error. Poniendo otro valor no da error.

El segundo bug es más molesto, aunque sólo me ha pasado una vez. Tengo dos rutinas para la detección de flancos en las teclas "M" y "F1". Las dos rutinas están una detrás de otra y ambas tienen un salto, en un momento de su ejecución, a una etiqueta local llamada @@NO. Ambas rutinas tienen su @@NO, con lo que cada una debería saltar a su propio @@NO. Sin embargo, la rutina del testeo de la M saltaba al @@NO del testeo de F1, lo cual, evidentemente producía errores durante la ejecución. Lo curioso es que llevo meses con estas rutinas hechas y siempre habían ido bien, pero ayer, modificando otras partes del código, me sucedió esto y tuve que cambiar el nombre de la etiqueta local. Estuve mirando el fichero SYM y vi que uno de los @@NO aparecía, simplemente, como "O".

Por último... ¿es posible que haya palabras que no puedan usarse como identificadores, aún no siendo comandos del ensamblador ni instrucciones del Z80?
En línea
Páginas: 1 2 3 [4] 5 6 ... 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!