#include "dsklib.h" #include unsigned long hex2int(int value, int pos) { int i; unsigned long result; result = 1; for (i = 0; i < pos; i++) result *= 16; return (result * value); } int main(int argc, char *argv[]) { char *msg; // A pointer to any error message if it should occur MSGS err; // An enumerated message for looking up messages unsigned long data; unsigned long address; FILE *ptrIn; int cnt = 0; char ch; char ch1; char str[10]; int quit = 0; clrscr(); Detect_Windows(); Init_Communication(10000); HALT_CPU(); // Put C31 into spin0 mode clrscr(); if(access(argv[1],0) != 0) return 1; ptrIn = fopen(argv[1], "rb"); address = (unsigned long)0x100000L; do { ch = fgetc(ptrIn); switch (ch) { case 0x2: break; case 0x3: quit = 1; break; case ' ': break; case '\n': break; case '\r': break; case '$': do { ch = fgetc(ptrIn); } while (ch != ','); break; default: ch1 = fgetc(ptrIn); str[0] = '0'; str[1] = 'x'; str[2] = ch; str[3] = ch1; str[4] = '\0'; sscanf(str, "%lX", &data); putmem(address++,1, &data); cnt++; break; } } while (quit != 1); /*------------------------------------------------------------------------- 0xFFFFFFFF pattern marks the end of C31 hexcode to be loaded in flash memory. -------------------------------------------------------------------------*/ data = (unsigned long)0xFFFFFFFFL; putmem(address++,1, &data); if((err=Load_File("flash.out",LOAD))==NO_ERR) { RUN_CPU(); } else { msg = Error_Strg(err); printf("\r\n%s",msg); exit(0); } }