chkdgt(char *s){ int i,j=StrLen(s); if(j!=6) return 0; for(i=0,j=0;i<5;i++) { if(i&1) j+=*s-'0'; else j+=(*s-'0')*3; s++; } return *s-'0'==(10-j%10)%10; } macset() { int i,j; unsigned int *k; unsigned long d; char *buf,*buf2; k=0xfc; if(*k!=0xffff){ PrStr("MAC already set:00:1f:e8:49:"); PrHexByte(*0xfc); PrChar(':'); PrHexByte(*0xfd); PrStr("\r\n"); return; } buf=MemoryAlloc(10); buf2=MemoryAlloc(10); for(;;){ PrStr("Enter Number="); Gets(buf,7); if(!chkdgt(buf)) { PrStr("Wrong Number\r\n"); break; } PrStr("ReEnter Number="); Gets(buf2,7); if(!chkdgt(buf2)){ PrStr("Wrong Number\r\n"); break; } if(StrCmp(buf,buf2)){ PrStr("Wrong Number\r\n"); break; } *(buf+5)=0; d=Atoi(buf)<<16;NvmWrite(0xfff000fc,&d,4); if(*k!=Atoi(buf)){ PrStr("Write Error\r\n"); break; } PrStr("MAC = 00:1f:e8:49:"); PrHexByte(*0xfc); PrChar(':'); PrHexByte(*0xfd); PrStr("\r\n");break; } MemoryFree(buf);MemoryFree(buf2); } recover(){ int i,j,k; char *buf; long s; k=0x400;// End adrs i=SmartInit(); if(i!=0x20){ PrStr("Not connected!\r\n"); return; } buf=MemoryAlloc(256); for(;;){ PrStr("\r\nErase 1,Sum 2,Clone 3,Replace1 4,Replace2 5 ?"); Gets(buf,2); i=Atoi(buf); PrStr("\r\n"); if(i==0) break; if(i==1){ PrStr("Flash Erase"); SmartErase(0x40); PrStr("d\r\n"); } if(i==2){ PrStr("Sum check..."); for(i=0,s=0;i