Os presento a Chi - un compilador de Pascal para CPC

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: Os presento a Chi - un compilador de Pascal para CPC

Mensajepor nacho » Vie 22 Ago , 2008 3:48 pm

Estoy con la parte de manejo de otros tipos de datos (de momento, enteros de 2 bytes) y necesito ayuda de los expertos en ensamblador...

No recordaba ese matiz de que CP sólo trabaja sobre el registro A, y no existe comparación "simple" para registros de 16 bits. Por tanto... ¿qué se os ocurre para comparaciones como "IF x < 640" si x es INTEGER (16 bits)? ¿Uso una resta "de verdad" entre dos registros de 16 bits, como HL y DE (por ejemplo)? De hecho, me suena que ni siquiera existía SUB HL, sino que había que hacer resta con acarreo... Esa sería la forma más razonable, ¿no?

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Os presento a Chi - un compilador de Pascal para CPC

Mensajepor MiguelSky » Vie 22 Ago , 2008 4:43 pm

Es la forma más evidente, pero quizá consuma demasiados ciclos, creo que esas operaciones de registros de 16 bits consumen mucho. Alguno de nuestros expertos 'apuradores' de código :D te pueden decir si te conviene más hacer quizá un par de CP con los byte alto y bajo del número en lugar de una resta de 16 bits...

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Os presento a Chi - un compilador de Pascal para CPC

Mensajepor MiguelSky » Vie 22 Ago , 2008 7:42 pm

Jooooooder !! Pero eso es un super rutinón !! :D LA verdad es que sólo usa operaciones de 8 bits (sin contar las que implican direcciones, claro). Está bien a modo general, además el firm, según para lo que quieras, es preferible usarlo porque ya lo tienes todo hecho. Pero si es un caso más particular (enteros) lo que quieres conseguir veo más factible lo de hacer un CP para el byte alto y otro para el bajo.

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

Re: Os presento a Chi - un compilador de Pascal para CPC

Mensajepor nacho » Vie 22 Ago , 2008 9:13 pm

Deberías pegarle un vistazo a este link: http://www.cpcwiki.com/index.php/Progra ... t_routines

Y muchas más cosas aquí: http://www.cpcwiki.com/index.php/Programming#Assembler

Creo que encontrarás cosas bastante interesantes, como por ejemplo: [...]

Si no voy mal, es un desensamblado de las rutinas firmware del Amstrad :)

Espero te sea de ayuda. Salu2!
Pues el sitio es muy interesante. Lo añadí a Favoritos hace mucho, pero ya ni recordaba que lo tenía ni todo lo que había. Lo de la coma flotante por ahora me desborda, no tengo intención de implementarlo aún, pero la rutina de comparación es interesante, muy versátil, aunque quizá demasiado larga para aplicarla a números enteros, en los que podría bastar con un SBC.

En cualquier caso, muchas gracias por el enlace. En el Wiki hay muchas cosas de las que aprender. :)

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

Re: Os presento a Chi - un compilador de Pascal para CPC

Mensajepor nacho » Dom 24 Ago , 2008 12:51 pm

Novedades de hoy...

Versión 0.18. Permite tipo de datos INTEGER, para enteros de 16 bits, imprescindibles para coordenadas de pantalla (y también para alguna otra cosa, como puntuaciones de juegos :wink: ). En cuanto a las comparaciones que comentábamos en el post anterior, de momento las he implementado como una resta (SBC). Ya llegará más tarde el momento de optimizar...

De paso, he añadido las 3 órdenes básicas para comenzar a jugar con los gráficos: PLOT(x,y) (dibujar un punto), LINE(x,y) (linea hasta esas coordenadas), GRAPHICSPEN(c) (cambiar el color con el que se dibujará).

Un ejemplillo breve:

Código: Seleccionar todo

program ej18; { Ejemplo 18 de CpcPaChi }

(* Prueba las nuevas funcionalidades de
la version 0.18: integer y graficos *)

var
i, color: byte;

var
j, k: integer;

begin

cpcMode(0);
color := 1;
graphicsPen(1);

for i := 1 to 30 do
begin
inc(i,3);
plot(10,i);
line(630,i);
inc(color);
if color = 16 then color := 1;
graphicsPen(color);
end;

k := 90;
graphicsPen(color);
for j := 210 to 420 do
begin
plot(j,k);
line(210,k);
inc(k,2);
end;

end.
Ya queda bastante poco para una primera versión "aparentemente utilizable", que dejaré aquí disponible para cualquiera que quiera jugar con ella, sugerir mejoras (a mí mismo se me ocurren muchas) o indicar fallos (también conozco alguno,pero seguro que hay más :wink: ).

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Os presento a Chi - un compilador de Pascal para CPC

Mensajepor MiguelSky » Dom 24 Ago , 2008 1:48 pm

Buen trabajo !! Ánimo, que con él quiero hacer mi primera aproximación a Pascal.

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

Re: Os presento a Chi - un compilador de Pascal para CPC

Mensajepor nacho » Mié 03 Sep , 2008 2:37 am

Buenas...

Sólo quería decir que el proyecto no está muerto. Sólo he pulsado ESC una vez... ;-)

El problema es que las (pocas?) cosas que quedan llevan su tiempo de pensar y de hacer pruebas, así que me pongo con ello sólo cuando sé que le puedo dedicar una hora "del tirón", pero llevo algo más de una semana que me está siendo imposible.

Quizá en pocos días pueda tener noticias interesantes... pero sólo quizá...


¿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