PDA

Просмотр полной версии : Xpeccy



Страницы : 1 2 3 4 5 6 7 8 9 10 [11] 12

Bedazzle
11.08.2021, 12:08
Звук при этом открывается? В настройках вывод не NULL? А то заметил тут одну неприятность... Если подтвердится, вернусь обратно на SDL1

Сейчас на вин 10 - тоже белый экран на свежей версии.

Поставил в настройках звука SDL, резетнул в дефолт, появилась синклеровская заставка.
Теперь снапшот нормально загрузился и музыка пиликает.

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

Похоже, если звук стоит в NULL, то даже резет в дефолт не отрабатывает.

SAM style
11.08.2021, 15:36
Похоже, если звук стоит в NULL, то даже резет в дефолт не отрабатывает
Значит, подозрения подтвердились. Короче, я забыл добавить в NULL добавление нужного числа сэмплов для генерации в процессе эмуляции. Вывод SDL это делает. Ясно-понятно-будет-исправлено.

Bedazzle
11.08.2021, 17:42
Значит, подозрения подтвердились. Короче, я забыл добавить в NULL добавление нужного числа сэмплов для генерации в процессе эмуляции. Вывод SDL это делает. Ясно-понятно-будет-исправлено.

Спасибо!

Rubts0FF
17.08.2021, 05:28
Можно полистать комменты, от первой публикации, но не факт что найду. Не запускается под XP, чем то недоволен. Это идеология не позволяет или у меня на компе чего то не хватает. (В гараже нашел старый ящик, реанимировал, балуюсь. К нему 19` почти квадратный монитор 4х5, любимые пропорции).

Bedazzle
17.08.2021, 10:45
Не запускается под XP, чем то недоволен. Это идеология не позволяет или у меня на компе чего то не хватает.

— Вот что, — сказал Эдик. — Так нельзя. Мы работаем, как дилетанты. Как авторы любительских писем: "Дорогие ученые. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит. Система нужна. Где у тебя бумага, Витя? Сейчас мы все распишем…

Братья Стругацкие
"Понедельник начинается в субботу"

SAM style
17.08.2021, 11:33
Наверное, в давно закопанной оси туго с опенгл-ами.
75970

beliy
20.08.2021, 09:31
Извиняюсь если уже спрашивали ранее, но планируется ли поддержка корветов?

SAM style
20.08.2021, 11:34
Извиняюсь если уже спрашивали ранее, но планируется ли поддержка корветов?
Пока что - нет. Хотя, наверное, будет проще, чем кажется...

beliy
20.08.2021, 21:25
Пока что - нет. Хотя, наверное, будет проще, чем кажется...

Спасибо, был бы благодарен если вдруг найдете время и желание, т.к. эмулятора под линукс с сорцами и который развивается для корвета к сожалению нету(

Rubts0FF
27.08.2021, 19:47
Наверное, в давно закопанной оси туго с опенгл-ами.
Вот такая фигня
https://a.radikal.ru/a16/2108/a5/bd15ce64d9ac.jpg (https://radikal.ru)
А более старая, не скажу насколько, я собрал больше десятка и пытался запустить, одна из древних запустилась, остальные выдавали приблизительно то же что на снимке выше. И выскакивает дважды.
Насчет "закопанных", если бы сделали нормальную поддержку х64 я бы и сейчас сидел на "закопанной". 8-10 на дух не переношу, одна надежда на 11, но что то не вериться. Что остается - хакинтош? *nix`сы, там не работает продукция Adobe и не только.
м-да, не по теме, но так уже мелкомягкий достали со своими уродливыми ос, вот и прорвало.

Black Cat / Era CG
27.08.2021, 20:08
Я на 7ке. Работает, но последние версии, не отследил с какой, тормозят :(

SAM style
27.08.2021, 20:30
Вот такая фигняКак всегда, винда очень информативна: "ААААА что-то произошло!!! Ошибка #ahscbt54557asdbbbfxzzЫ".
Как я уже писал выше, скорее всего это несовместимость Qt5OpenGL.dll, ибо сборка без него запускается на чистой XP.

Работает, но последние версии, не отследил с какой, тормозятЕсли не лень, покачай разные версии отсюда (https://github.com/samstyle/Xpeccy/releases), хотя бы определим где что пошло не так.

Black Cat / Era CG
27.08.2021, 21:19
Попробую.

Dart Alver
23.10.2021, 20:09
Сегодня попробовал запустить Xpeccy для эмуляции ZXM Phoenix. (build 0.6.20210720)
Результат - 2048 K не работает. Отсутствует переключение ОЗУ по 7-м битам портов #7FFD и #1FFD.
Т.е. в наличие только 512 K. А программы как правило определяют только 256 K.

SAM style
24.10.2021, 10:50
Результат - 2048 K не работает
Неправильно высчитывается номер страницы на C000. Сдвиги не в ту сторону :) Должно быть так:
src/libxpeccy/hardware/phoenix.c:6
int bank = (comp->p7FFD & 7) | ((comp->p1FFD & 0xd0) >> 1) | ((comp->p7FFD & 0x80) >> 3);Правда, когда соберу - это уже бооооольшой вопрос

Dart Alver
24.10.2021, 17:12
Неправильно высчитывается номер страницы на C000. Сдвиги не в ту сторону Должно быть так:


src/libxpeccy/hardware/phoenix.c:6
int bank = (comp->p7FFD & 7) | ((comp->p1FFD & 0xd0) >> 1) | ((comp->p7FFD & 0x80) >> 3);



Как бы работоспособно, но если следовать нумерации страниц по мануалу:


D0 - DO #7FFD
D1 - D1 #7FFD
D2 - D2 #7FFD
D3 - D4 #1FFD
D4 - D7 #7FFD
D5 - D7 #1FFD
D6 - D6 #1FFD

То должно быть чтото вроде этого:

int bank = (comp->p7FFD & 7) | ((comp->p1FFD & 0x10) >> 1) | ((comp->p7FFD & 0x80) >> 3) | ((comp->p1FFD & 0x80) >> 2) | (comp->p1FFD & 0x40);

Dexus
24.10.2021, 17:34
Dart Alver, Если работоспособно, то какая разница, в какой последовательности эти страницы расположены в эмуляторе?... Снапы все равно только 128к первые сохраняют...

Dart Alver
24.10.2021, 17:49
Если работоспособно, то какая разница, в какой последовательности эти страницы расположены в эмуляторе?...
Для работоспособности программ никакой. Была бы если эмулировался бы и вариант 1024 K , а так разве что нумерация в отладчике будет не по стандарту )))

Dexus
24.10.2021, 18:10
Dart Alver, Нумерация в отладчике это тоже беда, да.
Вообще с этими экзотическими платформами фиг разберешься. Вот эта твоя строка - тоже работоспособная? Я тогда виндовую сборку зафигачу...

Кстати заметил что у Phoenix кемстон порт 1F вроде в сабже не завезён... это вообще правильно?

Dart Alver
24.10.2021, 18:57
Кстати заметил что у Phoenix кемстон порт 1F вроде в сабже не завезён... это вообще правильно?
По описанию завезён через интегрированную мультикарту ZXMC-2.


Ниже перечислены аппаратные возможности, поддерживаемые интегрированной мульти-
картой ZXMC-2:

1) Работа с PS/2 IBM совместимой клавиатурой, эмулирующей стандартную клавиату-
ру ZX Spectrum;
2) Работа с PS/2 мышью, эмулирующую Kempston мышь с колесом;
3) RS232 интерфейс, с адресацией по Кондратьеву;
4) Часы реального времени (RTC), с поддержкой через порты #E0EF-#E7EF по стан-
дарту ZXMC-1, и через порты #BFF7, #DFF7, #EFF7 по стандарту Mr.Gluk;
5) Kempston Joystick;
6) Беззнаковый 16-ти разрядный аппаратный умножитель.

SAM style
24.10.2021, 19:13
нумерация в отладчике будет не по стандарту
Блин, об этом я как-то не подумал...

Dart Alver
24.10.2021, 19:27
Меня правда смущает в описании ZXMC тот момент, что практически на любое обращение к завязанным на неё портам (по крайней мере джойстик, клаву и мышь) формируется сигнал WAIT.
То бишь система притормаживается, интересно эта беда эмулируется или игнорируется ?
Помню когда сидел на реале на Profi, там тоже всё тормозилось при нажатии клавиатуры ))

Dexus
24.10.2021, 20:43
Помню когда сидел на реале на Profi, там тоже всё тормозилось при нажатии клавиатуры )
Не замечал такого. Wait это всего лишь 2 цикла.

В общем, сделал виндовую сборку https://volutar.myds.me/Xpeccy0.6.20211012.zip
Маска портов как Dart Alver написал. Заодно включил во всех конфигурациях #1F, т.к. это все-таки перефирия, и в идеале должна просто в опциях галочкой включаться-выключаться, а не быть частью базовой конфигурации, и не должна безальтернативно отсутствовать в некоторых клонах.
Плюс традиционно убрана обработка геймпада, когда приложение не в фокусе (стандартно в Xpeccy геймпад через SDL передает события в приложение всегда, даже когда минимизировано).

Dart Alver
24.10.2021, 21:55
Не замечал такого. Wait это всего лишь 2 цикла.
Может и два. Не знаю сколько циклов оно занимало на контроллере клавы в профи, но некоторые игрушки притупливались при удержании клавиш. Также звуки притормаживались, про мультиколор и говорить нечего. Но там джойстики были обычные без чуда контроллера, за счет них можно было и в такие игры играть. А вот на фениксе и джой и мыша на вэйтах, хотя может быть там и контроллер грамотнее сделан х.з. ))

Dexus
25.10.2021, 07:20
Dart Alver, А, имеется в виду ps/2 контроллер? Никогда его не использовал. Не могу ничего сказать.

Lethargeek
28.10.2021, 16:32
SAM style, багрепорт со спектрумкомпутинга:

I wanted to try the Xpeccy emulator for Windows, but it won't work on my system. At the start, it just shows a blank white window, which becomes black when I right-click on it to make the internal menu appear. Pressing the keys or trying to change the video options has no effect, except for changing the windows size. I also downloaded the ROM pack for the emulator, unzipped it in the /roms directory, tried to invoke emulation of other machines, but nothing changed.

Running on Windows 10, 64-bit, with a Nvidia GeForce GTX 1060 video card, latest drivers installed.

Update. I tested the emulator on my Lenovo 310 Ideapad and it worked without problems. The laptop has an integrated AMD ATI Radeon 5 GPU.
https://spectrumcomputing.co.uk/forums/viewtopic.php?f=23&t=5714

SAM style
28.10.2021, 18:48
SAM style, багрепорт со спектрумкомпутинга:
Оно, конечно, интересно, но как такое воспроизвести? У меня практически то же самое, только GTX1050, и проблемов не наблюдается... Либо настроить надо, вдруг там в стоит DummyComp с DummyCPU...
ЗЫ: вывод звука в NULL может вызвать повисание - после исправления этого бага я сборки не делал, только сорцы на гитхаб...

Lethargeek
28.10.2021, 18:52
Оно, конечно, интересно, но как такое воспроизвести?
снова запустить на том же компе? :) логи надо бы выводить подробные именно на такие случаи

SAM style
28.10.2021, 19:17
логи надо бы выводить подробные именно на такие случаи
xpeccy.exe -c под виндой присобачит консоль, куда иногда что-нибудь валится. Если работает F1, можно попробовать сменить вывод звука в SDL. Если оно не меняется после OK (надо снова зайти в настройки) - это SDL не может открыть звуковуху. Вот целых 2 варианта того, что происходит... Потом придумаю ещё чего-нибудь :)

Lethargeek
28.10.2021, 19:47
xpeccy.exe -c под виндой присобачит консоль, куда иногда что-нибудь валится. Если работает F1, можно попробовать сменить вывод звука в SDL. Если оно не меняется после OK (надо снова зайти в настройки) - это SDL не может открыть звуковуху. Вот целых 2 варианта того, что происходит...
вот как так-то, что из-за сбоя звука видео не работает? :v2_wacko:
напишу ему пока, пускай пробует

SAM style
28.10.2021, 22:20
вот как так-то, что из-за сбоя звука видео не работает?
При нормальной скорости эмуляции и без паузы сигналы на обновление окна выдаёт собственно сам процесс эмуляции, когда кадр отрисован.
Нет эмуляции - нет сигналов. нет сигналов - нет отрисовки. нет отрисовки... нет отрисовки.
PS: кстати, чел там дело написал. в 48-м при применении настроек почему-то экран становится черным :|

Lethargeek
29.10.2021, 06:50
При нормальной скорости эмуляции и без паузы сигналы на обновление окна выдаёт собственно сам процесс эмуляции, когда кадр отрисован.
Нет эмуляции - нет сигналов. нет сигналов - нет отрисовки. нет отрисовки... нет отрисовки.
так суть в том, почему без звука нету эмуляции видео
вот захочешь ты впилить zx80, на котором в принципе звука нет
и что, зачем-то будешь эмулировать тишину?

SAM style
29.10.2021, 09:50
так суть в том, почему без звука нету эмуляции видео
вот захочешь ты впилить zx80, на котором в принципе звука нет
и что, зачем-то будешь эмулировать тишину?
Суть не в том, что эмулируемая машина производит тишину. А в обработчике таймера SDL, который используется вместо коллбэка, если вывод в NULL. Именно там сидит баг, который не "толкает" эмуляцию вперёд.
Каждый сэмпл, который ложится в буфер звука, опрашивает текущую машину на предмет громкости. Если в машине звука нет - будет тишина, но буфер всё равно будет заполняться и выводится. Мало того, даже в паузе и ускоренном режиме буфер заполняется последним сгенерированным сэмплом - это чтобы не было щелчка.

Dexus
29.10.2021, 22:56
Lethargeek, Пусть попробует мою сборку из #2524. С последними коммитами и конфигами. На всякий случай.

SAM style
07.11.2021, 21:17
Пока я занят совершенно не относящимся к интересам пользователей эмулятора штуками... суть такова: я сменил себе i5-8500 на ryzen7-3700x и поимел неработающую виртуалку с хакинтошем. Разобраться с наскока не получилось, начисто оно тоже не ставится. Виртуализация в биосе включена, винда в виртуалке работает. Виртуалбокс ругается "1024 - Nested Page Fault", рандомным тыканием по настройкам это починить не удалось - что со включенными галками, что без них виртуалка выключается через 2-3 секунды после старта.
Корочеееее, пока не поборю это - под маки собирать не смогу. Как крайнее решение - вернуть в комп i5-8500, но это будет после НГ, т.к сейчас есть задача, которую он не вывозит...

SAM style
24.11.2021, 08:32
И экспериментально добавлены расширенные инструкции процессора от z80n (без регистров и видеорежимов Next).
Не припомню, чтобы я делал эту шнягу. Развели тут самодеятельность...

Dexus
24.11.2021, 13:12
Развели тут самодеятельность...
Да, инициатива бьет инициатора.
Реальность такова, что Next на данный момент популярнее Профи, или Скорпионов, если не сказать хужее - популярнее Evo/TSConf (но, конечно не в российском сегменте)... Логично хотя бы пытаться какие-то шаги делать навстречу этой реальности... Хотя бы в качестве эксперимента и proof of concept.

SAM style
24.11.2021, 13:34
Да, инициатива бьет инициатора.
Реальность такова, что Next на данный момент популярнее Профи, или Скорпионов, если не сказать хужее - популярнее Evo/TSConf (но, конечно не в российском сегменте)... Логично хотя бы пытаться какие-то шаги делать навстречу этой реальности... Хотя бы в качестве эксперимента и proof of concept.Тогда иди разрабатывать в свою тему. Тут моя.

Dexus
24.11.2021, 13:39
SAM style, Успокойся. Никто у тебя тему не отбирает.

SAM style
24.11.2021, 13:57
Только создаёт тут путаницу. Потому что я никакие нексты (широко известные в узких кругах) добавлять не собираюсь. А ты спокойно будешь методично складывать свои сборки в своей теме, не засоряя эту.

Dexus
24.11.2021, 14:49
SAM style, уже никто никуда складывать ничего не будет.

SAM style
31.12.2021, 15:17
build 20211231

Из того, что помню:

Починен вывод звука NULL
Нормальный ContIO, но ненормальный ContMem (потому что я пока не знаю, как сделать задержки внутри циклов, только на mrd/mwr, а там есть ситуации, когда каждый такт цикла вэйтиться должен, потому что ула реагирует на висящий на шине адрес)
В дебугере появился дамп видеопамяти - это для платформ, где видеопамять вне ОЗУ (msx, nes...)
В дебугере можно вставлять однострочные комментарии в дизасме, просто начните адрес с ;
В дебургере есть возможность сохранить всю разметку памяти, метки и комментарии в один файл. И загрузить. И есть ключ ком.строки --xmap для их загрузки.
А что касаемо ибм-а, это всех, наверное, мало касается... Да и не работает он пока нормально...


[ Скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20211231) ]

RomanRom2
06.01.2022, 03:32
build 20211231


Last login: Fri Dec 17 16:01:02 on ttys003
MacBook-Pro-Roman:~ romanrom2$ /Volumes/xpeccy_0.6.20211231_x86_64/xpeccy.app/Contents/MacOS/xpeccy ; exit;
Using SDL ver 1.2.15
Using ZLIB ver 1.2.5
Using Qt ver 5.9.0
Joystick not opened
SDL audio device opening...success: 44100 882 (32784 / 32784)
Segmentation fault: 11
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...36 completed.

[Процесс завершен]

что можно сделать? давайте попробуем починить? :v2_dizzy_botan:

SAM style
06.01.2022, 10:26
что можно сделать? давайте попробуем починить?
Сделать дебажную сборку и выявить причину сегфолта. Имею хакинтош в виртуалке, и там он не крашится. По "Segmentation fault:11" причину узнать невозможно. Вот и вся диагностика по предоставленной информации.

SAM style
19.02.2022, 19:27
build 20220219


В дебугере появился дамп cmos-а
Переработан диалог редактирования точек останова
Файлы пзу теперь можно распихать в подкаталоги каталога /roms, диалог редактирования ромсета показывает дерево
Починил-сломал-и снова починил проигрывание rzx. Но пзу всё равно нужно то, на котором записывалось (скорее всего, от 48K/128K моделей)
При использовании SDL2 определяется подключение-отключение геймпада
Отрисовка переведена на RGBA, вроде так даже быстрее получилось

Похоже, в suse совсем забили на 32-битные версии, репы почти пустые, обновить Qt в песочнице не получилось, и собрать тоже...
ЗЫ: надеюсь, больше ничего не поломал

[ скачать (https://github.com/samstyle/Xpeccy/releases/tag/0.6.20220219) ]

zebest
20.02.2022, 00:00
https://media.discordapp.net/attachments/689220116801650811/944698814319710208/unknown.png?width=612&height=400
Попробовал, чеж не попробовать. Елси один раз.
Требование о получать нажатие клавиш - при кажном запуске программы, и пофиг, что ты уже разрешил в прошлый раз.
Кнопки "залипают" :( Сильна.
Если вкл. zx keyboard экранную - то залипают гораздо реже. Даже тест удалось запустить.
зы - это была единичная акция, сорри
OS Catalina

anarchyman
20.02.2022, 03:51
Попробовал, чеж не попробовать. Елси один раз.
Требование о получать нажатие клавиш - при кажном запуске программы, и пофиг, что ты уже разрешил в прошлый раз.
Кнопки "залипают" :( Сильна.
Если вкл. zx keyboard экранную - то залипают гораздо реже. Даже тест удалось запустить.
зы - это была единичная акция, сорри
OS Catalina
Привет!
Шикарный пост!
Расскажи как собрал - попробую затестить на Big Sur 11.6.4

SAM style
20.02.2022, 09:39
Требование о получать нажатие клавиш - при кажном запуске программы, и пофиг, что ты уже разрешил в прошлый раз
Что-то ябблоспецифичное. Собираю в хакинтоше капитана, ничего подобного не наблюдал.

ZX_NOVOSIB
21.10.2022, 14:00
надеюсь
https://zx-pk.ru/threads/10817-zxm-videocard.html - сделай плиз эмуляцию вот этой штуки

Edmon
15.11.2022, 19:25
Всем привет. Объясните плиз, куда кидать папку roms в mac os?

SAM style
17.11.2022, 14:48
Всем привет. Объясните плиз, куда кидать папку roms в mac os?
Туда же, куда на линуксах:
~/.config/samstyle/xpeccy/roms
~ - это хомяк, домашняя директория

newart
18.11.2022, 00:52
На маке нет звука, и шрифт очень сильно размыт в дебаггере.

Dexus
18.11.2022, 16:20
На маке, полагаю, кто-то из маководов должен свою ветку создать, и мейнтейнить все существующие кейсы, и регулярно сборки делать, как, например, я собираю виндовую.
Под маками еще для разных версий мака собирать наверное нужно (для разных билдов макоси, для x86/m1)... Едва ли можно не будучи маководом как следует это мейнтейнить.

Xela
18.11.2022, 17:45
как, например, я собираю виндовую
а где можно ваши сборки скачать?

Dexus
18.11.2022, 20:59
а где можно ваши сборки скачать?
На странице проекта (и на нуль-посте) есть ссылки на инструкции. В них есть ссылки на свежую сборку.

Xela
10.12.2022, 22:00
Сходу в теме не нашел (и в описании тоже) - SD карта по какому стандарту эмулируется?

Dexus
11.12.2022, 07:53
Xela, насколько можно увидеть из исходников - по портам #57/#77, через SPI, гугл подсказал что это схема Z-контроллера от KOE, которую nedopc взяли для pentevo.

SAM style
12.12.2022, 14:45
ЗЫ: SD-карта видна только из TSConf/Baseconf, у остальных моделей к ней нет доступа

Xela
15.12.2022, 16:10
Еще пара вопросов:

1 .Ноутбук Lenovo, две видеокарты - ATI и Nvidia, Windows 11, Xpeccy "обычная" версия 0.6.20221111a - очень низкий FPS - что-то около 10-13, дикие тормоза. _nogl-версия получше, но тоже работу комфортной не назовешь. Вне зависимости от того, к какой видеокарте "привязываю" эмулятор.
Куда копать? в чем может быть причина тормозов?

2. Данные для образа HDD из самого образа берутся? Руками ничего не могу изменить: ни цифры ввести, ни стрелками поменять - как быть?
https://i.postimg.cc/0Mhc09JB/20221215-14074874.png (https://postimg.cc/0Mhc09JB)

Dexus
15.12.2022, 21:18
Очевидно что две видюхи и что-то с драйверами не то. Как так вообще сразу и Nvidia и ATI, так разве бывает? Знаю Intel с Nvidia, с интелом в качестве основной, и приходилось хитрые драйвера ставить чтобы оно корректно работало. Полагаю тут тоже нужно где-то в драйверах настраивать с какой видюхой приложение должно запускаться.

Xela
15.12.2022, 22:03
Очевидно что две видюхи и что-то с драйверами не то
С драйверами все в порядке.



Как так вообще сразу и Nvidia и ATI, так разве бывает? Знаю Intel с Nvidia,
Бывает. в процессорах Intel - интегрированная карта Intel. в процессорах AMD - интегрировано ATI.



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

https://i.postimg.cc/4YcymCDw/20221215-19465387.png (https://postimg.cc/4YcymCDw)

Dexus
15.12.2022, 23:03
С драйверами все в порядке.
По всей видимости Qt'шный OpenGL так не думает.
Смотри что там в Xpeccy.log пишет по поводу QGL/OpenGL (если это моя сборка).
И вообще загрузку процессора/GPU.
Возможно что это и что-то W11-специфичное.

Xela
16.12.2022, 01:22
Смотри что там в Xpeccy.log пишет по поводу QGL/OpenGL (если это моя сборка)
<-> [ 0.21ms] 21:29:48.484 : Start logging at 15.12.22 21:29:48.484 ...
<-> [ 245.81ms] 21:29:48.737 : Using SDL ver 2.0.14
<-> [ 0.52ms] 21:29:48.737 : Using ZLIB ver 1.2.5
<-> [ 0.43ms] 21:29:48.737 : Using Qt ver 5.15.1
<#> [ 320.43ms] 21:29:49.067 : Joystick not opened
<#> [ 241.19ms] 21:29:49.315 : Timers started
<#> [ 1.00ms] 21:29:49.316 : User menu filled
<#> [ 4.00ms] 21:29:49.320 : Listening port 30000
<#> [ 0.51ms] 21:29:49.320 : QGLContext created
<#> [ 48.76ms] 21:29:49.370 : QGL OpenGL version: 4.6
<#> [ 99.61ms] 21:29:49.473 : Context made current
<#> [ 0.48ms] 21:29:49.473 : OpenGL Info: VENDOR: NVIDIA Corporation
<#> [ 0.43ms] 21:29:49.474 : RENDERDER: NVIDIA GeForce RTX 3070 Laptop GPU/PCIe/SSE2
<#> [ 0.40ms] 21:29:49.474 : VERSION: 4.6.0 NVIDIA 522.30
<#> [ 0.40ms] 21:29:49.475 : GLSL VERSION: 4.60 NVIDIA
<#> [ 1.41ms] 21:29:49.476 : OpenGLShaders support: vertex yes, fragment yes
<#> [ 0.45ms] 21:29:49.477 : QGLShaders created
<#> [ 279.04ms] 21:29:49.764 : vid_set_resolution 320 x 200
<#> [ 376.41ms] 21:29:50.150 : SDL audio device opening...success: 48000 960 (32784 / 32784)

т.е. все-таки Nvidia


И вообще загрузку процессора/GPU.
ничего из ряда вон выходящего - CPU ~3-5%, GPU - тоже ничего зашкаливающего.



Возможно что это и что-то W11-специфичное.
яснопонятно)

Dexus
16.12.2022, 08:37
яснопонятно)
Все остальное выглядит нормально. Поддержка нативных компонентов win11 в qt только с версии 6.2 началась. А старые версии с qt5widgets вообще неизвестно через какие костыли 11й проходят прежде чем выводиться.
https://learn.microsoft.com/en-us/answers/questions/973030/progam-is-slow-windows-11-qt-155.html
Мое предположение - какие-то проблемы с таймерами, раз фпс маленький но процессоры курят.
Я в подобных обстоятельствах, когда меня достали подергивания и кривой фпс под моей 7ркой, поставил qt, с помощью samstyle научился собирать, и начал отлаживать, с таймерами шаманить, opengl подключать чтобы выглядело хорошо и отзывчиво. Под linux по рождению проблем нет, а macos/win - уж как получится. В 10ке напридумывали всяких графических приоритетов в настройках, может и в 11 что-то там для совместимости можно сделать. Любите экспериментальные операционки - любите и саночки возить, как говорится.

Еще 10ку нормально не доделали и баги не исправили, и уже 11ю ловить предлагают. Мало старого глюкалова - нате вам еще. :)

SAM style
17.12.2022, 09:06
Данные для образа HDD из самого образа берутся? Руками ничего не могу изменить: ни цифры ввести, ни стрелками поменять - как быть?
CHS/LBA рассчитываются из размера файла, так что он сразу должен быть нужного объёма

Dexus
23.12.2022, 14:21
Проверили на другом компе с win11, 50фпс, все ровно...
Xela, то есть это что-то очень индивидуальное.

Xela
23.12.2022, 15:20
то есть это что-то очень индивидуальное
ясно, спасибо! ну в смысле куда копать понятней не стало.

Grand
11.02.2023, 08:41
И все-таки, очень не хватает эмуляции Scorpion'а с ПрофПЗУ, как это есть в UnrealSpeccy.

https://i.postimg.cc/ZWcr7JFQ/2023-02-11-12-13-18.png (https://postimg.cc/ZWcr7JFQ)

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

В свое время я изучал работу ПрофПЗУ по этому мануалу:
http://scorpion-zs.narod.ru/ProfROMse.doc

SAM style
11.02.2023, 10:08
И все-таки, очень не хватает эмуляции Scorpion'а с ПрофПЗУ, как это есть в UnrealSpeccy.
https://i.postimg.cc/ZWcr7JFQ/2023-02-11-12-13-18.png (https://postimg.cc/ZWcr7JFQ)

?
Так оно же есть.
78482

Grand
12.02.2023, 11:42
?
Так оно же есть.
78482Ага, наконец-то получилось и у меня. :)

https://i.postimg.cc/147WZ45D/2023-02-12-13-34-35.png (https://postimg.cc/147WZ45D)

Только почему-то геометрия образа HDD не вводится. Правда она чудесным образом определилась автоматически, и работа с HDD происходит правильно.
P.S. Это уже обсудили выше. :) Нашел ответ на этот вопрос.


А почему при старте эмулируемого Скорпиона всегда выдается CMOS checksum error? В UnrealSpeccy настройки CMOS записываются в 128-и байтный файл "CMOS", а в Xpeccy как?

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

И еще обратил внимание, что время, считываемое из SMUC-часов, всегда 12:00:00. Так показывают его Grand's Boot и TR-DOS Navigator, которые используют системный вызов Теневого монитора.

Dexus
13.02.2023, 14:05
Grand, Насколько я понимаю, Xpeccy не поддерживает CMOS скорпиона, только profi/evo/pent1024/tsconf/ibm.
А сам rtclock там для всех конфигураций одинаковый, в 0x00-0x09
https://github.com/samstyle/Xpeccy/blob/master/src/libxpeccy/cmos.c

^m00h^
13.02.2023, 14:39
Собрали крайний Xpeccy для Haiku OS - как-то странно себя ведёт, что-то не то с таймером, 3.5мгц стоит в настройках, а курсор как ошалелый мигает. Как насчет поддержки QT6 ?

78486

Dexus
13.02.2023, 16:18
^m00h^, собрали release? Под debug потому как и под виндой странная штука творится с таймером некоторое время после вызова модальных окон (дебагер/опции).

^m00h^
13.02.2023, 16:22
Dexus 3DEyes собирал debug версию.

^m00h^
19.02.2023, 16:22
Итак, 3DEyes собрал релизную версию - насчёт таймера пока не ничего не ясно, тупит клава, релиз не отрабатывает кнопки, и эмуль начинает повторять последние нажатые кнопки до посинения, и неважно какую железку эмулить - одна фигня.

7850378504

Dexus
20.02.2023, 08:15
Что ж, это означает что под HaikuOS Xpeccy не поддерживается. Есть видимо какие-то особенности, отличия от Linux. Можете попробовать это исправить, добавить свою секцию в #ifdef HAIKU или что-то подобное.
Сабж насколько я знаю поддерживается для Linux, Windows, и ограниченно под MacOS. Под экзотику типа HaikuOS вроде никто не поддерживает.

SAM style
20.02.2023, 08:15
Итак, 3DEyes собрал релизную версию - насчёт таймера пока не ничего не ясно, тупит клава, релиз не отрабатывает кнопки, и эмуль начинает повторять последние нажатые кнопки до посинения, и неважно какую железку эмулить - одна фигня.
В src/libxpeccy/defines.h есть USE_HOST_KEYBOARD - попробуй поменять значение (0 или 1)

^m00h^
22.02.2023, 00:57
Стало лучше, но всё равно какая то фигня. Т.е. если обычно набирать текст, то всё нормально, но если зажать и дождаться автоповтора, то он будет длится вечно. Начинает фигачить (событие отпускания кнопки не доходит похоже).

Dart Alver
04.03.2023, 20:49
А что в последней ревизии шейдеры не поддерживаются, или при сборке надо чегото ещё скармливать ?

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

А...а кажется понял, счас попробую opengl скормить ))

^m00h^
19.03.2023, 06:53
saM_style есть идеи что покрутить еще в эмуляторе на Haiku OS ? Когда будет переход на qt6 ?

Dexus
19.03.2023, 09:21
Qt6 не поддерживается windows7, так что надеюсь, "переход" будет очень нескоро. Учитывая что qt4 еще не дропнут.
А вообще если хочется qt6 или экзотическую ось, делается форк, и прикручивается то что нужно.

SAM style
19.03.2023, 10:38
Когда будет переход на qt6 ?
Когда будет поболе свободного времени, попробую скомпилить с Qt6 под дебианом. Сейчас сильно занят жизненными делами.

Bedazzle
19.03.2023, 13:23
Qt6 не поддерживается windows7, так что надеюсь, "переход" будет очень нескоро.

Поддерживаю, что не стоит спрыгивать с поддержки Win7.

^m00h^
22.03.2023, 17:59
Очень даже странно что под вынь7 никто даже не сделал неофициальный порт qt6. А под Haiku OS qt6 есть.

^m00h^
03.04.2023, 15:30
А тем временем вышел новый Qt6.5: https://opennet.ru/58911/
Советую всем виндоводам перейти на windows 10 ltse, есть на рутреке, она легкая и убрана телеметрия.

Dexus
03.04.2023, 23:07
В Xpeccy до сих пор поддержка Qt4 не выпилена. Куда несетесь, товарищ? Вообще, кто в своем уме будет из-за выпуска какой-то там Qt обновлять операционку?:\
А поддержка Qt5, надеюсь, не будет дропнута в Xpeccy еще долго. А если неймется Qt6,5 пощупать - дык щупайте, форкайте проект и хоть с Qt7 экспериментируйте. Кто ж мешает?
Вообще, я немного не понимаю, как это эмуль-то улучшит?..это какие-то баги пофиксит, или фичи добавит? Ради чего на это тратить время и силы?

^m00h^
03.04.2023, 23:21
Несемся в ногу со временем в современных ОС, не сидим в старье, пользуемся новейшими достижениями прогресса в Linux, в Haiku. А Win7 уже постигла участь XP. Но надо двигаться вперед, оставить старое в прошлом и пользоваться современным, здесь и сейчас. И прекрасная альтернатива для этого есть - Win10 LTSE!

Dexus
04.04.2023, 07:26
Оставляя старое в прошлом? Немного противоречиво, учитывая что в спектрумовском форуме сидите и зачем-то эмуляторы использовать пытаетесь. Определитесь, с ретро или без ретро. Клуб ностальгирующих подразумевает что прошлое тащат в будущее, что используется старое и железо, и софт.

^m00h^
04.04.2023, 13:38
На новом запускаем старое, логично же ? Зачем мучиться и на старом запускать старое ? Пц в данном случае это техника которая воспроизводит спектрум, по которому мы ностальгируем, но уж никак не по винде.

Dexus
04.04.2023, 19:37
^m00h^, проспонсируешь всем ПКшечки для запуска win10? Нет? Ну вот, а так всех тащишь в свое чудесное будущее... и вопрос не отвечен. Зачем этот qt6, что он даст эмулятору?

^m00h^
05.04.2023, 12:39
Зачем спонсировать пкшечьки, у 10тки не такие прям уж заоблачные требования. qt6 даст эмулятору непременно что-то новое, много новшеств и изменений внесено, кроме того закрыто около 3500 отчетов об ошибках, ну сам зацени: https://www.opennet.ru/opennews/art.shtml?num=58911

Dexus
05.04.2023, 22:57
^m00h^, причем тут изменения Qt? Вопрос про то что хорошего для Xpeccy этот переход даст? Может, брейкпоинты условные, или более удобный спрайтсканнер? Или быстродействие увеличится? Какова мотивация делать это движение от Qt5 к Qt6? Довод "потому что новее" - вообще ни разу не аргумент.
И если это прям уж так нужно - бери и делай форк и переводи на Qt6.5 или что там еще новее.. зачем здесь месить про то, что к эмулятору отношения имеет не больше чем предпочтения по шрифтам? Сделай сам, докажи состоятельность этого.

SAM style
06.04.2023, 03:23
Зачекал этот ваш Qt6. Этим "разработчикам" больше делать нечего, только классы переименовывать? Убился уже typedef-ать их обратно...
QRegExp -> QRegularExpression
QGL* -> QOpenGL*, половина функций тоже переименована...

Black Cat / Era CG
06.04.2023, 10:32
Зачекал этот ваш Qt6. Этим "разработчикам" больше делать нечего, только классы переименовывать? Убился уже typedef-ать их обратно...
QRegExp -> QRegularExpression
QGL* -> QOpenGL*, половина функций тоже переименована...Надо же им чем-то заниматься, чтобы совместимости поменьше было. Это норм)))

Bedazzle
06.04.2023, 14:01
Зачекал этот ваш Qt6. Этим "разработчикам" больше делать нечего, только классы переименовывать? Убился уже typedef-ать их обратно...
QRegExp -> QRegularExpression
QGL* -> QOpenGL*, половина функций тоже переименована...

Мне не надо, чтоб вы приказ выполнили, мне надо, чтоб вы зае...сь. (с)какой-то прапор

Rubts0FF
20.05.2023, 17:37
Не смотря ни на что, это лучшее что есть в виртуальном мире ZX Spectrum, после Шалаева разумеется. Однако встречаются разные неприятности, вот как раз эта самая неприятность случилась, решил озвучить.
Точно по времени сказать не могу, от десяток минут до часа и более, специально не замерял, и по событиям не скажу, бывало переключался на другие окна, бывало все время окно эмулятора. Я вообще люблю fullscreen этого эмулятора и на ноуте (15') использую всегда, а вот на настольном (24') в оконном режиме. Так вот, в какой то момент эмулятор перестает реагировать на нажатия клавиш, будь то ALT+F1, F9 и что там мышь включает. В общем мелочь, а из за таких мелочей так и не перешел с Шалаева, тот работает без глюков. Это не единичный случай.
Что еще, за эмулятор - спасибо.

SAM style
20.05.2023, 19:41
в какой то момент эмулятор перестает реагировать на нажатия клавиш
Уотэтоповорот... ещё один непонятный глюк, который хрен знает как вызвать. Не успел я с QOpenGLWidget разобраться, а тут ещё и это.
А насчет QOpenGLWidget есть какое-то непонятное поведение - в какой-то момент вызываются случайные connect-ы - то дебугер вылезет, когда я него не прошу, то опции... с QGLWidget такого нет. А суть в том, что QGLWidget в Qt6 уже убран, а QOpenGLWidget его должен заменить начиная с Qt5.4

Rubts0FF
21.05.2023, 13:03
Уотэтоповорот...
Я изредка играю в некоторые игры, вот нашел UFO-2 со старыми отгрузками и когда возникает желание, загружаю или освобождение корабля или базы, и здесь мне все равно под каким эмулятором, SPECTACULATOR почти всегда, он ассоциирован на .trd. В остальное время я торчу в ZAsm`е, или ZX Turbo Disassembler`е, что в конечно счете ведет туда же. И вот здесь от эмулятора зависит очень многое. Повторяю, для этого занятия идеальным является эмулятор Шалаева, в крайнем случае, если вдруг чего то не хватает, можно написать плуг и вставить в нужный слот. Но на современных компьютерах он глух практически на все .., нет, не тот случай. В общем если beep он кое как, то это все. Поэтому давно, и с постоянной регулярностью ищу что то на замену. xpeccy здесь лучший кандидат, но вот такое, как описано выше, случается. Сидишь пару-тройку часов долбишь клавиатуру, затем на всякий случай F9, так как изменение в образе диска не приводят к изменению в файле. А он - никак. Тот же вариант, те же два-три часа, затем понадобился редактор спрайтов или шрифтов, жму ALT+SHIFT+M - или CTRL, что бы переключить мышь на эмулятор - и ничего не происходит. Так же не вызывается меню ALT-F1, правда правый клик - контекстное меню открывается.
Как уже говорил, не пришлось связать вот эти эффекты с какими либо событиями. Помогает перезагрузка эмулятора, но это не вариант.
И вот есть пожелание, кнопка - сон, или сохранить все, короче что бы при перезагрузке, или последующем запуске, восстанавливалось все, включая состояние памяти, и запущенная программа.
В этом смысле меня избаловала связка VMware + XP + Shalaev, кнопка паузы есть у виртуальной машины, поскольку эмулятор это где то то же самое, хорошо бы.

SAM style
21.05.2023, 18:32
Так же не вызывается меню ALT-F1, правда правый клик - контекстное меню открывается
Как вариант - когда это происходит, проверь Grab keyboard в меню по пкм. Возможно, случайно включил захват клавы (по умолчанию Alt+G) - тогда все хоткеи игнорируются. Если не оно - будем ловить...

Rubts0FF
22.05.2023, 14:31
Возможно, случайно включил захват клавы (по умолчанию Alt+G)
У меня ALT это Symbol Shift и естественно такое происходит довольно регулярно и я о подобной "горячей" возможности просто не знал, теперь знаю. Вдруг снова случиться - проверю. Спасибо. А насчет паузы - подумай.

Bedazzle
22.05.2023, 17:35
короче что бы при перезагрузке, или последующем запуске, восстанавливалось все, включая состояние памяти, и запущенная программа.

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

Dexus
23.05.2023, 17:31
Bedazzle, это стандартное поведение Emuzwin.

В принципе - да, полезная штука.
Но когда у тебя эмулятор с 100500 вариантами конфигураций и оборудования, включая всякие GS со своими состояниями и памятью, не считая конфигураций всяких MSX и PC с видеоадаптерами, сохранение этого "общего состояния" становится весьма проблематичным.

Bedazzle
24.05.2023, 11:39
сохранение этого "общего состояния" становится весьма проблематичным.

Ну, если какой эмулятор берёт на себя поддержку большого списка моделей, то либо делаешь это хорошо, либо не делаешь :)

Dexus
24.05.2023, 15:06
Bedazzle, у Хрессу такой функции "сохранения всех состояний" никогда и не заявлялось.
Далее, правильно ли я понимаю, что ПО-ВАШЕМУ лучше бы Хрессу вообще не делали, чем то что сделали без "сохранения состояний"?

Bedazzle
24.05.2023, 17:36
лучше бы Хрессу вообще не делали, чем то что сделали без "сохранения состояний"?

Вообще, я про цесарукс думал :)))

NEO SPECTRUMAN
06.06.2023, 23:49
Когда будет переход на qt6 ?
приспешники m$ ZOG все хоотят поломать совместимость с ХРю
когда вы ужо там повыздыхваете на своих вин15?
чего вы не берете пример с хобата?

^m00h^
07.06.2023, 00:59
Так вы и есть приспешник m$ ZOG XP, одумайтесь пока не поздно, у вас гэ (винда) а нам светит haiku (солнце:)

san010101
25.06.2023, 07:18
Что с hall?
При выполнении процедуры паузы эмуль висит на команде hall.
Процедуру запусаю по адресу CALL 7997

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

Вот код из стандартного пзу
КОМАНДНАЯ ПРОЦЕДУРА 'PAUSE' ('Пауза')
Время PAUSE определяется подсчетом количества маскируемых прерываний, поскольку они появляется каждую 1/50 секунды.
PAUSE заканчивается или после соответствующего количества прерываний, или с помощью системной переменной FLAGS, обозначающей, что нажата клавиша.

1F3A PAUSE CALL 1E99,FIND-INT2 Выбор операнда.
1F3D PAUSE-1 HALT Ждите маскируемое прерывание.
DEC BC Уменьшить счетчик.
LD A,B Если счетчик уменьшен до 0,
OR C PAUSE заканчивается.
JR Z,1F4F,PAUSE-END Если операнд был 0,
LD A,B BC будет содержать
AND C +FFFF и это значение
INC A будет возвращено в 0.
JR NZ,1F49,PAUSE-2 Переход будет для всех
INC BC других значений операндов.
1F49 PAUSE-2 BIT 5,(FLAGS) Переход назад, если
JR Z,1F3D,PAUSE-1 не нажата клавиша.

Время PAUSE теперь окончено.

1F4F PAUSE-END RES 5,(FLAGS) Сигнал 'нет нажатой клавиши'.
RET Теперь возврат - в STMT-RET.

SAM style
25.06.2023, 08:43
Что с hall?
При выполнении процедуры паузы эмуль висит на команде hall.
Процедуру запусаю по адресу CALL 7997
Только что проверил из бейсика48 - PAUSE 0 не зависает на HALT, PAUSE 50 тоже.
Какие условия для воспроизведения? Не выключены ли прерывания во время вызова 7997?

san010101
25.06.2023, 16:18
Building 'pro1'
mkdir -p build
rm -f build/*
sjasmplus --fullpath --lst=build/.list --inc=. \
-DSNA_FILENAME="build/pro1.sna" \
-DBIN_FILENAME="build/pro1.bin" \
src/main.asm
SjASMPlus Z80 Cross-Assembler v1.20.2 (https://github.com/z00m128/sjasmplus)
Pass 1 complete (0 errors)
Pass 2 complete (0 errors)
> PAGE0 end: 0xEB9F
> Total bytes used: 319
Pass 3 complete
Errors: 0, warnings: 0, compiled: 140 lines, work time: 0.010 seconds
xpeccy build/pro1.sna
Using SDL ver 2.29.0
Using ZLIB ver 1.2.11
Using Qt ver 5.15.3
SDL audio device opening...success: 44100 882 (32784 / 32784)
constructor
Joystick not opened
end:constructor
exit

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

<a href="https://pic.maxiol.com/?v=1687698955.3111970318.20230625201345.png&dp=2"><img src="https://pic.maxiol.com/thumbs2/1687698955.3111970318.20230625201345.png" border="0"></a>

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

<a href="https://pic.maxiol.com/?v=1687698955.3111970318.20230625201345.png&dp=2"><img src="https://pic.maxiol.com/thumbs2/1687698955.3111970318.20230625201345.png" border="0"></a>

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

https://pic.maxiol.com/thumbs2/1687698955.3111970318.20230625201345.png (https://pic.maxiol.com/?v=1687698955.3111970318.20230625201345.png&dp=2)

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

можно конфиг посмотреть

SAM style
25.06.2023, 17:21
Нужен спапшот, который запускается с эмулятором (который build/pro1.sna)

san010101
26.06.2023, 03:08
Добавил вложение

SAM style
26.06.2023, 09:10
В снапшоте байт +19 от начала = 00. бит 2 в нём означает разрешение прерываний (0 - запрещено, 1 - разрешено). Значит, при запуске снапшота прерывания запрещены. Ни одной EI по пути к HALT-у нет, так что не удивительно, что HALT при запрещенных прерываниях останавливается.
Не надейся, что прерывания по умолчанию включены - включай их сам.

san010101
26.06.2023, 09:21
Я не в курсе ккк их включать. Можно пример

Bedazzle
26.06.2023, 11:42
Я не в курсе ккк их включать. Можно пример

Поставь команду EI в начале своей программы.

trukhaev
01.07.2023, 03:39
SAM style, спасибо за прекрасный продукт! Работает прекрасно на linux/win но так случилось, что основная система mac os

Проблема: не работает клавиатура в deBUGa - вхожу по ESC норм, но выйти не могу и не могу ввести значение в любое поле - двоит и не работает DEL
Система: MacOS Ventura 13.4.1 (Apple M1 Max, 64 GB)
qt5 и sdl2 установлены через brew:
sdl2: stable 2.26.5 (c stable 2.28.0 такая же история)
q5@5: stable 5.15.10

❯ cmake ..
-- The C compiler identification is AppleClang 14.0.3.14030022
-- The CXX compiler identification is AppleClang 14.0.3.14030022
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
<FindSDL2.cmake>
</FindSDL2.cmake>
-- Found SDL2: /opt/homebrew/lib/libSDL2main.a;/opt/homebrew/lib/libSDL2.dylib;-framework Cocoa
-- SDL2_INCLUDE_DIR = /opt/homebrew/include/SDL2
-- Found ZLIB: /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libz.tbd (found version "1.2.11")
--

-- Project will be compiled with following options:

-- Build type :
-- Xpeccy version : 20230620
-- OS : Darwin
-- Qt version : 5.15.10
-- SDL version : 2.x
-- Network: no
-- OpenGL: no
-- Endianness: LE
--

-- Configuring done (0.7s)
-- Generating done (0.0s)
-- Build files have been written to: /Volumes/ramdisk/Xpeccy/build

закоментировал строки build/CMakeFiles/xpeccy.dir/build.make:3420,3421 что бы использовать SDL2 из brew..
# cp -R -X /Library/Frameworks/SDL2.framework /Volumes/ramdisk/Xpeccy/build/xpeccy.app/Contents/Frameworks
# install_name_tool -change @rpath/SDL2.framework/Versions/A/SDL2 @executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2 /Volumes/ramdisk/Xpeccy/build/xpeccy.app/Contents/MacOS/xpeccy

после изменения #define USE_HOST_KEYBOARD 1 в 0
diff --git a/src/libxpeccy/defines.h b/src/libxpeccy/defines.h
index b5f0707..322bc9e 100644
--- a/src/libxpeccy/defines.h
+++ b/src/libxpeccy/defines.h
@@ -3,7 +3,7 @@
#include <stdint.h>

// compilation flags
-#define USE_HOST_KEYBOARD 1
+#define USE_HOST_KEYBOARD 0

пришлось закоментировать следующие строки:
diff --git a/src/emw_keys.cpp b/src/emw_keys.cpp
index 2b55b34..8b3d572 100644
--- a/src/emw_keys.cpp
+++ b/src/emw_keys.cpp
@@ -95,13 +95,13 @@ void MainWin::keyPressEvent(QKeyEvent* ev) {
void MainWin::keyPressEvent(QKeyEvent *ev) {
if (ev->isAutoRepeat()) return;
// qDebug() << "keyPressEvent" << ev->text() << ev->nativeScanCode() << ev->count();
- if (comp->debug) {
- ev->ignore();
- } else {
+// if (comp->debug) {
+// ev->ignore();
+// } else {
int keyid = ev_to_keyid(ev, pckAct->isChecked());
// printf("press: %i\n", keyid);
xkey_press(keyid);
- }
+// }
}

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

^m00h^
01.07.2023, 19:58
С клавой и в Haiku OS проблема, куда теперь копать ?

Rubts0FF
14.08.2023, 13:02
Это снова я, и .. не только с одной благодарностью, к-хм.
Попался такой случай, меняю диск в дисководе C: - в ZAsm`е, перечитываю каталог (SS+R), - No Disk!. жму F1 иду к диску, жму apply, возвращаюсь в ZAsm - Retry, все пошло дальше, снова меняю диск, не специально, но сразу жму apply, возвращаюсь, SS+R - No Disk, короче пока повторно не вызовешь операцию, в эмуляторе, диск не находиться. Не буду говорить за все .. дисководы, но первый раз такое случилось с дисководом D:, я не обратил внимание, просто вставил старый диск и все пошло. До этого момента я довольно редко менял диски в дисководах, но вот такой случай.

В этом году снова решил попробовать все эмуляторы или хотя бы те, что запустятся. И снова победил xpeccy - второе место, на первом - эмулятор Шалаева.

NEO SPECTRUMAN
14.08.2023, 22:53
эмулятор Шалаева.
и чего там такого супер пупер?
желательно в виде списка с картинками

Bedazzle
14.08.2023, 23:33
и чего там такого супер пупер?
желательно в виде списка с картинками

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

^m00h^
15.08.2023, 18:31
А как там со сборкой на qt6 процесс идет ?

Spectramine
15.08.2023, 20:12
Тоже интересно. Когда-то несколько лет назад пробовал его запустить - но, то ли не заработало, то ли был опечален количеством возможностей, уже не помню. В общем, не прижился.

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

Lethargeek
16.08.2023, 00:03
Одна из его мегафич на тот момент, по сравнению с остальными - родные спектрумовские пропорции экрана, эмулятор использовал какой-то нестандартный видеорежим.
ну, под виндой это давно значения не имеет
да и в досе 320x240 мог, наверно, любой VGA адаптер

Bedazzle
16.08.2023, 00:26
Одна из его мегафич на тот момент, по сравнению с остальными - родные спектрумовские пропорции экрана

Весьма нишево. А что-то ещё приметное?

Spectramine
16.08.2023, 02:26
Весьма нишево. А что-то ещё приметное?

Ещё окошки-менюшки прикольные текстовые. А, и вроде бы, емнип, работал с реальными дисками. (упд - скачал, глянул - напрямую не работал, но имел тулзу для создания образов реальных дисков. Эх, ностальгия, это ещё в прошлом веке было, в этом я уже под виндовым zx32 сидел, тоже довольно приличным на тот момент).

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


ну, под виндой это давно значения не имеет
да и в досе 320x240 мог, наверно, любой VGA адаптер

Но не любой эмулятор, практически, только у Шалаевского вроде из досовских были нормальные пропорции экрана.
Из доки - "Видеоадаптер работает в нестандартном режиме 256x192 с большой рамкой,
который по пропорциям близок к экрану оригинального ZX-Spectrum."

SAM style
16.08.2023, 10:26
А как там со сборкой на qt6 процесс идет ?Так он собирается, с одним костылём, который прикрывает хз откуда взявшиеся глюки - перерисовка окна вызывает рандомный слот. Чтобы собрать с Qt6, надо cmake скормить -DQTVERSION=6 (или 5 для Qt5, 4й уже отправлен в лес)

Rubts0FF
18.08.2023, 16:04
и чего там такого супер пупер?
Я оцениваю эмулятор не по параметрам, насколько точно он отображает паутину в левом углу экрана телевизора, или ход строчных лучей, вот совсем не надо и не интересно, так же мне все равно насколько аутентичный звук IY. Мне не нужна эмуляция видеорежимов АТМ или Профи, мне достаточно что бы через их порты переключались страницы памяти.

А важно, что бы можно было использовать максимально полно клавиатуру, в том числе самому определять где у меня CS а где SS. Важно что бы информация на диски записывалась сразу, как только она выполнена в эмуляторе, да, могут быть накладки, так тебя / меня что не учили делать копии?. Шалаев еще хорош тем что у него как бы открытая архитектура, можно самому расширить эмулируемое железо.
На современном железе он практически не воспроизводит звук и пропорции экрана .. обычные для любого эмулятора, под 98 виндой экран был шире, так как на оригинальном спектруме пиксель был прямоугольный! Но тут уж ничего не поделаешь. Это здорово получается у xpeccy, да и в некоторых версиях unreal`а.
Вот эти эмуляторы конечно лучше, эмулятора Шалаева, но из за перечисленных выше причин пользоваться ими не возможно. UNREAL хорош во всем, большая система настроек, вот только кнопку - сохранить изменения, или настройки, забыл?!
Эмулятором xpeccy я стараюсь пользоваться, но .. он бывает вылетает, может это и по моей вине, не суть, а суть в том что все изменения записанные в файл накрылись! И потом куча `горячих` клавиш управлением самого эмулятора, может они и нужны, не знаю, мне всегда хватает F1 или контекстного меню.
Я оцениваю эмуляторы с точки зрения насколько удобно в нем работать, например занимаясь программированием, для игр мне все равно какой эмулятор использовать, по умолчанию стоит SPECTACULATOR к нему претензий в этом отношении у меня нет, а вот работать в нем невозможно вовсе.
Из за того что авторы эмуляторов никогда не заботились о программисте, кроме Николая Шалаева, все и сбежали в ПЦ-шные редакторы, компиляторы и прочее. И не рассказывайте мне как это удобно, в одной программе пишешь, вторая все это переводит в код, на третьей запускаешь.
Вот кто бы DOS4GW под современное железо сделал. Под DosBox у Шалаева звук есть, и в какую нибудь игрушку поиграть можно, или демо глянут, но вопросы к DosBox`у. Virtual PC, хоть под DOS-ом, хоть под WiN98 Шалаев то же со звуком, только Virtual PC это же мелкомягкие и здесь все сказано. А WMvare в этом деле хоть и лучшая, но звука нет, а иногда хочется.

Не упомянутые здесь эмуляторы, я многими пытался пользоваться, там не проходит критерий 128+, то есть память больше 128 не эмулируется, у остальных, клавиатура, диски, см. выше.

Spectramine
19.08.2023, 00:14
так как на оригинальном спектруме пиксель был прямоугольный!
:v2_dizzy_facepalm:


Не упомянутые здесь эмуляторы, я многими пытался пользоваться, там не проходит критерий 128+, то есть память больше 128 не эмулируется, у остальных, клавиатура, диски, см. выше.
А зачем нужна память больше 128? Я недавно думал добавить к своему эмулятору 512/1024кб памяти Спектрума, глянул - демок под это расширение около 10, причем все ни о чем. Ну и решил, что смысла нет.

NEO SPECTRUMAN
19.08.2023, 00:17
Ну и решил, что смысла нет.
поэтому и демок нет

Spectramine
19.08.2023, 00:24
поэтому и демок нет

Ну Анриал-то сто лет как есть, Fuse, Z80Stealth, EmuZWin. А почти никто всё равно под память >128кб не пишет.

^m00h^
19.08.2023, 03:25
Но тут ветка про Xpeccy!

Doronetty
02.12.2023, 15:53
Вышла новая версия на https://github.com/samstyle/Xpeccy/releases
Но! Эмулятор не запускается, ругается на QT plugin windows. Прежние версии работали на ура...

SAM style
02.12.2023, 23:30
Вышла новая версия на https://github.com/samstyle/Xpeccy/releases
Но! Эмулятор не запускается, ругается на QT plugin windows. Прежние версии работали на ура...
Да, тоже заметил. В виртуалке почему-то запустилось, а на чистой винде не захотело. Завтра попытаюсь пофиксить.

SAM style
03.12.2023, 12:54
Завтра попытаюсь пофиксить.
Ничего не понял... А главное - что изменилось? Компилирую, скармливаю экзешник windeployqt, тот копирует все нужные dll-ки от Qt, включая platforms/qwindows.dll, даже те, которых раньше не надо было. Добавляю 3 dll-ки от mingw - всё равно не находит плагин платформы. Нашёл в интернетах решение создать qt.conf и написать там Plugins=. - ему пофиг, всё равно не видит...

Dexus
03.12.2023, 12:57
Видимо у Qt6 есть какие-то нюансы в виндах. Ну, зато владельцы Haiku OS довольны)

SAM style
03.12.2023, 14:42
Видимо у Qt6 есть какие-то нюансы в виндах
Это Qt5.5.1, как и раньше было...

SAM style
04.12.2023, 21:25
Обновил виндовую сборку в релизе. Должно запускаться. Нашёл билд, где всё сломалось, но не понял, почему сломалось - откатил несколько строк, и оно заработало.

organism
16.12.2023, 17:04
SAM style, dpkg: ошибка при обработке архива xpeccy_0.6.20231201_x86_64.deb (--install):
анализ файла «/var/lib/dpkg/tmp.ci/control» около строки 6 пакета «xpeccy»:
Поле «Depends»: синтаксическая ошибка после ссылки на пакет «libqt5gui5»

пакет, похоже, плохой и негодный

SAM style
16.12.2023, 17:20
пакет, похоже, плохой и негодный
Вот что значит полтора года не опакечивать. Пропустил запятые в зависимостях. deb пакеты обновлены на гитхабе

organism
16.12.2023, 18:14
SAM style, Спасибо. Но увы, у меня работает как во вложении. 79925

SAM style
17.12.2023, 00:04
Хреновато. Похоже, я завтра опять буду копать OpenGL...

Grand
24.02.2024, 15:46
Обратил я внимание, что новый Теневой монитор с версии 4.xx.40, разрабатываемый LW и обсуждаемый в теме, не работает на Xpeccy 0.6.20220219 (для Linux) в конфигурации Scorpion ProfROM: зависает на стартовой странице после сообщения "NVRAM found". С предыдущими версиями такого эффекта не наблюдалось... :(

^m00h^
24.02.2024, 18:02
SAM style как успехи с qt6 ? в Haiku OS новая сборка падает, в старой на qt5 также остается проблема с таймингами или таймером, но не теряем надежду.

80425

NEO SPECTRUMAN
24.02.2024, 19:43
SAM style, а на сколько qt5/6 код совсместим между собой?

SAM style
24.02.2024, 19:51
qt5/6 код совсместим между собой
Для меня вся разница в QtOpenGL. Разные именования флагов/значений это мелочи, но с OpenGL там конкретная переделка

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


Обратил я внимание, что новый Теневой монитор с версии 4.xx.40, разрабатываемый LW и обсуждаемый в теме, не работает
Можно конкретный файл прошивки? Ибо я скачал с первого сообщения три, и две из них рабочие...

NEO SPECTRUMAN
24.02.2024, 19:56
кстате скачал последнюю? версию
xpeccy_0.6.20231226_win32_qt5.5.1.zip
дефолтный 48К не взлетает из коробки (при запуске эмулятора)
только нужно ручками жать сброс

https://i.postimg.cc/15GCXmNF/2024-02-24-184855.png

перетыкал все 4 варианта дефолтного сброса
но все равно черный экран при старте
при этом в дебагере проц шевелитсо

первый сброс точно начинаетсо с 0000?
или поломалось?

anarchyman
24.02.2024, 22:11
Вопрос: хочу собрать под macos 12.7.3 + Qt6. Версия последняя - с git'а.
Сходу ругается на отсутствие в каталоге build файла - ui_brkmanager.h
Про него какую либо информацию найти не получилось (кроме упоминания в dbg_brkpoints.h). Он вообще к чему относится к эмулятору, или это отдельные какие то хидеры (тогда где их взять?). В google про них вообще ничего не написано.
Спасибо.

SAM style
24.02.2024, 23:22
каталоге build файла - ui_brkmanager.h
Это автогенерируется из *.ui, попробуй сделать cmake заново

anarchyman
24.02.2024, 23:46
Это автогенерируется из *.ui, попробуй сделать cmake заново

Неа, не вышло. Может из за версии cmake'а? Лог вот:


abayrak@MacBook-Air-Alexander build % cmake -DQTVERSION=6 ..
CMake Deprecation Warning at /Volumes/Macintosh HD/Volumes/Macintosh HD/Users/abayrak/Downloads/git/Xpeccy/CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.

Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.


<FindSDL2.cmake>
</FindSDL2.cmake>
-- SDL2_INCLUDE_DIR = /Volumes/Macintosh HD/usr/local/include/SDL2
--

-- Project will be compiled with following options:

-- Build type :
-- Xpeccy version : 20240218
-- OS : Darwin
-- Qt version : 6.6.2
-- SDL version : 2.x
-- Network: no
-- OpenGL: no
-- Endianness: LE
--

-- Configuring done (0.4s)
CMake Error at /Volumes/Macintosh HD/Volumes/Macintosh HD/Users/abayrak/Downloads/git/Xpeccy/CMakeLists.txt:325 (add_executable):
Cannot find source file:

/Volumes/Macintosh HD/Volumes/Macintosh HD/Volumes/Macintosh HD/Users/abayrak/Downloads/git/Xpeccy/build/ui_brkmanager.h

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm
.ccm .cxxm .c++m .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90
.f95 .f03 .hip .ispc


CMake Error at /Volumes/Macintosh HD/Volumes/Macintosh HD/Users/abayrak/Downloads/git/Xpeccy/CMakeLists.txt:325 (add_executable):
No SOURCES given to target: xpeccy


CMake Generate step failed. Build files cannot be regenerated correctly.
abayrak@MacBook-Air-Alexander build % cmake --version
cmake version 3.28.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).
abayrak@MacBook-Air-Alexander build %

Grand
25.02.2024, 08:00
Можно конкретный файл прошивки?

зависает на стартовой странице после сообщения "NVRAM found"

https://pic.maxiol.com/thumbs2/1708837026.86812730.20240225112552.jpg (https://pic.maxiol.com/?v=1708837026.86812730.20240225112552.jpg&dp=2)

Уточню, что если на вкладке Storage-HDD выставить Interface: none (вместо SMUC), то ПрофРОМ все-же стартует, но выход в Теневой монитор по F10 все равно не получается - на экране артефакты.

Прикладываю архив с ROM'ами для эмуляторов: 4.xx.38 (который работает на Xpeccy) и 4.xx.41 (который не работает на Xpeccy). Это не дистрибутивные комплекты! Дистрибутивы берите здесь.

Вложение удалено. Смотрите дистрибутивные комплекты по ссылке выше.

SAM style
25.02.2024, 09:37
и 4.xx.41 (который не работает на Xpeccy)Ну как бэ... со включенным смуком.
80428

Grand
25.02.2024, 10:00
Ну как бэ... со включенным смуком.
80428
А где взять эту версию 0.6.20240218? На GitHub'е последняя 0.6.20231226. Я ее установил и все то же самое.

SAM style
25.02.2024, 10:23
А где взять эту версию 0.6.20240218Она не собранная, только на гитхабе. Но как бы в спектрумах я там ничего не менял. Значит, есть ещё факторы - например, присоединён ли сам образ HDD?

Grand
25.02.2024, 12:01
Значит, есть ещё факторы - например, присоединён ли сам образ HDD?Нет, отсоединение-присоединение образа HDD ничего не меняет. Только, если поставить Intrface: None, вместо SMUC. Но и в этом случае вход в ТМ по F!0 не срабатывает. Может, спросить у LW, что кардинально поменялось с 40-й версии его Монитора?

Вот, что ответил LW здесь.

LW
25.02.2024, 12:42
Может, спросить у LW, что кардинально поменялось с 40-й версии его Монитора?
В коде этом месте ничего не менялось, есть только одно отличие, начиная как раз с 40й версии процедуры работы с CMOS перехали в другую плоскость.

CMOS найден, но контрольная сумма не совпала -> перезапись CMOS
NVRAM не найден
читаем настройки из CMOS (они были перезаписаны раз контрольная сумма не совпала), тут циклов нету
ищем контроллер прерываний, на этом этапе зависаний тоже быть не может, никаких циклов тоже нет
печатаем найден/не найден контроллер (да сюда не дошли)

вариант один, раз процедуры переехали в другую плоскость, значит что-то не то с переключением плоскостей

SAM style
26.02.2024, 17:04
Возможно, проблема с чтением из nvram. С плоскостями - вряд ли, тестировалось на родных проф-пзу - и ромдиск работал, и дискеты с винта монтировались.
Что там с кмосом может быть, даже не представляю, он же простой как полено - пишем адрес, читам/пишем байт (конечно, учитывая, что первые ячейки это часы)
Самое весёлое, что я у себя вышеописанную проблему не наблюдаю, все стартовые тесты проходят с разным успехом...

PS:по nvram всё оказалось проще - чтение из FFBA подразумевало, что все неиспользуемые биты = 1

anarchyman
27.02.2024, 03:37
SAM style, Так пока и не разобрался с cmake и сборкой. У тебя если macos есть под рукой - попробуй собери?
Вообще судя по документации - можно и dmg сделать. Было бы здорово - готов у себя собрать для macos/intel (если разберемся с cmake), а для новых mac'ов которые на arm (M1/M2) - готов привлечь людей позитивно-ностальгично относящихся к ZX, кто бы у себя собрали на (для) M1/M2.

SAM style
27.02.2024, 10:12
Так пока и не разобрался с cmake и сборкойОпиши свои действия и дай вывод с ошибкой, будет яснее.
Есть ещё вариант - удалить из директории сборки всё, кроме CMakeCache.txt и сделать cmake + make заново
И да, при успехе make package на макосях сделает dmg. А виртуалка с хакинтошем после обновления компа перестала запускаться...

SAM style
28.02.2024, 22:30
Вроде как поправил, лежит на гитхабе.
https://samstyle.narod.ru/addons/xpeccy/screen-2024-02-28-22-28-39.jpg

Xela
05.04.2024, 14:46
SAM style, а возможно ли добавить в Xpeccy функционал "эмулятора" (http://www.jbrain.com/pub/linux/serial/) Hayes (https://github.com/geneb/tcpser) модема (https://github.com/go4retro/tcpser)?

Что б не отдельно запускать, а прописать адрес, скорость и пр. в настройках, и вот у нас эмуляция модема по схеме Шепелева или Кондратьева.

SAM style
05.04.2024, 15:27
Думаю, с помощью QSocket можно обмениваться данными с другим компом по адресу-порту и хранить их в буферах (входящем/исходящем), а эмулируемая машина уже будет складировать данные в этих буферах
Но когда это реализуется - уже большой вопрос :(

^m00h^
08.04.2024, 19:01
А тем временем qt уже вышла 6.7, скоро будет qt7, возьмут еще и дропнут поддержку win10 :D

Dexus
09.04.2024, 06:55
Какие существующие проблемы переход на новую Qt решит?
До сих пор я видел только создание новых проблем (при попытке перейти к Qt6), что со всей строгостью можно назвать ухудшением/деградацией.

Lethargeek
11.06.2024, 12:22
SAM style, у меня в последней версии (0.6.20231226) не работает F8 (step-over) в отладчике
ну, то есть, из отладчика выходит по djnz или ldir, к примеру, но бряка после не случается, просто выход
эмуль обновляю нечасто, так что и намного раньше могло сломаться

SAM style
11.06.2024, 22:26
SAM style, у меня в последней версии (0.6.20231226) не работает F8 (step-over) в отладчике
ну, то есть, из отладчика выходит по djnz или ldir, к примеру, но бряка после не случается, просто выход
эмуль обновляю нечасто, так что и намного раньше могло сломаться
Я это уже починил, но только в сорцах. Было связано с новым принципом ловли брыкпоинтов, отчего временные, которые ставятся по F8, не срабатывали, потому что их нет в списке брыкпоинтов.

Dart Alver
24.06.2024, 00:24
Установил последний релиз Xpeccy на новом компьютере под MX-linux и внезапно напоролся на баги.

Последний релиз 0.6.20240621 и релизные билды 2023 года не закрываются полностью при закрытии окна, а продолжают висеть процессом в памяти.
Сколько раз запустил Xpeccy, столько процессов и висит, независимо есть окно или нет.

Релиз 0.6.20220219 этого недостатка не имеет и закрывается полностью.

В релизах 2023 года (когда я устанавливал 0.6.20231226 был последним в релизе, и буквально вот после появился 0.6.20240621 )) ) при запуске Xpeccy показывает чёрный экран, и начинает нормально работать после опции 'Reset' ( в 0.6.20240621 это исправлено)



System:
Kernel: 6.1.0-21-amd64 [6.1.90-1] arch: x86_64 bits: 64 compiler: gcc v: 12.2.0
parameters: BOOT_IMAGE=/vmlinuz-6.1.0-21-amd64 root=UUID=<filter> ro quiet splash
resume=UUID=<filter> resume_offset=37801984
Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.36 info: xfce4-panel wm: xfwm v: 4.18.0 vt: 7
dm: LightDM v: 1.26.0 Distro: MX-23.3_x64 Libretto May 19 2024 base: Debian GNU/Linux 12
(bookworm)
Machine:
Type: Desktop System: LENOVO product: 10JAS00A00 v: ThinkCentre M79 serial: <superuser required>
Mobo: LENOVO model: Bantry CRB v: NOK serial: <superuser required> UEFI-[Legacy]: LENOVO
v: M0LKT27AUS date: 01/13/2020
CPU:
Info: model: AMD A10 PRO-7800B R7 12 Compute Cores 4C+8G bits: 64 type: MT MCP arch: Steamroller
level: v2 built: 2014 process: GF 28nm family: 0x15 (21) model-id: 0x30 (48) stepping: 1
microcode: 0x6003106
Topology: cpus: 1x cores: 4 smt: enabled cache: L1: 256 KiB desc: d-4x16 KiB; i-2x96 KiB
L2: 4 MiB desc: 2x2 MiB
Speed (MHz): avg: 1398 high: 1400 min/max: 1400/3500 boost: enabled scaling:
driver: acpi-cpufreq governor: ondemand cores: 1: 1397 2: 1397 3: 1400 4: 1400 bogomips: 27948
Flags: avx ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Vulnerabilities:
Type: gather_data_sampling status: Not affected
Type: itlb_multihit status: Not affected
Type: l1tf status: Not affected
Type: mds status: Not affected
Type: meltdown status: Not affected
Type: mmio_stale_data status: Not affected
Type: reg_file_data_sampling status: Not affected
Type: retbleed mitigation: untrained return thunk; SMT vulnerable
Type: spec_rstack_overflow status: Not affected
Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via prctl
Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer sanitization
Type: spectre_v2 mitigation: Retpolines; STIBP: disabled; RSB filling; PBRSB-eIBRS: Not
affected; BHI: Not affected
Type: srbds status: Not affected
Type: tsx_async_abort status: Not affected
Graphics:
Device-1: AMD Kaveri [Radeon R7 Graphics] vendor: Lenovo driver: radeon v: kernel
alternate: amdgpu arch: GCN-2 code: Sea Islands process: GF/TSMC 16-28nm built: 2013-17 ports:
active: VGA-1 empty: DP-1,DP-2 bus-ID: 00:01.0 chip-ID: 1002:130f class-ID: 0300
Display: x11 server: X.Org v: 1.21.1.7 compositor: xfwm v: 4.18.0 driver: X: loaded: radeon
unloaded: fbdev,modesetting,vesa dri: radeonsi gpu: radeon display-ID: :0.0 screens: 1
Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.00x11.22") s-diag: 582mm (22.93")
Monitor-1: VGA-1 mapped: VGA-0 model: BenQ GW2250H serial: <filter> built: 2012 res: 1920x1080
hz: 60 dpi: 102 gamma: 1.2 size: 477x268mm (18.78x10.55") diag: 547mm (21.5") ratio: 16:9 modes:
max: 1920x1080 min: 640x480
API: OpenGL v: 4.5 Mesa 22.3.6 renderer: KAVERI ( LLVM 15.0.6 DRM 2.50 6.1.0-21-amd64)
direct-render: Yes
Audio:
Device-1: AMD Kaveri HDMI/DP Audio vendor: Lenovo driver: snd_hda_intel v: kernel bus-ID: 00:01.1
chip-ID: 1002:1308 class-ID: 0403
Device-2: AMD FCH Azalia vendor: Lenovo driver: snd_hda_intel v: kernel bus-ID: 00:14.2
chip-ID: 1022:780d class-ID: 0403
API: ALSA v: k6.1.0-21-amd64 status: kernel-api tools: alsamixer,amixer
Server-1: PipeWire v: 1.0.0 status: active with: 1: pipewire-pulse status: active
2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin
tools: pactl,pw-cat,pw-cli,wpctl

SAM style
24.06.2024, 09:28
Последний релиз 0.6.20240621 и релизные билды 2023 года не закрываются полностью при закрытии окна, а продолжают висеть процессом в памяти.Методом научного тыка определено, что это возникает, если используются старые методы OpenGL (на Qt до 5.4, в песочнице сборки 5.3). Или буду копать, чтобы не висло, или обновлю песочницу и буду собирать с новым Qt...
Для сравнения версий - в oldoldstable Qt5.11, в oldstable - Qt5.15

^m00h^
24.06.2024, 10:29
Лучше с новым qt собрать.

Dart Alver
13.10.2024, 22:51
Xpeccy 0.6.20241008 ( на самом окне эмуля написано 0.6.20241007)
Не работают шейдеры ! Пичалька (

SAM style
14.10.2024, 09:10
Не работают шейдеры ! Пичалька (
На такое всеобъемлющее описание проблемы могу сказать только "А у меня работают! Радостно )".
Шейдеры работают только на сборке с OpenGL. Листинги шейдеров должны лежать в директории config/shaders. Вывод в терминал при запуске - в студию.

Dart Alver
14.10.2024, 10:00
На такое всеобъемлющее описание проблемы могу сказать только "А у меня работают! Радостно )".
Шейдеры работают только на сборке с OpenGL. Листинги шейдеров должны лежать в директории config/shaders. Вывод в терминал при запуске - в студию.
Сборка - релиз с гита под x86-64 deb.
Стоп config/shaders ? Получается на последнем релизе папка сменилась ? Хотя, во вкладке с профилями шейдеры видятся. А вот в менюшке по правой кнопке нет. И не работают.
На предыдущем то всё работает, другое дело что он сам эпилептикой индикаторов подмигивает )
Вечером дома буду посмотрю что в терминале говорит.
Может и я чегото затупил х.з.

SAM style
14.10.2024, 10:29
Сборка - релиз с гита под x86-64 deb.
Стоп config/shaders ? Получается на последнем релизе папка сменилась ? Хотя, во вкладке с профилями шейдеры видятся. А вот в менюшке по правой кнопке нет. И не работают.
На предыдущем то всё работает, другое дело что он сам эпилептикой индикаторов подмигивает )
Вечером дома буду посмотрю что в терминале говорит.
Может и я чегото затупил х.з.
Не просто на последнем релизе, а 3 года назад :)
81404

Dart Alver
14.10.2024, 22:12
Не просто на последнем релизе, а 3 года назад

А это я не так понял, этож ты про виндовые папки сказал. )) Шейдеры лежат как и положено в ~/.config/samstyle/xpeccy/shaders/
И да не работают. При этом в меню Option вкладка Video строка Shader - шейдер есть и список при выборе доступен. А вот в меню Shaders только none.

Сборка https://github.com/samstyle/Xpeccy/releases/download/0.6.20241008/xpeccy_0.6.20241008_x86_64.deb
Ось MX -23.4 основа Debian 12.7

Запуск из терминала :


master@mx:~
$ xpeccy
Using SDL ver 2.0.2
Using ZLIB ver 1.2.8
Using Qt ver 5.15.8
SDL audio device opening...success: 22050 441 (32784 / 32784)
constructor
Joystick not opened
end:constructor
initializeGL
end: initializeGL


При закрытии окна добавляет:


exit
Ошибка сегментирования



System:
Kernel: 6.1.0-26-amd64 [6.1.112-1] arch: x86_64 bits: 64 compiler: gcc v: 12.2.0
parameters: BOOT_IMAGE=/vmlinuz-6.1.0-26-amd64 root=UUID=<filter> ro quiet splash
resume=UUID=<filter> resume_offset=37801984
Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.36 info: xfce4-panel wm: xfwm v: 4.18.0 vt: 7
dm: LightDM v: 1.26.0 Distro: MX-23.4_x64 Libretto May 19 2024 base: Debian GNU/Linux 12
(bookworm)
Machine:
Type: Desktop System: LENOVO product: 10JAS00A00 v: ThinkCentre M79 serial: <superuser required>
Mobo: LENOVO model: Bantry CRB v: NOK serial: <superuser required> UEFI-[Legacy]: LENOVO
v: M0LKT27AUS date: 01/13/2020
CPU:
Info: model: AMD A10 PRO-7800B R7 12 Compute Cores 4C+8G bits: 64 type: MT MCP arch: Steamroller
level: v2 built: 2014 process: GF 28nm family: 0x15 (21) model-id: 0x30 (48) stepping: 1
microcode: 0x6003106
Topology: cpus: 1x cores: 4 smt: enabled cache: L1: 256 KiB desc: d-4x16 KiB; i-2x96 KiB
L2: 4 MiB desc: 2x2 MiB
Speed (MHz): avg: 2038 high: 2717 min/max: 1400/3500 boost: enabled scaling:
driver: acpi-cpufreq governor: ondemand cores: 1: 1896 2: 1896 3: 2717 4: 1643 bogomips: 27948
Flags: avx ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Vulnerabilities:
Type: gather_data_sampling status: Not affected
Type: itlb_multihit status: Not affected
Type: l1tf status: Not affected
Type: mds status: Not affected
Type: meltdown status: Not affected
Type: mmio_stale_data status: Not affected
Type: reg_file_data_sampling status: Not affected
Type: retbleed mitigation: untrained return thunk; SMT vulnerable
Type: spec_rstack_overflow status: Not affected
Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via prctl
Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer sanitization
Type: spectre_v2 mitigation: Retpolines; STIBP: disabled; RSB filling; PBRSB-eIBRS: Not
affected; BHI: Not affected
Type: srbds status: Not affected
Type: tsx_async_abort status: Not affected
Graphics:
Device-1: AMD Kaveri [Radeon R7 Graphics] vendor: Lenovo driver: radeon v: kernel
alternate: amdgpu arch: GCN-2 code: Sea Islands process: GF/TSMC 16-28nm built: 2013-17 ports:
active: VGA-1 empty: DP-1,DP-2 bus-ID: 00:01.0 chip-ID: 1002:130f class-ID: 0300
Display: x11 server: X.Org v: 1.21.1.7 compositor: xfwm v: 4.18.0 driver: X: loaded: radeon
unloaded: fbdev,modesetting,vesa dri: radeonsi gpu: radeon display-ID: :0.0 screens: 1
Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.00x11.22") s-diag: 582mm (22.93")
Monitor-1: VGA-1 mapped: VGA-0 model: BenQ GW2250H serial: <filter> built: 2012 res: 1920x1080
hz: 60 dpi: 102 gamma: 1.2 size: 477x268mm (18.78x10.55") diag: 547mm (21.5") ratio: 16:9 modes:
max: 1920x1080 min: 640x480
API: OpenGL v: 4.5 Mesa 22.3.6 renderer: KAVERI ( LLVM 15.0.6 DRM 2.50 6.1.0-26-amd64)
direct-render: Yes
Audio:
Device-1: AMD Kaveri HDMI/DP Audio vendor: Lenovo driver: snd_hda_intel v: kernel bus-ID: 00:01.1
chip-ID: 1002:1308 class-ID: 0403
Device-2: AMD FCH Azalia vendor: Lenovo driver: snd_hda_intel v: kernel bus-ID: 00:14.2
chip-ID: 1022:780d class-ID: 0403
API: ALSA v: k6.1.0-26-amd64 status: kernel-api tools: alsamixer,amixer
Server-1: PipeWire v: 1.0.0 status: active with: 1: pipewire-pulse status: active
2: wireplumber status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin
tools: pactl,pw-cat,pw-cli,wpctl

SAM style
15.10.2024, 00:10
Ошибка сегментирования
А блин, я опять Qt в песочнице не обновил... Завтра вечером пересоберу.

SAM style
15.10.2024, 18:42
И да не работают. При этом в меню Option вкладка Video строка Shader - шейдер есть и список при выборе доступен. А вот в меню Shaders только none.
Итак... сборки обновил, но, похоже, у тебя не срабатывает определение поддержки шейдеров. В опциях при составлении списка поддержка не учитывалась, поэтому и выводились все. Теперь после инициализации в консоль выплюнется сообщение, если поддержки шейдеров не обнаружится.

Dart Alver
15.10.2024, 23:50
Итак... сборки обновил, но, похоже, у тебя не срабатывает определение поддержки шейдеров.
Теперь всё работает.


$ xpeccy
Using SDL ver 2.0.9
Using ZLIB ver 1.2.11
Using Qt ver 5.15.8
SDL audio device opening...success: 22050 441 (32784 / 32784)
constructor
Joystick not opened
end:constructor
initializeGL
vtx_shd
frg_shd
end: initializeGL
exit


Отлично. :v2_thumb:
Немного напрягла сперва небольшая глючка при смене размера окна дебаггера (если увеличивать размер области дампа памяти, то может пропадать часть отображения), но это не критично.
Просто меняю размер один раз как надо, а потом перезагружаю эмуль и всё нормально. ))

Lethargeek
20.12.2024, 15:54
SAM style, а почему при проигрывании стандартных блоков tzx/tap длины импульсов не стандартные, а на 2-3 такта короче?
то есть вместо 2168,855,1710 при замерах на достаточно длинном файле получается примерно 2165+,852,1707+

SAM style
20.12.2024, 19:40
Магнитофон не работает в унисон с процом - после каждой команды берётся её длительность в наносекундах (такты * нс/такт) и отправляется всем устройствам, в т.ч магнитофону. Тот в свою очередь работает с длинами в микросекундах - подумалось, что наносекунды для него будет слишком жирно. То тут то там накапливаются погрешности, щитоподелать. Зато ускорение проца, как турбо или смена частоты, никак не влияет на скорость ленты.
Аналогичную срань можно найти везде - AY/YM, GS, ВГ93 не зависят от тактов проца, хотя в ряде случаев подстраиваются под него при инициализации.

Lethargeek
20.12.2024, 20:13
подумалось, что наносекунды для него будет слишком жирно. То тут то там накапливаются погрешности, щитоподелать.
проблема в том, что погрешность копится в одну сторону - а как выяснилось, это может иметь значение
что-то защищённое не загрузится, хотя должно, или же наоборот - загрузится, когда не должно бы
длительности пауз, кстати, тоже не совсем верные, хотя в tzx и задаются вовсе в миллисекундах
ладно еще меньшее разрешение, но округлять надо бы в направлении точного значения, а не вниз

SAM style
20.12.2024, 21:58
Допущение хотя бы в 7 тактов всегда должно быть, ведь неизвестно, в какой момент in a,(c) / in a,(fe) может попасть смена сигнала. Тем более цикл проверки бита с порта всегда больше одной команды - и количество тактов этого цикла между in-ами будет минимальной погрешностью.
---
А вообще вот. Если округлять до целых для пилота - 615мкс это 2165Т, 616мкс - 2169Т

// ZX spectrum signal timings
// 1T ~ 284ns ~ 0.284mks @ 3.51MHz
// pilot 2168T 615 mks
// sync1 667T 189 mks
// sync2 735T 208 mks
// 0 855T 242 mks
// 1 1710T 485 mks
// sync3 954T 270 mks
#define PILOTLEN 615
#define SYNC1LEN 189
#define SYNC2LEN 208
#define SIGN0LEN 242
#define SIGN1LEN 485
Так что точно в нужное я никогда не попаду, только буду поближе

Lethargeek
21.12.2024, 00:36
Допущение хотя бы в 7 тактов всегда должно быть, ведь неизвестно, в какой момент in a,(c) / in a,(fe) может попасть смена сигнала. Тем более цикл проверки бита с порта всегда больше одной команды - и количество тактов этого цикла между in-ами будет минимальной погрешностью.
ты не понял, важно кол-во тактов/инпутов на весь блок данных
с перекосом в одну сторону - могут накопиться многие десятки тыщ тактов
потом прерывание не тогда, когда автор дешифровщика предполагал, и привет

ZXMAK
21.12.2024, 08:21
почему при проигрывании стандартных блоков tzx/tap длины импульсов не стандартные, а на 2-3 такта короче?
то есть вместо 2168,855,1710 при замерах на достаточно длинном файле получается примерно 2165+,852,1707+

а чем вы замеряете?

Lethargeek
21.12.2024, 08:43
а чем вы замеряете?
там в отладчике есть режим подсчёта тактов accumulate
смотрел, сколько прошло между бряками на $59F и $5E2

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

для пилота смотрел такты до $58F (не с первого импульса, но они там пронумерованы)

ZXMAK
21.12.2024, 08:48
а готового теста нет, чтобы замерял длительности пилот-тона, синхроимпульсов, 1 и 0 и отображал в реальном времени на дисплее в тактах?

SAM style
21.12.2024, 10:08
Кста, погрешность будет накапливаться только до того момента, как один цикл пропустит сигнал или чекнет раньше, чем надо, после чего погрешность сбросится и будет копиться дальше до такого же момента. Величина такого "скипа" - один цикл между in-ами. Это обычно не охренеть как много, и адекватные загрузчики это допускают.
Я не говорю, что у меня всё идеально, но данная проблема не такая огромная, как кажется.

Lethargeek
21.12.2024, 10:35
а готового теста нет, чтобы замерял длительности пилот-тона, синхроимпульсов, 1 и 0 и отображал в реальном времени на дисплее в тактах?
не попадалось; ну и вряд ли можно прямо в реальном времени, точность будет только до числа инпутов, а их придётся делать реже из-за показа

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


Кста, погрешность будет накапливаться только до того момента, как один цикл пропустит сигнал или чекнет раньше, чем надо, после чего погрешность сбросится и будет копиться дальше до такого же момента.
а на практике на SCREEN$ 3-4 фрейма разницы набегает


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

...и что, собственно, мешает взять вместо микросекунды интервал в 3.5+ раза короче?

SAM style
21.12.2024, 11:04
а на практике на SCREEN$ 3-4 фрейма разницы набегает
Так... а это как замерялось? От момента, когда схватился первый фронт пилота, и до последнего бита контрольного байта? Или просто на калькуляторе число импульсов перемножилось на погрешность?
ЗЫ: Раз в 10 повысить точность особой сложности не вызовет. Запишу себе в TODO, когда-нибудь дойду до этого пункта.

Lethargeek
21.12.2024, 16:15
Так... а это как замерялось?
ну чуть выше же - сразу после синхры и до возврата (пилот до синхры)
https://zx-pk.ru/threads/9479-xpeccy.html?p=1208599&viewfull=1#post1208599


Раз в 10 повысить точность особой сложности не вызовет. Запишу себе в TODO, когда-нибудь дойду до этого пункта.
надо кратно тактовой z80 , а иначе всё равно придётся правильно округлять

SAM style
21.12.2024, 18:04
Считаем:
- Цикл измерения от фронта до фронта в пзу48 - 59 тактов (5ed и до выхода на 5fa). В регистре B считается количество таких циклов.
- Ты говоришь, мы имеем 2 такта смещения на каждый фронт. Где-то за 30 фронтов набирается погрешность в целый цикл.
- И ТУТ ХЛАБЫСЬ! Следующий замер длится или на 1 цикл короче, или на 1 цикл длиннее из-за накопленной погрешности. И этот надостающий/лишний цикл СЪЕДАЕТ всю накопленную погрешность. Она не копится на протяжении всей загрузки. Она скачками прыгает между 0 и 60 тактами. Причём эта +-1 съедается допущениями загрузчика - это всё равно будет правильный бит.
- Где ты нашёл накопленную до 2 фреймов погрешность?

Lethargeek
21.12.2024, 18:39
Следующий замер длится или на 1 цикл короче, или на 1 цикл длиннее из-за накопленной погрешности. И этот надостающий/лишний цикл СЪЕДАЕТ всю накопленную погрешность. Она не копится на протяжении всей загрузки.
ляяяяя... :v2_dizzy_facepalm: лента у тебя воспроизводится НЕЗАВИСИМО от кода z80
меньше времени воспроизводится лента - меньше тактов/инпутов умещается
никаких замеров может вообще не быть, но блок всё равно быстрее прокрутится

SAM style
21.12.2024, 19:47
Работает? Работает. Где проблема-то? Короче, покажи, где это применяется, а то развёл пузыри в луже из-за 0.04с. RZX не в счёт - in-ы делаются по его данным, а не с мофона, и прерывания тоже приходят когда он того захочет, а не по эмуляции.
ЗЫ - сделай где-нибудь запись на ленту и выведи список длин сигналов. Даже там будет разлёт от твоих "идеальных" значений. Идеальные ленты есть только в образах. На деле это такой же балаган.

Lethargeek
21.12.2024, 20:46
Работает? Работает. Где проблема-то?
вопрос, как... вроде как и memptr не очень-то применяется


Короче, покажи, где это применяется,
в ленточных защитах (спидлок, к примеру - где прерывания при дешифровке разрешены, а выравнивания нет)


ЗЫ - сделай где-нибудь запись на ленту и выведи список длин сигналов. Даже там будет разлёт от твоих "идеальных" значений.
...пропорциональный по длине импульса, а не абсолютный на каждый импульс


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

SAM style
21.12.2024, 21:31
в ленточных защитах (спидлок, к примеру - где прерывания при дешифровке разрешены, а выравнивания нет)tzx в студию, а то мне тестировать не на чем

вроде как и memptr не очень-то применяетсяЭтот я тоже всегда считал побочным эффектом. Хотя в большинстве случаев понятно, по каким принципам он выставляется и для чего служит. То, что он "просвечивает" в флаги - это скорее багофича z80

Lethargeek
23.12.2024, 14:32
tzx в студию, а то мне тестировать не на чем
http://www.tzxvault.org/Spectrum/TZX/FalconTheRenegadeLord.zip

там сперва стандартные блоки - два program и один bytes

пробую идеальные импульсы - 2168,855,1710
при загрузке начиная с первого бейсика - полёт нормальный
при загрузке со второго бейсика - сброс после загрузки bytes

пробую близкие к твоим - 2165,852,1707 и 2166,852,1708
в обоих случаях при загрузке со второго бейсика сброса нет

округление до микросекунды вверх - 2170,857/8,1711/2 - сброс

(все попытки - с пентагоновским фреймом)

SAM style
23.12.2024, 20:52
Залил на гитхаб. Увеличил точность замеров сигналов на ленте - в src/libxpeccy/tape.h есть #define TAPTICKNS 100 // ns in one tape tick это кол-во наносекунд в одном "такте" мофона. Раньше было 1000 (1 мкс). Для сравнения, 1 такт на 3.51МГц занимает где-то 284нс.
Фалкон стал загружаться. Если что-то ещё незагружаемое найдёте - давайте мне.
ЗЫ: Хотя, для замерителей наносекунд логарифмической линейкой можно было поставить 284, чтобы совсем всё срослось...

Lethargeek
23.12.2024, 21:18
Фалкон стал загружаться.
э? так он и раньше у тебя загружался, на пентагоне даже слишком хорошо загружался (в этом проблема и была))


Залил на гитхаб. Увеличил точность замеров сигналов на ленте - в src/libxpeccy/tape.h есть #define TAPTICKNS 100 // ns in one tape tick это кол-во наносекунд в одном "такте" мофона. Раньше было 1000 (1 мкс). Для сравнения, 1 такт на 3.51МГц занимает где-то 284нс.
хорошо; а еще лучше было бы сделать регулируемую скорость (наверно, нужен будет указатель вещественный); вроде еще не было такого ни у кого ;)
по советским гостам допустимое отклонение скорости ленты емнип от 1% до 3% (для самого низкого класса), насчёт буржуинов не знаю

SAM style
23.12.2024, 21:20
э? так он и раньше у тебя загружался, на пентагоне даже слишком хорошо загружался (в этом проблема и была))
Я пробовал на скорпионе, но с пентагоновским экраном, из бейсика48 - он у меня сбрасывался в конце... чудесато

SAM style
24.12.2024, 23:38
а еще лучше было бы сделать регулируемую скорость
А вот взял, сделал и залил на гитхаб. Ползунок в кассетном плеере, регулирует скорость от 95% до 105% с шагом 1. "Идеального" в моём понимании сигнала - когда на пилоте бордюр почти стоит - получилось добиться на 97%

Lethargeek
24.12.2024, 23:46
А вот взял, сделал и залил на гитхаб. Ползунок в кассетном плеере, регулирует скорость от 95% до 105% с шагом 1. "Идеального" в моём понимании сигнала - когда на пилоте бордюр почти стоит - получилось добиться на 97%
в моём понимании идеальный - это не когда стоит, а когда движется в точности, как при save :)

Lethargeek
25.12.2024, 20:06
вот еще проблемный спидлок похожий - http://www.tzxvault.org/Spectrum/TZX/Triaxos.zip
вроде бы НЕ должен загружаться на пентагоне с идеальными импульсами с первого бейсика
со второго бейсика грузится, и с первого с укороченными импульсами тоже грузится

SAM style
25.12.2024, 20:41
Скомпилил, что смог - https://github.com/samstyle/Xpeccy/releases/tag/0.6.20241224 Приму посильную помощь с БК и 286 - оба вроде работают на какой-то магии, но вдруг что упустил

вроде бы НЕ должен загружаться на пентагоне с идеальными импульсами с первого бейсика
со второго бейсика грузится, и с первого с укороченными импульсами тоже грузитсяЭто... я ещё понимаю, если бы проблема была в том, что оно не работает. Но когда проблема в том, что оно работает - это уже какой-то следующий уровень.

Lethargeek
25.12.2024, 21:28
Это... я ещё понимаю, если бы проблема была в том, что оно не работает. Но когда проблема в том, что оно работает
спробовал, сейчас triaxos у тебя никак не работает, но иначе, чем в других эмулях - сброса нет, но пилот турбоблока при любой скорости ленты подцепиться не успевает, будто что-то с паузами не то - ??


это уже какой-то следующий уровень.
https://media.tenor.com/EYPJjOVJOHYAAAAe/inception-deeper.png
тонкую несовместимость разных моделей всё-таки желательно эмулировать

Dexus
25.12.2024, 22:27
SAM style, сборки Xpeccy под винду я по прежнему регулярно делаю, и выкладываю в прежнем месте (выше вроде давал ссылку, плюс ссылка есть в инструкциях, на которые есть ссылка с Git), с пачкой преднастроенных профилей с ромами, но вот конфигурации с БК и IBM меня немного не интересуют, потому таких профилей там нету (хотя с IBM что-то было). Я был бы не против и их тоже добавить, но, собственно, неоткуда. У тебя же там выкладывается максимально пустая версия с одним только zx48 ромом. Может пора начать полноценные профили в сток добавлять?

SAM style
25.12.2024, 22:48
максимально пустая версия с одним только zx48 ромом
В первом сообщении темы ссылка на ромпак. Не помню, добавлял ли автоматическое заполнение для всех (это лампочка в настойках рядом с ромсетом).

Может пора начать полноценные профили в сток добавлять?
Херня в том, что профиль - это не настройки текущей машины, это сама машина со всем обвесом и настройками. Т.е лежит в памяти и ждёт, пока на неё переключатся. Не вижу смысла по дефолту отжрать максимум памяти. Кому надо - тот добавит, что захочет.

Dexus
26.12.2024, 06:22
Херня в том, что профиль - это не настройки текущей машины, это сама машина со всем обвесом и настройками. Т.е лежит в памяти и ждёт, пока на неё переключатся.
Вот это поворот!!!
А никак нельзя это переделать? Чтобы неактивные профили вообще ничего кроме места на диске не занимали?…

Пошел выпиливать из сборки все кроме спектрумов..

Chwe
26.12.2024, 19:04
Интересно... А как тогда лучше хранить настройки для разных машин, если профили это не совсем то. В описании я возможности указать другое место не вижу, отстаёт от действительности или нет такого?

SAM style
26.12.2024, 19:46
Интересно... А как тогда лучше хранить настройки для разных машин, если профили это не совсем то. В описании я возможности указать другое место не вижу, отстаёт от действительности или нет такого?
Пока есть опция запуска с --confdir PATH, которая позволяет указать другой каталог настроек (вообще всех).
Или сделать несколько машин/профилей и несколько вариантов запуска, за это отвечает ключ -p NAME при запуске.

Идеи на будущее:
Сделать ключ --single NAME, который загрузит только профиль NAME, игнорируя все остальные
Сделать ключ --sandbox, который с диска будет брать только ромы, а всё остальное будет чистым, а изменения не будут записаны в конфиги (не спрашивайте, зачем)

Dexus
27.12.2024, 01:48
Chwe, Тут вот в чем штука, при переключении профилей схожих конфигураций система может не сбрасываться, а просто меняться определенный набор настроек, и машина даже теоретически может продолжить работать.
И по логике, настройки для разных машин должны храниться именно что в профилях. Просто эмулятор так сделан, что выделяет всю память и инициализирует все профили разом при запуске.

SAM style, значит ли это, то память для профиля ibm будет валяться по соседству с памятью zxevo? Или это все же один общий буфер "максимального объема из всех профилей"?

SAM style
27.12.2024, 07:59
SAM style, значит ли это, то память для профиля ibm будет валяться по соседству с памятью zxevo? Или это все же один общий буфер "максимального объема из всех профилей"?
У каждого профиля свой экземпляр "компьютер", его размер одинаковый для всех типов - что для гамбоя, что для ибм. У каждого компьютера свой тип, память, устройства и пр, независимые от других. Эмулятор одновременно "выполняет" только компьютер текущего профиля, а остальные лежат в памяти в замороженном состоянии, пока на какой-то не переключимся.
Из общего у них только буфер картинки изображения. Поэтому при переключении на другой профиль в режиме паузы на экране будет каша, пока кадр не отрисуется заново.
Для оценки отжрания памяти - у меня 13 профилей для разных тестов, всё вместе откушивает 250Мб памяти.

Dexus
27.12.2024, 10:53
SAM style, а нельзя сделать чтобы выделялось и инициализировалось только для текущего профиля? Если нужна возможность «мягкого» переключения между родственными (что я вообще не припомню чтобы было нужно) - просто сделать чтобы переинициализировалась только разница.

В идеале бы конечно чтобы и смена рендерера была в опциях, а не разными билдами. Это наверное из плюс-минус одной оперы.

SAM style
27.12.2024, 14:02
Если нужна возможность «мягкого» переключения между родственными (что я вообще не припомню чтобы было нужно) - просто сделать чтобы переинициализировалась только разница.Один профиль - это около 12-15Мб (не учитывая возможные загруженные ленту и картридж), в основном это память компа, не так и много при обычных 4Гб+ на современных компах.
И вообще, если что-то тебе не нужно, это ещё не значит, что не нужно вообще всем. Мне нужно.

Chwe
06.04.2025, 16:02
Там вот был разговор о нестандартных загрузчиках (https://zx-pk.ru/threads/11422-versii-igr-i-softa-najdennye-na-kassetakh.html?p=1211976&viewfull=1#post1211976) и, похоже, xpeccy такое не загружает. Причём, никакая комбинация Autoplay/Turbo к успеху не приводит, даже «честное» проигрывание.

Зачем такой загрузчик нужен на практике, я лично понять не могу, но суть там проста: блок данных с ленты грузится в два этапа, путём вызова процедур ROM – одну часть через 0x056A и без остановки сразу вызов 0x05A9 для продолжения. Программка для воспроизведения приложена, когда работает – загружается красивая картинка, когда не работает – черно-белая или с искажёнными цветами.

82163

SAM style
06.04.2025, 17:31
Будет время - потестирую

ZXMAK
06.04.2025, 20:08
Зачем такой загрузчик нужен на практике, я лично понять не могу, но суть там проста: блок данных с ленты грузится в два этапа, путём вызова процедур ROM – одну часть через 0x056A и без остановки сразу вызов 0x05A9 для продолжения. Программка для воспроизведения приложена, когда работает – загружается красивая картинка, когда не работает – черно-белая или с искажёнными цветами.

82163

так правильно?

https://i.imgur.com/TfIB3DE.png

Похоже на загрузчик WIZBALL:
https://i.imgur.com/wIVlqjg.png

SAM style
06.04.2025, 21:20
Да в принципе и не сложно было... Оно после этого "перескока" становится чувствительным к полярности сигнала, хотя стандартный загрузчик эрогирует только на фронты.
https://samstyle.narod.ru/addons/xpeccy/xpeccy_250406.jpg

Lethargeek
06.04.2025, 22:18
притом фиг поймёшь, какая из полярностей канонiчней
для обоих вариантов попадались требовательные загрузчики

ZXMAK
07.04.2025, 04:40
Думаю проблема не в полярности, а в корректной эмуляции задержки, чтобы когда загрузчик начал читать порт, там был нужный фрагмент записи.

SAM style
07.04.2025, 07:52
Думаю проблема не в полярности, а в корректной эмуляции задержки, чтобы когда загрузчик начал читать порт, там был нужный фрагмент записи.

; and attributes data in phase 2
ld ix, 16384+6144
ld de, 768
ld c, 0
call 0x05a9 ; LD_LOOP see https://skoolkid.github.io/rom/asm/0556.html

В C хранится бит состояния последнего сигнала для сравнения с текущим. Тут явно предполагается, что он был 0.

Chwe
07.04.2025, 21:23
так правильно?

Конечно, там же SCR вложен :) В смысле, ZXMAK2 правильно это всё читает, я так понимаю. Так и запишем…



Похоже на загрузчик WIZBALL:


Да, идея примерно та же, но реализация wizball посложнее (и понадёжнее?) выглядит, там и нулями «забито» (чтобы паузы для обработки были?) и какая-то синхронизация, вроде, есть и, в целом, это очень осмысленно, не так как в motos+ (откуда мой пример выдран).

ZXMAK
08.04.2025, 06:56
да, действительно, от полярности зависит. Интересно, как такой загрузчик работает на реальном магнитофоне, где полярность окажется инверсная?

Chwe
08.04.2025, 19:12
«А как это работает на настоящих Спектрумах», это был первый вопрос, который я себе задал. Кратко: работает (последние три мопеда не мои, естественно, но результатам верю):

Sizif 512: через Bluetooth НЕ работает, через провод работает отлично
Next: в «родном» режиме предсказуемо конфликтует с эмуляцией esxdos, в режимах 128/USR0/48/Pentagon – работает отлично
оригинал 48k: работает отлично
JoulesPerColoumb плата на ОУ LM358 для серого +2: работает отлично

sasza
09.04.2025, 23:01
Только вчера из этой темы узнал о сущестовании Xpeccy, ну и попробовал его собрать под RISC-V. Как ни странно, собрался (я не настоящий пожарник, я только учусь)! Правда, не без проблем: пришлось вручную выпилить поддержку геймпада (в репозитории не было Qt5, пришлось ставить Qt6, а в нём соответствующего модуля не оказалось, и, как я понял, пока что не предвидится; а найденный левый сходу собираться отказался), и, как назло, в самом Линуксе 2 хедера оказались запоротыми (впервые с таким сталкиваюсь: в середине файла несколько десятков символов заменены левыми, причём не подряд, но в пределах пары экранов) - пришлось искать подходящую замену. Интересный эмулятор, буду разбираться на досуге. Правда, на моей машинке (Orange Pi RV2) подтормаживает, но это мелочи.

Offtop: Кстати, насчёт геймпада. Впервые в жизни эту штуку взял в руки буквально пару дней назад, хотя сыну первую приставку купил почти полтора десятка лет назад. Какая гадость! То ли дело старый добрый джойстик, до которого, правда, уже лет 30 не дотрагивался, но который уж точно на порядки удобней.

cafedead
21.04.2025, 20:11
так правильно?
Нет. Вот так. -)

82206

Use Traps и Use Auto Play. А только Use traps как раз дает на ZXMAK2 картинку без атрибутов.

ZXMAK
21.04.2025, 22:59
Нет. Вот так. -)

вы видимо старую версию эмулятора используете, где TZX еще не полностью был реализован.
В новой версии (https://github.com/zxmak/ZXMAK2/issues/8#issuecomment-2545420954) уже полная поддержка TZX и исправлены трапы, картинка нормально грузится с любой комбинацией режимов.

https://i.imgur.com/VQRtQsD.png

cafedead
22.04.2025, 01:46
вы видимо старую версию эмулятора используете, где TZX еще не полностью был реализован.
2.9.3.8 - это уже старая? Ну хорошо... Да, загрузка исправлена, хотя пилот немного бесит. Но работает, да. Но в этой тестовой версии что-то у вас мои тесты по мемптр поплыли... OTIR|OTDR раньше работали.

ZXMAK2 0.0.0.0:
82210

А Xpeccy хорош:
82209

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

Внешне Xpeccy производит хорошее впечатление, но...

ZXMAK
22.04.2025, 02:53
я в этих инструкциях помоему- чтото исправлял, какраз связанное с memptr, на основе анализа как они работают в железе, тестил на нетлист симуляторе Z80, хотя могло конечно чтото и сломаться, сейчас не помню деталей.

У меня вроде проходит ваш тест, правда у меня версия v0.66, вы 0.7 уже выкладывали куда-то?

https://i.imgur.com/5R5W9Lp.png

cafedead
22.04.2025, 04:14
на основе анализа как они работают в железе, тестил на нетлист симуляторе Z80,
Ну звучит круто конечно. Но это вы где-то перестарались. OTIR|OTDR, как вы помните, мы оттестили уже на трех машинах, благодаря JeRrS, еще в составе 0.66б версии тестов, они сюда без изменения переехали. Можете скачать тот тест из ветки, проверить. А прерванные блочные инструкции ваш эмулятор правильно как в железе не умеет, ни по MEMPTR, ни по флагам. Смотрите код Xpeccy, что там автор наворотил. Но у него MEMPTR правильно, а флаги - я не уверен, что правильно...

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


вы 0.7 уже выкладывали куда-то?
Нет, еще допиливаю... Может пару дней еще.

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


У меня вроде проходит ваш тест, правда у меня версия v0.66,
Ну как проходит, если не проходит?!

82213

Вот... Это ZXMAK2-TestBuild8.zip, версия 0.0.0.0. Опять старая версия?!) А 2.9.3.8 проходит.

ZXMAK
22.04.2025, 08:30
Ну как проходит, если не проходит?!

82213


Странно, у меня стабильно проходит, см. скрин выше. А какую модель спектрума и ROMSET вы используете для теста? Может содержимое ROM влияет на результат теста?



Вот... Это ZXMAK2-TestBuild8.zip, версия 0.0.0.0. Опять старая версия?!) А 2.9.3.8 проходит.

Думаю что да, но вот вы написали и теперь не уверен. Не исключено, что TestBuild8 еще не включает исправления для процессора. Но вроде должна включать. Из новых изменений там помоему только для магнитофона некоторые вещи еще не включены.

Update: да, действительно - проверил версию TestBuild8 что выложена на сайте, в неё исправления процессора еще не попали - выдает ошибку. Нужно будет обновить.

cafedead
22.04.2025, 12:58
А какую модель спектрума и ROMSET вы используете для теста? Может содержимое ROM влияет на результат теста?
Стандартное все, 48К или 128К. Никак не влияет.

SAM style
22.04.2025, 23:26
По-моему, не обыгрывает сценарий, когда блочные инструкции портят сами себя
Ну как.. Если при ldir/lddr будет затёрто их местоположение, то в следующей итерации прочитается и выполнится уже другая команда. Или оно как-то по-другому должно работать? Каждый шаг блочных инструкций считается отдельным опкодом.

cafedead
23.04.2025, 09:14
Ну как.. Если при ldir/lddr будет затёрто их местоположение, то в следующей итерации прочитается и выполнится уже другая команда. Или оно как-то по-другому должно работать? Каждый шаг блочных инструкций считается отдельным опкодом.
Ну да, именно так и должно работать. Вот мы поломали опкод, и следом сразу смотрим на флаги. И что мы там получим?! Вы флаги от модификации PC блочными командами подпихиваете только в случае прерывания через костыли с blk и blkio, насколько я понял. Значит мы получим неправильные флаги.

SAM style
23.04.2025, 12:03
Вы флаги от модификации PC блочными командами подпихиваете только в случае прерывания
У меня была такая информация только в случае прерывания. Про обрывание блочных команд самозатиранием информации не было... Где почитать?

ZXMAK
23.04.2025, 12:13
У меня была такая информация только в случае прерывания. Про обрывание блочных команд самозатиранием информации не было... Где почитать?

можно в симуляторе потестить:
http://www.visual6502.org/JSSim/expert-z80.html
https://floooh.github.io/visualz80remix/
https://github.com/gdevic/Z80Explorer

cafedead
23.04.2025, 12:14
У меня была такая информация только в случае прерывания. Про обрывание блочных команд самозатиранием информации не было... Где почитать?
Понятия не имею, где почитать. Но, по-моему, тут достаточно немного подумать. Причем тут прерывание вообще? Оно ничего не меняет в выполнении блочных команд. Регистр PC уменьшился, если B!=1 для INIR/INDR/OTIR/OTDR, или BC!=1 для LDIR/LDDR/CPIR/CPDR? Уменьшился. Значит флаги на бочку. И тут совершенно не важно, что потом произошло: произошло ли прерывание, разбилась ли инструкция прошлой итерацией этой самой блочной инструкции, или я переключил банк памяти, или любым другим способом подсунул процессору другую команду. На мой взгляд, изначально стоит именно так все понимать, и подразумевать, и тем более, что вы даже не видели таких тестов. А у вас магия какая-то происходит. Регистр PC уменьшили, но флагов от этого уменьшения нет, просто исчезли, но если было прерывание, то флаги внезапно есть. Как вы такое чудо можете объяснить? Ну ваша трактовка выглядит слишком нереалистичной, чтобы без конкретных результатов тестирования ее принять.

Вот комментарий оттуда, откуда вы это все взяли:


by TonyB » Tue Aug 14, 2018 4:57 pm

Something that puzzles me a little bit is how the Russian MEMPTR/WZ investigators know WZ when BC <> 1 during LDxR, as it must be overwritten during IM 1 and 2 interrupts. I doubt they used any hardware, but perhaps they added pull-up/pull-down resistors on the data bus to set the IM 0 opcode to E9H for JP (HL). Or does the NMI preserve WZ? I'm not suggesting their information is wrong.
Т.е. от ребят в принципе ускользало понимание, что можно прервать блочную инструкцию. Ну и они были скованы своим способом тестирования, тем, что у них рабочая машина, работающая на полной скорости, к процессору которой они прищепкой подцепились. Поэтому они сидели и ждали прерываний, как у моря погоды, тестируя все чужими тестами, которые толком не тестят. Потом изобрели какой-то недоРезет, исследуя состояние недосброшенного процессора, делая из этого далекоидущие выводы, что тоже выглядит как довольно сомнительная затея. Хотя надо будет с этим поиграться, не знаю правда, зачем, но весело же... В общем, пожалуйста, учитывайте все эти обстоятельства.

ZXMAK
23.04.2025, 14:35
В нетлист симуляторе состояние WZ можно прямо внутри схемы Z80 смотреть:
https://i.imgur.com/yl62HHE.png

cafedead
23.04.2025, 15:03
В нетлист симуляторе состояние WZ можно прямо внутри схемы Z80 смотреть:
А насколько он там правильно считается?! Большая часть эмуляторов вот косячит, например. С чего к симулятору вдруг такая вера?

Titus
23.04.2025, 15:24
А насколько он там правильно считается?! Большая часть эмуляторов вот косячит, например. С чего к симулятору вдруг такая вера?

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

А эмуляторы в большинстве своем - это свободный уровень абстракции конкретного программиста.

cafedead
23.04.2025, 15:41
Симулятор работает на уровне транзисторов, которые сняты с фотографии кристалла. Всегда можно проверить, на сколько тот или иной транзистор соответствует оригиналу, если возникнет сомнение.
Ну вы пытаетесь тот факт, что кто-то разобрался с какими-то транзисторами или даже какими-то узлами, натянуть на всю симуляцию, аргументируя ее правильность, включая влияние всех инструкций на регистр мемптр. Мне кажется, что это все же некоторый перебор. А чем это протестировано? Ничем. Дырявыми тестами.

Titus
23.04.2025, 15:52
Ну вы пытаетесь тот факт, что кто-то разобрался с какими-то транзисторами или даже какими-то узлами, натянуть на всю симуляцию, аргументируя ее правильность, включая влияние всех инструкций на регистр мемптр. Мне кажется, что это все же некоторый перебор. А чем это протестировано? Ничем. Дырявыми тестами.

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

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

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

Что может не симулироваться, так это плавающие уровни, которые влияют на флаги CCF/SCF. Но это я все описывал в соответствующей теме.

cafedead
23.04.2025, 16:51
Симуляция - это очень простая вещь, т.к. симулирует просто работу транзисторов.

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

И еще одним моментом это не подтверждается. Почему мы вот даже сегодня все еще смотрим на текстовый файл про MEMPTR, собранный тестами Boo-Boo много лет назад, который чуть ли не наугад все это натыкал, а не на плоды подобных исследований транзисторов с объяснениями? Это странно, если все вот так, как вы говорите, что у вас там все просто и понятно по симуляции транзисторов, и по фотографиям, и процессор для вас - это теперь открытая книга. У меня вот да, вызывает некоторое недоверие такая ситуация. Как в принципе все, что я где-либо читаю, все это считаю нужным перепроверять. Про SCF/CCF я все перечитал у вас. Да, интересно. Но опять же. Ответ, что у нас после SCF/CCF во флагах получается какая-то неведомая херня - как-то маловато, и не то, чтобы очень полезно, и вообще совершенно не информативно.

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

Titus
23.04.2025, 16:59
Насколько это соответствует работе реального процессора?
Блочная инструкция это обычная инструкция, в конце которой счетчик PC делает два декремента, т.е. откатывается назад на 2 байта.
Именно так ее и следует рассматривать, не рождая дополнительные сложные сущности.
И я также подробно описывал, как работают блочные команды, именно глядя на отреверсенную схему, а не на ее симуляцию.

Симуляцией не пользуюсь вообще.

К тексту про MEMPTR не обращаюсь.

Для всего мне хватает просто отреверсенной схемы)

cafedead
23.04.2025, 17:30
в конце которой счетчик PC делает два декремента,

Для всего мне хватает просто отреверсенной схемы)
А вы вот уверены, что PC делает именно два декремента? Как это выглядит на схеме?


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

ZXMAK
23.04.2025, 17:52
По-моему, это какие-то взаимоисключающие моменты. Я конечно понимаю, что вы хотите этим сказать, и не хотел бы цепляться к словам. Но на самом деле ваше "симулирует просто работу транзисторов" - это "недостаточно хорошо симулирует работу транзисторов", раз уж там внезапно не получается сделать имитацию просадки напряжения от нагрузки.

в симулятор загружается схема процессора - массив со списком транзисторов и к какой цепи подключена каждая из его ног. Дальше симулятор просто обновляет сигналы проверяя сигнал на входе транзистора открывая/закрывая транзистор. Плавающий не плавающий бит зависит от уровня симуляции - имитирует ли симулятор переходные процессы для сигналов и транзисторов или просто обрабатывает транзисторы как ключи. Симуляция влияния космических лучей и радиации - по желанию... :v2_biggr:

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


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

для процессора нет прерываний блочной инструкции, процессор ничего не прерывает - какой опкод зафетчился, тот и выполняется. :)


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

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

Titus
23.04.2025, 18:11
А вы вот уверены, что PC делает именно два декремента? Как это выглядит на схеме?

Предлагаю поискать в специальной теме (https://zx-pk.ru/threads/34173-revers-inzhiniring-z80.html).

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


Ну да, вы этот регистр просто не эмулируете. Очень убедительно.

При чем здесь эмуляция? Я ничего не эмулирую пока что.

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

А вот тут (https://zx-pk.ru/threads/34173-revers-inzhiniring-z80.html?p=1204877&viewfull=1#post1204877) кратко расписаны особенности работы команд LDI(R)/LDD(R).

ZXMAK
23.04.2025, 18:37
А вы вот уверены, что PC делает именно два декремента? Как это выглядит на схеме?

на схеме это выглядит так, вот лог сигналов Z80 на каждом цикле(по переходу clk из 1 в 0) при выполении LDIR для BC=2.

Исполняемый код (сам ldir начинается с адреса #0003):
https://i.imgur.com/N9Jec74.png

https://i.imgur.com/24L4ySs.png

Наглядно видно, что PC действительно на 2 уменьшается, странно в этом сомневаться :)

cafedead
23.04.2025, 18:43
А вот тут кратко расписаны особенности работы команд LDI(R)/LDD(R).
Ну настолько кратко, что плохо соответствует ранее открытой инфе.
Таким образом, 5 и 3 биты регистра флагов берутся из A + (HL).

PV=1 если после декремента BC<>0
F3=бит 3 операции переданный байт + A
F5=бит 1 операции переданный байт + A
И к тому же в вашем комментарии от 2024 года ничего нет про изменение флагов, если прервать инструкцию LDIR/LDDR, что есть в инфе на форуме от 2018 года. Я понимаю, что краткость - сестра таланта, но... В чем таится реальная польза от написанного вами про LDI(R)/LDD(R)? Я это все к тому, что ни черта вам на самом деле не видно по схемам, в чем вы пытаетесь всех убедить. Уж извините. Не нужно вводить в заблуждение ни себя, ни других, если вот так легко можно подловить вас на ваших выдумках.

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

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


Наглядно видно, что PC действительно на 2 уменьшается, странно в этом сомневаться
Не видно. PC=5 при вычитывании опкода #B0, потом становится равным PC=4, и указывает на код #ED. Т.е. уменьшился на единицу.... ... Потому что пять минус четыре равно один. Ваш кэп. Он хотя бы раз был равен шести на вашей картинке до того, как BC стал единицей, чтобы вы так уверенно не сомневались? Нет. Ну только у вас в голове, разве что. Потому что я отчетливо вижу это, а вы - что-то свое.

Вы же знаете, что есть сценарии, когда PC не инкрементируется. Почему же у вас нет сомнений?

ZXMAK
23.04.2025, 19:09
Не видно. PC=5 при вычитывании опкода #B0, потом становится равным PC=4, и указывает на код #ED. Т.е. уменьшился на единицу.... ... Потому что пять минус четыре равно один. Ваш кэп. Он хотя бы раз был равен шести на вашей картинке до того, как BC стал единицей, чтобы вы так уверенно не сомневались? Нет.

Когда процессор читает опкод, регистр pc уже увеличен на 1. Если посмотрите внимательнее, процессор читает из адреса 3, а pc в это время уже увеличен на 1. поэтому равен 4. А 5 - это адрес NOP следующего за LDIR. Сам LDIR расположен по адресу #0003.
Вот содержимое памяти:
#0003 = #ed
#0004 = #b0
#0005 = #00

Смотрите на цикл 32, где pc из #0005 становится #0003.
5 - 3 = 2.
Затем на цикле 34 идет чтение опкода #ed из адреса #0003.

Вот более детальный лог по полу-циклам:
https://i.imgur.com/yiZPgqv.png

cafedead
23.04.2025, 19:55
смотрите на цикл 32, где pc из #0005 становится #0003, затем на цикле 34 идет чтение опкода #ed из адреса #0003.
Т.е. мне должно было быть наглядно видно, что в PC у нас 0004, когда на адресной шине для выборки инструкции лежит #0003 из регистра PC все время, пока она вычитывается по адресу #0003? Ну как бы нет, мне не было это наглядно видно, и не должно было быть. Мне видно будет на шине реального процессора #0003, и из этого я исхожу. Тот факт, что у вас в табличке PC=0004 нарисовано при этом... Ну на заборе тоже много чего нарисовано. Ну т.е. тогда, когда я вам говорю, что надо все проверять, перепроверять за всеми все сказанное, вы мне заявляете, что я должен уверовать, как вы, что там #0004, потому что в вашей табличке симуляции так написано. И по каким критериям я должен оценивать достоверность этих данных? Чтобы убедиться, что это не какая-то фантазия автора на тему, который не факт что правильно все симулирует? Объясните, а то я тоже хочу смотреть в такую табличку, и получать такое же удовольствие.

Ну и один раз быстрее вычесть, чем два раза это сделать. И в MEMPTR #0004 уже вроде как, и ведь не просто так. Объяснения будут, нахрена все это нужно? В чем прикол? И не мог ли автор симуляции неправильно все понять, например? Вы уверены, что во время вычитывания опкода по адресу #0004 в PC #0005? Откуда эта уверенность? Да и вообще, в чем польза от этого знания, если даже предположить, что эта странная херня и является истиной? Вот уж, по-моему, самая бесполезная херня, которую можно было только найти с помощью схем, из всех возможных загадок.

Titus
23.04.2025, 20:29
И к тому же в вашем комментарии от 2024 года ничего нет про изменение флагов, если прервать инструкцию LDIR/LDDR, что есть в инфе на форуме от 2018 года. Я понимаю, что краткость - сестра таланта, но... В чем таится реальная польза от написанного вами про LDI(R)/LDD(R)? Я это все к тому, что ни черта вам на самом деле не видно по схемам, в чем вы пытаетесь всех убедить. Уж извините. Не нужно вводить в заблуждение ни себя, ни других, если вот так легко можно подловить вас на ваших выдумках.

Хм... похоже, я не сразу понял, что тут не дискуссия а тонкий(?) троллинг)
Взял чипсы, понаблюдаю, как долго ZXMAK выдержит)

ZXMAK
23.04.2025, 20:45
Мне видно будет на шине реального процессора #0003, и из этого я исхожу.

шина адреса процессора - это столбец db в таблице, а шина данных ab. Но они не соответствуют pc или hl - это просто значение защелке установленное на одном из полуциклов.