Exploring microcode as a programming interface: A puzzle game