Before I decided to write Vinace, I have been using YAE. It has a lot of limitations : no simple joystick emulation, no easy disk drive interface.
I first tried to improve it but I quickly found out that writing a new emulator from scratch would not be harder.
I studied a lot the source code from YAE while writing Vinace. I took the routines for nibble encoding and decoding, used in disk drives, from it. The files gcr.h and gcr.cpp are nearly the same that in YAE.
It seems that the YAE website does not exists anymore (http://quark.netfront.net:6502/) but source code can still be found on Asimov Repository here :