PDA

Просмотр полной версии : Вектор-06Ц: Эмуляция



Страницы : 1 2 3 4 5 [6] 7

svofski
04.07.2022, 19:55
Свежачок, новый v06x с интерфейсом, поддержкой геймпадов и визуализацией памяти в реальном времени. Маленькое демо фич:

https://youtu.be/H8USYVBqt-Y

Уровень надежности "альфа", может и просто рухнуть. Не стоит строить на этой версии эмулятора системы жизнеобеспечения, управление заслонками плотин итд. Может быть слегка требователен к ресурсам и видеокарте. Сам проверял только на винде 10 и 11.

Ссылка: v06x-godot-5.zip (http://sensi.org/~svo/b/v06x/v06x-godot-5.zip) (16Мб).

ivagor
04.07.2022, 21:06
Люто бешено плюсую базырь и осцил, теперь эта околокомодорщина и для вектора!

svofski
04.07.2022, 21:08
Прилично себя ведет? А то я с тех пор как написал сообщение уже четыре раза обновил архив из-за досадных мелочей. У меня на двух компах все время выуживаются какие-то противные отличия в поведении.

P.S. я начал с того, что просто джойстики прикрутил, насмотревшись на то, как @lafromm31 мучается с играми на БК без поддержки джоя в эмуляторе.

ivagor
04.07.2022, 21:29
Если со скидкой на альфовость, то прилично. При выходе крашится, но у меня так и одна игрушка себя ведет (win7, возможно в этом дело). Еще микширование аудиоканалов требует внимания, чтобы AY не хрипел в особо громких случаях надо или убавлять громкость AY или отключать таймер, по крайней мере мне эти варианты помогли в SKYNET. Еще загрузка несколько напрягает, если F11, потом загружать - тогда нормально, а если без F11 - то не обязательно нормально (может это задумка режиссера). И дроп программ в окно не работает, опять же не знаю, может и не должен работать.

svofski
04.07.2022, 21:37
Угу. Судя по описанию примерно те же симптомы, что я сам наблюдаю. У Godot есть какая-то странная несовместимость с моим ресемплером. Для отладки я его отключаю вообще, а для релиза собираю и экспорчу по быстрому. Он как бы работает, но при выходе падает. Пока не могу даже представить себе с какой стороны копать.

svofski
05.07.2022, 13:41
Обновил архив, та же ссылка.

- фильтры в ресемплере заменил на простенький пересказ от себя. Некруто и невекторно (хотя можно будет попробовать включить более настырную автоматическую векторизацию потом), но падать у меня перестало. На своих компьютерах удара по производительности я не ощутил. Больше заметна нагрузка на GPU, особенно когда включены осциллограф и Базырь.
- дрег-н-дроп должен работать, так же в командной строке тоже можно указать файл (хотя чего-то подозрительно ведут себя некоторые вавы, но это и так было -- может это кривые вавы -- пользуясь случаем хочу передать привет @Pyk, я помню =) )
- F11 должно было починиться. Если я правильно все понял, эта бага из основного v06x -- не запрещались прерывания по сбросу

- - - Добавлено - - -


Люто бешено плюсую базырь и осцил, теперь эта околокомодорщина и для вектора!

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

ivagor
05.07.2022, 17:04
В новом варианте глюков нет, ура! Еще бы с микшированием звука что-то придумать (чтобы AY не хрипел в крайних случаях), или немного убавить все каналы по умолчанию. И здорово было бы добавить включение/выключение отдельных каналов таймера и ay.

svofski
05.07.2022, 17:28
Спасибо за отзыв. Громкость каналов должна запоминаться, но это конечно не то же самое.
Отдельно каналы может быть потом, когда придумаю как это сделать в интерфейсе.

svofski
08.07.2022, 18:20
Еще бы с микшированием звука что-то придумать (чтобы AY не хрипел в крайних случаях), или немного убавить все каналы по умолчанию. И здорово было бы добавить включение/выключение отдельных каналов таймера и ay.
Обновил эмулятор. Основные изменения:
- уровни AY должны быть наравне с ВИ53, крутилочки должны четко залипать на 10.0 и 0dB
- отдельно выключаются все каналы у ВИ53 и АЫ
- можно подмонтировать каталог как образ диска, поддержаны два диска (автоматически создается dirimage.fdd, можно так делать образы из файлов)

ivagor
08.07.2022, 19:13
Суперотлично! Подмонтирование пока не пробовал, но звучит как очень полезная штука, теперь и в v06x.

svofski
08.07.2022, 19:19
Я его сделал уже очень давно, но отвлекся на жизнь и забыл сморжевать. А тут вспомнил. Вот как бывает.

- - - Добавлено - - -

P.S. в Базыре BADAP9 замечательно смотрится.

ivagor
08.07.2022, 20:11
Если ты о происходящем недалеко от начала памяти, то да, неожиданно прикольно. Визуализация работы распаковщика, я уже успел основательно забыть это все. Надо как-нибудь собраться, украсть музычку и приделать.

svofski
08.07.2022, 20:30
Ага, там где работает распаковщик и еще где готовится буфер кадра.
Музыку было бы круто, особенно если на ви53 ;)

svofski
24.08.2022, 15:24
v06x-godot-6 (http://sensi.org/~svo/v06x/v06x-godot-6.zip) с исправленным багом в CALL.

parallelno
27.08.2022, 09:03
Прилично себя ведет? А то я с тех пор как написал сообщение уже четыре раза обновил архив из-за досадных мелочей. У меня на двух компах все время выуживаются какие-то противные отличия в поведении.

P.S. я начал с того, что просто джойстики прикрутил, насмотревшись на то, как @lafromm31 мучается с играми на БК без поддержки джоя в эмуляторе.

Штука клевая, но ведет себя нестабильно. :) Хотел посмотреть что в банках квазидиска, но к сожалению твой эмулятор показывает что игра кращится, хотя в других эмуляторах игра работает.
rom если вдруг нужно потестить.
https://github.com/parallelno/Vector06c/tree/main/Vector06c_Dev/_Projects/GameNoname/rom


https://youtu.be/_80z1WXgNkQ

- - - Добавлено - - -

Извиняюсь, не заметил сообщения о версии 6. на ней пашет! спасибо!

- - - Добавлено - - -

правда звуки как из ада, но это нормально, просто где-то баг. :)

- - - Добавлено - - -

Помоему этот базырь суууупер полезная штука!


https://youtu.be/mClQcI5DbRI

parallelno
27.08.2022, 11:38
svofski, с помощью твоего базыря удалось понять из-за чего глючила музыка. Спасибо огромное за такой полезный инструмент!!! Сейчас все играет как нужно и с квазидиска. Там же и все буферы и стеки. Красота! :)

svofski
27.08.2022, 13:13
svofski, с помощью твоего базыря удалось понять из-за чего глючила музыка
Да, я тоже отлавливал и оптимизировал вывод на экран с Базырем уже не раз. Рад, что полезная штука вышла :)

Ramiros
30.08.2022, 08:55
Добрался я наконец до своего компа и обновил VV (https://cloud.mail.ru/public/5uyc/2pkicQPoZ), исправил баг с КД в режиме стек, шибко не тестировал, но вроде должно быть ок.

parallelno
30.08.2022, 09:13
Ramiros, а как потестировать баг?

Ramiros
30.08.2022, 10:45
Ramiros, а как потестировать баг?

Записать в SP 0001h и сделать PUSH в КД. При этом КД в режиме стека должен быть. До этого вместо нулевого адреса писалось куда то за область выделенной памяти, что в теории могло приводить к крашению эмулятора, но как то все прокатывало :) В режиме работы с ОЗУ все было нормально.

Pyk
30.08.2022, 11:03
Да, я тоже отлавливал и оптимизировал вывод на экран с Базырем уже не раз. Рад, что полезная штука вышла
Можно поинтересоваться, откуда такое название - "Базырь"?

svofski
30.08.2022, 11:55
Можно поинтересоваться, откуда такое название - "Базырь"?

Базырь -- это Баузер. Тот, кто похищает все время принцессу Пич (и ну на ней жениться). Рационального объяснения нет, просто дети играют и скачут по мне пока я что-то такое делаю.

parallelno
05.09.2022, 11:37
svofski, сделай пожалуйста поддержку квазидисков с модификацией Баркаря. :)

svofski
06.09.2022, 13:08
v06x не поддерживает даже Баркаря, но пока я успешно сдерживаю напор миллионов пользователей, требующих его поддержки.


svofski, сделай пожалуйста поддержку квазидисков с модификацией Баркаря.

Не смог устоять перед напором миллионов пользователей -- v06x-godot-7 (http://sensi.org/~svo/v06x/v06x-godot-7.zip).

parallelno
06.09.2022, 14:02
svofski, ой как замечательно! Спасибо огромное!!!
Базырь не подвел, опять помог найти глючёк. :)

- - - Updated - - -

И теперь я уверен что основные глюки это всё-таки не у меня, а VV плохо работает с квазидисками. В emu80 и в V06x-godot все пучком. :)

svofski
06.09.2022, 14:21
В emu80 и в V06x-godot все пучком
Спасибо тестам, которые KTSerg и ivagor написали.

nzeemin
06.09.2022, 19:39
Добрался я наконец до своего компа и обновил VV (https://cloud.mail.ru/public/5uyc/2pkicQPoZ), исправил баг с КД в режиме стек, шибко не тестировал, но вроде должно быть ок.

Уважаемый Ramiros, а нельзя ли прикрутить к эмулятору VV запуск .rom файла с командной строки? Спасибо.

parallelno
07.09.2022, 01:10
Добрался я наконец до своего компа и обновил VV (https://cloud.mail.ru/public/5uyc/2pkicQPoZ), исправил баг с КД в режиме стек, шибко не тестировал, но вроде должно быть ок.

Кажется все еще есть какие-то ошибки работы с квазидиском. Будет супер круто если починишь.
Заранее говорю что спрайт выводится с мусором. Рядом с ним остаются нестертые куски когда он перемещается влево, вправо или по диагоналям на новую координату. Этот мусор не маг эмулятора. Это баг в игре. Помимо этого бага, эмулятор добавляет еще какой-то мусор. Если сложно определиться что есть ошибка, то можно либо перемещайтся вертикально клавишами стрелок, либо проверить как этот ром работает в последних Emu80 и v06x-godot. Там нет ошибки работы с квазидиском
ром можно взять тут. Нужно нажать на кнопку Download:
https://github.com/parallelno/Vector06c/blob/main/Vector06c_Dev/_Projects/GameNoname/rom/GameNonameBb.rom

Заранее спасибо!

Ramiros
07.09.2022, 09:05
Кажется все еще есть какие-то ошибки работы с квазидиском. Будет супер круто если починишь.
Заранее говорю что спрайт выводится с мусором. Рядом с ним остаются нестертые куски когда он перемещается влево, вправо или по диагоналям на новую координату. Этот мусор не маг эмулятора. Это баг в игре. Помимо этого бага, эмулятор добавляет еще какой-то мусор. Если сложно определиться что есть ошибка, то можно либо перемещайтся вертикально клавишами стрелок, либо проверить как этот ром работает в последних Emu80 и v06x-godot. Там нет ошибки работы с квазидиском
ром можно взять тут. Нужно нажать на кнопку Download:
https://github.com/parallelno/Vector06c/blob/main/Vector06c_Dev/_Projects/GameNoname/rom/GameNonameBb.rom

Заранее спасибо!

Мало как то информации, разбираться в коде игры я врятли буду, можно конкретней что не правильно делается, тогда возможно получится исправить

parallelno
07.09.2022, 09:23
Мало как то информации, разбираться в коде игры я врятли буду, можно конкретней что не правильно делается, тогда возможно получится исправить

когда игра запущена то над головой персонажа рисуется горизонтальная розованя полоска. если перемещаться стрелками вверх, то она двигается вместе с персонажем. Это баг эмулятора. Сообщи плиз если нужна будет дополнительная инфа. Буду рад помочь.

KTSerg
07.09.2022, 10:59
Уважаемый Ramiros, а нельзя ли прикрутить к эмулятору VV запуск .rom файла с командной строки? Спасибо.
А разве нельзя запустить VV с указанием rom-а из командной строки?
Мне кажется у меня в far-е в менюшке такое настроено.

Pyk
07.09.2022, 19:45
нельзя ли прикрутить к эмулятору VV запуск .rom файла с командной строки
Так оно давно в VV работает. Просто единственный параметр - имя ROM-файла...

svofski
07.09.2022, 21:29
Так оно давно в VV работает. Просто единственный параметр - имя ROM-файла...
У меня это работает только если я запускаю VVector.exe из его каталога (версия 7.03). Получается надо переходить в его каталог и указывать полный путь до рома, это не очень удобно. Было бы удобней запускать из того места где ROM.

Кстати, почему-то у меня всегда большая такая задержка при запуске VV. Иногда кажется, что секунд пять проходит прежде чем окно открывается.

Ramiros
07.09.2022, 22:31
У меня это работает только если я запускаю VVector.exe из его каталога (версия 7.03). Получается надо переходить в его каталог и указывать полный путь до рома, это не очень удобно. Было бы удобней запускать из того места где ROM.

Кстати, почему-то у меня всегда большая такая задержка при запуске VV. Иногда кажется, что секунд пять проходит прежде чем окно открывается.

В эмуле есть менюшка File->File association->Register. которая ассоциирует ром (и не только) файлы с VV и тогда ромы запускаются просто как экзешники из любого места. или в линуксе это не работает?

svofski
07.09.2022, 23:17
В эмуле есть менюшка File->File association->Register. которая ассоциирует ром (и не только) файлы с VV и тогда ромы запускаются просто как экзешники из любого места. или в линуксе это не работает?
Я не уточнил про задержку на старте, но это было про винду -- 10 и 11, разницы между ними вроде не заметил.

Что до файловых ассоциаций, это хорошо, но не совсем то же самое, что запуск с аргументом в строке. Тем более, что ROM это слишком общее расширение, не очень точно указывающее на принадлежность именно к Вектору.

nzeemin
07.09.2022, 23:19
В эмуле есть менюшка File->File association->Register. которая ассоциирует ром (и не только) файлы с VV и тогда ромы запускаются просто как экзешники из любого места. или в линуксе это не работает?

Это неудобно, никогда этим не пользуюсь.
Я не пользуюсь только VV, использую все эмуляторы что есть, поэтому ассоциация расширения только с одной программой - не подходит.
И svofski прав, при попытке запуска эмулятора из другой папки это не работает:
start C:\bin\VV_702\VVector.exe asteroids.rom
- так только открывается эмулятор и всё.

KTSerg
08.09.2022, 05:48
...
И svofski прав, при попытке запуска эмулятора из другой папки это не работает:
start C:\bin\VV_702\VVector.exe asteroids.rom
- так только открывается эмулятор и всё.

Добавил в PATH каталог VV, стал запускаться моментально.
Но полный путь к ROMу по прежнему нужен.
В фаре оставил такую настройку: VVector.exe !\!.!

parallelno
08.09.2022, 09:53
svofski, а как очистить квазидиск? выглядит так что после перезапуска рома и даже эмулятора данные в квазидиске сохраняются

- - - Updated - - -

Хотя это не критично совсем. :)

svofski
08.09.2022, 12:17
svofski, а как очистить квазидиск? выглядит так что после перезапуска рома и даже эмулятора данные в квазидиске сохраняются
Да, состояние полностью сохраняется. По идее любая программа продолжит свое исполнение после перезапуска, как ни в чем не бывало. Но иногда это оказывается некстати, особенно во время отладки. Сейчас удобного способа сбросить сохраненное состояние к сожалению нет, но можно стереть файл в %USERHOME%/AppData/Roaming/Godot/app_userdata/v06x/v06x.savestate

nzeemin
10.09.2022, 12:22
Попробовал составить список эмуляторов Вектора, которые сейчас есть:

0. Эмулятор-3000
http://www.emulator3000.org/e3.htm

1. emu от b2m
http://bashkiria-2m.narod.ru/

2. emu80 от Pyk
https://emu80.org/

3. Virtual Vector (VV) от Ramiros
https://cloud.mail.ru/public/5uyc/2pkicQPoZ

4. v06x SDL от svofski
https://github.com/svofski/vector06sdl
5. v06x Godot от svofski

Уточнения/дополнения приветствуются.

svofski
10.09.2022, 13:36
4/5 это в общем один эмулятор более-менее. И раз уж такое пошло, то есть и версия для Андроида (http://sensi.org/~svo/v06x/v06x-release-android.apk).

Pyk
10.09.2022, 18:30
nzeemin, Vector Emulator от Р. Пантелеева и А. Навалона. Да, он под DOS, и ему уже более 20 лет, но он до сих пор является одним из лучших эмуляторов Вектора.

ivagor
11.09.2022, 09:22
Эмуляторов вектора для дос было несколько и ve несомненно был лучшим (без него вряд ли Tim0xA затеял бы в свое время vector revival). Но список nzeeminа скорее про более актуальные околовиндовые (линуксовые?) эмуляторы. Был еще SPCVector (http://soviet-pc.narod.ru/), сейчас не доступен, возможно на другом компе у меня архив сохранился или где-то можно найти в другом месте.

- - - Добавлено - - -

Ютубный ролик (https://www.youtube.com/watch?v=G3BkuC2hDuM)

KTSerg
11.09.2022, 12:38
А про этот эмулятор уже было?

VECTOR EMULATOR v2.7 alpha
(c) SwordMaker. Kirov, 1999.

Pyk
12.09.2022, 12:06
А про этот эмулятор уже было?
Это как раз эмулятор Пантелеева, про который я говорил.


Был еще SPCVector, сейчас не доступен, возможно на другом компе у меня архив сохранился или где-то можно найти в другом месте
Скорее всего у меня сохранился, забыл про него...

- - - Добавлено - - -


без него вряд ли Tim0xA затеял бы в свое время vector revival
Я не в курсе, vector revival - это какой-то проект?

ivagor
12.09.2022, 13:10
vector revival - это какой-то проект?
В широком смысле. Tim0xA стал собирать программы, информацию, сделал сайт для выкладывания всего этого. Кроме того делал сам или соучаствовал в аппаратных и программных разработках. Думаю без его активности вектор на данный момент был бы менее известен.

svofski
12.09.2022, 13:17
vector revival - это какой-то проект
Картотека начиналась с архива, который собрал в свое время Tim0xA.

KTSerg
19.09.2022, 19:32
Не смог устоять перед напором миллионов пользователей -- v06x-godot-7 (http://sensi.org/~svo/v06x/v06x-godot-7.zip).
Похоже и под Вин7 работает.
Только при запуске ROMа размером более 32К из командной строки, видимо сам rom режется, ,при закрытии эмулятора, выдается сообщение об ошибке.
А если грузить такой rom из меню эмулятора, то всё пучком.

svofski
19.09.2022, 19:48
Похоже и под Вин7 работает.
Только при запуске ROMа размером более 32К из командной строки, видимо сам rom режется, ,при закрытии эмулятора, выдается сообщение об ошибке.
А если грузить такой rom из меню эмулятора, то всё пучком.

Спасибо, надо будет проверить. В этой версии вообще с командной строкой что-то чуть-чуть не так.

KTSerg, я честно говоря не знаю как проверить, потому что у меня ROM-ы все не больше 32К. Но я исправил одну давно достававшую меня бяку связанную с загрузкой из параметра командной строки, может быть дело в ней. Бери тут (https://github.com/svofski/vector06sdl/releases/tag/godot-7b).

KTSerg
20.09.2022, 05:50
... я честно говоря не знаю как проверить, потому что у меня ROM-ы все не больше 32К. ...
В картотеке есть ROMы больше 32К, вот первое, что попалось:
BUSINESS.ROM, CYBERMUT.ROM, DIZZY-S.ROM, salesman.rom.


Бери тут.
Что-то я не вижу, что там можно взять...
Под "Assets" крутится какая-то бяка и ни чего не происходит.77806

svofski
20.09.2022, 12:20
Почему крутится бяка я подсказать не могу. Но проверил BUSINESS.ROM и правда что-то с ним неладное. Буду смотреть еще.

KTSerg
22.09.2022, 06:16
svofski, я что-то не обратил внимание, в режиме "Базырь", подсвечиваются только изменённые байты?
Для отладки, думаю, было-бы полезно видеть "читаемые" байты. Типа видеть где берутся данные и где сама программа крутится.

svofski
22.09.2022, 13:11
Подсвечиваются записываемые байты. Если был 0 и записали 0, все равно подсветится.

Про чтение — уже было такое пожелание. В копилку.

KTSerg
04.10.2022, 19:34
Крутил вот этот тест (text80_5) в "Базырь":
https://zx-pk.ru/threads/34508-80-simvolov-v-stroke-i-rezhim-512-tochek-voobshche.html?p=1158231&viewfull=1#post1158231

Не знаю, это проблема 7-ки, или нет.
Если запускать, в указанном эмуляторе, из командной строки, указанный тест, выходить из эмулятора и снова запускать, то вроде отображает режим 512х256 вполне адекватно:
https://disk.yandex.ru/i/45u8ebifDR0_mQ

Но если загрузить с дискеты МикроДос, потом выйти из эмулятора, и из командной строки запустить тест, то получается вот-так:
https://disk.yandex.ru/i/kcXIee-VW7gcvg
И цвет у символов "не тот" и проявляется "скрытая" экранная плоскость.

svofski
04.10.2022, 20:48
Спасибо, постарюсь разобраться. Семерка тут я думаю ни при чем, это похоже на то, что эмулятор неправильно восстанавливает состояние.

parallelno
15.10.2022, 09:34
svofski, натолкнулся на непонятное поведение программы. Кажется что баг
ссылка на ром
[ulr]https://github.com/parallelno/Vector06c/tree/main/Vector06c_Dev/_Projects/GameNoname/rom[/url]
программа сначала распаковывает код в третий банк по адресам $8000, потом вызывает процедуру __ClearmemSP по адресу в квазидиске $82dd в следующей последовательности:
выключить прерывания. установить режим квазидиска %11100010. вызвать процедуру в третьем банке в адресах $8000 и старше. делать PUSH B. PUSH будет писать в третий банк квазидиска вместо основной памяти.

Pyk, подобное поведение проявляется в Emu80 тоже.

ребят, если сможете, гляньте на багу плиз. Очень она непонятная какая-то. Может это такая особенность квазидиска, если код выполняется из него, то стек не может адресовать основную память?

ivagor
15.10.2022, 11:49
установить режим квазидиска %11100010. вызвать процедуру в третьем банке в адресах $8000 и старше. делать PUSH B. PUSH будет писать в третий банк квазидиска вместо основной памяти.
В чем ошибка? Выбран режим доступа стеком к квазу, значит стековые операции пойдут в кваз.

- - - Добавлено - - -


Выбран режим доступа стеком к квазу
Прошу прощения, просчитался, тот бит=0.

parallelno
15.10.2022, 11:49
Я руководствовался этим описанием
https://raw.githubusercontent.com/wiki/svofski/vector06cc/ramdisk.md
Не пойму как %11100010 может включать стек? Подскажи пожалуйста.

ivagor
15.10.2022, 12:07
Не пойму как %11100010 может включать стек? Подскажи пожалуйста.
За эту ошибку я успел покаяться.
Что касается emu80, то проверь в меню Платформа>Конфигурация платформы что там не включен ERAM.

parallelno
15.10.2022, 12:51
ivagor, в emu80 включено 1 EDO barkar scheme ( port 10h)

ivagor
15.10.2022, 13:13
Вопрос в следующем - когда включаем кваз в режим "адресности", то куда должно попадать обращение по этим же адресам стеком. Если параллельно включено обращение к квазу стеком, то push, pop и компания должны обращаться к заданной битами 2-3 порта 10 области кваза (хотя и тут были варианты для квазов на РУ7). А если обращение к квазу стеком не включено (как в вышеприведенном примере), то обращение должно идти к текущей конфигурации памяти с учетом включенных "адресностью" областей. Для полной уверенности надо посмотреть схему кваза.

- - - Добавлено - - -

Короче говоря, по моему мнению это не баг, а фича.

KTSerg
15.10.2022, 14:33
svofski, натолкнулся на непонятное поведение программы. Кажется что баг
ссылка на ром
[ulr]https://github.com/parallelno/Vector06c/tree/main/Vector06c_Dev/_Projects/GameNoname/rom[/url]
программа сначала распаковывает код в третий банк по адресам $8000, потом вызывает процедуру __ClearmemSP по адресу в квазидиске $82dd в следующей последовательности:
выключить прерывания. установить режим квазидиска %11100010. вызвать процедуру в третьем банке в адресах $8000 и старше. делать PUSH B. PUSH будет писать в третий банк квазидиска вместо основной памяти.

Pyk, подобное поведение проявляется в Emu80 тоже.

ребят, если сможете, гляньте на багу плиз. Очень она непонятная какая-то. Может это такая особенность квазидиска, если код выполняется из него, то стек не может адресовать основную память?
По схеме КД видно, что даже если КД включен как ОЗУ (как стек вЫключен), то ЛЮБОЕ обращение к выбранному адресному пространству, будет обращением к КД, даже если это стековые операции.
Я с этим уже сталкивался, и где-то на этом форуме, об этом писал.
Вывод, адрес стека не должен совпадать с активным адресным пространством КД, тогда стековые операции будут в основной памяти Вектора.

Improver
15.10.2022, 18:57
По схеме КД видно, что даже если КД включен как ОЗУ (как стек вЫключен), то ЛЮБОЕ обращение к выбранному адресному пространству, будет обращением к КД, даже если это стековые операции.Всё верно. Дополню только: если на КД включён и СТЕК, и ОЗУ, то при обращении к стеку будет выбран тот банк КД, который задан для стека, даже если адрес попадает в подключённый диапазон ОЗУ КД. Т.е. стек тут приоритетнее.

parallelno
15.10.2022, 22:08
Понял. Спасибо за уточнение!

- - - Updated - - -

То есть если код выполняется из квазидиска, то стековые операции в адреса кода будут обращаться в квазидиск в банки указанные для квазидиска.

parallelno
12.01.2023, 04:58
Привет всем!
С разрешения и помощью svofski я добавил режим дебагинга к его эмулятору и записал видео с обзором функционала. Принимаются пожелания, советы, багрепорты.
На видео я там местами подтупливаю и видео получилось долгим, поэтому советую смотреть на ускоренке. :)


https://youtu.be/CJMu3uPzpKM

parallelno
12.01.2023, 09:25
Линк на сам эмулятор:
https://github.com/parallelno/v06x

svofski
12.01.2023, 10:51
Привет всем!
С разрешения и помощью svofski я добавил режим дебагинга к его эмулятору и записал видео с обзором функционала. Принимаются пожелания, советы, багрепорты.
На видео я там местами подтупливаю и видео получилось долгим, поэтому советую смотреть на ускоренке. :)


Я впечатлен. Ты умудрился прикрутить настоящий дебаггер, причем с серьезными продвинутыми фичами. Сейчас вот смотрится все так, что прям хочется все бросить и пуститься программировать для Вектора просто ради попользоваться таким инструментом. Рассказ получился хороший. Не отрепетированный доклад, а скорее семинар. В таком виде проще воспринимать информацию, чувствуешь себя более вовлеченным в процесс.

Спасибо тебе, что продолжаешь развивать v06x и подогреваешь интерес к Вектору!

svofski
12.01.2023, 14:11
Хорошо бы еще сделать поддержку символьной таблицы как ее tasm порождает. Это конечно можно сделать промежуточным скриптом, но прикольно было бы нативно.

parallelno
13.01.2023, 11:02
svofski, о, хорошая идея! Сделаю.

parallelno
17.01.2023, 09:33
Хорошо бы еще сделать поддержку символьной таблицы как ее tasm порождает. Это конечно можно сделать промежуточным скриптом, но прикольно было бы нативно.

Добвил поддержку символьной таблицы tasm. Имя файла должно совпадать с именем рома, расширение "sym". Все имена меток и запросы в поиске приводятся к нижнему регистру, поэтому задавать имя в поиске можно и в нижнем и в верхнем. Так же в поиске стрелками вверх и вних можно проматывать последние запросы.

Линк на обновленный эмулятор:
https://github.com/parallelno/v06x

Stl75
24.01.2023, 16:51
Добвил поддержку символьной таблицы tasm. Имя файла должно совпадать с именем рома, расширение "sym". Все имена меток и запросы в поиске приводятся к нижнему регистру, поэтому задавать имя в поиске можно и в нижнем и в верхнем. Так же в поиске стрелками вверх и вних можно проматывать последние запросы.

Линк на обновленный эмулятор:
https://github.com/parallelno/v06x

Привет всем...

А можно эмулятор выложить скомпилированный?

parallelno
25.01.2023, 10:48
Stl75, извини, ссылка в предыдущем сообщении была неточной. Скомпилированная версия была по другой ссылке.
https://github.com/parallelno/v06x/tree/master/platform/godot/exports

- - - Updated - - -

Оттуда нужно скачать dll, pck и exe файлы.

Stl75
25.01.2023, 16:39
Stl75, извини, ссылка в предыдущем сообщении была неточной. Скомпилированная версия была по другой ссылке.
https://github.com/parallelno/v06x/tree/master/platform/godot/exports

- - - Updated - - -

Оттуда достаточно скачать dll и exe файлы.

Там кнопки - Download нет...
А напрямую оно не качается...
.html качается...
???


View raw
(Sorry about that, but we can’t show files that are this big right now.)
???

ivagor
25.01.2023, 17:02
Там кнопки - Download нет
Справа

parallelno
25.01.2023, 21:36
Нужно кликнуть на файл который ты хочешь скачать. Откроется новая страница. На ней справа будет кнопка download.
Согласен что это не интуитивно, но пока не знаю лучшего способа поделится файлами.

svofski
25.01.2023, 21:42
Согласен что это не интуитивно, но пока не знаю лучшего способа поделится файлами.
Идешь сюда https://github.com/parallelno/v06x/releases
И кликаешь [Draft a new release]. Потом хоть дрег-н-дропом затаскивай туда зазипованные файлы из exports. Всех делов.

Stl75
25.01.2023, 22:32
Нужно кликнуть на файл который ты хочешь скачать. Откроется новая страница. На ней справа будет кнопка download.
Согласен что это не интуитивно, но пока не знаю лучшего способа поделится файлами.

Да ничего, скачал...
Кнопку - Download сразу не увидел...

Pyk
30.01.2023, 20:26
Оттуда достаточно скачать dll и exe файлы.
А pck?

parallelno
31.01.2023, 09:35
Pyk, pck нужно тоже скачать если его нет, но если есть то достаточно старого.

Pyk
31.01.2023, 11:14
если есть то достаточно старого
Мне пришлось скачать, из комплекта v06x-godot-7.zip явно не подходит, имелся в виду какой-то другой?

parallelno
31.01.2023, 21:34
Честно говоря я не знал что он не подойдёт. Не до конца изучил этот вопрос.
svofski, подскажи пожалуйста как готовить пустой pck файл.

svofski
31.01.2023, 22:58
Честно говоря я не знал что он не подойдёт. Не до конца изучил этот вопрос.
svofski, подскажи пожалуйста как готовить пустой pck файл.

Зачем пустой, нужен полный. Это файл, в котором все скрипты и ресурсы. Он генерится, когда ты делаешь экспорт из Godot.

parallelno
31.01.2023, 23:23
А, ок. Спасибо. Я думал что он используется для хранения стейта.

svofski
31.01.2023, 23:30
А, ок. Спасибо. Я думал что он используется для хранения стейта.

Нет, это и есть "игра" на Godot. Стейт сохраняется в %AppData%\Godot\app_userdata\v06x\v06x.savestate

parallelno
01.02.2023, 04:31
Понял, спасибо. Тогда pck файл необходимо скачать. Обновлю предыдущее сообщение

parallelno
02.02.2023, 23:29
Привет всем!
Добавил trace log. Он показывает последние выполненные команда. Список можно фильноровать. Добавил отображение меток. Поправил баги. Принимаются пожелания, советы, багрепорты.
Записал видео обзор. Старался тупить меньше, но все еще рекомендую смотреть на ускоренке. )


https://youtu.be/psPSjohSkCU

линк на файлы эмулятора
https://github.com/parallelno/v06x/tree/master/platform/godot/exports
оттуда нужно скачать exe, dll, pck файлы.

- - - Добавлено - - -

Дебагер проверен в бою. Вчера таки удалось найти злощастный баг в моей игрушке с помощью trace log, так что можно официально считать мишшен комплит. :)

svofski
02.02.2023, 23:32
Быстрее, чем сейчас, по-моему уже не надо. Новый дебаггер впечатляет.

ivagor
10.02.2023, 17:04
Думал вопрос с полосатым бордюром в режиме 512 давно закрыт, но из 4 эмуляторов только emu показал то что нужно. Эту штуку описал Черезов (http://tenroom.ru/scalar/ware/632/index.html), например в Cherezov_spravochnik.djvu на странице 7.

Pyk
10.02.2023, 20:14
из 4 эмуляторов только emu показал то что нужно
К своему стыду, не читал Черезова и не знал об этой штуке. В Emu80 постараюсь в ближайшие дни исправить.

Проверил еще в ve27 - тоже черный экран...

Pyk
11.02.2023, 20:31
Починил бордюр в Emu80, изменения в репо. (Настроить бы nightly builds, но пока даже не пытался выяснить, как к этой задаче подступиться...)

Можете подсказать какие-нибудь демки/игры, активно использующие бордюр? Хотелось бы убедиться, что ничего не сломал, пока реализовывал полосатость (хотя вроде бы не должен был)?

Improver
12.02.2023, 05:20
Можете подсказать какие-нибудь демки/игры, активно использующие бордюр?Тест техпрогона. :)

ivagor
12.02.2023, 09:03
Собрать и попробовать доработанный emu80 смогу в лучшем случае на следующей неделе, но скорее всего буду ждать релиза. Тем временем появилась мысль, что вместо полосатого можно сделать сетчатый бордюр. Уникальная не имеющая аналогов фича, осталось придумать, как это использовать в мирных целях.

Pyk
12.02.2023, 10:45
Собрать и попробовать доработанный emu80 смогу в лучшем случае на следующей неделе
Выложил обновленный exe (https://emu80.org/v4beta/Emu80qt_40445_update.7z), раз актуально.
Сетчатый бордюр здорово выглядит. :) Если разрешение монитора позволяет, для наилучшего отображения рекомендую использовать режим 3x (Alt-3) и отключить PAR (Alt-R). А с включенным PAR можно со сглаживанием поиграться (Alt-S)...

ivagor
12.02.2023, 11:21
Бордюр в новой версии когда надо полосатый, когда надо - сетчатый, все хорошо. На первый взгляд и в 256 все нормально. В дополнение к тесту техпрогона - дема Multicolor (http://tenroom.ru/scalar/ware/32/index.html)

Ramiros
14.02.2023, 16:57
Обновил VV до v.7.07 - Улучшена эмуляция бордюра (поддерживается режим полосатости в режиме 512х256), Переделан рендер экрана (появилось сглаживание на бордюре, убран ореол между бордюром и рабочей областью при включеном сглаживании), добавлен пункт меню Screen->Dysplay Size->Set Quad Size.

svofski
27.02.2023, 00:05
Ну раз все, то и я. Новый релиз v06x-godot, с эпическим дебаггером от parallelno и исправленным бордюром в сеточку.
https://github.com/svofski/vector06sdl/releases/latest

svofski
12.03.2023, 00:52
Добавил выбор ПЗУ загрузчика и загрузку BAS-файлов через GUI. Реализация аналогична коммандлайновой -- подключает ПЗУ с Бейсиком, сбрасывается, грузит Бейсик и загружает программу через CLOAD. Но теперь можно открыть .bas-файл drag&drop-ом, или через файловый диалог.

Ссылка та же: https://github.com/svofski/vector06sdl/releases/latest

svofski
12.03.2023, 18:35
Подумал, что конверсию ASC->BAS можно делать и автоматически. Ссылка та же, релиз v06x-godot-8b3. Если открываемый, или дропаемый файл имеет расширение .asc, то он токенизируется и загружается в виде BAS.

Upd: + соотношения сторон и точный масштаб пикселей

ivagor
12.03.2023, 19:06
v06x неожиданно стал самым удобным эмулятором для программирования на векторовском бейсике.

svofski
12.03.2023, 19:22
Спасибо! Приятно, что это кому-то пригождается. Я еще подумал, что сброс и загрузку Бейсика можно делать только в первый раз. По содержимому памяти можно определить, что Бейсик уже загружен, и сократить процедуру загрузки до F12/NEW/CLOAD. Это конечно иногда будет давать сбой, но никто же не мешает в случае чего нажать F11. Надо только какую-то надежную сигнатуру присутствия Бейсика в памяти.

svofski
13.03.2023, 13:35
А .cas-ы актуальны?

ivagor
13.03.2023, 15:03
casы желательны. Отдельный респект за аспект.

svofski
18.03.2023, 00:44
Добавил загрузку .cas -- а то как еще поиграешь в ANTIGRAV.

svofski
23.03.2023, 16:14
Отвечаю из другого треда, потому что это совсем не про ви53 --


svofski, а собрать версию v06x-godot, не требующую аппаратного OpenGL возможно? Чтобы и на встроенных видеокартах работало...

Думаю, что невозможно. Но вообще я немного удивлен, что это за встроенные видеокарты, на которых нет OpenGL? У меня тоже встроенная и никакой не геймерский лаптоп, обычное леново с рызеном, но все работает. Что у тебя за система и как именно эмулятор на ней не работает?

Improver
23.03.2023, 16:57
Что у тебя за система и как именно эмулятор на ней не работает?Основная моя машина для этих целей -- виртуалка на сервере vmware ESX6 (да, виртуалка в виртуалке -- удобно же :)), про видео там v06x так и пишет: "поставьте драйвера с поддержкой OpenGL или замените видеокарту". Пробовал v06x запускать на реальном железе, но из того, что у меня доступно, всё на Core2Duo со встроенным видео, там то же самое. Есть вариант поставить туда внешнюю видеокарту, типа "офисной" GT430, но пока ещё не проверял этот вариант. Вот примерно всё так печально... А вот EMU на этом железе работает. :)

svofski
23.03.2023, 17:37
Понятно. Ну я уже объяснил свою позицию на этот счет. Любые усилия направленные на поддержку экзотических конфигураций это неоправданная трата времени. Даже если там чего-то и заведется с грехом÷2, все равно будет тормозить. Лучше запустить там EMU, который тем и прекрасен, что на этих системах работает. v06x зато можно собрать на raspberry pi 3 с композитным выходом с псевдопрогрессивной разверткой на 50Гц и получить максимально приближенную к труъ эмуляцию на современном железе.

Improver
23.03.2023, 18:07
v06x зато можно собрать на raspberry pi 3Вот это и печалит, что v06x работает даже на малинке, а на серверном зионе -- нет... А под debian x64 есть версия в откомпилированном виде?

svofski
23.03.2023, 18:22
А под debian x64 есть версия в откомпилированном виде?
Там есть все в мейкфайлах и даже построение .deb пакетов, но я это последний раз гонял лет эдак сколько-то назад и наверняка оно не работает. Можно попробовать освежить скрипты.

Вообще в виртуалбоксе я v06x (обычный, не godot) запускал спокойно из под Mint.

svofski
24.03.2023, 00:39
debian x64
Собственно, версия v06x лежит в релизах в виде .deb -- https://github.com/svofski/vector06sdl/releases/download/3theydo/v06x_0.3-theydo_amd64.deb - попробуй, встанет?

- - - Добавлено - - -

Пока это писал, собрался deb https://github.com/svofski/vector06sdl/releases/download/godot-8b4/v06x_0.4-write_amd64.deb

Improver
24.03.2023, 09:47
Пока это писал, собрался deb https://github.com/svofski/vector06sdl/releases/download/godot-8b4/v06x_0.4-write_amd64.debПоставил и запустил на xubuntu -- всё отлично! (Которая, кстати, крутится в виртуалке на том же сервере vmware :)) Теперь надо разобраться, как её там настраивать и рулить...

svofski
24.03.2023, 11:12
Под линукс я могу и v06x-godot сделать.

Improver
24.03.2023, 11:35
Под линукс я могу и v06x-godot сделать.Было бы здорово. :)

Глупый вопрос: а как правильно закрывать v06x? Я что-то не нашёл способа, закрываю по крестику окно и при этом получаю надпись в терминале "Аварийный останов (образ памяти сброшен на диск)"...

svofski
24.03.2023, 12:22
Глупый вопрос: а как правильно закрывать v06x? Я что-то не нашёл способа, закрываю по крестику окно и при этом получаю надпись в терминале "Аварийный останов (образ памяти сброшен на диск)"...
Не знаю даже, что это может быть. Под wsl2 запускается и в нем все хорошо закрывается, более того, при сборке .deb проходят тесты. Попробуй ptrace-ом его, вдруг там будет очевидно на чем он обламывается.

svofski
29.03.2023, 23:24
Было бы здорово.
Сделал сборки для linux_x64 (https://github.com/svofski/vector06sdl/releases/download/godot-8b5/v06x-godot-8b5-linux_x64.zip) и macOS universal (https://github.com/svofski/vector06sdl/releases/download/godot-8b5/v06x-godot-8b5-macOS-universal.dmg) (проверял только на M1). По возможности расскажи, как оно.

Improver
30.03.2023, 16:00
расскажи, как оноВообще, здорово. Запускается под линухом, работает, отладчик прекрасен... но глючно как-то -- иногда "блк-ввод" не с первого раза срабатывает, РДС поставил на кваз, при перезагрузке показывает четыре блока, как надо, но по сбросу не стартует, не понятно, по какой причине. И как жёсткий диск подцепить не понял. Хороший эмулятор, но привыкнуть к нему надо.

svofski
30.03.2023, 17:07
Жесткий диск у меня не поддержан, все никак не соберусь добавить.

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

Improver
30.03.2023, 19:23
Жесткий диск у меня не поддержан, все никак не соберусь добавить.Да, надо бы и жёсткий, и два квазидиска... ;)


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


Подтянул свой загрузчик -- работает.
Загрузил в режиме FM9 систему РДС 3.08, она ругнулась на отсутствие command.sys. Причина понятна -- кваз не форматирован.
Тем же методом загрузил Т-72, поробовал форматнуть кваз через команду "8 C:F" -- форматирует, вроде, но как будто не сохраняет изменения, при повторе восьмёрки всё то же самое. Не понятно...
Загрузил Т-72 с клавишей УС -- квазидиск отформатировался.
Загрузил РДС, она почему-то создала файл RDS.COM вместо OS.COM,что должно быть на пустом квазидиске. Переименовал его вручную.
Запустил файл OS.COM на исполнение -- работает.
F11 (оно же БЛК-ВВОД) -- загрузчик находит OS.COM и грузит его, вроде, но по F12 тишина, как будто и не нажимал.
Меняю загрузчик на стандартный -- та же песня, вроде загрузка с квазидиска есть, но на БЛК-СБРОС реакции нет. Что там реально в памяти не глянул.

Вот примерно так, на этом пока остановился.

svofski
30.03.2023, 20:54
не получится повторять одни и те же действия и соблюдать одинаковые начальные установки

В большинстве случаев достаточно нажать F11. В конце концов настоящий Вектор тоже требует сброса при включении. Более технологичный способ будет стереть ~/.local/share/godot/app_userdata/v06x/v06x.savestate (если на линуксе). Еще есть способ -- прибивать процесс через kill -9.

svofski
30.03.2023, 23:34
Тем же методом загрузил Т-72, поробовал форматнуть кваз через команду "8 C:F" -- форматирует, вроде, но как будто не сохраняет изменения, при повторе восьмёрки всё то же самое. Не понятно...

В той версии T-72, что у меня (http://www.sensi.org/scalar/ware/630/), 8 C:F ничего не делает. Что это за команда такая хитрая?

Подскажи пожалуйста, где взять RDS 3.08.

Upd: наверное тут: https://github.com/ImproverX/RDS/releases/tag/v3.08

Попробовал, загрузил с удержанием УС, отформатировался кваз и все загрузилось. На C: OS.COM, COMMAND.SYS и RDS.SYS.

Подозреваю, что в твоем случае оставшееся содержимое кваза от T-72 каким-то образом повлияло на RDS. Просто вряд ли эмулятор переименовал файл на квазе.

Но вот что происходит при сбросе и загрузке с кваза, тут это я пока не разобрался.

Improver
31.03.2023, 08:04
В той версии T-72, что у меня (http://www.sensi.org/scalar/ware/630/), 8 C:F ничего не делает. Что это за команда такая хитрая?
Это просто старая версия Т-72, ключик появился в новых, писал о нём тут (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1028598&viewfull=1#post1028598). А самая свежая версия есть тут (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1108343&viewfull=1#post1108343) и на гитхабе (https://github.com/ImproverX/MDOS_T-72).


Попробовал, загрузил с удержанием УС, отформатировался кваз и все загрузилось. На C: OS.COM, COMMAND.SYS и RDS.SYS.

Подозреваю, что в твоем случае оставшееся содержимое кваза от T-72 каким-то образом повлияло на RDS.Я запускал РДС без форматирования, хоть и на чистый КД, но это и повлияло на имя сохранённого файла. Я проверил исходники РДС -- так и должно быть.

svofski
11.04.2023, 02:16
CodeMaster, хочешь пообсуждать эмуляторы Вектора, давай сюда.

Проверил Tetris 2, все с ним хорошо. У него не самое понятное управление по умолчанию, но к счастью его там можно задать.

CodeMaster
11.04.2023, 09:41
У него не самое понятное управление по умолчанию
До управления там ещё далеко. Что вот тут нажать, чтобы игра началась?
78747

svofski
11.04.2023, 12:08
Что вот тут нажать, чтобы игра началась?

Я так хорошо эту игру не знаю. У меня получается играть так -- на первом экране надо нажать 5 и определить кнопки для правого стакана, 4 для левого стакана. 1 на титульном экране выбирает тип игры, можно выбрать Classic и играть одному в правом стакане (может быть и в левом тоже, но я пробовал только в правом).

CodeMaster
11.04.2023, 14:01
У меня получается играть так
Да, если не переопределить управление, то запустить игру не получается. Но, в GameNoname мне счётчик жизни обнуляют сразу, может в этом проблема... Хотя, вот BinorumJP.rom тоже перестал запускаться, хотя я его прошёл раньше в эмуле на http://sensi.org/scalar :-/

svofski
11.04.2023, 14:12
CodeMaster, трудно чего-то диагностировать по таким отрывочным сведениям. Если ты хочешь подробно поисследовать вопрос, более практично будет загрузить Бейсик и посмотреть как там у тебя клавиатура работает. Есть еще "Тест устройств": http://www.sensi.org/scalar/ware/621/ Также может быть полезно знать какой у тебя браузер и ОС. Так может быть станет ясней что именно не работает, где и когда. Я не могу обещать все исправить, но стараюсь поддерживать эмуляторы в рабочем состоянии.

А почему тебя смущает запуск десктопных эмуляторов? Ни один из мне известных эмуляторов Вектора не требует перманентной инсталляции -- взял и запустил.

CodeMaster
14.04.2023, 21:16
Есть еще "Тест устройств"
А как там перейти к следующему тесту? У меня проходит первый тест проца и предлагает повторить его.


А почему тебя смущает запуск десктопных эмуляторов?
Для попробовать нет особого смысла, плюс так с любого места доступно.

svofski
14.04.2023, 21:25
У меня проходит первый тест проца и предлагает повторить его.
Ctrl+C помогает, но вообще это правда не самый удобный тест. Я сам его избегаю.

ivagor
14.04.2023, 22:00
А как там перейти к следующему тесту? У меня проходит первый тест проца и предлагает повторить его.
Если нужен один конкретный тест, то можно на экране выбора выше него перетащить "Начало цепочки тестов", ниже - "Конец цепочки тестов". Перетаскивает жук, влево - освободить, вправо - захватить, вверх и вниз - двигать.

CodeMaster
14.04.2023, 22:41
Есть еще "Тест устройств"
Всё норм, клавиатура работает.


Также может быть полезно знать какой у тебя браузер и ОС
FF 111, Win 8.1

ivagor
24.05.2023, 17:01
Попытался прояснить для себя своеобразное поведение индикатора РУС/ЛАТ в Emu. У меня гипотеза, что значение соответствующего бита порта 1 проверяется каждое прерывание через некоторое время после прерывания. Если я угадал, то просьба сместить момент проверки вровень с началом прерывания или в самый конец кадра перед прерыванием.

ivagor
28.06.2023, 17:02
У VV в конфиге z80 надо поправить растактовки CALL и условных CALL при выполнении условия. Вероятно сбивает с толку одинаковость числа тактов этих команд у 8080 и z80 (и там и там 17, и в вектор-user 15 скорее всего поэтому пропустили). Но у них разное разбиение на циклы: 8080 - 5, 3, 3, 3, 3; z80 - 4, 3, 4, 3, 3. У z80 все циклы проца влезают в 4х тактные циклы шины вектора, а у 8080 первый цикл на векторе разбухает до 8. Поэтому у 8080 получается 24 такта, а у z80 - 20. В качестве независимого подтверждения можно посмотреть растактовки (https://ftp.park-city.club/invis/books/Programming/Z80_CPC_Timings_cheat_sheet.20131019.pdf) amstrad cpc у которого аналогичное вектору торможение, но z80 вместо 8080. В emu80 растактовки упомянутых команд правильные, но подозрительно "некруглые", причина мне непонятна.

Ramiros
29.06.2023, 08:43
У VV в конфиге z80 надо поправить растактовки CALL и условных CALL при выполнении условия. Вероятно сбивает с толку одинаковость числа тактов этих команд у 8080 и z80 (и там и там 17, и в вектор-user 15 скорее всего поэтому пропустили). Но у них разное разбиение на циклы: 8080 - 5, 3, 3, 3, 3; z80 - 4, 3, 4, 3, 3. У z80 все циклы проца влезают в 4х тактные циклы шины вектора, а у 8080 первый цикл на векторе разбухает до 8. Поэтому у 8080 получается 24 такта, а у z80 - 20. В качестве независимого подтверждения можно посмотреть растактовки (https://ftp.park-city.club/invis/books/Programming/Z80_CPC_Timings_cheat_sheet.20131019.pdf) amstrad cpc у которого аналогичное вектору торможение, но z80 вместо 8080. В emu80 растактовки упомянутых команд правильные, но подозрительно "некруглые", причина мне непонятна.

Исправил.

ivagor
29.06.2023, 11:33
Ramiros, еще одну заметил - rst в z80 сейчас 12 вместо 16.

Ramiros
03.07.2023, 00:27
Ramiros, еще одну заметил - rst в z80 сейчас 12 вместо 16.

Тоже исправил :)

KTSerg
18.08.2023, 07:28
Ну раз все, то и я. Новый релиз v06x-godot, с эпическим дебаггером от parallelno и исправленным бордюром в сеточку.
https://github.com/svofski/vector06sdl/releases/latest
Странное поведение всплывающих окон подсказки.
Навожу указатель мыши на зону точек останова и вачдогов, всплывает подсказка, окно подсказки увеличивается (изменяется масштаб окна и текста), подсказка исчезает. Процесс повторяется. Изменения происходят с интервалом меньше секунды, внимательно прочитать не успеваю :(
Текст листинга (для меня) темноват, очень сложно разглядеть, что там вообще написано :(
Это в вин7/64.

svofski
18.08.2023, 14:48
Я даже не знал, что там есть подсказки. У меня они тоже плохо работают, но когда работают, просто показывают тот же самый текст. Может быть parallelno прояснит что они значат. Если они ничего дополнительного сказать не хотят, я бы их убрал.

Сделать текст листинга поярче пожалуй не помешало бы. Согласен.

KTSerg
18.08.2023, 15:40
Я даже не знал, что там есть подсказки. У меня они тоже плохо работают, но когда работают, просто показывают тот же самый текст. Может быть parallelno прояснит что они значат. Если они ничего дополнительного сказать не хотят, я бы их убрал.
...
Когда открывается окно для добавления вачдога, там на полях то-же появляются подсказки, с пояснениями условий. Но подробности я рассмотреть не могу, из-за моргания и изменения размера окна подсказки.

Ещё пока не разобрался, что делать когда скрывается виртуальная клава и на весь экран раскрыты окна дебагера. Как вернуть обратно "клавиатуру Вектора" - пока не понял.

svofski
18.08.2023, 16:22
Как вернуть обратно "клавиатуру Вектора" - пока не понял.
Кликнуть в экран Вектора, клавиатура появится.

KTSerg
18.08.2023, 19:05
Кликнуть в экран Вектора, клавиатура появится.
Кажется я понял в чём причина...
Максимальное разрешение экрана 1280х1024 маловато для этого эмулятора.
В полноэкранном режиме у меня на экране нет ни клавиатуры ни экрана Вектора.
Даже ползунок прокрутки нех-дампа - отсутствует, не помещается на экран.
Только если перейду в оконный режим, и вручную перетяну/растяну границы окна эмулятора, вот тогда "экран Вектора" появляется.

Сейчас вот пытаюсь разобраться, какие опции задать эмулятору, в командной строке (FARa), чтобы сразу после запуска был переход в дебагер и остановка выполнения по адресу 0х0000. Похоже нужно создать какой-то файл со списком точек останова и указать этот файл в командной строке.

При загрузке любого "rom"-файла, в экран лога пишется вот такое (в скриншоте).
79276
Три последние строки, это нормально?
В предыдущих версиях эмулятора этого не было.

svofski
18.08.2023, 20:28
Три последние строки, это нормально?
Да, это бейсиковские хуки.

Такого крохотного экранчика у меня нет, но я могу уменьшить окно до схожих размеров и вроде все ок, хотя конечно не так красиво, как когда экран побольше, спору нет. Раскладка не самая удобная, но пока менять ее не собирался. Тут надо аккуратно сделать возможность убирать по отдельности панели дебаггера и дампа.

https://caglrc.cc/b/v06x/small-screen.jpg

parallelno
18.08.2023, 23:47
Странное поведение всплывающих окон подсказки.
Навожу указатель мыши на зону точек останова и вачдогов, всплывает подсказка, окно подсказки увеличивается (изменяется масштаб окна и текста), подсказка исчезает. Процесс повторяется. Изменения происходят с интервалом меньше секунды, внимательно прочитать не успеваю :(
Текст листинга (для меня) темноват, очень сложно разглядеть, что там вообще написано :(
Это в вин7/64.

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

- - - Добавлено - - -



Сейчас вот пытаюсь разобраться, какие опции задать эмулятору, в командной строке (FARa), чтобы сразу после запуска был переход в дебагер и остановка выполнения по адресу 0х0000. Похоже нужно создать какой-то файл со списком точек останова и указать этот файл в командной строке.

Если не найдется способ это сделать и нужны те же точки останова которые были выставлены прошлый раз, то можно просто кликать на кнопку Restart the program (зеленая круговая стрелка) в дебагере слева вверху. Это не просто перезапустит программу, но и сначала перезагрузит ее с диска. То есть держать эмултор запусщенным, и просто рестартить после того как пересобралось приложение.

KTSerg
19.08.2023, 04:27
Даже не знаю в чем может быть дело с морганием. У меня на Win10 работают без морганий. Хинты при наведении на брейкпоинты и вачпоинты не поддерживал, но выключить забыл, поэтому пони показывают что-то по дефолту. Наверное первый элемент из списка. Наверное лучше их выключить.
Самое странное, что в разные дни, поведение подсказок меняется. Вчера уже моргали, только если мышку смещать. Если мышь не двигать, то можно прочитать подсказки.
И подсказки адекватные, т.е. текст соответствует элементам управления.
[QUOTE]

svofski
19.08.2023, 10:13
С тултипами явно что-то не то. Я записал, чтобы не забыть.

KTSerg
21.08.2023, 04:53
Не знаю, на сколько это возможно, но похоже, что в эмуляторах, реализовать подключение мыши к Вектору, можно только с помощью внешнего модуля/скрипта, или чего-то подобного. Хотя, обрабатываться должны данные реальной мыши, а эмулятору предоставляться данные, как-то соответствующие размерам активного окна эмулятора.
Точно сформулировать не могу, так как в эмуляторах не разбираюсь.
Просто "мышь" (или контроллер мыши) - это "интеллектуальная железка", со своим протоколом, набором команд/запросов, на которые она/он должны отвечать.
Значит вставлять такую интеграцию непосредственно в эмулятор, это неизбежные постоянные коррекции самого эмулятора. Да ещё и по типу подключения мыши (контроллера) нет согласия. Тогда как вынос "мыши" в отдельный (внешний) модуль, при необходимости изменений в работе "мыши", не затронет сам эмулятор.
А если этот внешний модуль мыши сможет корректировать "сторонний разработчик" ;) вообще ляпота... :)
У меня такие мысли.
Но ещё раз скажу, в эмуляторах не разбираюсь, соответственно, вполне возможно, что заблуждаюсь...

Pyk
21.08.2023, 15:06
В emu80 растактовки упомянутых команд правильные, но подозрительно "некруглые", причина мне непонятна.
В каком смысле "некруглые"?

nzeemin
21.08.2023, 15:29
Не знаю, на сколько это возможно, но похоже, что в эмуляторах, реализовать подключение мыши к Вектору, можно только с помощью внешнего модуля/скрипта, или чего-то подобного. Хотя, обрабатываться должны данные реальной мыши, а эмулятору предоставляться данные, как-то соответствующие размерам активного окна эмулятора.
Точно сформулировать не могу, так как в эмуляторах не разбираюсь.
Просто "мышь" (или контроллер мыши) - это "интеллектуальная железка", со своим протоколом, набором команд/запросов, на которые она/он должны отвечать.
Значит вставлять такую интеграцию непосредственно в эмулятор, это неизбежные постоянные коррекции самого эмулятора. Да ещё и по типу подключения мыши (контроллера) нет согласия. Тогда как вынос "мыши" в отдельный (внешний) модуль, при необходимости изменений в работе "мыши", не затронет сам эмулятор.
А если этот внешний модуль мыши сможет корректировать "сторонний разработчик" ;) вообще ляпота... :)
У меня такие мысли.
Но ещё раз скажу, в эмуляторах не разбираюсь, соответственно, вполне возможно, что заблуждаюсь...

Могу показать как у себя в эмуляторе делал реализацию мыши: https://github.com/nzeemin/neonbtl/blob/master/emulator/ScreenView.cpp#L360
Этот метод ScreenView_UpdateMouse() у меня вызывается 25 раз в секунду по времени эмулируемой машины.
Из текущего положения мыши вычитается предыдущее, получается дельта. Затем эта дельта пересчитывается в экранные координаты эмулируемого экрана.
Дельта ограничивается каким-то максимальным значнием (у меня это 127 по модулю).
Полученная "дельта эмулируемого экрана" пробрасывается в объект, эмулирующий машину. А там уже дельта сохраняется и эмулируется протокол обмена с мышью.
На мой взгляд, работает это вполне приемлемо.

ivagor
21.08.2023, 16:11
В каком смысле "некруглые"?
По результатам теста (http://caglrc.cc/scalar/ware/908/)

Pyk
21.08.2023, 23:38
ivagor, понял, посмотрю при возможности. Скорее всего, какая-то проблема в эмуляции ВИ53.

- - - Добавлено - - -


Могу показать как у себя в эмуляторе делал реализацию мыши
Подскажи, как посмотреть это в работе? Какой софт на "Неоне" использует мышь и как его запустить?

KTSerg
22.08.2023, 04:34
Могу показать как у себя в эмуляторе делал реализацию мыши:
...
На мой взгляд, работает это вполне приемлемо.
Судя по описанию, это просто передача в эмулятор данных о перемещениях мыши.
Или программа, работающая в эмуляторе, может отправить (через эмулятор) команду в мышь, изменить её настройки типа режима работы или чувствительности, включать/отключать поддержку колеса прокрутки?

nzeemin
22.08.2023, 17:51
Подскажи, как посмотреть это в работе? Какой софт на "Неоне" использует мышь и как его запустить?

Мышь на Неоне поддержана в ОС Аспект, просто загрузиться с дискеты с этой ОС, образы дискет должны быть в ветках этого форума по ДВК и УКНЦ.

- - - Updated - - -


Судя по описанию, это просто передача в эмулятор данных о перемещениях мыши.
Или программа, работающая в эмуляторе, может отправить (через эмулятор) команду в мышь, изменить её настройки типа режима работы или чувствительности, включать/отключать поддержку колеса прокрутки?

На Союз-Неоне мышь стандарта MSX, никакой настройки и управления мышью там нет.

Pyk
22.08.2023, 23:41
Мышь на Неоне поддержана в ОС Аспект, просто загрузиться с дискеты с этой ОС
Запустил последний релиз neonbtl (preview-130 от 3 июня), загрузил Аспект, галка "MSX Mouse" в эмуляторе стоит, мышиный курсор на экране вижу, но он не двигается. Что я делаю не так?

nzeemin
26.08.2023, 11:52
Запустил последний релиз neonbtl (preview-130 от 3 июня), загрузил Аспект, галка "MSX Mouse" в эмуляторе стоит, мышиный курсор на экране вижу, но он не двигается. Что я делаю не так?

Нужен образ диска с Аспектом и поддержкой MSX Mouse.
Приложил в аттаче к этому сообщению.

KTSerg
23.10.2023, 13:59
Только сейчас заметил не понятную фигню с загрузкой с образа дискеты.
Win7/64. Скачал две версии эмулятора v06x.
В папки: "v06x-godot-7" и "v06x-8b8-win64". Где-то писали, что они интерфейсом и плюшками должны отличаться.
После запуска эмулятора, выбираю образ дискеты (через иконку в интерфейсе), F11 или "ВВОД" - в эмуляторе из папки "v06x-8b8-win64" появляется загрузочная сетка с изображением дискеты, и ни чего дальше не происходит. Как будто системные дорожки не записаны.
А в эмуляторе из папки "v06x-godot-7", с того-же образа дискеты, грузится без проблем.

svofski
23.10.2023, 15:24
KTSerg, разговор можно сделать предметным, отправив мне каким-то образом образ диска.

KTSerg
23.10.2023, 16:53
KTSerg, разговор можно сделать предметным, отправив мне каким-то образом образ диска.
Решил попытаться разобраться.
Перепробовал больше десятка разных образов дискет - ни с одной не грузится.
И тут заметил, что я в интерфейсе выбираю образ диска "В:" - где дискета нарисована.
А диск "А:" оказывается меняется под иконкой "кассеты" :) после чего он меняется на "дискету".
Если выбираю образ для диска "А:" - то с него начинает грузиться.
НО для версии "v06x-godot-7" это не было проблемой, и эмулятор загружает систему с диска "В:", если диск "А:" не определён, а оказалось, что версия "v06x-8b8-win64" так не умеет.
Так что можно сказать, что я немного разобрался и в интерфейсе эмулятора, и со своим его не пониманием.
Пардон за кипиш.

svofski
23.10.2023, 17:28
Аа.. хм. Это скорее говорит о запутанности интерфейса. Я чего-то не уверен, что система могла грузиться с диска B:, скорее всего там была какая-то ошибка, из-за которой диск B: попадал в A:

KTSerg
23.10.2023, 17:36
Аа.. хм. Это скорее говорит о запутанности интерфейса. Я чего-то не уверен, что система могла грузиться с диска B:, скорее всего там была какая-то ошибка, из-за которой диск B: попадал в A:

С выбором дискет я столкнулся, когда тестировал воспроизведение wav-файлов программой "Wave AY".
Из тех эмуляторов, которые пробовал, в v06x самый "чистый" звук, в остальных эмуляторах ещё почему-то, после окончания работы программы, из динамиков слышен довольно громкий шум/свист.

KTSerg
24.10.2023, 17:53
Шоб не возиться с образами дискет и командами МикроДос, (а так-же подключением к реалу кучи железа в виде контроллеров, доп. блока питания, ...) по обкусывал в исходнике программы "Wave AY" все команды связанные с ДОСом, приклеил к плееру один из WAV-файлов, сделал "ROM".
И сравнил его воспроизведение в эмуляторах и на реале.
С моей субъективной точки зрения, наиболее близкое к реалу качество звука у "v06x".

KTSerg
25.10.2023, 18:06
Чтобы понять, что за "фоновый свист" в эмуляторах, при воспроизведении wav-файлов, сделал wav-ку с постоянной громкостью (с тишиной). В эмуляторах Emu и vv - "фоновый свист" сохранился. Подключил осциллогаф на аудио-выход компа, частота "свиста" ~11КГц. Т.е. можно сделать вывод, что это ВИ53 "свистит", т.к. она используется, для отсчёта интервалов.
Загрузил тест в реал, потыкал осциллогафом по выходам ВИ53 - "не свистит".
Много тестировали эмуляцию ВИ53, и тут снова, что-то "вылезло".
В Emu80 - вообще этим плеером, wav-ки не воспроизводит, т.к. прога зависает на чтении ВИ53, не вылавливает условие окончания интервала.

Ramiros
25.10.2023, 20:30
Чтобы понять, что за "фоновый свист" в эмуляторах, при воспроизведении wav-файлов, сделал wav-ку с постоянной громкостью (с тишиной). В эмуляторах Emu и vv - "фоновый свист" сохранился. Подключил осциллогаф на аудио-выход компа, частота "свиста" ~11КГц. Т.е. можно сделать вывод, что это ВИ53 "свистит", т.к. она используется, для отсчёта интервалов.
Загрузил тест в реал, потыкал осциллогафом по выходам ВИ53 - "не свистит".

Таймер в любом случае ШИМит на какой то частоте за границей слышимости, но в эмуляторе VV звук воспроизводится с частотой 44КГц, а то что слышно в виде свиста это скорее всего биение частоты ШИМа при ресэмплировании к частоте 44КГц. В VV есть фильтр который настроен на подавление частот выше 20КГц, но в данном случае он почти бесполезен.

KTSerg
26.10.2023, 10:10
Пытался разобраться, почему Emu80 зависает на чтении регистров ВИ53 в программе "Wave AY".
Из описания ВИ53:

Существуют задачи, в которых процессор должен периодически считывать содержимое счетчиков
каналов. Примером такой задачи может служить счет событий. Во время работы счетчика его текущее
содержимое может быть передано в буферный и прочитано двумя способами: при помощи обычной операции
чтения или с помощью специальной схемы "чтения на лету", активизируемой вводом специального
управляющего слова.
При первом способе для обеспечения стабилизации показаний счета работа счетчика должна быть
приостановлена подачей на управляющий вход уровня "0" (в режимах 0, 2, 3, 4) или с помощью внешней
логической схемы, приостанавливающей подачу импульсов на тактовый вход канала.
Кусок кода "Wave AY":

;
MVI A,00000100B ; "чтение на лету"
OUT 008H
PAUSE1:
IN 00BH
ANA A
JNZ PAUSE1

Когда закомментировал установку режима "чтение на лету" - программа перестала зависать.
При установленном режиме "чтение на лету" - из регистров постоянно читалось записанное в них значение, как будто ВИ53 вообще не уменьшает значение счетчика.

- - - Добавлено - - -


Таймер в любом случае ШИМит на какой то частоте за границей слышимости,
Тогда я переживаю, почему на реале, я вообще ни чего не увидел на выходах ВИ53. Там была стабильная "1".


но в эмуляторе VV звук воспроизводится с частотой 44КГц, а то что слышно в виде свиста это скорее всего биение частоты ШИМа при ресэмплировании к частоте 44КГц. В VV есть фильтр который настроен на подавление частот выше 20КГц, но в данном случае он почти бесполезен.
В исходнике "Wave AY" заменил режим "2" работы таймера на "0"-режим, и в эмуляторе "Emu" фоновый свист полностью пропал.
Вечером попробую в других эмуляторах.

Pyk
26.10.2023, 13:28
В Emu80 - вообще этим плеером, wav-ки не воспроизводит, т.к. прога зависает на чтении ВИ53, не вылавливает условие окончания интервала.
Спасибо за багрепорт, посмотрю. Похоже, что дело опять в не реализованном на данный момент режиме 4 таймера :(

KTSerg
26.10.2023, 13:55
Спасибо за багрепорт, посмотрю. Похоже, что дело опять в не реализованном на данный момент режиме 4 таймера :(
Больше похоже, что функция "чтение на лету" не реализована.

KTSerg
26.10.2023, 19:08
Таймер в любом случае ШИМит на какой то частоте за границей слышимости ...
Чтобы понять, почему на моём реале таймер молчит "как партизан", пришлось доставать логер, вешать его на ВИ53, накидать программку, которая переключает режимы таймера, и смотреть выходы каналов на фоне тактовой частоты 1.5МГц.

Получается, что если надо просто совсем заткнуть таймер, то нужно все каналы настроить на режимы 1 или 5. Для их активации используется передний фронт сигнала разрешения счёта, а на Векторе он всегда в "1", но и счётчики видимо будут стоять.

Во вложении, архив с rom-ом и исходником программы, краткое описание в txt, и скриншоты логгера.
Задавал каждому каналу разный режим, загружал в счётчики значение 0008h.
Получилось два теста, по три режима в каждом.
Реал Вектор06ц.02.

Pyk
27.10.2023, 11:44
Больше похоже, что функция "чтение на лету" не реализована.
"Чтение на лету" реализовано и до сих пор работало без нареканий. Либо дело в другом, либо не учтены какие-то нюансы.
Пока не было времени внимательно посмотреть, постараюсь в предстоящие выходные разобраться.

Ramiros
27.10.2023, 17:06
Получается, что если надо просто совсем заткнуть таймер, то нужно все каналы настроить на режимы 1 или 5. Для их активации используется передний фронт сигнала разрешения счёта, а на Векторе он всегда в "1", но и счётчики видимо будут стоять.


Я тоже так думал, но видимо счетчики не стоят, т.к. давно попадались программы которые использовали эти режимы для отсчета интервалов (к сожалению не помню какие).

KTSerg
27.10.2023, 17:51
Я тоже так думал, но видимо счетчики не стоят, т.к. давно попадались программы которые использовали эти режимы для отсчета интервалов (к сожалению не помню какие).
Удивительно.
Попробую проверить это на реале.

KTSerg
28.10.2023, 11:57
Я тоже так думал, но видимо счетчики не стоят, т.к. давно попадались программы которые использовали эти режимы для отсчета интервалов (к сожалению не помню какие).
Я с этого ВИ53 просто ......

Скорее всего это нужно было в тему теста ВИ53, закинуть. Но и во всех эмуляторах картинка отличается.
Причину понять не могу.
Вроде реал 02-ой и v06x совпадают, но в v06x скрол экрана сдвинут, на реале верхняя строка FF, а v06x - верхняя строка 00.
Самая близкая к ним картинка на Emu.

Накидал тест, который между прерываниями постоянно считывает значения счётчиков таймера и отображает считанное на экране (старший байт левее, младший правее).
По приходу прерывания, меняется режим, в счётчик записывается FFFFh всё повторяется.

Я так и не смог изменить/задать значение счётчиков в режимах 1 и 5 !!!
При переключении в режимы 1 или 5 из других режимов, счётчики тупо продолжают считать (уменьшаться) начиная с последнего значения, которое осталось от предыдущего режима, не принимая новые значения.
А в режиме 3 таймер вообще считает в два раза быстрее чем в остальных режимах.

Значение счётчика считанное сразу после записи и перед заменой режима выводятся в отдельный столбик.

Сделал скриншоты с экрана реальных простого Вектора и 02-го, и нескольких эмуляторов.
Офигел, от того, что скриншоты реальных отличаются.
Причину придумать не могу.
Думал, что отличия скорее всего могут быть связаны с разными кварцами, но кпроц и таймер от одного кварца таковую получают, значит расхождения не может быть.

В архиве rom, исходник и скриншоты.

ivagor
28.10.2023, 12:33
Причину придумать не могу.
Предположу, что разносы фаз тактовых проца и таймера у 06Ц и 06Ц.02 чуть отличаются и этого оказывается достаточно.

KTSerg
29.10.2023, 09:38
Судя по всему, нашлась причина "фонового свиста" при воспроизведении wav-файлов, в оригинальном плеере "Wave AY", в эмуляторах "Emu" и "VV".
Судя по всему, если в эмуляторе Emu80 решится проблема с "чтением на лету", то в нём "фонового свиста" не будет.

Накидал ещё один тест для ВИ53, который перезаписывает счётчик таймера, когда его старший байт становится равным 00h.
В тесте перебираются режимы 0,2,3,4. Для перехода между режимами используются клавиши "УС" и "СС" (типа 0 "УС" 2 "СС" 3 "УС" 4 "СС").
В режиме 0 горит "РУС/LAT" - для обозначения начала цикла теста.

А сейчас о результатах.
На реале 02-ом, в v06x и Emu80 - только в режиме "3" на выходе видим меандр; в остальных режимах "тишина", на осциллографе - прямая линия, нет ни каких импульсов.
В эмуляторах Emu и VV - в режиме "3" на выходе видим меандр; в режимах 2 и 4, на осциллографе - видим импульсы, во вложении фото экрана осциллографа.

Во вложении rom теста и исходник.

Ramiros
29.10.2023, 23:29
KTSerg, Спасибо за тестик, благодаря ему удалось обнаружить ошибку. Обновил VV, ссылка в подписи.

KTSerg
30.10.2023, 07:43
... удалось обнаружить ошибку. ...
;)

Ramiros
30.10.2023, 18:57
;)

Писк по окончанию проигрывания так и задуман?

KTSerg
30.10.2023, 20:33
Писк по окончанию проигрывания так и задуман?
В оригинальном плеере, по окончании воспроизведения файла нет отключения ВИ53.

Во вложении, на всякий случай, вернул режим 2, как в оригинальном плеере, и добавил отключение ВИ53.

Ramiros
30.10.2023, 20:45
В оригинальном плеере, по окончании воспроизведения файла нет отключения ВИ53.

Во вложении, на всякий случай, вернул режим 2, как в оригинальном плеере, и добавил отключение ВИ53.

По исследовал в отладчике предыдущий вариант, там режим 2 используется, и по окончанию таймер не отключается, отсюда и писк.

KTSerg
31.10.2023, 07:35
По исследовал в отладчике предыдущий вариант, там режим 2 используется, и по окончанию таймер не отключается, отсюда и писк.
Я вот думаю, оригинальная утилита была для МикроДоса, и в ней нет отключения таймера. Значит, скорее всего, МикроДос которым пользовался автор утилиты, сам отключал таймер после вызова "RST 0" - выхода из утилиты.
Но в том МикроДосе, который я пробовал, писк оставался, значит тестируемый МикроДос не отключал таймер.
Интересно, каким МикроДосом пользовался автор утилиты. К сожалению, на образе дискеты с утилитой в Базисе, нет МикроДоса. Значит остаётся надеяться на знатоков, разбиравших МикроДосы, и знающих, есть-ли такие версии, которые при перезапуске инициализируют таймер.

KTSerg
02.11.2023, 06:57
Всё ломаю голову, что такое "чтение на лету" в ВМ53...
В утилите "Wave AY", оно используется как функция. Типа включил один раз до начала цикла чтения регистров, и наслаждайся "чтением на лету".
А вот ни фига подобного...
"Чтение на лету" это только команда (разовая акция) блокирующая изменение буфера чтения регистров, пока он не будет прочитан. Т.е. по этой команде, сам счётчик продолжает изменяться, а буфер чтения нет, он ждёт когда его прочитают.
Уже сделал один тест на реале и вроде подтвердил эту догадку.
Нужно уточнить и проверить некоторые детали. Когда проверю, выложу результаты.

svofski
02.11.2023, 11:06
Смысл в том, что ты читаешь 16-битное значение атомарно. Команда копирует значение счетчика в защелку. Защелку можно потом читать долго и медленно, она будет содержать значение, которое было в нее сфотографировано в момент команды. Таймер при этом продолжает счет без останова.

Ramiros
02.11.2023, 11:11
Всё ломаю голову, что такое "чтение на лету" в ВМ53...
В утилите "Wave AY", оно используется как функция. Типа включил один раз до начала цикла чтения регистров, и наслаждайся "чтением на лету".
А вот ни фига подобного...
"Чтение на лету" это только команда (разовая акция) блокирующая изменение буфера чтения регистров, пока он не будет прочитан. Т.е. по этой команде, сам счётчик продолжает изменяться, а буфер чтения нет, он ждёт когда его прочитают.
Уже сделал один тест на реале и вроде подтвердил эту догадку.
Нужно уточнить и проверить некоторые детали. Когда проверю, выложу результаты.

Чтение на лету, это какое то неправильное название. В нормальной литературе эта команда называется "Защелка", предназначена для корректного чтения 16ти битного счетчика, т.к. его чтение проходит в два шага, и содержимое счетчика за это время успеет изменится.

Я когда исходник смотрел, удивился, зачем дают команду защелку, а потом чуть ли не бесконечно читают счетчик :)

KTSerg
02.11.2023, 13:10
Чтение на лету, это какое то неправильное название. В нормальной литературе эта команда называется "Защелка", предназначена для корректного чтения 16ти битного счетчика, т.к. его чтение проходит в два шага, и содержимое счетчика за это время успеет изменится.
На русском мало подробной инфы по ВИ53. Впервые нашел упоминание про этот режим, и в доках он именно так (чтение на лету) и называется.


Я когда исходник смотрел, удивился, зачем дают команду защелку, а потом чуть ли не бесконечно читают счетчик :)
Я вот совсем не изучал ВИ53 так глубоко. Когда изучал исходник, думал "так и надо", а внятного объяснения в доках не нашел.
Вот и пытаюсь "совместить круг с квадратом"... , а оно в голове ну ни как не укладывается.
Да ещё результаты тестов на всех эмуляторах разные, что не добавляет ясности.

svofski
02.11.2023, 13:58
Да ещё результаты тестов на всех эмуляторах разные, что не добавляет ясности.
Здорово, что ты делаешь новые тесты. Надеюсь не потерять их из виду.

KTSerg
02.11.2023, 17:35
Ну, возникшие у меня вопросы по поводу ВИ53 и режима "защёлки" (чтения на лету), я кажется снял с повестки дня.
По ходу тестирования, наткнулся на условие, которое даёт сбой в эмуляторе Emu80.
И собственно тест во вложении - это иллюстрация условия для сбоя.

Тест следующий:
Левые две колонки - это 255 значений счётчика ВИ53 считанные без использования команды "защёлки".
Следующие две колонки - 128 (верхних) значений счётчика ВИ53 считанные с использованием команды "защёлки", и нижние 127 значений считано снова без использования команды "защёлки".
Правые колонки - это собственно "XRA" - разница между предыдущими, для наглядности.

Пояснение моего мнения по поводу Emu80.
Команда "Защёлка" работает, если ей пользоваться, или не пользоваться.
А вот если как в утилите "Wave AY" - один раз дал команду и забыл про неё... тут возникает проблема, т.к. команда "защёлка" оставляет значение счётчика заблокированным, даже после того как оба байта считаны. Хотя блокировка должна сниматься после чтения всех байт заявленных в слове управления.

Во вложении rom теста и скриншот с реала 02-го.

KTSerg
02.11.2023, 20:57
В 90-ых, у меня был знакомый, которому я передавал свои программы для бета-тестирования.
Он каждый раз ухмылялся, и говорил, что тестировать штатные возможности нет смысла, типа я сам их уже проверил, пока кодил.
И начинал извращаться, задавая не штатные опции, нажимая не предусмотренные комбинации клавиш, и т.д. и т.п. ...

Вот решил я проверить, как работает команда "защёлка", если её не правильно применять...

Тест во вложении, вариация предыдущих:
Счётчик настроен на работу в режиме "слово" - 2-Байтный счётчик.
Левые две колонки - чтение регистров ВИ53 без использования "защёлки".
Следующие две колонки - чтение регистров ВИ53, с командой "защёлка" перед чтением каждого байта.
Правые колонки - "XRA" - разница между предыдущими, для наглядности.

Аааагаааа, ни кто не думал, что над ВИ53 издеваться будут :v2_tong2:

Во вложении rom теста, исходник и скриншот с реала 02-го.

Дополнительный тест показал, что если "защёлка" уже активирована, то последующая подача этой команды просто игнорируется (реальным ВИ53), а не приводит к очередной фиксации нового значения счётчика (как в эмуляторах).

svofski
11.01.2024, 16:27
Ramiros, а как ведёт себя HLT когда ещё не наступило прерывание? Судя по описанию он выполняется снова и снова до тех пор пока не случится прерывание. За сколько тактов он повторяется? Вроде как он зацикливается на одном машинном цикле, подозреваю что на втором, но точно не знаю.


http://bitsavers.trailing-edge.com/components/intel/MCS80/98-153B_Intel_8080_Microcomputer_Systems_Users_Manual _197509.pdf

Страница 2-13 HALT SEQUENCES -- вербальное описание.
Таблица инструкций на странице 2-18 показывает что делают все инструкции на каждом такте каждого цикла, HLT тоже.
Рисунок 2-12 на странице 2-14 показывает блок-схему состояний при исполнении HLT. Рисунок 2-11 на той же странице -- временная диаграмма входа в режим HALT.

parallelno
12.01.2024, 00:18
svofski, я правильно понимаю что HLT выполняет 2 машинных цикла, и зацикливается в Twh в ожидании прерывания?

svofski
12.01.2024, 13:42
parallelno, насколько я могу судить по всем доступным мне материалам, да.

parallelno
12.01.2024, 14:31
svofski, тогда получается что в твоём эмуляторе ошибка. Если я не ошибаюсь то у тебя HLT зацикливается на первом машинном цикле.

svofski
12.01.2024, 14:44
svofski, тогда получается что в твоём эмуляторе ошибка. Если я не ошибаюсь то у тебя HLT зацикливается на первом машинном цикле.

В ядре 8080, которое у меня используется, нет понятия машинного цикла. Почему ты думаешь, что есть ошибка? Есть какие-то симптомы?

parallelno
12.01.2024, 22:48
Если я правильно понимаю логику кода, то у тебя HLT зацикливается после исполнения 4 тактов. А по идее должно выполниться 8 и далее зациклится выполняя по 4 такта. Или я ошибаюсь?

svofski
13.01.2024, 01:29
Если я правильно понимаю логику кода, то у тебя HLT зацикливается после исполнения 4 тактов. А по идее должно выполниться 8 и далее зациклится выполняя по 4 такта. Или я ошибаюсь?

Я думаю ты прав. Теоретически мы можем проскочить 4 такта. У меня тоже были в прошлом сомнения насчет этого места, но на практике это очень трудно словить. Может быть можно соорудить тест для этого.

Pyk
20.01.2024, 21:22
В Emu80 - вообще этим плеером, wav-ки не воспроизводит, т.к. прога зависает на чтении ВИ53, не вылавливает условие окончания интервала.
Прошу прощения, что на некоторое время пропал, но лучше поздно, чем никогда. Появилось, наконец, время заняться эмулятором, исправил я этот баг. Дело оказалось именно в этом:

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

Это тоже учел:

Дополнительный тест показал, что если "защёлка" уже активирована, то последующая подача этой команды просто игнорируется

Правда, скрины тестов 5 и 6 немного отличаются от реала, причем отличаются сильнее, чем в других эмуляторах. Видимо, какие-то еще нюансы эмуляции ВИ53 я не учел, буду еще смотреть. Тест TEST_VI53_5 был без исходника, можно исходник попросить?

Также после этих исправлений в emu80 заработал exolon :)
Изменения в репозитории, если нужна сборка под windows - сделаю.

ivagor
11.03.2024, 17:11
Если кто-то, как и я, хочет эмуляцию высокочастотного вектора для запуска очень медленных программ, то выбор не такой большой: VV и Emu. Целевые частоты были в районе 120-140 МГц, т.к. именно настолько получалось разгонять плисовый v06cc svofski. VV разгоняется до 100 МГц, выше только Emu. Emu на моем стареньком компе нормально эмулирует 06Ц с тактовой в районе 150 МГц, при больших частотах нагрузка проца иногда зашкаливает (для "домашнего супервектора" остановился на 120, чтобы соответствовать полнофункциональному аналогу на плис). И если я правильно понял, эмуляция 6128 более требовательная.
Emu80 переваривает 6 МГц, но на 12/24/48 похоже не программируется палитра в начальном загрузчике, а на 96 и выше - в начальном загрузчике инверсные цвета и проблемы с палитрой, нормально пользоваться нельзя. В v06x не нашел штатных средств для регулировки тактовой.

Pyk
12.03.2024, 21:12
Emu80 переваривает 6 МГц, но на 12/24/48 похоже не программируется палитра в начальном загрузчике, а на 96 и выше - в начальном загрузчике инверсные цвета и проблемы с палитрой, нормально пользоваться нельзя.
Проверил - действительно. Самому интересно, почему так. Будет время - посмотрю, навскидку нет предположений...

- - - Добавлено - - -

P. S. Предположения появились, поэкспериментирую ;)

KTSerg
15.03.2024, 19:24
А кто мне объяснит, что за финт в эмуляторах с комбинациями курсорных клавиш...
При одновременном нажатии двух направлений, не срабатывает нажатие "пробел". это особенность АТ-клавы?
Проявляется при: вверх+влево и вниз+вправо - при этих комбинациях "пробел" не нажимается.
Сварганил примитивный тест клавы, просто чтение строк/рядов клавиатуры и вывод результата на экран.
Пробовал на реале, такой проблемы нет, "пробел" нажимается при любом сочетании курсорных клавиш.

svofski
15.03.2024, 19:32
это особенность АТ-клавы?
У меня работают все стрелки вместе + пробел, только что проверил твоим тестом. Дело не в эмуляторе и не в AT-клаве как классе, а в конкретной модели клавиатуры. Термин, который тебя интересует, наверное называется n-key rollover.

Ramiros
15.03.2024, 20:48
А кто мне объяснит, что за финт в эмуляторах с комбинациями курсорных клавиш...
При одновременном нажатии двух направлений, не срабатывает нажатие "пробел". это особенность АТ-клавы?
Проявляется при: вверх+влево и вниз+вправо - при этих комбинациях "пробел" не нажимается.
Сварганил примитивный тест клавы, просто чтение строк/рядов клавиатуры и вывод результата на экран.
Пробовал на реале, такой проблемы нет, "пробел" нажимается при любом сочетании курсорных клавиш.

Это проблема самих клавиатур, они и в других приложения так же не работают в некоторых комбинациях.

KTSerg
15.03.2024, 21:07
Это проблема самих клавиатур, они и в других приложения так же не работают в некоторых комбинациях.
Да я вот то-же подумал, что не может быть одинакового глюка во всех эмуляторах, это явно с моим железом "подфортило". :(
Поэтому и предположил, что виновата моя клава.

- - - Добавлено - - -


... Дело не в эмуляторе и не в AT-клаве как классе, а в конкретной модели клавиатуры. Термин, который тебя интересует, наверное называется n-key rollover.
Глянул в поисковике, но не понял, как отличить клавы. На этикетке должен быть этот самый "n-key rollover" ?
У меня древняя мультимедийная клава, на ней ни чего подобного не обозначено.

Ramiros
15.03.2024, 21:43
Попробовал две свои беспроводных клавы, и на обоих одинаково - работает только ВВЕРХ+ВПРАВО+ПРОБЕЛ, остальные комбинации не работают. Больше проверить не начем, возможно на игровых или PS/2 клавах будет по другому...

KTSerg
16.03.2024, 06:15
Попробовал две свои беспроводных клавы, и на обоих одинаково - работает только ВВЕРХ+ВПРАВО+ПРОБЕЛ, остальные комбинации не работают. Больше проверить не начем, возможно на игровых или PS/2 клавах будет по другому...
У меня именно ps/2 клавиатура.
Попробовал на ещё одной ps/2 клаве.
Не срабатывает только комбинация ВВЕРХ+ВЛЕВО+ПРОБЕЛ, остальные работают.
Видимо действительно, этот косяк устранили только на игровых клавиатурах.
Когда искал статьи по "n-key rollover", читал пример, что в какой-то популярной игре часто используется комбинация из 4-ёх конкретных клавиш, но типа на клавах не поддерживающих этот n-key, такая комбинация клавиш не работает.

svofski
16.03.2024, 15:20
Глянул в поисковике, но не понял, как отличить клавы. На этикетке должен быть этот самый "n-key rollover" ?
У меня древняя мультимедийная клава, на ней ни чего подобного не обозначено.
Если ничего не указано, то 2KRO. Если больше, то может быть на коробке чего-нибудь напечатано, или в обзорах можно узнать. Но даже если 2KRO, в ней в зависимости от устройства матрицы бывает можно зажать и 4 и даже 5 кнопок, но не любых, а как повезет. У меня какая-то Aula Aegis, по которую я никогда не думал, как о чем-то особенном, но вот оказывается у нее довольно большое N: получается WASD + четыре стрелки и на сколько еще хватает пальцев любые кнопки все одновременно. Добился сбоя теста KTSerg только вжав ладонями все сразу.

KTSerg
16.03.2024, 20:18
Для возможности определить соответствие клавиш клавиатуры Вектора и эмулятора, добавил в тест обозначение клавиш и системные.
Заодно нумерацию бит, а то вечно искать приходилось.

ps, Взял мини-клаву DEXP. Играть на ней не удобно, или не привычно, курсорный джойстик круглый, и комбинации направлений сложно нажать.
Но на этой клаве работает любая комбинация курсорных клавиш с пробелом. Хотя есть ограничения на сочетания других клавиш.
Вывод: всё зависит от конкретной клавы. Если в игре необходимо использовать комбинации клавиш, сначала нужно их протестировать, и убедиться, шо клава их таки умеет.

ivagor
28.05.2024, 06:41
Опять про ошибки в таймингах z80.
Emu80 - перепутаны местами тайминги условных CALL при выполнении и невыполнении условия. Должно быть 20 и 12, а есть 12 и 20 тактов. Ну и странная "некруглость" числа тактов, про это я уже писал, не очень критично на длинных тестовых фрагментах.
VV - INR M и DCR M должны быть 12, не 16 тактов. Предполагаю, что 16 взялись из vector-user 15, но там много ошибок.
Источники правильных растактовок - по прежнему из мира amstrad cpc (1 (https://ftp.park-city.club/invis/books/Programming/Z80_CPC_Timings_cheat_sheet.20131019.pdf), 2 (https://64nops.wordpress.com/2021/01/13/perfectly-accurate-z80-flags-and-cpc-timing/)) или можно по официальному мануалу расписать на основе поцикловых растактовок.

Ramiros
29.05.2024, 17:58
VV - INR M и DCR M должны быть 12, не 16 тактов.

Исправил, новая версия в облаке.

ivagor
29.05.2024, 18:46
Ramiros, за 200 МГц отдельное спасибо!

ivagor
29.05.2024, 21:40
Рано я радовался, оказалось VV намного требовательнее Emu и Emu80 и реализвать возросший потенциал разгона вектора на текущем компе не получается. Мой комп в VV без пропуска кадров тянет максимум 36 МГц, в Emu и Emu80 120 МГц (и даже больше) без проблем.

Ramiros
29.05.2024, 23:15
Рано я радовался, оказалось VV намного требовательнее Emu и Emu80 и реализвать возросший потенциал разгона вектора на текущем компе не получается. Мой комп в VV без пропуска кадров тянет максимум 36 МГц, в Emu и Emu80 120 МГц (и даже больше) без проблем.

Есть две опции, которые жрут много процессорного ресурса: File-Tape-Support CAS files и Screen-Rendering-High quality, если их отключить, у меня вывозит 70 МГц. на современных райзенах можно и 100 выжать

ivagor
30.05.2024, 06:41
Rendering-High quality
Эту опцию я не включал, а отключение Support CAS files позволило поднять частоту до 57 МГц. Пожелание добавить клавиатурный шорткат на включение/выключение Support CAS files.

Pyk
12.06.2024, 15:39
Emu80 - перепутаны местами тайминги условных CALL при выполнении и невыполнении условия. Должно быть 20 и 12, а есть 12 и 20 тактов. Ну и странная "некруглость" числа тактов, про это я уже писал, не очень критично на длинных тестовых фрагментах.
Тайминги исправил, была та же проблема и с условными переходами (длинными). В репозитории изменения еще не залил, разбираюсь пока с некруглостью - проблему нашел, но до конца еще не исправил (некруглость возникала на прерываниях). Надеюсь, все исправления войдут в следующий релиз.

Не напомнишь, у нас какие-нибудь бордюрные тесты для Z80 были? Навскидку что-то не нашел, может и не делали...

ivagor
12.06.2024, 16:19
была та же проблема и с условными переходами (длинными
Тут не понял, если длинные условные переходы это трехбайтовые команды JP C, JP NC и т.д., то их z80 исполняет за одинаковое время 10 тактов, на векторе 12 и в 4.0.466 так и есть.

какие-нибудь бордюрные тесты для Z80 были
Бордюрные тесты знаю только для 8080.

Pyk
12.06.2024, 18:32
если длинные условные переходы это трехбайтовые команды JP C, JP NC и т.д., то их z80 исполняет за одинаковое время 10 тактов
А, все ок тогда. В коде было перепутано, но из-за одинакового времени никак не проявлялось.

Pyk
13.06.2024, 14:54
Бордюрные тесты знаю только для 8080.
У кого-нибудь есть реал с Z80? Можно было бы попробовать набросать хотя бы элементарные тесты.
В принципе, сюрпризов не ожидается, но тем не менее...

litwr
06.07.2024, 07:35
Всё жду клавишу полного газа, которая есть практически у всех неотечественных эмуляторов. Неужели так трудно сделать? Такое есть даже в очень неудобном эмуляторе Вектора MESS/MAME. Ещё хотелось бы, чтобы при загрузке кнопкой LOAD память не чистилась.

parallelno
07.07.2024, 10:23
litwr, кнопка полного газа есть в моем эмуляторе
https://zx-pk.ru/threads/35808-devector-emulyator-kompyutera-vektor-06ts.html

parallelno
08.07.2024, 06:30
Ramiros,
Тестировал Cronox в твоем эмуляторе VV 714. В главном меню после повтора музыки заметны артефакты как будто кратковременные повторы семплов напоминающие заикания. Загрузка проца низкая.

ссылка на Cronox
https://caglrc.cc/scalar/ware/258/

ivagor
08.07.2024, 10:29
parallelno, можешь записать (Alt+R) и выложить куда-нибудь фрагмент с заиканиями? Сам в VV такого не слышал.

Ramiros
08.07.2024, 14:07
Ramiros,
Тестировал Cronox в твоем эмуляторе VV 714. В главном меню после повтора музыки заметны артефакты как будто кратковременные повторы семплов напоминающие заикания. Загрузка проца низкая.

ссылка на Cronox
https://caglrc.cc/scalar/ware/258/

Проверил, все ок, никаких артефактов не услышал.

Pyk
09.07.2024, 10:43
Всё жду клавишу полного газа, которая есть практически у всех неотечественных эмуляторов. Неужели так трудно сделать? Такое есть даже в очень неудобном эмуляторе Вектора MESS/MAME. Ещё хотелось бы, чтобы при загрузке кнопкой LOAD память не чистилась.
Принято. К сожалению, по ряду причин и то, и другое реализовать в Emu80 действительно не совсем просто. Поэтому руки не доходят, хотя в планах есть. :(

Хочется именно "полный газ"? Я планировал сделать настройку коэффициента ускорения по Del, чтобы можно было выставить значение, отличное от 4x по умолчанию. Устроит?

- - - Добавлено - - -

... либо последовательное ускорение в несколько нажатий.
Кажется, где-то тему ускорения уже обсуждали...

litwr
10.07.2024, 18:07
litwr, кнопка полного газа есть в моем эмуляторе
https://zx-pk.ru/threads/35808-devector-emulyator-kompyutera-vektor-06ts.html
Чувствуется, что автор работал за рубежом, отечественные эмулятороделы и похоже абсолютно все не умеют делать полный газ! Среди эмуляторов БК только один умеет полный газ и автор уже лет 30 в Штатах. Прямо какой-то заговор и крутая конспирология. :) Но, к сожалению, мне опять не везёт, так как в основном всё хозяйство под Линуксом.

Принято. К сожалению, по ряду причин и то, и другое реализовать в Emu80 действительно не совсем просто. Поэтому руки не доходят, хотя в планах есть. :(

Хочется именно "полный газ"? Я планировал сделать настройку коэффициента ускорения по Del, чтобы можно было выставить значение, отличное от 4x по умолчанию. Устроит?

- - - Добавлено - - -

... либо последовательное ускорение в несколько нажатий.
Кажется, где-то тему ускорения уже обсуждали...

Ну умеют почти все неотечественные эмуляторы полный газ... Ну если никак, то хорошо бы где-то иметь возможность поставить 8х или 16х. Хотя сомневаюсь, что любой комп потянет реально 16 и больше, а это и будет полный газ. :)
А Корвет с Микродос под 477 заработал нормально.

parallelno
12.07.2024, 20:23
parallelno, можешь записать (Alt+R) и выложить куда-нибудь фрагмент с заиканиями? Сам в VV такого не слышал.

запись с Alt+R из эмулятора VV. Заикания были слышны, но на записи отсутствуют
https://jmp.sh/s/qjbDXDW5kR9Tru4VyfXA
запись через OBS. Заикания были слышны, и присутствуют на записи
https://youtu.be/ol8kGLYccfw

луп 1 заканчивается на 30 секунде
заикания на 35 секунде
луп 2 заканчивается на 55 секунде
заикания на 60 секунде

Ramiros
12.07.2024, 21:07
parallelno, Тут явно проблемы с производительностью на ядро. Попробуй отключить опцию File->Tape->Support CAS Files. Иногда в разных местах кода эта опция дает кратковременную большую нагрузку на ядро CPU и происходят пропуски кадров, а аудиобуфер не получает обновление. Возможно проблема в другом софте или даже в железе. Еще можно попробовать включить CPU->High Priority Application.

ivagor
12.07.2024, 21:21
У меня такого нет, но если кликнуть мышкой на верхней границе окна эмулятора, то можно получить похожие заикания. CPU 000-001%, интересно, такого у меня тоже нет.

Ramiros
12.07.2024, 21:38
У зеонов ядер много, но они низкочастотные (E5-2650v2 не исключение), поэтому загрузка CPU пару процентов, но эмулятор то юзает в основном 1 ядро. еще проблема может быть в настройках энергосбережения в BIOS, т.к. нагрузка маленькая CPU сбрасывает коэффициент до минимума, и когда видит что производительности на ядро не хватает подкидывает его обратно, как раз в эти моменты и происходят тормоза.

ivagor
13.07.2024, 06:38
Есть еще вариант. Насколько помню встроенный антивирус 10ки сильно не любит VV. Если он используется, то можно попробовать или временно отключить или добавить в исключения.

KTSerg
13.07.2024, 13:09
Не знаю, или уже не помню, поднималась ли такая тема про эмуляцию Вектора, или нет... решил чутка поворчать...
Помнится мне, на телевизорах, картинка Вектора, была сплошь полосатая, так как у него используются только чётные (или не чётные, не вникал) строки растра.
А на эмуляторах вроде как картинка и не совсем "оригинал", так как строки растра не пропускаются.
Может просто нужно в эмуляторах выбирать какой-то режим экрана, или настройку, чтобы увидеть оригинальную картинку с "черезстрочным" растром ?
;)

ivagor
13.07.2024, 13:19
VV: Screen>Display Effects>Scan Lines
Emu80: Настройки>Настройки эмулятора>Экран>Эмуляция линий растра

x-code
19.07.2024, 16:30
на телевизорах, картинка Вектора, была сплошь полосатая, так как у него используются только чётные (или не чётные, не вникал) строки растра.

Я такой эффект видел на старых IBM PC в некоторых режимах типа 640x200.
А вот, как раз, на Векторе, на обычном советском телевизоре "Берёзка" вот этой полосатости растра не было совсем.

KTSerg
21.07.2024, 13:10
Я такой эффект видел на старых IBM PC в некоторых режимах типа 640x200.
А вот, как раз, на Векторе, на обычном советском телевизоре "Берёзка" вот этой полосатости растра не было совсем.
Может у той "Берёзки" фокусировка луча была такая, что засвечивались даже не используемые строки растра.

ivagor
21.07.2024, 14:12
Честно говоря, у меня не осталось чересстрочных воспоминаний про вектор, но кажется что-то такое было со спеком (ленинградом). Возможно дело в фоне, который у вектора в бейсике по умолчанию черный, а у спека белый.

svofski
21.07.2024, 16:20
У меня есть относительно свежие фотки с Вектора, подключенного к ЭЛТ EIZO. Строки там хорошо видны. Чем бы Вектор отличался от всех остальных компьютеров? Только тем, что KTSerg сказал - размытостью телевизора
В эмуляторах этот эффект может быть немного преувеличен.

parallelno
07.08.2024, 07:12
Ramiros, есть ли опция рисовать весь бордюр для вектора то есть 768x312?

parallelno
07.08.2024, 10:14
Речь была про эмулятор VV автору эмулятора.
Но спасибо за информацию.

ivagor
07.08.2024, 11:03
Речь была про эмулятор VV автору эмулятора.
Хорошо, удалил свое сообщение. Больше не буду влезать в ответы на твои вопросы.

Ramiros
07.08.2024, 21:59
Ramiros, есть ли опция рисовать весь бордюр для вектора то есть 768x312?

К сожалению нет и скорее всего не будет, для этого потребовалось бы много чего переписать, на что я пока не готов.

rst
09.09.2024, 17:16
Читал здесь, что с игрушкой pillars у всех эмуляторов проблемы. Но не очень понял - из-за чего именно они происходят?
Загорелся я тут недавно идеей написать собственный эмулятор "Вектора-06Ц" (когда-то в юности это был мой первый свой комп ;) ). И уже почти сделал это. Под win. Почти все программы работают. Кроме pillars. Не могу найти причину... :(
Вижу, что в "Virtual Vector" pillars работает. Может народ подскажет - в чём там засада? Куда копать?

Improver
09.09.2024, 17:27
Может народ подскажет - в чём там засада? Куда копать?Вот тут (https://zx-pk.ru/threads/9826-vektor-06ts-emulyatsiya-kr580vm80a.html?p=190224&viewfull=1#post190224) ответ был, вроде. Особенности работы процессора, которые следует учесть в эмуляторе.

svofski
09.09.2024, 17:32
Читал здесь, что с игрушкой pillars у всех эмуляторов проблемы. Но не очень понял - из-за чего именно они происходят?
Загорелся я тут недавно идеей написать собственный эмулятор "Вектора-06Ц" (когда-то в юности это был мой первый свой комп ;) ). И уже почти сделал это. Под win. Почти все программы работают. Кроме pillars. Не могу найти причину... :(
Вижу, что в "Virtual Vector" pillars работает. Может народ подскажет - в чём там засада? Куда копать?
Может быть у эмуляторов были проблемы 15 лет назад, но мир не стоял на месте. Мы все усердно трудились все эти годы и вот сейчас, в 2024, насколько я знаю, сейчас нет эмуляторов, у которых эта проблема сохранилась ;)

Копать надо в обработку флага дополнительного переноса в инструкции SUB.

rst
09.09.2024, 17:42
Копать надо в обработку флага дополнительного переноса в инструкции SUB.Так копал уже.
Сделал тест, в котором "SUB C" вычисляется в цикле для всех возможных значений A=0...0xFF и для значений C=0...0x40 с предварительно всеми сброшенными флагами и предварительно всеми установленными. Сохраняя регистр флагов после каждой операции. Запустил этот тест на своём эмуляторе и на VV, сравнил дампы результата - совпадение полное. Может конечно в оставшемся диапазоне C=0x40...0xFF косяк, но как-то маловероятно.

svofski
09.09.2024, 18:18
Так копал уже.
Сделал тест, в котором "SUB C" вычисляется в цикле для всех возможных значений A=0...0xFF и для значений C=0...0x40 с предварительно всеми сброшенными флагами и предварительно всеми установленными. Сохраняя регистр флагов после каждой операции. Запустил этот тест на своём эмуляторе и на VV, сравнил дампы результата - совпадение полное. Может конечно в оставшемся диапазоне C=0x40...0xFF косяк, но как-то маловероятно.

Я могу предложить две вещи:
1) прогнать на своем процессоре 8080 Exerciser https://github.com/begoon/8080ex1 -- тест брутальный и выявляет любые неточности
2) сравнить свой код с кодом Begoon https://github.com/begoon/i8080-core/blob/master/i8080.c#L172

ZEman
09.09.2024, 18:42
rst, а что у тебя за эмуль, можно ли нам на него глянуть ?

rst
09.09.2024, 18:56
Я могу предложить две вещи:
1) прогнать на своем процессоре 8080 Exerciser https://github.com/begoon/8080ex1 -- тест брутальный и выявляет любые неточности
2) сравнить свой код с кодом Begoon https://github.com/begoon/i8080-core/blob/master/i8080.c#L172Спасибо! Если иначе найти не получится - буду пробовать.

Ещё такой вопрос:
При выполнении "теста CPU" из "Теста устройств" базового набора программ своим эмулятором я вижу значения измеренной производительности:
624тыс.оп и 749тыс.оп. Но вроде как память подсказывает, что на реальном Векторе результаты были: 623тыс.оп и 748тыс.оп.
Т.е. получается - что-то у меня выполняется слишком быстро? По идее - команды не должны, тогда бы разница была гораздо существеннее. Есть подозрение, что у меня установлена неверная длительность входа в прерывание. Я её задал равной длительности команды "RST 7". Но, возможно, нужно больше тактов добавить.
Может кто подсказать по длительности входа в прерывание на реальном "Вектор-06Ц"? (который без доработок, оригинальный Кишинёвский).

Или всё-таки мне память изменяет, и тест на реальном Векторе тоже мог показывать 624/749?

- - - Добавлено - - -


rst, а что у тебя за эмуль, можно ли нам на него глянуть ?У меня свой. Я его ещё только пишу. Ему всего только месяц от роду. :v2_dizzy_egg:
Пока он ещё очень сырой. Ещё не приступал к эмуляции ВИ53 и вообще звука. Также пока плохо проработано маппированние клавиатуры. Займусь ими когда полностью выгребу все вопроосы по корректной эмуляции команд и работе разных программ.
Осталась одна pillars. Других неработающих больше не нашёл.

Но зато в моём эмуляторе уже более навороченный и удобный (на мой взгляд!) встроенный отладчик, чем в VV. Да простит меня автор VV. Тысяча извинений! Его эмулятор реально крут!.... за исключением встроенного отладчика. ;)

Как более-менее допилю - поделюсь. Если конечно кому интересно.

svofski
09.09.2024, 19:06
Т.е. получается - что-то у меня выполняется слишком быстро? По идее - команды не должны, тогда бы разница была гораздо существеннее. Есть подозрение, что у меня установлена неверная длительность входа в прерывание. Я её задал равной длительности команды "RST 7". Но, возможно, нужно больше тактов добавить.
Может кто подсказать по длительности входа в прерывание на реальном "Вектор-06Ц"? (который без доработок, оригинальный Кишинёвский).
Не зная других деталей трудно подсказать. Вход в прерывание такая же инструкция, как и все остальные. Может быть дело в торможении процессора? У Вектора время каждого машинного цикла округляется вверх до чиста тактов, кратного четырем. За одно прерывание исполняется 59904 такта, 312 строк по 192 такта.

rst
09.09.2024, 19:50
Не зная других деталей трудно подсказать. Вход в прерывание такая же инструкция, как и все остальные. Может быть дело в торможении процессора? У Вектора время каждого машинного цикла округляется вверх до чиста тактов, кратного четырем. За одно прерывание исполняется 59904 такта, 312 строк по 192 такта.Оп! А здесь можно подробнее? Почему 59904, а не 3e6/50=60000 ? Процессор останавливается сигналом прерывания на 96 тактов?
Наверное это можно почерпнуть из схемы, но.... долго разбираться. Поэтому буду благодарен за пояснения.

PS: Если так, то всё понятно: (96/6e4+1)*748 = ~749тыс.оп; и (96/6e4+1)*623 = ~624 тыс.оп
Как раз получаются мои показания. Спасибо!

svofski
09.09.2024, 20:09
Почему 59904, а не 3e6/50=60000 ? Процессор останавливается сигналом прерывания на 96 тактов?
Процессор не останавливается. Частота кадров у Вектора не совсем 50Гц, но мы это предпочитаем игнорировать. А цифры получаются просто из числа строк и их длительности -- маленькая погрешность в пользу упрощения схемотехники.

Ramiros
09.09.2024, 20:35
rst, Pilars использует особенность реализации команды вычитания через сложение, т.е. i8080 на самом деле выполняет не вычитание, а сложение с числом в дополнительном коде и флаг дополнительного переноса при этом получается инвертированый, если сравнивать его с этой же командой SUB на i8086, там этот баг уже пофиксили.

rst
14.09.2024, 07:43
В общем - pillars заработала. Проблема была не в эмуляции команд, а в неверной эмуляции работы с прерываниями. Из разных кривых описаний в сети я решил, что во время действия запрета прерывания, новое событие запроса прерывания защёлкивается. И хранится до момента разрешения прерываний. И активируется после разрешения. И только команда DI сбрасывает ждущий запрос прерывания (если он есть).
Оказывается - никакого запоминания запроса нет. Если на момент запроса прерывания запрещены - запрос просто игнорируется.
Сразу после исправления этого, pillars и заработала.

parallelno
18.09.2024, 02:15
rst, мой эмулятор тоже споткнулся об игру pillars. Оказалось что я забыл выставить неиспользуемые биты регистра флагов в нужные значения при выполнении pop psw. Хотел посоветовать посмотреть в эту сторону, а ты уже разобрался. Отлично! :)
Кстати про дебагинг. Интересно глянуть на функционал который у тебя в эмуляторе. Я тоже добавил некоторые фишки в свой.

rst
18.09.2024, 12:02
rst, мой эмулятор тоже споткнулся об игру pillars. Оказалось что я забыл выставить неиспользуемые биты регистра флагов в нужные значения при выполнении pop psw. Хотел посоветовать посмотреть в эту сторону, а ты уже разобрался. Отлично! :)Все обычно почему-то спотыкаются на флагах. Но я - на другом. ;)


Кстати про дебагинг. Интересно глянуть на функционал который у тебя в эмуляторе. Я тоже добавил некоторые фишки в свой.Как только более-менее закончу - поделюсь. Пока ещё слишком сырой - много чего не доделано или сделано на скорую руку.
Но некоторые вещи (типа эмуляции звука) у меня работают уже лучше, чем у существующих эмуляторов. ;)

ivagor
18.09.2024, 13:08
Но некоторые вещи (типа эмуляции звука) у меня работают уже лучше, чем у существующих эмуляторов.
Существующие эмуляторы вектора очень сильно отличаются по качеству эмуляции звука. На примере какой программы сравниваете?

rst
18.09.2024, 18:33
На примере какой программы сравниваете?На примере VV (Virtual Vector). Другие не пробовал.

ivagor
18.09.2024, 19:10
Под программой я подразумевал программу для вектора, которую запускаем в эмуляторе и слышим разницу с другим эмулятором или реалом.
Основная проблема для эмуляторов - ШИМ во всех его проявлениях (и "преднамеренный" шим и биперная музыка). Остальное сравнительно легко поправить. Сам условно делю современные эмуляторы на 1) группу с качеством получше: лидер v06x и на втором месте Emu80; 2) с качеством похуже: VV и Emu. У VV и Emu свои фишки, на звуке свет клином не сошелся, но мне, например, он очень важен. Пару раз очень кратко пробовал Devector в win10, и он приятно удивил качеством звука, но это было мельком и сложного почти ничего не попробовал.