möglicherweise verwirrt ihn das:

volatile uint16_t zx,zy,D;

void pause(D)
{


das ist "D" statisch definiert, aber auch als argument f. "pause"