Thanks folks! I've got a handle on efficient pritning of strings now in CCS: I wrote a program with 3 writes of a string to the serial port (and some other activity) , and raced them: with printf("Some Text") 396 bytes ROM using strcpy(array, "Some Text"); printf(array); 370 Bytes ROM using strcpy(array, "Some Text"); putstring(array) 339 bytes ROM. Each additional instance of PrintF("text") seems to add a massive amount of wasted memory as compared to printf(array) or putstring(array). Conclusions: 1. Printf is not very efficient. 2. strcpy(array,"text") is a handy way of stuffing a line of text into an array for later printing and 3. The following routines putstring() and PutLCD are more efficient than Printf at sending a string to an RS232 port. I added these two routines to my string.H file for future reference putstring() and PutLCD() // Putstring is much more efficient than printf (with thanks to Bob Ammerman!!) // for printing text strings to a serial LCD for example. // You must declare an array of characters like this: // char array[16]; // or whatever size then call by stating // strcpy(array,"This Text!"); // putstring(array); void putstring(char *p) { while (*p){ putchar(*p++);} } /////////////////////////////////////////////////////////////////////////// //// PutLCD will also optionally clear or home the Scott Edwards LCD screen before printing // useful defines would be: // #define ClearLCD 1 // #Define ToLine1LCD 2 // #Define ToLine2LCD 3 // Example: // char array[16]; // strcpy(array, "print THIS!"); // putLCD(array, ToLine1LCD); void putLCD(Char *P, int setting){ putc(0xFE); // escape character switch setting{ Case 0: break; Case 1: putc(0x01); // clear screen command delay_ms(1); // delay becuase screen is disabled 1 ms break; Case 2: putc(0x80); // goto line 1 break; Case 3: putC(0xC0); // Goto line 2 break; } while (*p){ putchar(*p++);} } } -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics