Alexander Makeev,
Можно в эмуль воткнуть нормальный отладчик типа STS?
Вид для печати
Alexander Makeev,
Можно в эмуль воткнуть нормальный отладчик типа STS?
Какие то действия дополнительные надо предпринимать что бы для внешнего плагина вызывался IConfigurable.SaveConfig ? Или еще не сохраняется?
Нет, достаточно реализовать интерфейс и конфигурация будет сохраняться, например у BetaDiskInterface таким образом сохраняются настройки LogIO и NoDelay в виде аттрибутов + настройки по каждому диску в виде отдельных нодов на каждый диск.
Только не забывай что настройки не напрямую на диск сохраняются. Вначале они сохраняются из песочницы во временный XML в памяти, потом этот XML загружается в рабочую машину, откуда и сохраняется на диск. Поэтому если устройство не умеет корректно сохраняться и загружаться, то его данные до файла не доедут :)
Вот код для теста
Скрытый текст
Код:
using ZXMAK2.Engine.Interfaces;
using ZXMAK2.Logging;
namespace ClassLibrary1
{
public class TestIConfigurable : IConfigurable, IBusDevice
{
Log log;
public TestIConfigurable()
{
log = Logger.GetLogger();
}
public void LoadConfig(System.Xml.XmlNode itemNode)
{
log.LogWarning("Load Config");
}
public void SaveConfig(System.Xml.XmlNode itemNode)
{
log.LogWarning("Save Config");
}
public void BusConnect()
{
log.LogWarning("Bus connect");
}
public void BusDisconnect()
{
log.LogWarning("Bus disconnect");
}
public void BusInit(IBusManager bmgr)
{
log.LogWarning("Bus init");
}
public int BusOrder { get; set; }
public BusCategory Category { get { return BusCategory.Other; } }
public string Description { get { return "Test"; } }
public string Name { get { return "Test"; } }
}
}
[свернуть]
Результат в логе
Скрытый текст
Warning 08:22:23.145 Load Config
Warning 08:22:23.164 Bus init
Warning 08:22:23.242 Bus connect
Warning 08:22:25.413 Bus disconnect
[свернуть]
Ну и соответственно точка останова не срабатывает в SaveConfig
да и турбо режим добавить с ручной настройкой частоты, желательно до 21мгц...больше незачем просто...
механизм своих контролов для настройки пока кривоват, сейчас для девайса ищется UserControl наследующий интерфейс IConfigScreenControl с методом Init принимающим параметр с типом конкретного девайса.
Тут есть проблема в том что если девайс наследуется от другого девайса и у обоих свои контролы для настройки, то контрол может быть выбран от предка... Так что это нужно будет переделывать.
честно говоря задумывалось что конфиг будет хранить только конфигурацию железа. Но я попробую добавить возможность девайсам инициировать сохранение конфигурации.
встроенный дебаггер есть почти с первых версий - Tools->Debugger
Есть также возможность подключать сторонние дебаггеры, для этого нужно реализовать девайс с интерфесом IJtagDevice. Тут уже выкладывали девайс для использования GDB.
Т.е. можно подключаться сторонним отладчиком прямо к эмулятору и отлаживать код внутри эмулятора.
эмулятор предоставляет интерфейс IDebuggable для отладчиков, этот интерфейс дает возможность:
- останавливать/запускать программу
- читать/писать память
- выполнять программу пошагово
- задавать точки останова
- получать строку с ассемблерной мнемоникой инструкции (дизассемблер)
- получать число тактов которое потребуется для выполнения инструкции
Так что подключить можно все что подключается :biggrin:
точнее, плагин к эмулятору - это https://github.com/atsidaev/z80gdbserver/tree/plugin
самые последние изменения еще не пушил, но пользоваться и так уже можно
http://zx.pk.ru/showpost.php?p=418985&postcount=116 тут подробней
Плиз мне готовую сборку чтоб работала. Если можно, и описаловку на русском.
вот нарыл любопытный пример Debug Engine на C# для отладчика Visual Studio. Можно сделать такой Debug Engine и отлаживать код в Visual Studio 2010 :)
Останется только ASM и C компилятор для Z80 к студии прикрутить и будет самая навороченная среда для разработки и отладки спектрум софта :D
Блин, мне надо для реалтайма отладчик. С возможностью трассера недокументировнных команд, отгрузки на диск-ленту. Брекпойнты прозрачные. И возможность замены ПЗУ на лету.
встроенный отладчик полностью поддерживает и дизасмит все недокументированные команды (помечаются звездочкой для удобства различия), показывает их длительность в тактах и имеет полностью прозрачные брейкпоинты.
Возможность загрузки/выгрузки блоков памяти можно добавить.
http://img225.imageshack_.us/img225/...k2debugger.png
обновил до версии 250:
- Появился Aspect Ratio Correction, теперь высокие разрешения расширенных видеорежимов (например 512x240 и 640x200) выглядят и ресайзятся при включенном Keep Proportion нормально (раньше были сплюснутые);
- Добавил сохранение блоков памяти из отладчика (по контекстному меню);
- Добавлена возможность выбирать готовые конфигурации машин (смотри кнопку Wizard в диалоге Machine Settings). Конфигурации загружаются из файла Machines.PAK
Alexander Makeev, в режиме PROFI 5.xx встроенный Тест быстродействия показывает 1.15. На реале без турбо 1.50.
тест производительности на 4ках и 5ках указывает производительность относительно профи 3.2. на самом профи 3.2 тест показывает относительно не помню чего...однако да, в эмуляторе тест с пентагоновским интом показывает меньше прироста, чем на реале с профинским интом. у меня 5.02 без доработок, всё пашет прекрасно конечно, но почему то да, если в анрыле например выставить инт пня и зайти в тест, он покажет меньше прироста чем на реале...
а сколько тактов в кадре у профи?
А чего, работа над эмулятром уже закончилась? Жаль. :-( Надеялся увидеть в нем поддержку ATM2 и zx-EVO с HDD.
Moro, автор эмулятора не машина что-бы штамповать новые выпуски один за другим, может быть у него какие-то проблемы или личные дела, может просто хочет отдохнуть, а может во всю работает над новым выпуском :)
так и есть, хочется отдохнуть, потихоньку делаю ATM2, реализован текстовый режим, сейчас вопрос за менеджером памяти, сильно он запутанный у ATM2
Alexander Makeev, мне (и думаю не тоько мне) в эмуляторе интересна эмуляция клона спектрума - дельта с.
хочу спросить, почему в конфигурации эмулятора можно выбрать только ULA от дельты ?
можете добавить пзу от дельты в архив roms для эмулятора ?
а то если выбрать конфиг дельты мы получаем при запуске эмулятора снизу надпись
С 1982 sinclair research ltd
вместо С 1989 Delta.
приходится вручную подменять биос, вместо 48к ставить биос от дельты и переименовывать его.
И о пойманных глюках. При попытки загрузить Renegade (1987)(Imagine Software)(128k)[SpeedLock 3].tzx получил ошибку:
Цитата:
Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.
************** Текст исключения **************
System.ArgumentOutOfRangeException: Значение "14" недопустимо для "Value". "Value" должно лежать в диапазоне от 'minimum' до 'maximum'.
Имя параметра: Value
в System.Windows.Forms.ProgressBar.set_Value(Int32 value)
в System.Windows.Forms.ToolStripProgressBar.set_Valu e(Int32 value)
в ZXMAK2.Controls.TapeForm.timerProgress_Tick(Object sender, EventArgs e)
в System.Windows.Forms.Timer.OnTick(EventArgs e)
в System.Windows.Forms.Timer.TimerNativeWindow.WndPr oc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5448 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
ZXMAK2
Версия сборки: 2.5.0.0
Версия Win32: 2.5.0.0
CodeBase: file:///G:/Emulator/ZX%20Spectrum/ZXMAKNET2/ZXMAK2.exe
----------------------------------------
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5446 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5447 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.DirectX.Direct3D
Версия сборки: 1.0.2902.0
Версия Win32: 9.05.132.0000
CodeBase: file:///C:/Windows/assembly/GAC/Microsoft.DirectX.Direct3D/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Direct3D.dll
----------------------------------------
Microsoft.DirectX.DirectInput
Версия сборки: 1.0.2902.0
Версия Win32: 5.04.00.2904
CodeBase: file:///C:/Windows/assembly/GAC/Microsoft.DirectX.DirectInput/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectInput.dll
----------------------------------------
Microsoft.VisualC
Версия сборки: 8.0.0.0
Версия Win32: 8.00.50727.4927
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualC/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualC.dll
----------------------------------------
Microsoft.DirectX
Версия сборки: 1.0.2902.0
Версия Win32: 5.04.00.2904
CodeBase: file:///C:/Windows/assembly/GAC/Microsoft.DirectX/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.dll
----------------------------------------
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5448 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Microsoft.DirectX.DirectSound
Версия сборки: 1.0.2902.0
Версия Win32: 5.04.00.2904
CodeBase: file:///C:/Windows/assembly/GAC/Microsoft.DirectX.DirectSound/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectSound.dll
----------------------------------------
System.Xml
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.DirectX.Direct3DX
Версия сборки: 1.0.2911.0
Версия Win32: 9.12.589.0000
CodeBase: file:///C:/Windows/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2911.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
----------------------------------------
System.Security
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Security/2.0.0.0__b03f5f7f11d50a3a/System.Security.dll
----------------------------------------
Accessibility
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
System.Configuration
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Data.SqlXml
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Data.SqlXml/2.0.0.0__b77a5c561934e089/System.Data.SqlXml.dll
----------------------------------------
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.
Например:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.
не воспроизвелось, но принчина ошибки понятна, не синхронизирован доступ к состоянию магнитофона при обновлении прогрес бара в окне магнитфона, исправлю. Пока можно просто закрывать окно магнитофона на время загрузки
кстати все что после "*** Загруженные сборки ***" можно не копировать - там нет полезной информации.
Мне тоже интересно но
это скорей всего никому не нужно и под дельту нет особого софта
У разных дельт разные времянки
А то что сейчас в эмуле вообще еле похоже на ULA дельты. Нужно писать прогу для измерения всех галюнов. На дельте какое то глючное замедление портов а так же дельтовский Contended Memory.
Так же нет фоток работы такой же дельты (есть подозрения что и среди них будет разница).
Так зачем мешать автору писать эмуль каким то глючным клоном?
Вот приложу дельтовсий ром.Цитата:
можете добавить пзу от дельты в архив roms для эмулятора ?
http://zx.pk.ru/attachment.php?attac...1&d=1318160619
Мое мнение тоже похожее, не надо отвлекаться на явные клоны - Дельта, Ленинград и иже с ними. Оставить Профи, АТМ2, Скорпион, Пентагон, Кворум и фирменные модели. Ну и конечно желательно Пентево добавить. Но это все конечно на усмотрение автора.
Не совсем так.
На дельту действительно не стоит отвлекаться, т.к. она отличается от фирменного спектрума только надписью на экране. Правда были некоторые дельты с зашитым русским шрифтом, но .... да ну ее нафиг.
А ленинград впринципе можно эмулировать, у него свои времянки.
Хотя тоже особой нужды в его эмуляции нет :)
А вот Профи, АТМ2, Скорпион, Пентагон действительно нужны в первую очередь.