1

Тема: Эмулятор Олега Одинцова

Эмулятор Олега Одинцова работает под Windows-10? Никто не пробовал?

2

Re: Эмулятор Олега Одинцова

Последний релиз эмулятора (1.27) собирал я, и отладка и сборка шла именно под Win 10. Так что "на моей машине работает." ;)

3

Re: Эмулятор Олега Одинцова

SnakE пишет:

Последний релиз эмулятора (1.27) собирал я, и отладка и сборка шла именно под Win 10. Так что "на моей машине работает." ;)

Благодарю!

4

Re: Эмулятор Олега Одинцова

Вышла новая версия: Агат Эмулятор 1.28.

  • Исправлена печать в TIFF, текстовые файлы, и файлы без обработки.

  • Добавлено управление созданием новых страниц при печати в TIFF и принтер Windows.

  • Добавлены пояснения в раздел справки, посвящённый эмуляции принтера.

  • Добавлена поддержка .pds-образов, традиционно используемых в эмуляции ПЭВМ "Правец".

  • При запуске ассоциированных образов дисков эмулятор теперь открывается в оконном режиме, а не в полноэкранном.

  • Исправлена палитра rgb-monitor-16.pal для поддержки "яркого чёрного" цвета.

  • Шрифт PRAVETZ8A.FNT заменён на три разновидности шрифтов, встречающихся в Правцах: болгарский шрифт pravetz8a8c_bg.fnt, шрифт для экспортировавшихся в СССР машин pravetz8a8c_su.fnt, и шрифт, предположительно встречавшийся в Правцах ташкентского завода Вариант pravetz8a8c_uz.fnt.

Загрузить новую версию можно на странице проекта в SourceForge.

5

Re: Эмулятор Олега Одинцова

Планируются ли исправления несоответствий из поста #18 (третий и четвертый абзацы) ?

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

6

Re: Эмулятор Олега Одинцова

LeoN пишет:

Планируются ли исправления несоответствий из поста #18 (третий и четвертый абзацы) ?

Я считаю, что первоочередная задача эмулятора -- максимально достоверно исполнять софт, написанный для оригинальной машины. Если существует софт, для которого отличие тактовой частоты на 2% на что-то влияет... ну, можно заморочиться. Просто, на мой взгляд, в эмуляторе сейчас есть более серьёзные отклонения. Например, в текстовых режимах знакоместа сейчас в ширину 8 пикселей, а в оригинале 7...

Касательно тактовой частоты: в Агатах не было часов реального времени. Что же измеряет "измерялка?" Отношение тактовой частоты к частоте NMI? Эмулятор устроен так, что движок "тактовая частота" в настройках изменяет все частоты, в т.ч. частоту прерываний. Это делается, чтобы можно было ускорить исполнение программ, а сами программы ничего бы не заметили. Вот "измерялка" тоже не замечает, как и было задумано.

Возможен другой подход к настройке тактовой частоты -- она могла бы эмулировать "турбированный агат," у которого частота процессора увеличена, а частота NMI оставлена 50 герц. Но в Агате много других частот, как быть с ними? Что делать с платами расширения? Если бы были реальные турбированные прототипы -- можно было бы эмулировать их, чтобы софт, для них написанный, работал "как раньше." Но я про такие не слышал, а эмулировать каку-то гипотетическую фантастическую машину -- немного за рамками проекта.

Вот если Вы сделаете турбо-Агат, не вижу препятствий к включению его поддержки в эмулятор. :D

7

Re: Эмулятор Олега Одинцова

SnakE пишет:

Вышла новая версия: Агат Эмулятор 1.28.

А возможно ли повысить тактовую частоту процессора более чем на 500%?
Компилирую большой проект из 8-ми файлов, на 500% это десять-двенадцать минут.

http://c2n.me/3MSjdNW.png

8 Отредактировано LeoN (12-08-2017 16:06)

Re: Эмулятор Олега Одинцова

SnakE, и прототип турбированный уже есть, и софт, использующий таймерные прерывания, тоже есть (измерялка такта ЦП, измерялка скорости заполнения метра памяти с визуализацией в ЦГВР). На то они и таймерные, что дают фиксированные хронометки. Хочу еще добавить для поллинга состояние NMI и IRQ в старшие биты $C067, а в $C066 номер текущей растровой строки.
Прошу о правильной поддержке фичи в эмуляторе потому, что не только писать (для АГАТа) и компилить на писи намного удобнее, но и отлаживать: на реале надо выдернуть бздуху, стереть, прошить, обратно воткнуть, и так много-много раз... Здесь, как-раз, эмулятор - очень и очень востребованная штука.

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

9

Re: Эмулятор Олега Одинцова

ХМ... Я так смотрю, некоторые из нас энергично пользуются компиляцией внутри виртуалки?
Чем компилируете ? "Ассемблер" из состава ИКП ?

Хочу сделать компилятор для PC , который бы понимал именно агатовские файлы на входе и генерял их на выходе. Вроде сложного ничего не видно, тем более полезно, если будет востребовано.

10 Отредактировано USR (12-08-2017 16:34)

Re: Эмулятор Олега Одинцова

Voldemar0 пишет:

ХМ... Я так смотрю, некоторые из нас энергично пользуются компиляцией внутри виртуалки?
Чем компилируете ? "Ассемблер" из состава ИКП ?

Хочу сделать компилятор для PC , который бы понимал именно агатовские файлы на входе и генерял их на выходе. Вроде сложного ничего не видно, тем более полезно, если будет востребовано.

Да, я как 30 лет назад, использую ассемблер из ИКП.  Беда в том, что файлы больше где-то 2к строк не влезают в буфер компилятора, и объектный файл он создать более 6-7КБ  не может.
Понятное дело, написан он был под 7-ку...

Поэтому у меня сейчас 8 файлов текстовых и компилировать приходится по частям за три подхода переставляя DSECT/DEND

Далее приходится грузить бейсик ибо большой объектный файл просто невозможно загрузить в среде компилятора-места нет. Умирает все при загрузке.
В бейсике загружаю части объектного файла и тогда уже запускаю.

Конечно, пока программка маленькая, таких сложностей нет.

11

Re: Эмулятор Олега Одинцова

А я за кросс-компиляцию. Вот довольно удобный ассемблер http://www.home.earthlink.net/~hxa/

12

Re: Эмулятор Олега Одинцова

avivanov76 пишет:

Вот довольно удобный ассемблер http://www.home.earthlink.net/~hxa/

Алексей, ты разобрался в нем с перекодировкой символьных/строковых констант? Покажи, пожалуйста, исходники для примера.

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

13

Re: Эмулятор Олега Одинцова

Я там не разобрался с русскими буквами. (Ну то есть что надо делать - понятно: таблицу перекодировки писать. Но еще руки не дошли.)
А простейший мэппинг символов из 00-7F в 80-FF выглядит так:

            .xlate    "\$00-\$7F=\$80-\$FF"
MESSAGE     .str    "TEST MESSAGE"

14 Отредактировано Voldemar0 (13-08-2017 08:17)

Re: Эмулятор Олега Одинцова

1) А кто нибудь пользуется такой фичей ассемблера, как "П" - Перемещаемые файлы ?
Это ведь и было сделано ради раздельной компиляции и обхода ограничений  на объёмы текстов/бинарей.

2) Я когда-то общался с Олегом насчёт того, что в его эмуляторе открытый образ оказывается заблокированным для других программ. Он тогда как-то не очень ясно ответил в том смысле,  что для его задач это не проблема.

Суть в том, что когда вы открываете образ диска в эмуляторе, вы уже не можете его модифицировать, например, из dos33c2. Для игр это не существенно, но если эмулятор используется впараллель с другими прогами (например, если вы пишете текст программы в обычном PC-редакторе, а потом компилируете внутри виртуалки), то ведь удобнее, чтобы можно было не закрывая "ассемблер" редактировать текст ?

Я, например, работаю так (отдельные, постоянно открытые программы):
1) Набор программы в NEdit ( https://ru.wikipedia.org/wiki/NEdit )
2) Импорт в образ через dos33c2
3) Компиляция в эмуляторе (+ экспорт таблицы меток в отдельный файл, для эмулятора на шаге 5)
4) Копирование бинарника в образ с остальными исполняемыми файлами (если компиляция и работа на разных образах) (вторая копия, чтобы не переходить между каталогами)
5) Отладка в эмуляторе (вторая копия эмулятора, чтобы не перезагружаться)

Т.е. я не перезагружаю эмуляторы и не меняю рабочих каталогов у открытых dos33c2 - так меньше повторяющихся действий.

2Snake: Есть ли планы убрать монопольное использование образов ?

2All: Как у вас построен flowchart разработки программ ?

15

Re: Эмулятор Олега Одинцова

USR пишет:

А возможно ли повысить тактовую частоту процессора более чем на 500%?

Через настройки -- нет, сейчас такого не предусмотрено. Но если зажать кнопку "контекстное меню" на клавиатуре, эмуляция начинает исполняться с максимально возможной скоростью, без задержек. Не слишком удобно для вашей цели, но сможете, по крайней мере, оценить выигрыш.

Ещё в комплекте системы "The Best" есть ассемблер "ASM+" -- существенно ускоренная версия ассемблера ИКП за счёт использования сортированной таблицы символов. Ну и другие плюшки там есть, типа использования дополнительной памяти 9-ки, так что исходник может занимать всю память с 2000 до BFFF ЕМНИП. Но редактора там в комплекте нет, исходник надо грузить в память вручную перед ассемблированием.

LeoN пишет:

SnakE, и прототип турбированный уже есть, и софт, использующий таймерные прерывания, тоже есть (измерялка такта ЦП, измерялка скорости заполнения метра памяти с визуализацией в ЦГВР). На то они и таймерные, что дают фиксированные хронометки.

Эмулятор на то и эмулятор, чтобы полностью изолировать эмулируемую систему от хоста. И таймерные прерывания эмулируются так, чтобы возникали раз в 20000 тактов процессора. Чтобы в случае, если хост слабый и не успевает отрабатывать такты со 100% скоростью, или если хост почему-то исполняет команды быстрее нужного -- эмулируемая программа всё равно думала бы, что она работает на обычном железном агате с железным процессором и железным тактовым генератором, который не спешит и не отстаёт. Да, нужно не раз в 20000, а раз в 20400, но это не очень большая ошибка. Наверное.

Честно говоря, я не знаю, когда и зачем была добавлена настройка "тактовая частота." По названию можно было бы подумать, что эмулируется изменение частоты тактового генератора процессора. Но градуировка шкалы в процентах больше похожа на изменение скорости эмуляции. Судя по коду, справедливо второе -- изменяется задержка между эмулируемыми тактами процессора, а все остальные параметры рассчитываются через такты, без учёта реального времени.

В Вашем случае, строго говоря, нужен не эмулятор Агата, а эмулятор Вашего прототипа. Который очень похож на Агат, а значит, должно быть достаточно легко встроить нужный режим в эмулятор. Например, можно имеющийся движок переименовать из "Тактовая частота" в "Скорость эмуляции", и добавить ещё один движок "Тактовая частота", который бы задавал тактовую частоту процессора в мегагерцах. Заметьте, даже в этом случае "таймерные" прерывания будут эмулироваться без привязки к часам реального времени, и "измерялка" будет показывать в точности тактовую частоту, заданную в настройках.

16

Re: Эмулятор Олега Одинцова

Voldemar0 пишет:

в эмуляторе открытый образ оказывается заблокированным для других программ

Поменять режим, в котором открывается файл, ничего не стоит. Будет ли это работать -- другой вопрос. Нужно смотреть, как написана эмуляция дисковода. Если используется прямое чтение секторов без буферизации, должно заработать без других изменений со стороны эмулятора.

17

Re: Эмулятор Олега Одинцова

Voldemar0 пишет:

2All: Как у вас построен flowchart разработки программ ?

В смысле workflow?
Я в notepad пишу (хотя есть notepad++, но привычку не победить)
Потом из FAR вызываю HXA и дальше цепляю образ к эмулятору (если это прошивка для ПЗУ).
С файлами я сначала пробовал связку из собственной утилиты, добавлявшей адрес загрузки и размер к бинарнику, и CiderPress. Но теперь, когда разобрался с dos33c2, думаю поправить утилиту, чтобы она генерила сразу .FIL

18 Отредактировано USR (14-08-2017 16:44)

Re: Эмулятор Олега Одинцова

SnakE пишет:

Через настройки -- нет, сейчас такого не предусмотрено. Но если зажать кнопку "контекстное меню" на клавиатуре, эмуляция начинает исполняться с максимально возможной скоростью, без задержек. Не слишком удобно для вашей цели, но сможете, по крайней мере, оценить выигрыш.

Ещё в комплекте системы "The Best" есть ассемблер "ASM+" -- существенно ускоренная версия ассемблера ИКП за счёт использования сортированной таблицы символов. Ну и другие плюшки там есть, типа использования дополнительной памяти 9-ки, так что исходник может занимать всю память с 2000 до BFFF ЕМНИП. Но редактора там в комплекте нет, исходник надо грузить в память вручную перед ассемблированием.

Проверил. На 500% компиляция 3 минуты 20 сек. с зажатой клавишей 1мин. 40 сек, т.е. в два раза быстрее на моем компе.
На работе 40 секунд, т.е. в 5 раз быстрее. Дома видно дрянь какая-то сидит и тормозит комп.

Хорошо бы галочку где-то сделать, чтобы клавишу эту все время не держать))

С ASM+ боюсь не подружусь. Привык уж в ИКП все делать.

Voldemar0 пишет:

1) А кто нибудь пользуется такой фичей ассемблера, как "П" - Перемещаемые файлы ?
Это ведь и было сделано ради раздельной компиляции и обхода ограничений  на объёмы текстов/бинарей.

Читал об этом, не очень понял и не пользуюсь. Все хотел разобраться, да руки не доходят.

19

Re: Эмулятор Олега Одинцова

В эмуляторе 1.28 и 1.29 версий не удается максимально "разогнать" Агат кнопкой контекстной справки. Скорость примерно как при 500%.

Еще есть баг, если в отладчике набрать "FFFA" и дважды нажать ентер, то случается нехорошая ошибка и эмулятор повисает.

Я не к тому что все плохо, как раз наоборот, эмулятор очень хороший. Но если возможность есть, исправить бы. Максимальный "разгон" очень нужен бывает.