Тема: Эмулятор Олега Одинцова
Эмулятор Олега Одинцова работает под Windows-10? Никто не пробовал?
Персональный компьютер "Агат" - технические беседы (является частью agatcomp.su / agatcomp.ru) Как зарегистрироваться?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
ПЭВМ "Агат" 7-9: Форум → Эмуляторы и утилиты для PC → Эмулятор Олега Одинцова
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Эмулятор Олега Одинцова работает под Windows-10? Никто не пробовал?
Последний релиз эмулятора (1.27) собирал я, и отладка и сборка шла именно под Win 10. Так что "на моей машине работает." ;)
Последний релиз эмулятора (1.27) собирал я, и отладка и сборка шла именно под Win 10. Так что "на моей машине работает." ;)
Благодарю!
Вышла новая версия: Агат Эмулятор 1.28.
Исправлена печать в TIFF, текстовые файлы, и файлы без обработки.
Добавлено управление созданием новых страниц при печати в TIFF и принтер Windows.
Добавлены пояснения в раздел справки, посвящённый эмуляции принтера.
Добавлена поддержка .pds-образов, традиционно используемых в эмуляции ПЭВМ "Правец".
При запуске ассоциированных образов дисков эмулятор теперь открывается в оконном режиме, а не в полноэкранном.
Исправлена палитра rgb-monitor-16.pal для поддержки "яркого чёрного" цвета.
Шрифт PRAVETZ8A.FNT заменён на три разновидности шрифтов, встречающихся в Правцах: болгарский шрифт pravetz8a8c_bg.fnt, шрифт для экспортировавшихся в СССР машин pravetz8a8c_su.fnt, и шрифт, предположительно встречавшийся в Правцах ташкентского завода Вариант pravetz8a8c_uz.fnt.
Загрузить новую версию можно на странице проекта в SourceForge.
Планируются ли исправления несоответствий из поста #18 (третий и четвертый абзацы) ?
Планируются ли исправления несоответствий из поста #18 (третий и четвертый абзацы) ?
Я считаю, что первоочередная задача эмулятора -- максимально достоверно исполнять софт, написанный для оригинальной машины. Если существует софт, для которого отличие тактовой частоты на 2% на что-то влияет... ну, можно заморочиться. Просто, на мой взгляд, в эмуляторе сейчас есть более серьёзные отклонения. Например, в текстовых режимах знакоместа сейчас в ширину 8 пикселей, а в оригинале 7...
Касательно тактовой частоты: в Агатах не было часов реального времени. Что же измеряет "измерялка?" Отношение тактовой частоты к частоте NMI? Эмулятор устроен так, что движок "тактовая частота" в настройках изменяет все частоты, в т.ч. частоту прерываний. Это делается, чтобы можно было ускорить исполнение программ, а сами программы ничего бы не заметили. Вот "измерялка" тоже не замечает, как и было задумано.
Возможен другой подход к настройке тактовой частоты -- она могла бы эмулировать "турбированный агат," у которого частота процессора увеличена, а частота NMI оставлена 50 герц. Но в Агате много других частот, как быть с ними? Что делать с платами расширения? Если бы были реальные турбированные прототипы -- можно было бы эмулировать их, чтобы софт, для них написанный, работал "как раньше." Но я про такие не слышал, а эмулировать каку-то гипотетическую фантастическую машину -- немного за рамками проекта.
Вот если Вы сделаете турбо-Агат, не вижу препятствий к включению его поддержки в эмулятор. :D
SnakE, и прототип турбированный уже есть, и софт, использующий таймерные прерывания, тоже есть (измерялка такта ЦП, измерялка скорости заполнения метра памяти с визуализацией в ЦГВР). На то они и таймерные, что дают фиксированные хронометки. Хочу еще добавить для поллинга состояние NMI и IRQ в старшие биты $C067, а в $C066 номер текущей растровой строки.
Прошу о правильной поддержке фичи в эмуляторе потому, что не только писать (для АГАТа) и компилить на писи намного удобнее, но и отлаживать: на реале надо выдернуть бздуху, стереть, прошить, обратно воткнуть, и так много-много раз... Здесь, как-раз, эмулятор - очень и очень востребованная штука.
ХМ... Я так смотрю, некоторые из нас энергично пользуются компиляцией внутри виртуалки?
Чем компилируете ? "Ассемблер" из состава ИКП ?
Хочу сделать компилятор для PC , который бы понимал именно агатовские файлы на входе и генерял их на выходе. Вроде сложного ничего не видно, тем более полезно, если будет востребовано.
ХМ... Я так смотрю, некоторые из нас энергично пользуются компиляцией внутри виртуалки?
Чем компилируете ? "Ассемблер" из состава ИКП ?Хочу сделать компилятор для PC , который бы понимал именно агатовские файлы на входе и генерял их на выходе. Вроде сложного ничего не видно, тем более полезно, если будет востребовано.
Да, я как 30 лет назад, использую ассемблер из ИКП. Беда в том, что файлы больше где-то 2к строк не влезают в буфер компилятора, и объектный файл он создать более 6-7КБ не может.
Понятное дело, написан он был под 7-ку...
Поэтому у меня сейчас 8 файлов текстовых и компилировать приходится по частям за три подхода переставляя DSECT/DEND
Далее приходится грузить бейсик ибо большой объектный файл просто невозможно загрузить в среде компилятора-места нет. Умирает все при загрузке.
В бейсике загружаю части объектного файла и тогда уже запускаю.
Конечно, пока программка маленькая, таких сложностей нет.
А я за кросс-компиляцию. Вот довольно удобный ассемблер http://www.home.earthlink.net/~hxa/
Вот довольно удобный ассемблер http://www.home.earthlink.net/~hxa/
Алексей, ты разобрался в нем с перекодировкой символьных/строковых констант? Покажи, пожалуйста, исходники для примера.
Я там не разобрался с русскими буквами. (Ну то есть что надо делать - понятно: таблицу перекодировки писать. Но еще руки не дошли.)
А простейший мэппинг символов из 00-7F в 80-FF выглядит так:
.xlate "\$00-\$7F=\$80-\$FF"
MESSAGE .str "TEST MESSAGE"
1) А кто нибудь пользуется такой фичей ассемблера, как "П" - Перемещаемые файлы ?
Это ведь и было сделано ради раздельной компиляции и обхода ограничений на объёмы текстов/бинарей.
2) Я когда-то общался с Олегом насчёт того, что в его эмуляторе открытый образ оказывается заблокированным для других программ. Он тогда как-то не очень ясно ответил в том смысле, что для его задач это не проблема.
Суть в том, что когда вы открываете образ диска в эмуляторе, вы уже не можете его модифицировать, например, из dos33c2. Для игр это не существенно, но если эмулятор используется впараллель с другими прогами (например, если вы пишете текст программы в обычном PC-редакторе, а потом компилируете внутри виртуалки), то ведь удобнее, чтобы можно было не закрывая "ассемблер" редактировать текст ?
Я, например, работаю так (отдельные, постоянно открытые программы):
1) Набор программы в NEdit ( https://ru.wikipedia.org/wiki/NEdit )
2) Импорт в образ через dos33c2
3) Компиляция в эмуляторе (+ экспорт таблицы меток в отдельный файл, для эмулятора на шаге 5)
4) Копирование бинарника в образ с остальными исполняемыми файлами (если компиляция и работа на разных образах) (вторая копия, чтобы не переходить между каталогами)
5) Отладка в эмуляторе (вторая копия эмулятора, чтобы не перезагружаться)
Т.е. я не перезагружаю эмуляторы и не меняю рабочих каталогов у открытых dos33c2 - так меньше повторяющихся действий.
2Snake: Есть ли планы убрать монопольное использование образов ?
2All: Как у вас построен flowchart разработки программ ?
А возможно ли повысить тактовую частоту процессора более чем на 500%?
Через настройки -- нет, сейчас такого не предусмотрено. Но если зажать кнопку "контекстное меню" на клавиатуре, эмуляция начинает исполняться с максимально возможной скоростью, без задержек. Не слишком удобно для вашей цели, но сможете, по крайней мере, оценить выигрыш.
Ещё в комплекте системы "The Best" есть ассемблер "ASM+" -- существенно ускоренная версия ассемблера ИКП за счёт использования сортированной таблицы символов. Ну и другие плюшки там есть, типа использования дополнительной памяти 9-ки, так что исходник может занимать всю память с 2000 до BFFF ЕМНИП. Но редактора там в комплекте нет, исходник надо грузить в память вручную перед ассемблированием.
SnakE, и прототип турбированный уже есть, и софт, использующий таймерные прерывания, тоже есть (измерялка такта ЦП, измерялка скорости заполнения метра памяти с визуализацией в ЦГВР). На то они и таймерные, что дают фиксированные хронометки.
Эмулятор на то и эмулятор, чтобы полностью изолировать эмулируемую систему от хоста. И таймерные прерывания эмулируются так, чтобы возникали раз в 20000 тактов процессора. Чтобы в случае, если хост слабый и не успевает отрабатывать такты со 100% скоростью, или если хост почему-то исполняет команды быстрее нужного -- эмулируемая программа всё равно думала бы, что она работает на обычном железном агате с железным процессором и железным тактовым генератором, который не спешит и не отстаёт. Да, нужно не раз в 20000, а раз в 20400, но это не очень большая ошибка. Наверное.
Честно говоря, я не знаю, когда и зачем была добавлена настройка "тактовая частота." По названию можно было бы подумать, что эмулируется изменение частоты тактового генератора процессора. Но градуировка шкалы в процентах больше похожа на изменение скорости эмуляции. Судя по коду, справедливо второе -- изменяется задержка между эмулируемыми тактами процессора, а все остальные параметры рассчитываются через такты, без учёта реального времени.
В Вашем случае, строго говоря, нужен не эмулятор Агата, а эмулятор Вашего прототипа. Который очень похож на Агат, а значит, должно быть достаточно легко встроить нужный режим в эмулятор. Например, можно имеющийся движок переименовать из "Тактовая частота" в "Скорость эмуляции", и добавить ещё один движок "Тактовая частота", который бы задавал тактовую частоту процессора в мегагерцах. Заметьте, даже в этом случае "таймерные" прерывания будут эмулироваться без привязки к часам реального времени, и "измерялка" будет показывать в точности тактовую частоту, заданную в настройках.
в эмуляторе открытый образ оказывается заблокированным для других программ
Поменять режим, в котором открывается файл, ничего не стоит. Будет ли это работать -- другой вопрос. Нужно смотреть, как написана эмуляция дисковода. Если используется прямое чтение секторов без буферизации, должно заработать без других изменений со стороны эмулятора.
2All: Как у вас построен flowchart разработки программ ?
В смысле workflow?
Я в notepad пишу (хотя есть notepad++, но привычку не победить)
Потом из FAR вызываю HXA и дальше цепляю образ к эмулятору (если это прошивка для ПЗУ).
С файлами я сначала пробовал связку из собственной утилиты, добавлявшей адрес загрузки и размер к бинарнику, и CiderPress. Но теперь, когда разобрался с dos33c2, думаю поправить утилиту, чтобы она генерила сразу .FIL
Через настройки -- нет, сейчас такого не предусмотрено. Но если зажать кнопку "контекстное меню" на клавиатуре, эмуляция начинает исполняться с максимально возможной скоростью, без задержек. Не слишком удобно для вашей цели, но сможете, по крайней мере, оценить выигрыш.
Ещё в комплекте системы "The Best" есть ассемблер "ASM+" -- существенно ускоренная версия ассемблера ИКП за счёт использования сортированной таблицы символов. Ну и другие плюшки там есть, типа использования дополнительной памяти 9-ки, так что исходник может занимать всю память с 2000 до BFFF ЕМНИП. Но редактора там в комплекте нет, исходник надо грузить в память вручную перед ассемблированием.
Проверил. На 500% компиляция 3 минуты 20 сек. с зажатой клавишей 1мин. 40 сек, т.е. в два раза быстрее на моем компе.
На работе 40 секунд, т.е. в 5 раз быстрее. Дома видно дрянь какая-то сидит и тормозит комп.
Хорошо бы галочку где-то сделать, чтобы клавишу эту все время не держать))
С ASM+ боюсь не подружусь. Привык уж в ИКП все делать.
1) А кто нибудь пользуется такой фичей ассемблера, как "П" - Перемещаемые файлы ?
Это ведь и было сделано ради раздельной компиляции и обхода ограничений на объёмы текстов/бинарей.
Читал об этом, не очень понял и не пользуюсь. Все хотел разобраться, да руки не доходят.
В эмуляторе 1.28 и 1.29 версий не удается максимально "разогнать" Агат кнопкой контекстной справки. Скорость примерно как при 500%.
Еще есть баг, если в отладчике набрать "FFFA" и дважды нажать ентер, то случается нехорошая ошибка и эмулятор повисает.
Я не к тому что все плохо, как раз наоборот, эмулятор очень хороший. Но если возможность есть, исправить бы. Максимальный "разгон" очень нужен бывает.
При закрытии ВМ с конфигурацией "Softcard + CPM + 80COL" и "Saturn CPM" эмулятор вылетает с ошибкой. Такое ощущение, что проблема связана с эмуляцией Z80. С другими конфигурациями, не использующими Z80, такой проблемы не наблюдал. Windows 8.1 x64. Эмулятор 1.29.1. Точнее - скачан, как 1.29.1, но в его "О программе" указана версия 1.29.
Кроме того, при удержание кнопки на клавиатуре (при включении автоповтора) скорость эмуляции заметно возрастает. Например, в играх движущиеся элементы значительно увеличивают скорость. Конечно, в реальном "Агате" автоповтора нет, но, думаю, всё же эмулятор так вести себя не должен.
@AlexBel, я думаю, что первую проблему с вылетом я уже нашел и починил у себя локально. Она была связана с новой системой вывода данных на принтеры.
С ускорением надо разбираться. Возможно, связано с тем, что пишет @USR выше, может быть я что-то поломал в последних версиях.
Интересно, во встроенном дебагере эмулятора можно померять, сколько тактов ЦП занимает выполнение участка кода?
Просто в VICE (эмулятор Commodore), есть команда stopwatch, и если поставить в программе два брейкпойнта (в начале нужного куска и в конце), то можно в момент срабатывания первого сказать stopwatch reset, а во время срабатывания второго - просто stopwatch и тогда команда покажет число выполненных тактов ЦП.
Если кому интересно, я выложил версию эмулятора с экспериментальной графикой, которая:
- Рисует текстовые режимы со знакоместами 7х8 пикселей, как в оригинале
- Использует в качестве шрифтов ПЗУ знакогенераторов соответствующих систем без модификации
- Симулирует вывод на телевизор NTSC для эпловских режимов -- говорят, похоже получилось
Думаю, было бы удобно сделать сохранение состояния виртуальных машин на несколько слотов. Конечно, и одно сохранение - хорошо, но часто возникает потребность (у меня, во всяком случае) в нескольких сохранениях. И приходится либо создавать несколько однотипных машин (а из-за этого получается много лишних значков, что мешает), либо архивировать и восстанавливать сохранённые состояния. Неудобно, в общем. В других эмуляторах по несколько слотов, и не зря...
Всвязи с недавней проблемой запуска игры Lode Runner http://agatcomp.ru/Gamez/LodeRunner.shtml (не работали кнопки управления персонажем) появился вопрос - есть ли средства редактирования раскладки клавиатуры? Файл раскладки - обычный бинарник и определить, какой байт за что отвечает, можно либо копаясь в исходниках, либо экспериментально. Каких-либо штатных средств редактирования в эмуляторе я не нашёл. В пункте справки "Раскладка клавиатуры" информации по редактированию раскладки тоже не нашёл. Существует ли какое-нибудь, доступное среднему пользователю, средство редактирования раскладки или описание файла с раскладкой?
Вот, например, редактирование раскладки клавиатуры эмулятора blueMSX:
Чтобы отправить ответ, вы должны войти или зарегистрироваться
ПЭВМ "Агат" 7-9: Форум → Эмуляторы и утилиты для PC → Эмулятор Олега Одинцова
Форум работает на PunBB, при поддержке Informer Technologies, Inc