С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
обновил до 213 версии, значительных изменений нет - исправлено сохранение образов и добавлена поддержка командной строки
все так и есть, код не обфусцирован, можно без проблем смотреть Исходники ZXMAK2 пока не выкладывались, большая часть кода (это почти весь движок, если не считать BusManager а также модификаций и фиксов необходимых для него) основана на ZXMAK.NET, исходники которого можно скачать по ссылке в моей подписи.
ZEK, а что ты за девайс делаешь?
Последний раз редактировалось ZXMAK; 21.09.2011 в 12:45.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
1. Менеджер памяти для P1024 v1.4 и KAY 1024 SL4 (для отладки портируемого HeGluk, и хочю железку сделать для возможности нормального запуска cp/m на KAY), вообще нет эмуляторов которые правильно эмулируют менеджер памяти KAY
2. Видеокарту Lethargeek, хочю добить на десятилетие идеи.
3. SD читалка/писалка по КоЮ, в принципе она есть в рамках первого движка ZXMAK, хочю допилить что бы вместо карты можно было юзать каталог.
4. Контролер клавиатуры Caro с флешем и управлением через чтение порта FE (опять же для порта HeGluk)
5. Проверять разные идейки... типо сопроцессоров на базе AVR, эмуляторы ВГ93, DMA USC
Вообще круто было (розовая мечта, не подкрепленная реальной необходимостью) бы если эмулятор мог на сокете реализовывать протокол gdb, тогда можно было с удобством песюка, компилить софт при помощи sdcc и отлаживать в среде Code:Blocks
Последний раз редактировалось ZEK; 21.09.2011 в 13:55.
точно такая же мысль возникла
Ну или просто сделать интерфейс для добавления своего дебагера в систему заместо штатного (в котором, кстати, под wine окно дизассемблера не рендерится почему-то). Для этого же достаточны только возможность установить из плагина брякпоинт + получить доступ к экземпляру Z80CPU и девайсу-менеджеру памяти
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
KAY это не PROFI случайно? В эмуляторе есть девайсы ULA и Memory для PROFI+ 1024, не уверен в том что они правильно реализованы, доков не осталось. Вот как они сейчас работают:
Порт CMR0 #7FFD - дешифрация по (ADDR & 0x8002)==0x0000
Порт CMR1 #DFFD - дешифрация по (ADDR & 0xFFFF)==0xDFFD
1) При сбросе включается shadow ROM, отключается как только чтение инструкции (M1) произойдет из области 0x4000-0xFFFF (такое поведение было реализовано в первом ZXMAK методом подбора, т.к. информация о ральном железе отсутствовала).
2) CMR0 #7FFD аналгогичен пентагону 128
3) CMR1 #DFFD:
sega = CMR1 & 7
norom = (CMR1 & 0x10) != 0;
sco = (PortDFFD & 0x08) != 0;
scr = (PortDFFD & 0x40) != 0;
cpm = (PortDFFD & 0x20) != 0;
ds80 = (PortDFFD & 0x80) != 0;
Сегментация:
девайс ULA PROFI+ использует бит ds80 для включения профи видеорежима и бит выбора экрана из #7FFD для выбора страниц видеопамяти:Код:protected override void UpdateMapping() { m_lock = (Port7FFD & 0x20) != 0; int ramPage = Port7FFD & 7; int romPage = (Port7FFD & 0x10) >> 4; if (SEL_TRDOS) // trdos or 48/128 romPage = 2; if (SEL_SHADOW) romPage = 3; int sega = PortDFFD & 7; bool norom = (PortDFFD & 0x10) == 0x10; bool sco = (PortDFFD & 0x08) == 0x08; // selectors RAM gates bool scr = (PortDFFD & 0x40) == 0x40; // !??CMR0.D3=1??! bool cpm = (PortDFFD & 0x20) == 0x20; //bool s80DS = (PortDFFD & 0x80) == 0x80; if (m_betaDisk != null) { m_betaDisk.SEL_PORTS = (!cpm && SEL_SHADOW) | ((Port7FFD & 0x10)==0); // TODO: 128K? rom has different port mapping: // #83=CMD // #A3=TRK // #C3=SEC // #E3=DAT // #3F=SYS } ramPage |= sega << 3; MapRead0000 = norom ? RamPages[0] : RomPages[romPage]; MapRead4000 = sco ? RamPages[ramPage] : RamPages[5]; MapRead8000 = scr ? RamPages[6] : RamPages[2]; MapReadC000 = sco ? RamPages[7] : RamPages[ramPage]; MapWrite0000 = norom ? RamPages[0] : m_trashPage; MapWrite4000 = MapRead4000; MapWrite8000 = MapRead8000; MapWriteC000 = MapReadC000; }
Можешь это проверить?Код:protected override void UpdateMapping() { base.UpdateMapping(); bool polek = (Port7FFD & CMR0_POLEK) != 0; m_profiMode = (PortDFFD & CMR1_DS80) != 0; _memoryCpmUlaBw = polek ? Memory.RamPages[0x06] : Memory.RamPages[0x04]; _memoryCpmUlaClr = polek ? Memory.RamPages[0x3A] : Memory.RamPages[0x38]; //_ulaMemory = polek ? Memory.RamPages[7] : Memory.RamPages[5]; }
CP/M пока не грузится из-за какой-то ошибки эмуляции ВГ93 - не читается сектор каталога диска... (см. #8231 - загрузка сектора в память по адресу #9000, после CALL #81C1 сектор должен быть прочитан, но этого не происходит)
хм, не слышал, а где подробности протокола посмотреть?
---------- Post added at 14:44 ---------- Previous post was at 14:32 ----------
доступ к экземпляру Z80CPU у девайсов есть - когда приходит вызов BusInit процессор можно получить через IBusManager.GetMainCpu(), сохранить в локальной переменной и юзать до вызова BusDisconnect. Менеджер памяти через FindDevice находится. С бряками сложней, нужно мусор в основном цикле разгрести, т.к. писалось второпях
А насколько сложный там протокол и чем его потестить можно?
А что за проблема с отображением дебагера? Ошибки в логе есть? Панели дизассемблера и данных полностью рисованные, код наспех был скопирован из сишного эмуля и в таком виде так и остался...
Последний раз редактировалось ZXMAK; 21.09.2011 в 15:51.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Жалко, что эмуль под .NET. Не охота ставить всякие довески.
дешифрацияю посмотри злесь: http://zx.clan.su/forum/11-46-1
---------- Post added at 17:26 ---------- Previous post was at 17:18 ----------
назначение битов #7FFD: http://zx.clan.su/forum/7-57-462-16-1257908619
назначение битов #1FFD: http://zx.clan.su/forum/7-57-463-16-1257908706
Последний раз редактировалось ZXMAK; 21.09.2011 в 18:00.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)