In the .map file I got:
01:ea17 495 update_dif_obrir \MICRO5_205.C 986
01:ec06 14420 UpdatePrograms \MICRO5_205.C 1010
05:e45a 2995 procesa_entrada \MICRO5_205.C 1038
the UpdatePrograms show 14420 bytes size, very big for the function:
xmem void UpdatePrograms(void)
{
int i,flag;
for(i=1; i<_PROGRAMAS; i++)
{
flag=0;
if(programas[i].consigna == i) continue;
if(programas[i].consigna == 0) continue;
if(programas[i].referencia != programas[programas[i].consigna].referencia)
{programas[i].referencia=programas[programas[i].consigna].referencia; flag=1;}
if(programas[i].dif_obrir != programas[programas[i].consigna].dif_obrir)
{programas[i].dif_obrir=programas[programas[i].consigna].dif_obrir; flag=1;}
if(programas[i].dif_tancar != programas[programas[i].consigna].dif_tancar)
{programas[i].dif_tancar=programas[programas[i].consigna].dif_tancar; flag=1;}
if(programas[i].t_ciclo != programas[programas[i].consigna].t_ciclo)
{programas[i].t_ciclo=programas[programas[i].consigna].t_ciclo; flag=1;}
if(programas[i].t_apertura != programas[programas[i].consigna].t_apertura)
{programas[i].t_apertura=programas[programas[i].consigna].t_apertura; flag=1;}
if(programas[i].t_cerrar != programas[programas[i].consigna].t_cerrar)
{programas[i].t_cerrar=programas[programas[i].consigna].t_cerrar; flag=1;}
if(flag) writeUserBlock(0x000+(sizeof(programas[i])*programa),&programas[i],sizeof(programas[i]));
}
}