Also if you are controlling the stepper in the normal 4 step sequence then the 4 drive signals are actually in two pairs so 2 that GPIO pins per motor is sufficient (rather than 4) providing one can invert the signals.
Coil 1 = GPIO-A
Coil 2 = Not GPIO-A
Coil 3 = GPIO-B
Coil 4 = Not GPIO-B
If you are using a ULN2803 and you have access to the pins then this can be done by using spare drivers on the ULN device as inverters with some pull up resistors, but you may not be able to do that easily with the board you are using.
The principle and circuit is well explained on page 13 of
http://www.philadelphia.edu.jo/academic ... erface.pdf
Driving all 4 signals independently does allow half stepping control.