The Chip8 virtual machine was a way for programmers to more easily make games on their computers. You can't really call the Chip8 interpreter an emulator because we are not emulating a system that is hardware based, it always was just a system running on another system.
There are several great tutorials online on how to make one, google it. The way it works is by getting an array of numerical instructions. It takes the instructions and looks at a chunk of the instruction, called the opcode (operation code). This tells it which instruction to execute. After it has decided which one to execute it reads the rest of the number, depending on the opcode recieved. So given a certain array of numbers you can run just about anything within the Chip8's memory requirements.
The github page is located here: Link
wasd to move. This buffer was downloaded from Chip8 Archive