Nextion Display issues

I am attempting to put a stepper motor on my Jessem Router lift. I bought the Nextion Enhanced 480X272 touch display to use as my user interface. I bought it because it looked fairly straight forward (based on watching YouTube tutorials) to integrate to the project with a Arduino Mega as the controller brains.

Alas, I was incorrect in the ease of use thought. Mostly I was correct in my assumption in the movement of page to page on the display and the display communication with Arduino vie the Nextion Library. I am working on the routine to move the lift while I hold a button press on the display. Program flow is started by pushing the manual button. which runs this code

void m3PushCallback(void *ptr)
//   go into  "manual mode"
{
  manualmode = true;
 //Serial.println ("got to Manual Mode");
 //Serial.println (testbottomLimit);
 //Serial.println (testtopLimit);
 }

This chunk of code does set manual mode true.

I Then push a direction arrow to determine which way to move the router.

Here is that chunk of code which does what it is supposed to do.

// 'UP ARROW'
 void m0PushCallback(void *ptr)
{//Serial.println ("got to UP ARROW Mode");
//Serial.println (manualmode);
   manualup = true;
  if (manualmode && manualup == true ){
  digitalWrite (DIR,true);  //DIR =true runs router up
   manual();
  }
 else {manualup = false;
 // movemotor()
 }
}

Now is where things go south on me, The up Arrow calls the subroutine that generates the step pulses for the stepper driver.

This is the code to generate the step pulses that are sent to the stepper driver. It only executes one time, generating the nicest 50 microsecond piles you could imagine.

void manual(){
 if (manualup == true || manualdown == true);{
 do
 {
 
  digitalWrite(STEP,HIGH);
  delayMicroseconds (50);
  digitalWrite(STEP,LOW);
  delayMicroseconds(175);
 
 }
 //while (digitalRead(bottomLimit) && (digitalRead(topLimit) == false));
 while (testbottomLimit && testtopLimit == false);
}
}

I know that my routine is returning to the main loop after each button push on the Nextion. I don't understand enough about libraries to know why it is not staying in my loop until I release the "UP ARROW".

Right now I am stumped and about ready to abandon the Nextion library and just try to read the serial data and decode it to determine which page I am on and which button was pushed or released.

Is there a simple fix that I could make to force the Mega to stay in the routine that generates the step pulses or should I Just byte (pun intended) the bullet and decode the serial data sent by the nextion?

Another question I have is: in the following line of code, void m3PushCallback(void *ptr), what does the (void *ptr) mean or do?

Thanks in advance guys.

ROG