Karoshi MSX Community
05 de Julio de 2021, 07:56:50 pm *
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]
  Imprimir  
Autor Tema: Sobre C en MSX  (Leído 35026 veces)
0 Usuarios y 1 Visitante están viendo este tema.
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #60 : 02 de Mayo de 2008, 07:34:44 am »

Que digo yo .. no te sería fácil hacer un programita que pille el código binario generado por un compilador asm y generar automáticamente los byte array del BDS-C?
Igual así irías más deprisa y podrías automatizar el proceso .. también de cara a mejorar o compartir código ASM visualmente más sencillo que un byte array.
En línea

MSX4EVER2GETHER
www.nerlaska.com
k0ga
Karoshi Fan
**
Mensajes: 85


Email
« Respuesta #61 : 02 de Mayo de 2008, 08:59:15 am »


Despues de la desilusion del Hitech v3.09 para MSX (nada que ver con las modernidades que estaís comentando) y la posibilidad de incluir código in-line, he vuelto a los origenes y estoy usando de nuevo el BDS-C.


Cuales son los problemas que has tenido exactemante?, yo en su dia lo use bastante, y quitando el problema del caracter EOF que meten algunos editores al final del fichero y que no le hacen nada de gracia al compilador, no tuve mas problemas.
En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #62 : 02 de Mayo de 2008, 04:37:10 pm »

Que digo yo .. no te sería fácil hacer un programita que pille el código binario generado por un compilador asm y generar automáticamente los byte array del BDS-C?
Igual así irías más deprisa y podrías automatizar el proceso .. también de cara a mejorar o compartir código ASM visualmente más sencillo que un byte array.
Si, lo que pasa que para hacer las primeras pruebas me ha sido más rapido copiar directametne byte a byte.

De todas formas, creo que voy a montar la libreria directamente con el AsMSX, ya que es tan solo un archivo binario puro, organizado en 512 bytes de directorio de funciones, 5 bytes de intercambio informacion (linker-compiler) y el resto de funciones, que a su vez tambien estan organizadas (en fin, todo viene detalladito en su manual de usuario, por lo que es relativamente fácil).

Cuales son los problemas que has tenido exactemante?, yo en su dia lo use bastante, y quitando el problema del caracter EOF que meten algunos editores al final del fichero y que no le hacen nada de gracia al compilador, no tuve mas problemas.

Los problemas los comenté varios post atrás. Basicamente es la imposibilidad de poder usar las directivas #asm y #endasm, así como la funcion asm(), con el msx-dos2 ya que con el msx-dos1 va perfecto.


En línea
k0ga
Karoshi Fan
**
Mensajes: 85


Email
« Respuesta #63 : 02 de Mayo de 2008, 06:09:13 pm »


Si, lo que pasa que para hacer las primeras pruebas me ha sido más rapido copiar directametne byte a byte.

De todas formas, creo que voy a montar la libreria directamente con el AsMSX, ya que es tan solo un archivo binario puro, organizado en 512 bytes de directorio de funciones, 5 bytes de intercambio informacion (linker-compiler) y el resto de funciones, que a su vez tambien estan organizadas (en fin, todo viene detalladito en su manual de usuario, por lo que es relativamente fácil).


¿Y para eso no seria mas facil usar el propio ensablador del hitech y linkar los objetos?


Los problemas los comenté varios post atrás. Basicamente es la imposibilidad de poder usar las directivas #asm y #endasm, así como la funcion asm(), con el msx-dos2 ya que con el msx-dos1 va perfecto.


Probare con las versiones que tengo y con los parches que hay, y ya te digo algo.
En línea
k0ga
Karoshi Fan
**
Mensajes: 85


Email
« Respuesta #64 : 06 de Mayo de 2008, 10:46:03 am »



Probare con las versiones que tengo y con los parches que hay, y ya te digo algo.



Pues eso, que ya lo he probado y acabo de enviartelo por correo. Ya me dices algo despues de probarlo.
En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #65 : 06 de Mayo de 2008, 07:53:45 pm »

Pues eso, que ya lo he probado y acabo de enviartelo por correo. Ya me dices algo despues de probarlo.

Pues no me ha llegado. En mi perfil está mi correo, si no mandame un mensaje de estos privados que hay en el foro. Me gustaría seguir insistiendo con el Hitech-C.

Si me llego uno de JL (Gracias, por cierto) pero con el Hitech tengo el mismo problema, y con los demas aún no los he probado.

Por lo pronto, y para el que le interese, he cambiado de parecer. Ya no voy a crear la libreria. ¿por qué?

El uso de la librería tiene un inconveniente gordo a la hora de crear funciones eficaces. Todos los parametros de la función se pasan a través de la pila, y en función del tipo de dato que sea hay que recolocar el registro SP de tal manera que los pueda leer adecuadamente. Me refiero a tipos char(1 byte) o int(2 byte). Un rollo.

Por el contrario, la idea que expuse en mi primer post de este hilo, sigue siendo la idea que más me atrae. Porque usando las funciones call() o calla() me permite llamar directamente a rutinas en C.M. y pasar los parametros directamente a través de los registros del Z80. Por lo que la rutina toma el control directamente y sin perdidas de tiempo. El inconveniente que tiene es que hay que cargar las rutinas cada vez que se ejecuta el programa.

Las opciones que me estoy planteando son las siguientes:
- Crear un archivo binario puro con todas las rutinas en C.M., cargar dicho fichero en memoria (reservada previamente por el compilador BDS) y llamarlas mediantes las funciones call.
- O crear un archivo de cabezera .h donde incluya todas las funciones mediante arrays.

Ni que decir tiene que si consiguo hacer funcionar el Hitech crearía las funciones directamente en ASM.
En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #66 : 06 de Mayo de 2008, 08:26:31 pm »

Citar
Pues no me ha llegado.

Me rectifico, si me ha llegado. Lo acabo de recibir ahora mismo.

Gracias, lo probaré y a ver que tal.
En línea
k0ga
Karoshi Fan
**
Mensajes: 85


Email
« Respuesta #67 : 07 de Mayo de 2008, 07:58:13 am »


Las opciones que me estoy planteando son las siguientes:
- Crear un archivo binario puro con todas las rutinas en C.M., cargar dicho fichero en memoria (reservada previamente por el compilador BDS) y llamarlas mediantes las funciones call.
- O crear un archivo de cabezera .h donde incluya todas las funciones mediante arrays.

Ni que decir tiene que si consiguo hacer funcionar el Hitech crearía las funciones directamente en ASM.

Planteate esta otra:

- Escribir en un fichero una funcion del tipo:

char myfunction()
{
}


y decirle que te genere el asm con el switch -S. Asi ya tienes todo lo necesario para escribir directamente tu funcion.
Ventajas: el resto del codigo sigue siendo portable,
               No dependes de directivas tipo asm y demas.
               

Este es el metodo que yo usaba en 8086, ya que definir los segmententos y demas era un coñazo enorme, asi que le dejaba al compilador que hiciera el trabajo por mi.



En línea
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #68 : 07 de Mayo de 2008, 06:42:47 pm »

Me apunto la sugerencia. De momento le estoy echando un vistazo a toda la documentación, sin duda mucho más completa de la que yo tenia (basicamente el "z80doc").
En línea
Páginas: 1 ... 3 4 [5]
  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!