From what we have covered you will notice that we need to use a large number of I/O pins per motor. So how can we reduce this?
I haven't tried it yet but a good alternative would be to use an L297
This handles the various different step modes in hardware rather than in your own software. Connection from the microcontroller just needs:-
1 pin to indicate Forwards/Reverse
1 pin for a clock waveform to dictate speed
1 pin to select full step or half step mode. However, if you are happy to keep with one mode then you wouldn't need this pin.
The other benefits of the chip is it uses a 'chopper' to make current control much more efficient.
This can then drive our L293 or a L298 for bi-polar use, or via a darlington array such as the ULN2003 for a uni-polar.
So this means that we can still keep the final output stage pretty much 'as-is' and just insert this chip between the microcontroller and the output stage to perform the step generation.
Haven't tried it myself yet - still waiting on some parts - but looks like a good choice.
UPDATE - see my new Motor Controller Tutorial http://www.societyofrobots.com/member_tutorials/node/168