CityAceE, я попробовал еще несколько разных вещей, рассказываю:
1) вынес регистры в один bytearray со сквозной адресацией, чтобы избавиться от доступа к ним через globals()
Морально лично мне это приятней, но на моем компьютере объективный толк замерить трудно.
С флагами то же самое сделать оказалось сложней, и выходит по-моему слишком много обмена шила на мыло, поэтому их не пробовал.
2) попробовал вынести процессор в класс. Пришлось немного поработать поиском-заменой, но в общем это нетрудно. Я надеялся, что сужение скопа и избавление от globals ускорит эмулятор, но по-моему получилось наоборот. Может быть можно попробовать разобраться, в чем тормоз, но пока отложил.
3) заметил, что цикл опроса очереди событий запускается каждую инструкцию. Его прекрасно хватит одного раза на прерывание. Вот это сразу скинуло мне загрузку в два раза, то есть до 10% и спокойного вентилятора.
Файлы крошечные, поэтому просто сюда их прицеплю: spyc-events.zip




Ответить с цитированием