В методе cycle нужно засунуть return в условие для case -4 (строка 129), а то внешние EX-команды небудут нормально работать (PC небудет инкрементироваться):
и поменять местами
if (fHalt) break; // halt and catch fire и
if (verbose) display_memory_state(); в конце метода run, чтобы при окончании программы состояние регистров не печаталось два раза для EX -13 (т.к. после хальта PC не проинкрементируется и инкрементировать его нельзя т.к. при этом эмулятор вывалиться по ошибке что PC вылез за пределы программы)