Quote:
Это лишнее. Слишком накладно инициализировать таймер каждую команду.
А вы видели как реализован таймер?... Я не думаю что накладно, да и я проверял осуществляются ли задержки команд, т.е. вкладывается ли реализация команды в свое кол-во циклов. На нармальной скорости многие команды вкладываются в предоставленные им циклы. И это мне достаточно! Я не стремлюсь сделать идеал! Как в том анекдоте "Грузинская школа:Сколко будетъ дважды-два? ...правылно Гоги, гдэ-то семъ, восемъ, иногда дэвять..."
Quote:
Не совсем понятна необходимость отслеживать РС, ведь программа выполняется кодом, скомпилированным Дельфи. Всё равно по адресу РС реальной программы/данных нет.
В модуль реализован (УЖЕ!) эмулятор который использует ЭТИ ЖЕ команды - ЭТО ДЛЯ НЕГО !
т.е. вот так вот:
Code:
........................
// Выбор и запуск команды
Case com_ of
{0x}
$00:NOP; $01:LXIB(w1); $02:STAXB; $03:INXB; $04:INRB;
$05:DCRB; $06:MVIB(b2); $07:RLC; $08:NOP08; $09:DADB;
$0A:LDAXB; $0B:DCXB; $0C:INRC; $0D:DCRC; $0E:MVIC(b2);
.................
Quote:
RegisterWiewOfCommand;
Quote:
Это я не понял, но "вид" в переводе на английский - View.
1.Уже исправленно.
Ну неумею я как-то сразу внимательно и без ошибок!
2. Вызывает процедуру нужен ли вывод Регистров в форму... проверяет флаг включения вывода регистров в форму после каждой команды... выводит в форму...
ну иль не выводит...
просто возврат!
Quote:
И ещё раз: realtime-задержки под виндой - это фикция. Твой процесс не будет выполняться эксклюзивно. Поэтому во всех эмуляторах работа в течение какого-то количества тактов идёт на максимальной скорости, а по достижении некоторого количества тактов сравнивается реальное время и эмулируемое, после чего делается задержка на разницу этих времён. Большее количество тактов приводит к рывкам в эмуляции, но т.к. задержка более длинная, больше вероятность того, что винда более точно выполнит эту задержку. И наоборот, если задержка короткая, то винда не гарантирует её точность, и как следствие - также появляются рывки в эмуляции. Максимальная точность таймера в винде (а это Multimedia Timer) 1 миллисекунда, что при частоте 2МГц соответствует 2000 тактов. Т.е. меньше, чем 2000 тактов за раз, эмулировать смысла нет.
Честно говоря я очень слабо понял о чем речь... видимо еще "не доплыл" до этого...
и опять же : а ВЫ видели процедуры зажержки какие я использую?... И если они даже очень приблизительны, НО в каждой команде они, я думаю они сами будут покрывать "свои грехи" т.е.погрешности так как программы это сотни и тысячи таких команд... Вообщем у меня рывков не замечается т.е. ЭТО то что нужно!
Мой встроенный эмулятор, это для того чтобы можно было испытовать программы в "Приблизительном виде", т.е он и не должен быть проффесиональным, а для запуска и ИСПОЛЬЗОВАНИЯ можно ведь использовать и проффесиональные эмуляторы, ну например, "Башкирия"
Вообщем все пока так! А делее видно будет! Тут главная проблема что ПЗУ не запускается! Вот где головняк! А это все мелочи.