HispaMSX

RE: [hispamsx] C y ASM y Eso

2001-02-16 16:00:39
Bueno, no esperaba hacerlo todavía porque faltaban un par de cosillas por
ultimar pero haré públicas unas librerías que estoy haciendo de manera que
si hay gente interesada pueda comentarme posibles errores o demás. Lo hare
cuando pueda dedicarle un poco de tiempo a crearlas en formato librería que
ya se me acaban los exámenes y las prácticas de la facultad este lunes...
los carnavales son ya el viernes próximo, así que en ese periodo de tiempo
intermedio (la próxima semana) los subiré a la lista.

Las librerías serán:

v9938.h: Rutinas para controlar dicho chip.

void setreg (unsigned char reg);
unsigned char reg_status (unsigned char reg);
void set_bg_color (unsigned char color);
void vpoke (unsigned address, unsigned char data);
void vpeek (unsigned address, unsigned char data);
void scroll (unsigned char line);
void vsync(void);
void outcmd (int command);
unsigned argu (int sx, int sy, int dx, int dy);
void pset (int x, int y, unsigned char color);
unsigned point (int x, int y);
void line (int x, int y, int xd, int yd, unsigned char color);
void box (int x, int y, int xd, int yd, unsigned char color);
/* logical move from memory to memory LMMM */
void copy (int sx, int sy, int dx, int dy, int sp, int x, int y, int dp);
void copy_abs (int sx, int sy, int dx, int dy, int x, int y);
void paint (int sx, int sy, int dx, int dy, unsigned char color);
void set_adjust (int x, int y);
void set_color (unsigned char color, unsigned char red, unsigned char green,
unsigned char blue);
void set_next_color (unsigned char red, unsigned char green, unsigned char
blue);
void set_work_page (unsigned char num_page);
void set_display_page (unsigned char num_page);
void set_page (unsigned char display_page, unsigned char work_page);
void screen (unsigned char mode);
void cpu2vdp (int x, int y, int xd, int yd, unsigned dir);
void set_spat (unsigned dir);
void put_sprite (unsigned char num_sprite, int x, int y, unsigned char
pattern);
void set_sprite_colour (unsigned char num_sprite);

Siento el copy + paste, pero pasaba de ponerlo bonito. El tema de sprites no
he tenido tiempo de probarlo... ya lo iré puliendo.

v9990.h: Idem para la gfx9000. He intentado seguir un patrón a la hora de
creación de las librerías para los chips gráficos de modo que cambiando el
#include <chip.h> se pueda compilar para uno u otro... pero ya se irá
mirando también...

Las funciones implementadas son:

void vpoke (long address, unsigned char data)
unsigned char vpeek(long address)
char inreg (void)
void vsync(void)
void outcmd (int command)
void screen (unsigned char nscreen, unsigned char wide, unsigned char
ncolors)
void pset (int x, int y, int color)
unsigned point (int x, int y)
void line (int x, int y, int xd, int yd, int color)
void box (int x, int y, int xd, int yd, int color)
/* logical move from memory to memory LMMM */
void copy (int sx, int sy, int dx, int dy, int x, int y)
void paint (int sx, int sy, int dx,int dy, int color)
void vload (char *filename, unsigned long dir)
void load_palette (char *filename)
void vsave (char *filename)
void set_cursor(void)
void cursor (unsigned x, unsigned y)
void set_adjust (int x, int y)
void scroll (unsigned scax, unsigned scay, unsigned scbx, unsigned scby,
unsigned roll)
void set_palette (palettes *pal)
void set_color (unsigned char ncolor, colors color)
colors get_color (unsigned char ncolor)
void init_patterns (void)
void set_pattern (unsigned char x, unsigned char y, unsigned pattern)
void set_bg_color(unsigned char color)
void enable_screen(void)
void disable_screen(void)
void enable_sprites(void)
void disable_sprites(void)
void set_SPGT (unsigned char data)
void put_sprite (unsigned char x, unsigned char y, unsigned char numsprite)
void set_sprite (spriteform sprite, unsigned char numsprite)

    Como siempre la parte de sprites no esta acabada, es un tema que siempre
dejo para el final, pero el resto de comandos fona bien.

dos2.h: Poco he hecho hasta ahora de esta librería. Y hay un error en la
escritura (dice que ha escrito bien pero no escribe nada) se lo tengo que
mandar al manitas de Néstor que jala en DOS2 para que lo mire a ver... las
rutinas implementadas son:

int create (char *filename, unsigned char mode)
int open (char *filename, unsigned char mode)
int close (int fhandle)
int read (void *buffer, unsigned num_bytes, int fhandle)
int write (void *buffer, unsigned num_bytes, int fhandle)
int seek (int fhandle, long offset, int mode)
int delete (char *filename)
int rename (char *file_a, char *file_b)

Son sólo para dos2, y no pretendo implementar todas las funciones del
sistema, sólo estas... Es que las mismas funciones que tiene el hitech para
CPM son lentísimas....

Tengo algo más para el LPE_EVOLUTION 4 pero son un par de funciones sin
mucho interés, y algo mucho mayor para el LPE_Z380, pero estas si que no las
he probado y paso de dar algo que no sé si funcionará mínimamente.

Ahora viene lo malo de todo... (más lo malas que son mis funciones ;)), hace
falta el Hitech C Crosscompiler... no el Hitech C normal. Lo siento, pero en
la facultad tengo que chuparme la PCera. Es un IDE que no esta nada mál y
mucho más novedoso que el Hitech de CPM. Es compatible 100% ansi y todo eso.
Vamos que a veces programo en Borland C y lo paso sin problemas...

    Saludos

        Airam

PD: Lo siento por tanto nombre de funcioncita, pero es para que os hagais
una idea de lo que hay implentado.


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>