Hi,
you will find a robotC code for the balancing problem on https://github.com/OmegaTom/LineBalancer (combined with a line follower and some more optional stuff)
I have used a 'new' approach. The original LEGO solution (education set) is using a simple linear combination of the robot speed/position and the gyro rate/angle to balance the robot. This solution is quite senitive to calibration and mechnaical aspects of the robot. Laurens (robotsquare.com) has enhanced this solution by introducing a single PID control loop for the same linear combination. This improves the stability significantly but still there are limitations in optimizing the control loop.
My approach is using 4 parallel PID controllers ... one for each parameter seperately. On github you will find a readme that explains the basic idea (and the balancing problem in general) in more detail... this implementation gives a lot more room to play with different parameter sets ... and I am sure that there are some robot fans out there that will come up with nice optimizations ;)
feel free to play with my code and improve it ...