
Сообщение от
Barmaley_m
И вот еще что. Раз уж в теме появились авторы эмуляторов - то к ним вопрос. Не можете посоветовать, как лучше всего сделать специализированный эмулятор с трактом магнитофона - я хочу составить с его помощью лог работы загрузчика, а именно, в какие моменты вызывалась команда in. Быть может, в логе удастся увидеть какую-нибудь неоптимальность работы загрузчика, и пофиксить ее. Я так понимаю, что можно скачать какую-нибудь либу по эмуляции z80, либо же хакнуть существующий эмулятор Speccy. Что посоветуете?
---------- Post added at 13:00 ---------- Previous post was at 12:57 ----------
P. s. Хотелось бы работать с этим на c/c++ в ms visual studio.
Исходники эмулятора доступны на сайте https://zxmak2.codeplex.com/ (открываешь закладку SOURCE CODE и кликаешь ссылку Download на тулбаре справа вверху).
Открываешь солюшен в MS Visual Studio 2010, нажимаешь билд и через пол секунды у тебя в папке _binrelease свежая версия эмулятора 
Логирование добавить - проще некуда, открываешь файл ZXMAK2\Engine\BusManager.cs, находишь метод WRPORT(ushort addr, byte value) и в его начало добавляешь чтонибудь типа:
Код:
private void WRPORT(ushort addr, byte value)
{
if (addr == 0xFE)
{
LogAgent.Info("OUT (#FE),#{0:X2} @ pc=#{1:X4}", value, m_cpu.regs.PC);
}
......
Задача решена, ура! Землекопа - полтора! 
Если нужно логировать IN, делаешь то-же самое в методе RDPORT
Заодно проверишь как ведет себя загрузчик на различных моделях спектрума. ZXMAK2 поддерживает оригиналы с медленной памятью (48к early/late, 128k early/late) и русские клоны (пентагон, скорпион, профи, АТМ1, АТМ2, пентева, ленинград, байт, Дельта-С, кворум, LEC-48/528K, СПРИНТЕР). В отладчике напротив каждой инструкции отображается время ее исполнения для текущего состояния регистров. Можно смело в любой момент менять значение frmT - это такт кадра. Эмулятор корректно обработает изменение и продолжит исполнение с указанного такта.
Из магнитофонных форматов поддерживаются TAP, CSW, TZX и WAV.