curr_pinst_x = (IOPIN0 & (3<<17))>>17;
if (curr_pinst_x != prev_pinst_x)
{
switch (prev_pinst_x)
{
case 0: if (curr_pinst_x == 1) {x++;break;}
if (curr_pinst_x == 2) {x--;break;}
break;
case 1: if (curr_pinst_x == 0) {x--;break;}
if (curr_pinst_x == 3) {x++;break;}
break;
case 2: if (curr_pinst_x == 0) {x++;break;}
if (curr_pinst_x == 3) {x--;break;}
break;
case 3: if (curr_pinst_x == 1) {x--;break;}
if (curr_pinst_x == 2) {x++;break;}
break;
}
prev_pinst_x = curr_pinst_x;
}