David Tarboton does a good job of breaking it down at http://hydrology.usu.edu/taudem/taudem5/help53/D8FlowDirections.html
basically as does Jenson.
Jenson, S. K., and J. O. Domingue. 1988. "Extracting Topographic Structure from Digital Elevation Data for Geographic Information System Analysis." Photogrammetric Engineering and Remote Sensing 54 (11): 1593–1600.
It is really quite simple.
- Slope (usually standard nine pixel Kernel using rise over run)

- Convert steepest slope of each pixel to a convention, see center small bit below. North is 64 in this convention.

- Now accumulate.
When two slopes are equal in step 2 just expand the search region (using only the equal slopes) until one becomes steeper.