ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Cвежая версия 215:
- интерфес девайса изменен, реализована схема IORQGE, девайсы которые выше в списке имеют больший приоритет;
- переписаны объекты памяти и ULA, ULA теперь слушает только порт #FE. Переключение видеостраниц производится в Memory
- в целях оптимизации cpuTact теперь не передается в обработчики шины, кому нужно могут взять из cpu.Tact (+5%)
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Свежая версия 216:
- Исправлен тайминг BIT X,(IX+drel), нарушенный при починке этой команды в версии 214. Баг сильно влиял на мультиколор в ZX Time. (спасибо [bETA]mEN)
версию 215 удалил
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Свежая версия 217:
- удалена блокировка шины AY'ком, т.к. это блокировало порт PROFI #DFFD
- добавлено сохранение размеров окна в реестр
- небольшие оптимизации памяти
Последний раз редактировалось ZXMAK; 23.09.2011 в 10:25.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Хочу реализовать ULA для оригинального спектрума с contended memory и snow effect, бордюрный мультиколор работает, а вот аттрибутный никак не хочет
Сделал ревизию всему коду Z80 на предмет таймингов, все вроде верно, но аттрибутный мультиколор плывет. Кто-то знает как работает contended memory?
Пробовал анализировать спектакулятор, получается какая-то ерунда, например инструкция ADD A,(IX+0):
- код DD8600,
- время выполнения инструкции 19T (4, 4, 3, 5, 3)
Выполняю ее на такте 14362 (начало contended области судя по поведению), вычисления по шагам:
4T: 14362 + 4 + 6 -> 14372 (задержка 6T на чтении опкода DD)
4T: 14372 + 4 + 4 -> 14380 (задержка 4T на чтении опкода 86)
3T: 14380 + 3 + 4 -> 14387 (задержка 4T на чтении опкода 00)
5T: 14387 + 5 -> 14392 (задержки нет, т.к. IX смотрит на C000, которая не contended)
3T: 14392 + 3 -> 14395 (задержки нет, т.к. к памяти не обращаемся)
в спектакуляторе-же получается 14412! Для такого значения нужны задержки в 7T! Откуда???
Это ошибка тайминга спектакулятора или я не понял идею contended memory?
С опкодом DD00 на такте 14362 вообще бред - в спктакуляторе DD съедает 0 тактов, а 00 целых 18 тактов! Откуда???
2) И еще вопросик - SjAsm позволяет компилить короткие фрагменты, без директив и т.п.? Думаю вставить, чтобы было удобно отлаживать![]()
Последний раз редактировалось ZXMAK; 24.09.2011 в 19:26.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
А зачем реверсить спектакулятор, кода есть эмуляторы с открытым исходным кодом, в которых реализованы "родные" машины. Например fuse http://fuse-emulator.sourceforge.net/#Source
IT FOUND A VOICE... NOW IT NEEDS A BODY
как выяснилось, все немного сложней - задержки добавляются не только при доступе к памяти и IO, но также еще на дополнительных внутренних циклах внутри инструкций
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Как оказалось не предоставляет. У него какой-то свой формат отладочных символов, совместимый только с собственным отладчиком sdcdb. Причем sdcdb кроме mcs51 больше ничего отлаживать не умеет.
gdb-z80 поддерживает только COFF. Надо конвертилку писать.
---------- Post added at 19:22 ---------- Previous post was at 17:47 ----------
Все, дописал свой z80-gdbserver. Ассемблер позволяет отлаживать в полном объеме (бряки на выполнение, чтение/запись памяти, пошаговое выполнение, чтение регистров). Использует Z80CPU из ZXMAK2.EXE.
http://github.com/atsidaev/z80gdbserver
Всё, что требуется от эмулятора - это реализовать интерфейс
так что реализовать его в виде плагина проще простого.Код:public interface IEmulator { Z80CPU GetCPU(); void Pause(); void Run(); void SetBreakpoint(Breakpoint.BreakpointType type, ushort addr); void RemoveBreakpoint(Breakpoint.BreakpointType type, ushort addr); event Breakpoint.BreakPointEventHandler OnBreakpoint; }
Осталось запилить поддержку отладочной информации sdcc, и можно будет удобно отлаживать любой сишный (а в перспективе и любой, для которого есть компилятор) код.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)