Solucionado!!!
Me funciona perfectamente.
Aunque utilizando el puntero, al compilar la salida me ocupa menos espacio, por lo que deduzco que debe de ser más optimo (no suelo mirar la salida en assembler por que no tengo nivel para entenderlo).
Me gusta más así por que no acabo de controlar la memoria y así le dejo la tarea al compilador.
(cuando sea mayor ya haré más hard code
)
Gracias!
Antes:
void vPrintNumber(byte column, byte line, uint aNumber, byte aLength)
{
uint tiladdre=0;
char *strBuff;
strBuff = 0xC400;
Num2Dec16(aNumber, strBuff);
// proporciona la direccion de la VRAM a partir de una posicion
tiladdre = getAddress(column, line);
//coloca el puntero en la posicion donde se ha de empezar a mostrar
strBuff = strBuff + (5-aLength);
// muestra el numero en la pantalla
while (aLength-->0){ vpoke(tiladdre++,*(strBuff++));}
}
Ahora:
void vPrintNumber(byte column, byte line, uint aNumber, byte aLength)
{
byte pos=5;
uint tiladdre=0;
char strBuff[5];
Num2Dec16(aNumber, strBuff);
// proporciona la direccion de la VRAM a partir de una posicion
tiladdre = getAddress(column, line);
//posicion de inicio de la cadena
pos= 5-aLength;
// muestra el numero en la pantalla
while (aLength-->0){ vpoke(tiladdre++,strBuff[pos++]);}
}