matlab, I use my own code to do; Eviews can do Markov-switching, but not good. for it use kalman ...
bbs.cenet.org.cn