What the software would have to do is count revolutions, which looking at the code you linked to appears feasible. The motor has the hall effect sensors that are normally used to know which of the coils to power, but of course it's quite easy then to start counting how many revolutions one has done. End of rotation could then be sensed by a stopped motor and no new sensor input. So basically turn one way until no sensor input (motor stalled). Then turn the other way, counting sensor triggers along the way, until again motor stalls. That way you know how many rotations of the motor for a complete movement.
As you want PWM control I suppose you want to have the motor run at different speeds (fast if you make a big change, slowing down as it gets closer to its setpoint).