It uses a single pulse generator to control all four waves, using basically two frequency devider and their inverted copies. Rotation direction is controlled by the logic value at the left.
Its not a bad idea to prevent the transistors from being fried by placing diodes in series with each coil, however its not completely necessary. Try controlling the frequency of the master pulse: at higher speeds the whole logic just scrambles up due to the internal imperfections of the toggles/gates.
There is a huge problem with this design though. While the pulse is running, the change in direction immediately triggers two waves, while the others continue their normal routine. This couses improper motor motion. Some kind of "buffering" may solve this problem.