ccz80

Programando el Amstrad en BASIC, C, etc.
Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: ccz80

Mensajepor nacho » Vie 07 Ago , 2009 12:51 am

Yo la tenía en la cabeza, pero para funciones de varios parámetros, pero no encontraba una forma adecuada de hacerlo. Para un parámetro creo que ya he conseguido llevarlo a cabo. La hoy publicada versión 2.0.7 ya la tiene implementada.
Me va a tocar reescribir algo que yo me sé... ;-)

Si te parece, mándame un ejemplo de uso de funciones, para que pueda incluirlo.

Avatar de Usuario
dinoneno
Megaforero
Megaforero
Mensajes: 298
Registrado: Mié 13 Sep , 2006 7:32 am
Ubicación: Nambroca

Re: ccz80

Mensajepor dinoneno » Vie 07 Ago , 2009 8:00 am

Me va a tocar reescribir algo que yo me sé... ;-)

Si te parece, mándame un ejemplo de uso de funciones, para que pueda incluirlo.
No es un cambio demasiado importante, sólo un detalle más para aumentar la velocidad y ahorrar algunos bytes. Se pueden ver ejemplos de funciones register en las librerías standard y cpc464/cpc6128. Por ejemplo, una función que devuelva 0 si el parámetro es 0 y devuelva 1 en cualquier otro caso:

Código: Seleccionar todo

function byte Valor01(byte)
{
"ld ix,2",
"add ix,sp",
"ld a,(ix+1) ; A = valor del parámetro",
"or a ; Comparar si es 0",
"ret z ; Sale de función con valor de retorno en A = 0 si el parámetro es 0",
"ld a,1",
"ret ; Sale de función con valor de retorno en A = 1 si el parámetro no es 0"
}
Con la claúsula register nos ahorramos tomar de la pila el valor del parámetro, además de que en la llamada que se genera a esta función no se introduce el valor en la pila ni después se extrae de ella:

Código: Seleccionar todo

function register byte Valor01(byte)
{
"; En A ya se encuentra el valor del parámetro (es en A por ser el parámetro de tipo byte, si fuera de tipo word vendría en HL)",
"; Es el mismo concepto de recepción de parámetros que en las funciones inline",
"or a ; Comparar si es 0",
"ret z ; Sale de función con valor de retorno en A = 0 si el parámetro es 0",
"ld a,1",
"ret ; Sale de función con valor de retorno en A = 1 si el parámetro no es 0"
}

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: ccz80

Mensajepor nacho » Vie 07 Ago , 2009 10:00 pm

Ah, vaya... pero siguen siendo en ensamblador... :-(

Lástima. Creía que eran funciones totalmente en C, aunque con limitaciones en los parámetros.

Mi gozo en un pozo. :-(

Tenía un jueguecillo en mente... bueno, lo haré con subrutinas, aunque el fuente sea menos legible...

Avatar de Usuario
dinoneno
Megaforero
Megaforero
Mensajes: 298
Registrado: Mié 13 Sep , 2006 7:32 am
Ubicación: Nambroca

Re: ccz80

Mensajepor dinoneno » Vie 07 Ago , 2009 10:09 pm

Ah, vaya... pero siguen siendo en ensamblador... :-(

Lástima. Creía que eran funciones totalmente en C, aunque con limitaciones en los parámetros.

Mi gozo en un pozo. :-(

Tenía un jueguecillo en mente... bueno, lo haré con subrutinas, aunque el fuente sea menos legible...
Hay un modo, relativamente fácil, de convertir las subrutinas en funciones. No es muy ortodoxo pero funciona. En el foro del ccz80 está: http://ccz80.foroactivo.com/ccz80-f1/cr ... de-t21.htm

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: ccz80

Mensajepor Artaburu » Mié 02 Sep , 2009 8:32 am

Adjunto una versión nueva de la librería cpcrslib para el ccz80, lo que ahora no recuerdo son los cambios que tiene pero seguro que hay cosas nuevas. Nacho, con esta el ejemplo que te pase debería funcionar ferpectamente ;)
Adjuntos
cpcrslib.rar
(15.72 KiB) Descargado 158 veces
Salu2,
Arta

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: ccz80

Mensajepor nacho » Sab 05 Sep , 2009 4:07 pm

Recibido, Arta. Intentaré probarlo esta misma noche.

Avatar de Usuario
dinoneno
Megaforero
Megaforero
Mensajes: 298
Registrado: Mié 13 Sep , 2006 7:32 am
Ubicación: Nambroca

Re: ccz80

Mensajepor dinoneno » Sab 12 Dic , 2009 2:04 pm

Un buen amigo de ccz80, Poppichicken, ha hecho una excelente conversión del juego publicado en Amstrad Computer User:

http://ccz80.foroactivo.com/ccz80-f1/3d ... pc-t28.htm

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: ccz80

Mensajepor Artaburu » Mar 15 Dic , 2009 5:06 pm

¡Ostras! voy a compilarlo y probarlo a ver qué tal :D
Salu2,
Arta

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: ccz80

Mensajepor Artaburu » Mar 15 Dic , 2009 5:21 pm

Pues sí, se mueve muy, pero que muy, fluido. Echando vistazo al código (y leyendo el post original del juego) veo que ha hecho uso extensivo del código máquina y se ha currado rutinas para dibujar líneas. La verdad es que parece estupendo usar el ccz80 como esqueleto para un programa en ensamblador, por lo menos este ha salido muy bien. Enhorabuenas.
Salu2,
Arta

Jean La Montarde
Me voy lanzando
Me voy lanzando
Mensajes: 53
Registrado: Mié 11 Mar , 2009 7:16 pm

Re: ccz80

Mensajepor Jean La Montarde » Lun 08 Mar , 2010 3:35 pm

buenas

hace tiempo que no pasaba por el foro y entre clase y clase de plomizo derecho me he encontrado este hilo, para un "iletrado" del c y de ensamblador este ccz80 queda algo lejos ¿verdad? mis conocimientos no van mas alla de un hello world en c, algun jueguecico en fenix/bennu,alguna aplicacion en basic sencillita y de solo texto y alguna cosilla para megadrive ultrasencilla con el basiegaxorz

Avatar de Usuario
dinoneno
Megaforero
Megaforero
Mensajes: 298
Registrado: Mié 13 Sep , 2006 7:32 am
Ubicación: Nambroca

Re: ccz80

Mensajepor dinoneno » Mar 09 Mar , 2010 9:40 pm

buenas

hace tiempo que no pasaba por el foro y entre clase y clase de plomizo derecho me he encontrado este hilo, para un "iletrado" del c y de ensamblador este ccz80 queda algo lejos ¿verdad? mis conocimientos no van mas alla de un hello world en c, algun jueguecico en fenix/bennu,alguna aplicacion en basic sencillita y de solo texto y alguna cosilla para megadrive ultrasencilla con el basiegaxorz
Bueno, yo creo que con lo que dices que conoces de programación puedes empezar con ccz80, y hasta dónde llegues, eso ya se verá. Tú empieza y diviértete programando y ya irás consiguiendo resultados. Leete el manual y como siempre aquí me ofrezco para resolver dudas, en este foro o en el propio del ccz80. Ánimo =D> .

Avatar de Usuario
dinoneno
Megaforero
Megaforero
Mensajes: 298
Registrado: Mié 13 Sep , 2006 7:32 am
Ubicación: Nambroca

Re: ccz80

Mensajepor dinoneno » Mar 13 Abr , 2010 9:07 pm

ccz80 3.0.0

La principal novedad es que permite definir macros para utilizar en cualquier expresión. Esto permite por ejemplo usar tablas mediante índices, estructuras, tablas de estructuras, definir funciones cuyo contenido sea una fórmula y otras utilizaciones.

Ejemplo para usar tablas:

include "spectrum.ccz80"; // o bien "cpc464.ccz80" o "msx.ccz80"
define longitud = 10;
array byte datos[longitud];
define tabla(i) = (*(datos + i));
byte n;
for (n = 0; n < longitud; ++n) tabla(n) = n + 1;
for (n = 0; n < longitud; ++n) { printb(tabla(n)); printc(' '); }
pause(0); // Para CPC o MSX eliminar esta línea
return;

Ejemplo de función fórmula:

include "spectrum.ccz80"; // o bien "cpc464.ccz80" o "msx.ccz80"
define media(a, b, c) = ((a + b + c) / 3);
printw(media(1, 7, 10));
pause(0); // Para CPC o MSX eliminar esta línea
return;

http://www.telefonica.net/web2/emiliogu ... z80sp.html

Avatar de Usuario
nacho
Keeper of The Forum
Keeper of The Forum
Mensajes: 572
Registrado: Jue 06 Dic , 2007 2:58 pm

Re: ccz80

Mensajepor nacho » Vie 16 Abr , 2010 11:07 am

Interesante. Descargando...

Se han acabado las vacaciones y no sé cuando tendré tiempo de experimentar, pero se queda guardado ya. ;-)

Por cierto, sigo echando en falta nombres de ficheros más "almacenables". Me explico, en vez "Amstrad CPC Sp", que tiene sentido dentro de tu página, pero no en mi (nuestro) disco duro, quizá fuera más razonable un nombre de fichero como "ccz80 3_0_0 Amstrad CPC Sp". No es un problema, lo puedo renombrar cuando lo descargo, pero si no lo hago en el momento, me encuentro dos días después con un fichero que no sé lo que es. Seguro que alguna vez he borrado alguno que no debía o he estado trabajando con una versión más antigua por algún despiste de esos... ;-)

Avatar de Usuario
dinoneno
Megaforero
Megaforero
Mensajes: 298
Registrado: Mié 13 Sep , 2006 7:32 am
Ubicación: Nambroca

Re: ccz80

Mensajepor dinoneno » Jue 06 Ene , 2011 8:17 am

Regalo de Reyes: nuevo IDE para ccz80.

http://www.ccz80.tk

Avatar de Usuario
litos.net
Loading, Please Wait...
Loading, Please Wait...
Mensajes: 5959
Registrado: Mié 05 Oct , 2005 7:57 pm
Ubicación: Madrid
Contactar:

Re: ccz80

Mensajepor litos.net » Vie 07 Ene , 2011 8:52 am

Joer... este año los reyes están viniendo bien, ¿eh?
¡Gracias!
Si es CPC es en Color


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic