Ok, so is there a command i'm missing to rotate A until it reaches the the required inputs?
Not readily.
could this be achieved by doing a do-loop of 8 degrees (G91 G0 A-8) until the required inputs are met or is there a better method?
You have a stepper system - i.e. a precise open loop positioning system - my suggestion would be to use that to your advantage rather than trying to beat it into a pseudo servo system. YMMV but if you want to give it a shot...
1) set your steps/per in motor tuning so that a command of 360 turns it exactly 1 rotation.
2) Manually set your turret so that it's positioned on tool 1 (we'll come back to this later)
3) Stick the code below in your M6Start macro
4) Make sure you have 360 rollover selected (I think you said you have already).
5) In your code you were using negative rotation values - you may want to swap your DIR pin for A in ports and pins so that you can use positive numbers.
selectedTool = getSelectedTool()
currentTool = getCurrentTool()
code "G1 A" & (selectedTool - 1) * 45
While isMoving()
sleep 10
Wend
SetCurrentTool selectedTool
This should select the appropriate tool after an M6T..... command.
It will rotate at whatever the current feedrate is and is NOT finished yet - I just want to know if I'm on the right track (I'm working blind here remember).
If this does more or less what you want we can ook at locking, auto homing and error handling next.