Recursive DFS on an adjacency matrix

One click of Step is one thing the code does: enter a vertex, look at one cell of its row, go down into a neighbour, or come back up. The yellow line in the code is where the program is right now. The stack on the right is the pile of unfinished calls: the top one is running, the ones below are waiting to continue their own scan.

adjacency matrix, row of the running vertex highlighted, pointer = j being checked
sequence S (order of entry)
[ ]
parents P (doubles as "visited")
{ }
call stack (top = running; below = waiting to resume their scan)