Оригинальная идея описана тут
Мной сделано на ассемблере тут - можно поковырять сырцы. Оригинал тоже на ассемблере, но мой вариант выдирания и вдирания на экран обратно должен быть быстрее в теории.