mover dos motores paso a paso en un plano X e Y (¿CNC?)

Buenas a todos, tengo dos motores 28byj-48 con su respectiva placa con el chip ULN2003. Tengo un sketch que me mueve en los ejes X e Y un objeto cogido a los dos motores. Es este el sketch (sacado de esta web http://madebyfrutos.wordpress.com/2012/03/25/proyecto-de-mig-3/) :

#include <Stepper.h>
#define STEPS 100

//Motor#1
Stepper drx(STEPS, 8, 10, 9, 11);
//Motor#2
Stepper izq(STEPS, 2, 4, 3, 5);

int p;
int i=0;
int letra;

////////////SETUP///////////////
void setup(){
Serial.begin(115200);

drx.setSpeed(200);
izq.setSpeed(200);

}//fin setup

////////////LOOP//////////////
void loop(){

if (Serial.available() > 0) {

letra = Serial.read();

drx.setSpeed(200);
izq.setSpeed(200);

switch(letra) {
case ‘A’:

for(i=0;i<91;i++){
drx.step(-1);
izq.step(+1);
}
break;

case ‘B’:

for(i=0;i<91;i++){
drx.step(1);
izq.step(-1);
}
break;

case ‘C’:

for(i=0;i<101;i++){
drx.step(1);
izq.step(1);
}
break;

case ‘D’:

for(i=0;i<101;i++){
drx.step(-1);
izq.step(-1);
}
break;

case ‘2’:

for(i=0;i<101;i++){
drx.step(10);
izq.step(-1);
}
break;

case ‘1’:

for(i=0;i<101;i++){
drx.step(-10);
izq.step(1);
}
break;

case ‘3’:
for(i=0;i<101;i++){
drx.step(1);
izq.step(-10);
}
break;

case ‘4’:
for(i=0;i<101;i++){
drx.step(-1);
izq.step(10);
}
break;

case ‘5’:

for(float i=0;i<12; i=i+1){

for(float z=0;z<6.3;z=z+0.01){
float s= isin(z);
float c= i
cos(z);

// z=z*180/3.1415926535;
/Serial.print(z);
Serial.print(", “);
Serial.print(s);
Serial.print(”,");
Serial.println(c);
/

drx.step(s);
izq.step(c);
}

}
break;

case ‘6’:

for(int i=12;i>0; i=i-1){

for(float z=0;z<6;z=z+0.01){
float s= isin(z);
float c= i
cos(z);

// z=z*180/3.1415926535;
/Serial.print(z);
Serial.print(", “);
Serial.print(s);
Serial.print(”,");
Serial.println(c);
/

drx.step(s);
izq.step(c);
}

}
break;

}

//heading*180/3.1415926535

}//fin seial.availabe
}//Fin LOOP

Lo siguiente que querría, sería que partiera de un origen de coordenadar 0,0 (por ejemplo) e ir dándole coordenadas según mando letras a través del puerto serie, pulso A y se mueve al punto (2,1), pulso B y me muevo al punto de coordenadas (4,8) por ejemplo, el programa interpreta que tiene que moverse 2 pasos en X y 7 en Y, el paso de un punto a otro se va guardando en dos variables x e y cuando acaba le doy a una tecla por ejemplo la * y vuelve a su origen. He adaptado el sketch anterior pero no consigo que se mueva el objeto, os paso el sketch a ver si alguien me puede echar una mano:

#include <Stepper.h>
#define STEPS 100

//Motor#1
Stepper drx(STEPS, 8, 10, 9, 11);
//Motor#2
Stepper izq(STEPS, 2, 4, 3, 5);
////////////SETUP///////////////
void setup(){
Serial.begin(115200);
drx.setSpeed(200);
izq.setSpeed(200);
}//fin setup

//#define UART_BAUD_RATE 115000
char x, del=10;
int Vxrel=0,Vyrel=0,tx,ty;
int Vxa=0,Vya=0,Vxb=0,Vyb=0,Vxast=0,Vyast=0;
void recorrido(void);
int main(void)
{
//INIT();
//UART_INIT(UART_BAUD_RATE);
//LED1ON();
//STEPINIT(32);
while(1)
{
//x=UART_GETCHAR();
x = Serial.read();
drx.setSpeed(200);
izq.setSpeed(200);

switch (x)
{
case ‘A’:
Vxa=160;
Vya=128;
Vxrel=Vxa-Vxrel;
Vyrel=Vya-Vyrel;
recorrido();
Vxrel=160;
Vyrel=128;
break;
case ‘B’:
Vxb=150;
Vyb=135;
Vxrel=Vxb-Vxrel;
Vyrel=Vyb-Vyrel;
recorrido();
Vxrel=150;
Vyrel=135;
break;
case ‘*’:
Vxast=0;
Vyast=0;
Vxrel=Vxast-Vxrel;
Vyrel=Vyast-Vyrel;
recorrido();
Vxrel=0;
Vyrel=0;
break;
}
}
}
void recorrido(void)
{
if(Vxrel<=0)
{
tx=1;
}
else tx=-1;

if(Vyrel<=0)
{
ty=-1;
}
else ty=1;
Vxrel=abs(Vxrel);
Vyrel=abs(Vyrel);
for (int t=0, j=0;(t<Vxrel)||(j<Vyrel);t++, j++)
{
if((t<Vxrel)&&(tx==-1))
{
Serial.println("Un paso a izquierdas hacia ");
Serial.print(x);
drx.step(tx);
}
else if((t<Vxrel)&&(tx==1))
{
Serial.println("Un paso a derechas hacia ");
Serial.print(x);
drx.step(tx);
}
if((j<Vyrel)&&(ty==1))
{
Serial.println("Un paso ARRIBA hacia ");
Serial.print(x);
izq.step(ty);
}
else if((j<Vyrel)&&(ty==-1))
{
Serial.println("Un paso ABAJO hacia ");
Serial.print(x);
izq.step(ty);
}
//DELAYMS(del);
}
Serial.print("HAS MANDADO ");
Serial.print(x);
}

Gracias