2 servos (or any functions) operating simultaneously?

AWOL: The use of double quotes for defining the strings was definitely part of, if not the entire, problem.

RESULTS: The code below prints the defined strings {","}; line by line in sequence to the serial monitor and timed according to the delay. This is only partially what I wanted because Serial.read either is not reading them as they are being printed or they are not being converted to integers and/or not being written to the servos. The 'Serial.read/write' section [from zoomkat] of the loop (everything at the bottom after 'if(Serial.available())' ) works fine on its own with manual input into the serial monitor but apparently doesn't do anything in combination with the PROGMEM section/s. I'm not sure what needs to happen now for the strings to get written to the servos, I don't know what the disconnect is. It may only be one or two lines away from working, or may need an entirely new approach. :expressionless:
I did rearrange a few things several times, notably: PROGMEM, so I'll try repositioning a few things, before continuing to research.

/*
'zoomkat 11-22-12 simple delimited ',' string parse' is combined with 'PROGMEM string demo' 
inside of a while loop that gets started with a bumper sensor used as a manual switch.
Intended to control one leg prototyped for a hexapod ~will be further expanded as the bugs
get worked out...

 zoomkat 11-22-12 simple delimited ',' string parse
         from serial port input (via serial monitor)
         and print result out serial port
         multi servos added
         
 PROGMEM string demo
        -How to store a table of strings in program memory (flash), and retrieve them.
           Information summarized from:
        http://www.nongnu.org/avr-libc/user-manual/pgmspace.html
               -Here is a good template to follow for setting up a 
                table (array) of strings in program memory.               */

#include <avr/pgmspace.h>
PROGMEM prog_char string_0[] = {"60a, 90b"};   //positions leg at ready (may have no use)
PROGMEM prog_char string_1[] = {"25a, 170b"};  //gait for one leg (2 motors(a,b))
PROGMEM prog_char string_2[] = {"160a"};       //
PROGMEM prog_char string_3[] = {"5b"};         //
PROGMEM prog_char string_4[] = {"25a"};        // 

  // Then set up a table to refer to strings.
PROGMEM const char *string_table[] =   //change "string_table" name to suit
{   
  string_0,
  string_1,
  string_2,
  string_3,
  string_4,
};
char buffer[4];  //needs to be large enough for the largest string it must hold
                      //may eventually hold up to 30 indexed variables for all servo/sensor functions  
String readString;

#include <Servo.h> 
 Servo myservoa, myservob;   //create servo object to control a servo 

#include <Wire.h>
 const int bumperPinR = 2;    // the number of the bumper (whisker) pin
  int bumperStateR = 0;       // variable for reading the bumper status

void setup() 
{
  Serial.begin(9600);

  //myservoa.writeMicroseconds(1500);   //set initial servo position if desired?
  //myservob.writeMicroseconds(1500);   //
 myservob.attach(8);     //the pin for the servob control
 myservoa.attach(9);     // 
  //Serial.println("");     //keep track of what is loaded

 pinMode(bumperPinR, INPUT);     //sets the bumper pins as an inputs

 Wire.begin();      //initializes/activates voltage sensing for bumperpins?  
}
void loop() 
{
  bumperStateR = digitalRead(bumperPinR);    //read state of bumper sensors
 
 while (bumperStateR == LOW)      //begin a loop(one leg walking) with bumper sensor
 {
   for (int i = 1; i < 4; i++)    //prints successive strings in table?
   {
         //'strcpy_P' copies strings from program memory to buffer,
         //necessary casts and dereferencing required to gather data from table.
     strcpy_P(buffer, (char*) pgm_read_word(&(string_table[i])));
     Serial.println(buffer);                                          
     //delay(500);                 //delay will certainly need adjustment     

 //everything beyond this point does not seem to correlate with that above, although
 //it does control the servos when values are manually entered into the serial monitor
    if (Serial.available())  
    {
      char c = Serial.read();   //gets one byte from serial buffer
      if (c == ',')              //where/what is 'char c'??  
      {
        if (readString.length() >1)   //greater than 1 char??
        {
          Serial.println(readString);  //prints string to serial port out
          int n = readString.toInt();   //convert readString into a number
             // auto select appropriate value ~my servos use 0-180, so 181 should work
          if(n >= 500)                  //don't know if I'm interpreting this correctly
          {
            Serial.print("writing Microseconds: ");       //header for input 'n >= 500' in monitor
            Serial.println(n);
            if(readString.indexOf('a') >0) myservoa.writeMicroseconds(n);
            if(readString.indexOf('b') >0) myservob.writeMicroseconds(n);
          }
          else
          {   
            Serial.print("writing Angle: ");                 //header for input 'n < 500'
            Serial.println(n);
            if(readString.indexOf('a') >0) myservoa.write(n);
            if(readString.indexOf('b') >0) myservob.write(n);
          }
          readString="";    //clears variable for new input
        }
      }  
      else 
      {     
        readString += c;    //makes the string readString
      }
     }
   }
 } 
}

1/5/13
I need help!
Here's what I'm trying to do:

  1. Store strings to PROGMEM
  2. Retrieve strings from PROGMEM using Serial()
  3. Write strings to multiple servos in sequence/s
    Purpose:
    Mainly to have simultaneous operation of multiple servos and sensors, the other would be to conserve memory for functions.

The 'disjunction' appears to be between 'strcpy_P' and 'if (Serial.available())'.
I've made too many changes, additions, omissions to the code to remember everything I've tried. I can't really go much further with my project without solving this problem.

Any suggestions or additional info will be greatly appreciated!