Forked from http://www.vilsmeier-consulting.de/tc65sh.html