Hi Dennis,
The normal way to home slaved axes is to:
#1 not have them slaved
#2 Jog both axes at the same time toward the switches
#3 use a loop watching both switches, if a switch is detected tell the respective axis to start stopping
#4 exit the loop when both have been told to stop
#5 wait for both to actually come to a stop
#6 move both back inside the switches (possibly different amounts to adjust the squaring)
#7 wait till finished moving
#8 Zero
#9 Slave the axes together
I've attached an example (cnczone didn't like the .c extension so it is .txt) see the function called SquareX. The main routine calls it twice first with a high speed then with a lower speed.
Hope this helps