Learning exercise for emulator development. Quotations in the comments are from the excellent article by Tobias V. Langhoff