Hi Scott,
Ouch. Sorry to hear this.
The Initialize C Program usually performs the following:
#1 set axis parameters
#2 enables all axes
EnableAxisDest(0,0.0);
EnableAxisDest(1,0.0);
EnableAxisDest(2,0.0);
#3 defines Coordinated Motion Systems ie.
DefineCoordSystem(0,1,2,-1);
#4 anything else your system might need initialized
#5 loops to service any watchdog or MPG functions
Regarding disallow into limits: If your Limit options are configured to Dissallow Drive into Limits You should be able to initialize while in the limits as long as you don't move at all in the direction further into the limit. A different input is required for each end of travel.
Regards