I like to single step too.
I used two manual inputs implement a single scan feature. The first input was the run/single scan input. The second input was the single scan toggle. This code was at the beginning of the program and would end the scan if the run/single scan was in single scan and the single scan toggle didn't change. This left all the registers as they were so they could be viewed.