Do something like this:
#top
bus domove getpos gamelogic1
@unitready bus
bus domove getpos gamelogic2
@unitready bus
bus domove getpos gamelogic3
@unitready bus
goto "top"
Unitready is a command that retruns TRUE when the unit has completed a waypoint or a domove command. In case you don't know, placing an '@' in front of anything that will return either TRUE or FALSE will make the script wait until that condition is TRUE (It's very useful).
Another way to do this would be to set up a waypoint for the bus at each stop, then place a 'cycle' waypoint next to the first stop. The cycle waypoint makes a group repeat the waypoint closest to the cycle waypoint.
Hope that gets it