Просмотр полной версии : Emu80 v.4
В Qt-версии? Не должно такого быть - шейдер один, он либо работает либо нет. Может быть, просто был включен масштаб с целым коэффициентом, и сглаживать было нечего? Попробуй еще раз, только включи режим ручного изменения размера окна (Alt-0) и поизменяй вручную его размер.
Так да, работает. Хотя это на мой вкус смотрится не очень классно. Во первых есть неоднородность, одни пиксели четкие, другие сглаженные. Во вторых для больших масштабов хорошо бы скруглять точки, делать сканлинии по выбору.
для больших масштабов хорошо бы скруглять точки, делать сканлинии по выбору
Включить сканлинии можно и сейчас в настройках, вместе со сглаживанием смотрится довольно неплохо. А насчет скругления точек - сейчас ничто уже не мешает сделать выбор пользовательских шейдеров, а их уже можно наделать разных и на любой вкус. Тем более, что можно найти много готовых, которые нужно просто адаптировать... Надо будет поэкспериментировать...
Здравствуйте!
Считали прошивки учебного компьютера "Курсор". Верифицировали на 3 машинах. Тут как ПЗУ с платы ПЭВМ, так и ПЗУ с видеокарты (есть не у всех версий - штатно вывод информации происходит на ИМГ, но может быть установлена видеокарта с композитным видеовыходом). 2 ПЗУ "М" - монитор, остальные 6, видимо, бейсик.
https://cloud.mail.ru/public/mjL6/Q69v2z29H
Если для добавления в эмулятор потребуются какие-то тесты на реальной машине, схемы, документация (у нас есть полный комплект) - пишите, постараемся помочь. Хоть документы и есть в интернете в виде фото, но в сильно плохом качестве (там и оригинал в плохом качестве).
mig_25, спасибо! Документация и схемы, конечно же будут нужны. В интернете навскидку не нашел ни в каком качестве, так что хотелось бы или скан ваших материалов, или хотя бы ссылку в интернете на сканы плохого качества. Готов поизучать, но реально заняться реализацией в Emu80 смогу скорее всего не раньше осени. Может быть, b2m заинтересуется и сможет сделать раньше в своем эмуляторе?
Еще, думаю, стоит создать тему, посвященную этому компу в разделе "Отечественные компьютеры / Разное" и уже там разместить все материалы и обсуждать этот компьютер...
Тему создал https://zx-pk.ru/threads/34433-pevm-kursor.html?p=1154541#post1154541
Эмулятор очень хорош. Только вот отладчик выглядит мелковатым на мониторе 2560х1440. Сильно мелковатым.
Эмулятор очень хорош. Только вот отладчик выглядит мелковатым на мониторе 2560х1440. Сильно мелковатым.
Ничто не мешает изменить его размер. Тулбара и меню у отладчика пока нет, но горячие клавиши действуют: Alt-1, Alt-2, Alt-3 или Alt-0 и менять размер мышкой...
Если речь о масштабировании текста на 4K мониторе в винде, то это частично решается параметрами совместимости при запуске. Райтклик -> Properties -> Compatibility -> Change high DPI settnigs.
Новый большой релиз. Версия 4.0.420 от 10.06.2022:
https://emu80.org/news/v40420
Сайт эмулятора: https://emu80.org
Загрузить:
Qt-версия (рекомендуется):
Windows-сборка (portable): https://emu80.org/v4beta/Emu80qt_40420.zip
MacOS-сборка: https://emu80.org/v4beta/Emu80qt_40420_macos.zip
Portable SDL/wx-версия, windows-сборка:
https://emu80.org/v4beta/Emu80_40420.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.420:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
+ Поддержка ПК "Криста"
+ Добавлен новый режим сглаживания: границы пикселов
+ Вектор: поддержка жесткого диска
+ Вектор: поддержка второго квазидиска на порту 11h
+ Корвет: поддержка AY-3910 на порту ВВ55
+ КР-04: поддержка SD-адаптера по схеме vinxru
+ Микроша: поддержка оригинального внешнего ПЗУ-модуля для Микроши
+ Поддержка светового пера на ВГ75.
Проверено на "Кристе", возможно, будет работать и на других ПК
+ Диалоги аппаратной конфигурации (Alt-F8) для Вектора (конфигурация электронных дисков),
Корвета (конфигурация AY-3910), Микроши (конфигурация внешнего ПЗУ) и КР-04 (конфигурация SD-контроллера)
+ Возможность сохранения полного дампа памяти в отладчике по клавише F2
* Изменены настройки отображения и окон, обновлен набор пресетов
* Переписан код вывода на экран, сейчас используется native OpenGL (в Qt - всегда, в SDL - при возможности)
* Новое меню и горячие клавиши для жесткого и электронного дисков по аналогии с меню для НГМД
* Исправлена работа "умной" раскладки при быстром наборе
* Переработано меню выбора платформы, сейчас оно иерархическое со списком последних платформ
* РК-86: добавлены настройки типа SD-адаптера, обновлены образ карты и прошивки SDOS, исправлены ошибки
* КР-04: уточнена скорость работы КР-04, добавлены такты ожидания для выборки знакогенератора
* ПК8000: обновлен HDD ROM до последней версии (1.5)
* Микроша: в подсказку добавлена информация о раскладке клавиатуры
- Корвет: исправлено отображение текстовых атрибутов
- КР-04: исправления в эмуляции таймера ВИ53
- КР-04: восстановлена работа клавиши СБРОС
- КР-04: исправлен запуск файлов .rk4 из командной строки
- ПК8000: исправления в распределении адресного пространства
- Микроша: возвращен отсутствовавший альтернативный шрифт 8x12
- Вектор: исправлено неполное сохранение диска ERAM
- Добавлены русские переводы для пропущенных пунктов меню
- Исправления в режиме 0 таймера ВИ53,
сборник "Хит-парад" для Микроши опять загружается, работает обмен с магнитофоном на КР-04
- Исправлена проблема с FPS в половину кадровой частоты на некоторых видеокартах
- Исправлена работа некоторых горячих клавиш (Qt)
- Восстановлена корректная работа "Открыть и запустить" (Alt-F3) на некоторых программах на РК-совместимых компьютерах
! КР-04: пока не реализованы прерывания
Этот релиз в основном содержит улучшения в пользовательском интерфейсе, а также большое количество
багфиксов и доработок, о которых просили в том числе посетители этого форума.
Большие изменения сделаны в части вывода изображения: новый механизм вывода, новый режим сглаживания,
переработанные настройки, новый набор пресетов, измененная логика переключения в полноэкранный режим.
Надеюсь, сейчас управление отображением будет более эффективным и понятным.
Для некоторых платформ добавлен диалог аппаратной конфигурации (Alt-F8). В частности, на Корвете
в нем включается поддержка AY, на Векторе - второй квазидиск и ERAM, на Микроше - внешнее ПЗУ,
на КР-04 - SD-контроллер. Для РК-86 в диалог добавлен выбор типа SD-контроллера. Постепенно буду добавлять
настройки аппаратной конфигурации и для других платформ, так что больше не будет необходимости вносить
изменения в конфигурационные файлы.
Софт и документацию для "Кристы" можно пока взять здесь:
https://disk.yandex.ru/d/qdsUB-fkrYfEWg (коллекция собрана Муромским Кибер-музеем)
Serg6845
24.06.2022, 20:39
Новый большой релиз. Версия 4.0.420 от 10.06.2022:
https://emu80.org/news/v40420
Скачал подебажить кое-что, и сразу в багу вляпался...
при работе под отладчиком зависает эмуляция клавиатуры.
Специалист, загружаем широко известный дизассемблер
77491
ставим breakpoint по адресу 0994H, запускаем дизасм (G800), D, отвечаем на вопросы (неважно что), вываливаемся в отладчик.
три раза жмем F8, получаем зависон клавиатуры (иногда не получаем, но раза со 2-3го - всегда). по адресу FF01 читается BF, переинициализация ППА не помогает. только сброс...
проверено на трех компах - XP, Win7, Win10.
Serg6845, спасибо! Ошибку смоделировал, но разобраться в причинах и исправить пока не было времени. Обязательно разберусь чуть позже.
ставим breakpoint по адресу 0994H, запускаем дизасм (G800), D, отвечаем на вопросы (неважно что), вываливаемся в отладчик.
три раза жмем F8, получаем зависон клавиатуры
Разобрался. В общем, при ответе на вопрос "ТЕКСТ(Y/N)" событие нажатия клавиши (Y или N) в этом случае попадает в эмулируемую программу, а отжатие до нее уже не доходит, попадает в отладчик. Клавиша в программе остается "запавшей". Подумаю, как лучше обработать подобную ситуацию, а пока можно просто нажимать Y или N коротко, не задерживать клавишу в нажатом положении (успеть отпустить за время писка клавиши). А если все-таки зависнет, то дополнительно нажать еще раз ту же клавишу, что и в прошлый раз (Y или N).
P. S. На РК-86 и подобных проблема также проявляется, но там в случае длительного нажатия срабатывает автоповтор, так что обычно клавиши нажимают более коротко...
Pyk, день добрый :) можете помочь советом? на какой конфигурации Вы собираете релизы под MacOS, может подскажете какой коммит собираеся?
Хочу добавить в эмулятор 'Радуга С' у меня MacOS X El Capitan 10.11.6 с macports
Пытаюсь собрать git describe d932e5b, для начала make -f Makefile.lite.
После замены <GL/gl.h> на <OpenGL/gl.h> начали компилироваться cpp файлы но выдает кучу.
In file included from src/sdl/sdlPalWindow.cpp:20:
src/sdl/sdlGlExt.h:24:1: error: unknown type name 'PFNGLGENBUFFERSPROC'
PFNGLGENBUFFERSPROC glGenBuffers;
^
src/sdl/sdlGlExt.h:25:1: error: unknown type name 'PFNGLBINDBUFFERPROC'
PFNGLBINDBUFFERPROC glBindBuffer;
^
src/sdl/sdlGlExt.h:26:1: error: unknown type name 'PFNGLBUFFERDATAPROC'
в SDL я новичек, 01_hello у меня компилируется правда там спец параметры для clang++ и нет никаких ссылок на GL
clang++ -O3 -Wall -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks/SDL2.framework/Headers main.cpp -framework SDL2 -o hello-sdl
Возможно ли скопилировать эмулято пд Мак без GL ?
oxy, к сожалению, SDL/wx-версия под MacOS на данный момент неработоспособна. Даже если удастся собрать, работать не будет из-за какой-то несовместимости библиотек SDL и wxWidgets (именно в MacOS). Надо бы, конечно, разобраться, но руки пока так и не дошли... А вообще, последняя без GL версия с тегом v4.0.400 - возможно, соберется, но работать скорее всего не будет...
Так что рекомендую под MacOS собирать Qt-версию, с ней проблем нет. Требуется Qt 5.7-5.15, конкретно под macOS протестировано на Qt 5.7 и 5.12.
Pyk, я тут на днях поигрался с Emu80v4 и был сильно впечатлен. Очень все аккуратненько и дебаггер просто огонь. Спасибо тебе за такой эмулятор!
P.S. так впечатлился, что смержил PR про WAV-ы ;)
svofski, спасибо на добром слове! На "мелочи" всегда старался обращать внимание, но на самом деле я-то знаю, что эмулятору пока не хватает и некоторых весьма важных вещей вроде снапшотов или точек останова по доступу к памяти...
И за мерж спасибо, сейчас wav'ы из PA будут открываться в Emu80 :)
А между тем выяснилось, что в последних версиях есть какие-то проблемы с FDD на Векторе: опять не работает T-Rex (выдает ошибку диска), зависает демо Skynet, возможно и что-нибудь еще...
Вероятно, что-то сломал, когда добавлял поддержку Корвета :(
Разберусь, а пока при необходимости можно использовать февральскую версию 4.0.379, в ней с этим точно все ок.
Багфикс-релиз. Версия 4.0.422 от 22.07.2022:
https://emu80.org/news/v40422
Сайт эмулятора: https://emu80.org
Загрузить:
Qt-версия (рекомендуется):
Windows-сборка (portable): https://emu80.org/v4beta/Emu80qt_40422.zip
MacOS-сборка: https://emu80.org/v4beta/Emu80qt_40422_macos.zip
Portable SDL/wx-версия, windows-сборка:
https://emu80.org/v4beta/Emu80_40422.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.422:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
- Восстановлена работа игры T-Rex, демо SkyNet и других программ на Векторе
(исправления в работе команды Read Address контроллера НГМД)
* Исправления в документации
В последней версии (хотя я не уверен, что раньше этого не было, просто так получилось, что сегодня запустил) обезжучиватель иногда не спешит интерпретировать мнемоники.
Вот тут должно быть
mvi d, 0
mov e, m
но показывается db 16h \ nop \ db 5eh. Если бы еще и lxi не декодировался, я бы спокойней к этому отнесся ;)
Это картина сразу после загрузки rom-файла, брекпойнт был поставлен заранее.
https://pic.maxiol.com/thumbs2/1658574352.1547582188.screenshot20220723.png (https://pic.maxiol.com/?v=1658574352.1547582188.screenshot20220723.png&dp=2)
Когда до адреса доходим обычным путем, все как правило устаканивается и мнемоники показываются декодированные. Так что большой проблемы в этом нет.
обезжучиватель иногда не спешит интерпретировать мнемоники
Смоделировал, подтверждаю, спасибо за багрепорт!
Вообще немного странно, даже просто смещение вверх/вниз в секции кода приводит к устаканиванию, даже без собственно отладки.
Да и происходит такое нечасто и не совсем пока понятно, когда именно, иначе давно бы уже заметил.
Код этот писался 5 лет назад, уже плохо помню что там и как, посмотрю на днях.
Кстати, по-моему F4 в дебаггере должен работать как "продолжить исполнение, пока не вернулись на текущий адрес". Иными словами, поставить на текущую строку одноразовый брекпойнт и продолжить исполнение. А сейчас если я стою на той же строке, где PC, F4 как будто ничего не делает.
поставить на текущую строку одноразовый брекпойнт и продолжить исполнение
Ха, именно так оно сейчас и работает и в результате ничего не делает, так как брейкпоинт сразу же и срабатывает :) Надо скорее так "выполнить текущую строку, поставить на нее одноразовый брекпойнт и продолжить выполнение". Недоработка, исправлю.
Это картина сразу после загрузки rom-файла, брекпойнт был поставлен заранее.
Правильно я понял: открываем отладчик и, пока выполнение на паузе, загружаем rom-файл?
Не предусмотрел такую последовательность действий, надо будет уведомлять отладчик в таких случаях для обновления информации...
Правильно я понял: открываем отладчик и, пока выполнение на паузе, загружаем rom-файл?
Да. Обычно я стою в отладчике и затаскиваю дрег-н-дропом свежий ROM. В любом случае это проблема скорее косметическая. Есть такой эффект -- когда привыкаешь к новому, обращаешь внимание на всякие мелочи. Потом, когда уже знаешь что к чему, мелочи не замечаешь. Сейчас я мог бы и не заметить. Очень душевный отладчик :)
обезжучиватель иногда не спешит интерпретировать мнемоники
если я стою на той же строке, где PC, F4 как будто ничего не делает
Исправил и то, и другое, а также добавил обновление отладчика после загрузки файла или сброса. Изменения в репозитории, могу собрать бинарник при необходимости.
Спасибо! Наверное лучше подождать пока накопятся изменения на версию.
parallelno
23.08.2022, 07:55
Натолкнулся на интересный баг в Emu80 при эмуляции моей программы.
...
Проблема в том, что emu80 на третий раз странно выполняет
0259 CALL 023A
Вместо 23A почему-то вызывает 0000
...
ром:
https://github.com/parallelno/Vector...GameNoname.rom
баг репорт:
https://github.com/vpyk/emu80v4/issues/14
Посмотри пожалуйста. Заранее спасибо!
parallelno, посмотрю ближе к вечеру.
Описание бага звучит интригующе ;)
parallelno
23.08.2022, 08:49
А можно ещё фичей подсказать? :))
- - - Добавлено - - -
Pyk, для отладки. А то иногда очень тяжко. :)
А можно ещё фичей подсказать?
Можно, конечно. Я, конечно, и так догадываюсь, чего в отладчике не хватает, но тем не менее - вдруг я о чем-то и не подозреваю?
Вот только, если баги я еще смогу оперативно исправить, то добавлять новые фичи не смогу ориентировочно до октября в связи с нехваткой времени. Разве что что-то мелкое...
parallelno
23.08.2022, 10:11
Из совсем мелкого это анноящее ограничение на количество брейк принтов. Было бы классно их увеличить хотя бы до количества влезаемого в окно интерфейса. :)
- - - Добавлено - - -
Менее мелкое:
Классно было бы иметь дополнительные фичи для отладки например брейк проиты на доступ к памяти, call stack, проигрывание до следующего halt, перемотку назад. Это бы сильно облегчило отладку
А и ещё иметь возможность видеть что в видео памяти нарисовано и видеть данные квазидисков.
А так же брейк принты на доступ к квазидиска
Ещё знать запрещено или разрешено прерывание в данный момент и октрыт ли доступ и какой именно к квазидиску.
- - - Добавлено - - -
И ещё красить ячейки в лампе памяти чтобы лучше понимать где буфыеры расположены.
- - - Добавлено - - -
Печатаю как курица лапой с телефона. Прошу прощения :)
анноящее ограничение на количество брейк принтов
Сюрприз, однако! Почему-то думал, что давно уже ограничения нет, а оказывается, так и не сделал...
брейк проиты на доступ к памяти, call stack, проигрывание до следующего halt, перемотку назад
В планах, но действительно чуть позже, когда опять появится время активно заниматься эмулятором. Поясни только насчет перемотки назад, что именно имеешь в виду? Кстати, выход в отладчик по HLT есть в настройках, но это глобально.
видеть данные квазидисков
Есть в планах.
видеть что в видео памяти нарисовано
Не совсем понял? В графике или в hex? Графика и так отображается...
А так же брейк принты на доступ к квазидиска
Подумать надо...
Ещё знать запрещено или разрешено прерывание в данный момент
Флаг IFF показывается же?
октрыт ли доступ и какой именно к квазидиску
Сделаю, это несложно.
И ещё красить ячейки в лампе памяти чтобы лучше понимать где буфыеры расположены.
Не совсем понял, поясни плиз
- - - Добавлено - - -
Да, содержимое стека и сейчас отображается - не совсем call stack, туда и данные попадают, но пользоваться при необходимости можно... Для начала можно, например, переход на адрес по клику сделать...
parallelno
23.08.2022, 11:45
Поясни только насчет перемотки назад, что именно имеешь в виду?
Хотки который перемещает pc на предыдущий адрес с восстановлением состояния системы на тот момент.
Не совсем понял? В графике или в hex? Графика и так отображается..
Отображается только то что лучем нарисовано, но если луч не успел добежать, но непонятно что в видеопамяти. Хочется видеть содержимое видео памяти в данный момент.
Кстати, выход в отладчик по HLT есть в настройках, но это глобально
Ага есть. Но хотелось бы иметь возможность добежать до вызова подпрограммы прерывания по хотки. Если не будет ограничения на кол-во брейки принтов то в принципе и не важно.
Флаг IFF показывается же?
Ого, видать просмотрел. Спасибо за инфу. Поищу.
И ещё красить ячейки в лампе памяти чтобы лучше понимать где буфыеры расположены. это скорее от ограниченности ui. Когда бегаешь по дате, сложно сориентироваться с каких адресов важная инфа. Было бы здорово иметь возможность выделить диапазон адресов и задать им цвет бэкграунда чтобы в следующий раз сразу когда возвращаешься к эти адресом видеть от куда до куда буфер.
- - - Добавлено - - -
По поводу call stack. Хочется чтобы был список последних N адресов в которых программа изменила ps . Чтобы можно было проклинать их . Главный поинт фичи чтобы ответить на вопрос как мы здесь оказались. Как дополнение к этому было классно видеть значение всех регистров в момент перехода чтобы лучше понимать картину.
Хотки который перемещает pc на предыдущий адрес с восстановлением состояния системы на тот момент.
Я часто желал похожую фичу -- журнал команд, которые исполнились до точки останова. Чтобы посмотреть как именно получалось то, что получилось. По умолчанию можно сделать его маленьким, допустим на 256 шагов, но опционально хотелось бы на сколько хватает памяти. (Идея как в некоторых фотоаппаратах -- сохранять кадры до того, как нажата кнопка спуска затвора, потому что люди обычно хотят снять что-то, что было до того как они нажали на кнопку).
Отображается только то что лучем нарисовано, но если луч не успел добежать, но непонятно что в видеопамяти. Хочется видеть содержимое видео памяти в данный момент.
Это я тоже за. Особенно вот когда отлаживаешь фреймовые штуки с кучей всякой колбасни, часто бывает трудно понять что ты видишь -- ты глючишь, код глючишь, это предыдущий кадр, или это этот кадр, но мы отстали за лучом. Практично было бы иметь возможность включить на время моментальное отображение и дополнительно индикация текущего положения луча в момент останова.
У меня еще есть хотелка. Когда ставишь эмулятор на паузу по Alt-P он останавливает эмулируемый компьютер, но как будто бы продолжает активно работать сам. По загрузке, особенно если это винда и у тебя 16 или сколько там ядер, не особо видно сразу, а вот по температуре колен под наколенным компьютером, особенно летом, быстро становится заметно.
- - - Добавлено - - -
Чтобы можно было проклинать их .
Не знаю как у кого, а мне часто достаются уже проклятые.
parallelno
23.08.2022, 12:41
Лол :D
- - - Добавлено - - -
,,эх, октябрь, скорее бы ты уже. :)
- - - Добавлено - - -
Не знаю как у кого, а мне часто достаются уже проклятые.
Умная клава на телефоне знает больше о нас чем мы думаем :)))
parallelno,
svofski,
что ж, все хотелки понял. Что-то сделать будет несложно, что-то - не очень, что-то - вообще пока непонятно как ;) Не обещаю, что сделаю все и сразу, но фичи полезные, так что постараюсь. Может быть, что-то получится и до октября, но обещать не буду.
Насчет паузы верно подмечено - вывод на экран продолжает работать. Если под виндой и видеокарта nvidia, можно попробовать запустить с параметром "-angle" (или через emu80qt-dx.cmd) - загрузка процессора может снизиться. Можно и на других видеокартах попробовать - мало ли... А вообще можно попробовать и оптимизировать...
parallelno
23.08.2022, 19:53
Еще две маленькие хотелочки, просто для удобства тестирования. :)
1. иметь кнопку которая делает сразу две вещи: а - перезапускает систему, б - загружает последнее что было загружено.
2. автоматическое востановление брейк поинтов после перезагрузки эмулятора. А если они еще будут старатся находить места где они были, например по паттерну дампа, то будет вообще красиво!
parallelno, баг с переходом на нулевой адрес исправил. Была ошибка в инструкции CALL: чтение аргумента ошибочно интерпретировалось как стековая операция, происходил переход по адресу из кваза. Кстати, в v06x у svofski похожее внешне поведение, может быть, и причина та же?
Новая сборка под Windows здесь (https://emu80.org/v4beta/Emu80qt_40425_exe.7z) (только exe, заменить в последнем релизе), исходники в репозитории.
Кстати, проверил в других эмуляторах: В emu картинка точно такая же, а в VV почему-то бордюр выглядит немного по-другому.
parallelno
24.08.2022, 11:09
Pyk, спасибо!
- - - Добавлено - - -
Пока ждал фикса, починил одну багу. Но где-то есть ещё одна. :)
Кстати, в v06x у @svofski похожее внешне поведение, может быть, и причина та же?
Точно. Спасибо!
Upd: и да, GameNoname.rom с этим исправлением стал запускаться.
parallelno
24.08.2022, 21:10
Сюрприз, однако! Почему-то думал, что давно уже ограничения нет, а оказывается, так и не сделал...
В планах, но действительно чуть позже, когда опять появится время активно заниматься эмулятором. Поясни только насчет перемотки назад, что именно имеешь в виду? Кстати, выход в отладчик по HLT есть в настройках, но это глобально.
Есть в планах.
Не совсем понял? В графике или в hex? Графика и так отображается...
Подумать надо...
Флаг IFF показывается же?
Сделаю, это несложно.
Не совсем понял, поясни плиз
- - - Добавлено - - -
Да, содержимое стека и сейчас отображается - не совсем call stack, туда и данные попадают, но пользоваться при необходимости можно... Для начала можно, например, переход на адрес по клику сделать...
Кажется этот флаг неакуратно показывает статус.
После выполнения последовательности
1f9d xra a
1f9e sta 128
1fa1 out 10
флаг IFF все еще 1
Возможно я не совсем понимаю как это работает. Поправь меня пожалуйста если видишь несостыковки.
https://pic.maxiol.com/images2/1661361839.3326747235.emu80ramdiskiffque.png
- - - Добавлено - - -
И прерываний не было когда выполнялся этот кусок кода .
- - - Добавлено - - -
ром:
https://github.com/parallelno/Vector06c/blob/main/Vector06c_Dev/_Projects/GameNoname/rom/GameNoname.rom
Для того чтобы оттестировать, нужно перейти а другую комнату. Заранее спасибо !
parallelno, что-то я не понял суть проблемы и при чем тут этот кусок кода. Па адресу обработчика прерывания 38h стоит jmp 250h, ставим там точку останова: iff=0 и становится = 1 только после команды, следующей за ei: jmp 28f3h по адресу 2a9h. Приведенный выше фрагмент кода тоже должен вызываться из обработчика пррерывания?
parallelno
24.08.2022, 23:40
Значит я неправильно понял смысл iff. Я думал этот флаг показывает 1 когда подключен квазидиск.
Вышеприведенный фрагмент выполняется не из обработчика прерываний.
Расскажи пожалуйста что показывает этот iff флаг.
- - - Добавлено - - -
Перечитал ветку. Да, я перепутал.
Ты ответил что iff показывает разрешено или нет прерывание, а у меня в голове отложилось другое. Сорян. :)
iff показывает разрешено или нет прерывание
В документации Intel он называется INTE Flip-Flop. IFF -- это тоже Interrupt (enable) Flip-Flop. Зедвосьмидесятизм, который часто просачивается в мир 8080.
А подскажите друзья товарищи, как в эмулятор загрузить rom-образ? Конкретно стоит задача загрузить в эмулятор Специалиста образ rom с ассемблером. Или бейсиком.
parallelno
27.08.2022, 08:33
Zidane, я знаю неколько способов.
1. перетащить rom файл на окно запущенного эмулятора.
2. написать в комендной строке emu80qt.exe romFileName.rom и нажать Enter
3. Из главного меню иди в File->Load&Run, locate your file and press Open.
В том то и проблема что не работает... Ладно, может РОМ кривой... Просто для справки поинтересовался, вдруг я чего упустил. Спасибо.
Zidane, судя по spec.conf там надо указать имя образа пзу, длину и конечный адрес
Pyk, спасибо за ваш эмулятор, очень полезен.
Вопрос про Вектор-06Ц Z80 и передачу ROM-файла в командной строке.
Локально в текущей папке лежит ROM, и есть подпапка x-emu80qt с эмулятором.
В эмуляторе был выбран Вектор-06Ц Z80.
1.Запускаем так: x-emu80qt\emu80qt.exe scuba.rom
результат - эмулятор открывается в режиме Вектор-06Ц БЕЗ Z80, грузится rom, и конечно не работает потому что не та конфигурация.
2. Так: x-emu80qt\emu80qt.exe vz scuba.rom
теперь открывается в режиме Вектор-06Ц Z80, но НЕ грузится rom, и приходится выбирать его руками.
Выглядит так, что оба случая это бага.
Хотелось бы, чтобы было и то и другое - и выбор правильной конфигурации, и запуск rom-а.
А подскажите друзья товарищи, как в эмулятор загрузить rom-образ? Конкретно стоит задача загрузить в эмулятор Специалиста образ rom с ассемблером. Или бейсиком.
В целом ivagor ответил правильно - нужно в spec.conf указать другой файл. Но если расположение образа или адреса перехвата магнитофонных процедур отличаются, возможно, придется внести изменения и в spec.inc. Можешь написать в личку, что точно нужно сделать - подскажу. А советы насчет drag-and-drop, Load & run и т.п. относились к Вектору - там так исторически сложилось, что смысл rom-файлов немного другой.
- - - Добавлено - - -
nzeemin, надо так:
x-emu80qt\emu80qt.exe -vz scuba.rom
parallelno
06.09.2022, 02:04
Pyk, еще из мелких пожеланий которые ускорят отладку.
1. При наведении курсора мыши на Call, C*, Jmp, J* или операнд команды, подсвечивать команду и операнд желтым фоном. Если кликнуть по ним, то проскролить листинг до этого адреса, от есть то что является выполением команды по клавиши A или при двойном клике на адресе.
2. При наведении курсора мыши на LHLD, SHLS, LXI, STA, LDA, или операнд команды, подсвечивать команду и операнд желтым фоном. Если кликнуть по ним, то проскролить листинг дапма мапяти до этого адреса, от есть то что является выполением команды по клавиши A или при двойном клике на адресе в окне дампа памяти.
parallelno
06.09.2022, 07:26
Заранее спасибо! :)
еще из мелких пожеланий которые ускорят отладку
Принято. Да и было уже подобное в планах. Вот только планов уже накопилось похоже даже не на один год вперед (не только по отладчику), так что прямо все и сразу сделать не обещаю.
Кстати, уже убрал ограничение на количество точек останова и сделал отображение информации о квазидиске Вектора в отладчике. Изменения в репозитории, при необходимости сделаю сборку.
parallelno
08.09.2022, 03:59
О! Вот это супер круто!!! Спасибо! Очень нада сборку :)
parallelno, сборка под Windows здесь (https://emu80.org/v4beta/Emu80qt_40427_exe.7z)(только exe, заменить в последнем релизе).
Лаконичная информация о состоянии квазидисков, надеюсь, будет понятна. Точки останова сейчас прокручиваются в окне стрелками и pgup/pgdn.
parallelno
15.10.2022, 09:35
Pyk, натолкнулся на непонятное поведение программы. Кажется что баг
ссылка на ром
[ulr]https://github.com/parallelno/Vector06c/tree/main/Vector06c_Dev/_Projects/GameNoname/rom[/url]
программа сначала распаковывает код в третий банк по адресам $8000, потом вызывает процедуру __ClearmemSP по адресу в квазидиске $82dd в следующей последовательности:
выключить прерывания. установить режим квазидиска %11100010. вызвать процедуру в третьем банке в адресах $8000 и старше. делать PUSH B. PUSH будет писать в третий банк квазидиска вместо основной памяти.
глянь на багу плиз. Очень она непонятная какая-то. Может это такая особенность квазидиска, если код выполняется из него, то стек не может адресовать основную память?
parallelno, попытался разобраться.
Для адресов C000-FFFF установлен третий (2-й, если считать с 0) банк квазидиска. PUSH пытается писать по адресам FFFE-FFFF, в третий банк она и пишет. Безразлично, стековая это операция или нет, любое обращение по этим адресам попадет в квазидиск. Я не прав? Или не понял суть проблемы?
parallelno
15.10.2022, 22:12
Pyk, проблема в том что обращение стековыми операциями к квазидиску выключено, но эти операции всеравно пишут в квазидиск.
Похоже это фича, а не баг. Вот тут ребята разбирают этот случай.
https://zx-pk.ru/threads/8634-vektor-06ts-emulyatsiya/page132.html
parallelno, посмотрел обсуждение. Именно так в эмуляторе и реализовано. Почему-то такое поведение квазидиска мне казалось очевидным и логичным...
Pyk, Виктор, а не планируете добавить поддержку Ириши?
dk_spb, "Ириша" в планах есть, но не в ближайших, к сожалению...
shapipovo
05.11.2022, 04:38
Здравствуйте, под Linux планируете сборку сделать?
Здравствуйте, под Linux планируете сборку сделать?
Прошу протестировать:
Emu80qt_40429_linux64_test.tar.gz (https://emu80.org/v4beta/Emu80qt_40429_linux64_test.tar.gz)
Текущая версия из репозитория, со всеми библиотеками - распаковать и запустить.
Ориентировочно должен работать в 64-разрядных дистрибутивах 2018 года и позже (например, Ubuntu 18.04 LTS).
Работоспособность в более старых дистрибутивах нужно тестировать. Есть ли смысл делать 32-разрядную сборку - не уверен.
Можно попробовать сделать пакет AppImage, а также пакеты deb и rpm, если будет такая потребность.
P.S. Заодно исправил баг, появившийся в последних версиях и проявлявшийся под Linux в падении эмулятора при переключении платформ.
shapipovo
15.11.2022, 12:25
Погонял несколько дней, пока проблем нет. Спасибо!
Обсуждение текстового редактора ChiWorker и конвертера из его формата в текст перенесены в раздел "Корвета" (https://zx-pk.ru/threads/34791-konvertor-iz-formata-redaktora-chiworker-v-tekst.html).
Обычно я не копаюсь в чужих исходниках. Долгое время отгонял от себя мысль посмотреть на Emu80, так сказать, изнутри. Но тут чёрт меня дёрнул и я залез на гитхаб, просто хотелось собрать проект из исходников. Однако посмотрев на код, несколько удивился, насколько они простые и понятные. Тут же возникла мысль, а что если добавить туда Башкирию-2М? Кто, если не я? Вряд-ли Виктор станет разбираться с таким мало распространённым компом.
На первый взгляд это была работа на пару часов. На деле оказалось несколько сложнее, к примеру, чтобы реализовать прерывания от таймера, пришлось изобретать костыль. В остальном, просто надёргал куски кода их разных подходящих компьютеров и переделал для Башкирии. Дольше всего кодил клавиатуру :) Точнее её раскладку.
Несмотря на то, что делал всё по аналогии, Башкирия не завелась. Пришлось искать причину. Оказалось, есть неточности в эмуляции контроллера прерываний, в частности регистра запросов. А ещё есть ошибка, из-за которой после окончания прерываний выполнялся переход несуществующему вектору 8 (хотя он может быть только от 0 до 7). Видимо, сначала уровень, соответствующий отсутствию прерываний был -1, а потом Виктор переделал на 8, а в одном месте забыл исправить. Ну и так, по мелочи, например при загрузке счётчика таймера еденицей нужно устанавливать out в еденицу (на самом деле не сразу, а в следующем такте, но это не принципиально, и я сделал сразу).
Проблема с прерываниями от таймера всё ещё имеется, особенно если работает в паре с прерываниями от vrtc (например, реверси виснет). В остальном вроде всё работает.
Залил на гитхаб https://github.com/bashkiria-2m/emu80v4, если надо, могу отправить pull request.
здорово!
Pyk, добавляй.
чем больше компов будет эмулироваться тем лучше.
Обычно я не копаюсь в чужих исходниках. Долгое время отгонял от себя мысль посмотреть на Emu80, так сказать, изнутри. Но тут чёрт меня дёрнул и я залез на гитхаб, просто хотелось собрать проект из исходников. Однако посмотрев на код, несколько удивился, насколько они простые и понятные. Тут же возникла мысль, а что если добавить туда Башкирию-2М? Кто, если не я? Вряд-ли Виктор станет разбираться с таким мало распространённым компом.
Что ж, я только рад, что проект востребован и достаточно понятен даже без документации для того, чтобы добавить в него новый комп :) К сожалению, далеко не везде код прост и понятен, но сложности в основном все-таки в GUI, а не в ядре...
На первый взгляд это была работа на пару часов. На деле оказалось несколько сложнее, к примеру, чтобы реализовать прерывания от таймера, пришлось изобретать костыль. В остальном, просто надёргал куски кода их разных подходящих компьютеров и переделал для Башкирии. Дольше всего кодил клавиатуру Точнее её раскладку.
Проблема с прерываниями от таймера всё ещё имеется
Про проблему с прерываниями от таймера знаю, у самого пока не реализованы прерывания в КР-04 (благо они ни в одной известной программе не используются). Планировал в ближайшее время сделать поддержку похожим способом - также с помощью отдельного класса. Когда сделаю, можно будет поменять. А насчет клавиатуры - может быть, оно кажется излишне сложным, но в итоге мне так проще. ;)
есть неточности в эмуляции контроллера прерываний
Я догадывался, что там возможны проблемы. ВН59 до этого у меня использовался только для Корвета, так что не было возможности хорошенько протестировать его реализацию, на Корвете эти ошибки не всплыли. А уровень я действительно менял с -1 на 8. Спасибо за фикс!
при загрузке счётчика таймера еденицей нужно устанавливать out в еденицу
Упс, упустил этот момент, спасибо! Вообще, конечно, реализация таймера - это не сильная сторона emu80 :( Была мысль переписать все немного по-другому, в том числе учесть и эти задержки в 1-2 такта в разных местах, но в итоге добавил костылей и наверное пока все так и останется, добавлю только поддержку прерываний от таймера, недостающие режимы и BCD...
Залил на гитхаб https://github.com/bashkiria-2m/emu80v4, если надо, могу отправить pull request.
Думаю, однозначно нужно добавлять в основной репозиторий, если ты не против. Естественно, с упоминанием авторства реализации "Башкирии". Можно PR, могу сам залить изменения - как удобнее. Единственное - посмотрю сначала, может быть, надо будет что-то изменить по мелочи (например, директория ".vscode" думаю, не нужна).
Ну и нужно будет потом довести реализацию Башкирии до ума - дописать справку, нарисовать раскладку клавиатуры, убрать не актуальные для этого компа кнопки и настройки... В этом плане помогу, конечно. Не совсем понял, нужна ли работа с магнитофоном, образов лент для нее не видел. Также не знаю, тормозится ли процессор при работе видеоадаптером и как, но мне показалось, что игры работают как-то слишком быстро. У тебя реал сохранился, кстати?
Можно PR, могу сам залить изменения - как удобнее. Единственное - посмотрю сначала, может быть, надо будет что-то изменить по мелочи (например, директория ".vscode" думаю, не нужна).
Хорошо, уберу, и отправлю PR.
дописать справку, нарисовать раскладку клавиатуры, убрать не актуальные для этого компа кнопки и настройки
Да, надо бы доделать.
Не совсем понял, нужна ли работа с магнитофоном, образов лент для нее не видел.
К сожалению ничего не сохранилось, тестировать нечем. Это более актуально для варианта без дисковода. Может быть позже сделаю.
Также не знаю, тормозится ли процессор при работе видеоадаптером и как, но мне показалось, что игры работают как-то слишком быстро.
Мы в своё время этим не заморачивались, так что я не знаю.
У тебя реал сохранился, кстати?
У меня нет, но есть люди, у которых есть. Например в музее у Фролова (http://www.leningrad.su/museum/show_calc.php?n=343).
- - - Добавлено - - -
По поводу прерываний. Я планировал при записи в порты таймера рассчитывать время, через которое out изменится. Но нужны функции, выдающие значения инициализации счётчика и количество тактов до изменения out. Последнее зависит ещё и от режима таймера, например в режиме меандра значения будут другие. Вобщем пока не получилось, и там костыль на 13 тактов (значение делителя по-умолчанию).
Хорошо, уберу, и отправлю PR.
Олично, остальное вроде бы ок.
К сожалению ничего не сохранилось, тестировать нечем.
У меня нет, но есть люди, у которых есть.
Неплохо бы, конечно, добраться до железа и потестировать как минимум скорость работы. Торможение надо бы сделать, хотя бы примерно. Может быть, по схеме получится разобраться?
Я планировал при записи в порты таймера рассчитывать время, через которое out изменится. Но нужны функции, выдающие значения инициализации счётчика и количество тактов до изменения out.
Да, примерно так я и хотел сделать. Но пока есть только наброски интерфейса нового класса Pit8253IntHelper, не дошли еще руки до реализации...
Может быть, по схеме получится разобраться?
Увы, схемы тоже нет.
Увы, схемы тоже нет.
Полистал тему по "Башкирии", понял, что кое у кого этот комп действительно есть. Можно наверное попробовать поднять тему, может быть что-нибудь новое еще выяснится...
Отписался в теме по "Башкирии" (https://zx-pk.ru/threads/12305-kompyuter-quot-bashkiriya-2m-quot.html?p=1168393&viewfull=1#post1168393), сделаем попытку что-нибудь еще выяснить по этому компу...
при загрузке счётчика таймера еденицей нужно устанавливать out в еденицу
Я так понимаю, речь про режим 0. Только вот откуда такая информация? Источник не нашел, проверил на реальном ВИ53 - не похоже на правду: пишу на Апогее значение счетчика в 1 в цикле с задержкой - свистит (в emu - молчит).
P. S. По прерываниям чуть позже...
Только вот откуда такая информация?
Для вывода биперного звука на Башкирии мы пользовались командами:
MVI A,50h
OUT 3 ; вывод нуля
MVI A,1 ; вывод еденицы
OUT 1
При этом результат не зависел от состояния gate.
Для вывода биперного звука на Башкирии мы пользовались командами:
Код:
MVI A,50h
OUT 3 ; вывод нуля
MVI A,1 ; вывод еденицы
OUT 1
При этом результат не зависел от состояния gate.
Тест на Апогее показал, что запись в счетчик единицы в то время, как счетчик находится в режиме 0 с установленным в 1 выходом, дает тихий щелчок. Я был бы склонен считать, что после установки начального значения выход устанавливается
в 0, счетчик начинает считать, считает "раз" и через такт устанавливает на выходе опять 1. Но если от состояния gate это не зависит, то не совсем понимаю, как это работает...
P.S. b2m, смотри почту.
Можно пояснить для непонятливых (для меня) в чем у вас разногласия?
Режим 0.
Если текущее состояние выхода =0 (после задания режима) и записываем 1 в счетчик, то через такт станет 1.
Если текущее состояние выхода =1 (после окончания предыдущего счета) и записываем 1 в счетчик, то на такт станет 0, потом снова 1.
Это без активности GATE. Если счетчик считает, то GATE может "заморозить" его на время.
Что из описанного не так или что вызывает сомнения?
Что из описанного не так или что вызывает сомнения?
У меня было все как перечислено выше. Смущает это:
При этом результат не зависел от состояния gate.
То есть в случае
Если текущее состояние выхода =1 (после окончания предыдущего счета) и записываем 1 в счетчик,
на выходе будет 1 (непонятно, правда, сразу или через такт), даже если в этот момент был активен GATE.
Т.е. выход=1, GATE=0, записываем в счетчик 1 и не вполне понятно, какая будет реакция.
1. Выход остается=1 пока GATE=0
2. Выход становится=0 и остается таким пока GATE=0
3. Независимо от GATE выход становится =0 на такт, потом=1. Мне такой вариант кажется наименее вероятным.
Интересный вопрос.
Интересный вопрос.
Удалось выполнить несколько тестов на Микроше (в ней вход GATE напрямую соединен с одним из выходов ВВ55, поэтому удобно тестировать).
Результат пока неожиданный:
- при GATE = 1 результат предсказуемый: при записи 1 с счетчик происходит кратковременный щелчок - 1 такт низкого уровня.
- при GATE = 0:
- запись 1 в счетчик дает такой же щелчок (видимо в течение 1 такта)
- запись 2 не дает никакого слышимого эффекта
- алгоритм (https://zx-pk.ru/threads/27488-emu80-v-4.html?p=1169017&viewfull=1#post1169017), приведенный выше b2m, действительно работает при любом состоянии GATE
Попробую сделать побольше тестов - для случая счетчика = 3, для записи одним байтом и двумя, может быть еще что-то...
- запись 1 в счетчик дает такой же щелчок (видимо в течение 1 такта)
- запись 2 не дает никакого слышимого эффекта
Скорее всего все значения кроме 1 будут давать тишину, т.е. out был=0 после задания режима 0 и продолжает быть равным нулю после записи в счетчик. А насчет щелчка (видимо перехода out 0->1) при записи в счетчик 1 даже при GATE=0 это интересный факт.
- - - Добавлено - - -
Хочу уточнить, при GATE=0 записи 1 в счетчик дают щелчек не только в первый раз после задания режима (out 0->1), но и после предыдущих записей единицы (1->0 (на такт?)->1)? А записи 2 (и других значений)? Т.е. задали режим (out=0), записали 2 (out=0) и дальше out=0 при всех записях 2 в счетчик?
Хорошо бы проверить, как реагирует out на запись 2 после записи 1. Задаем режим (out=0). Записываем 1 (out 0->1). Записываем 2 (out 1->1 или 1->0 ?)
Ну и для полного счастья что будет при записи 1 после записи 2.
ivagor, я тестировал в цикле, то есть конечное значение out было равно предыдущему, щелчок означает, что оно изменилось и вернулось к прежнему значению.
Для наглядности выкладываю тесты и результаты тестирования:
https://cloud.mail.ru/public/K4ZK/aj7fLouVe
(Моя Микроша, увы, неисправна, за тестирование спасибо Alex_LG!)
Для более-менее равномерного звука в условиях ПДП привязался к кадровой частоте, вроде бы получилось довольно наглядно.
Сложно было сразу сообразить, какие именно тесты будут актуальны, поэтому пробовал в том числе и 1- и 2-байтовые операции записи, только вот не с тем значением gate...
В общем, надо подумать и набросать еще актуальные тесты для проверки на реальном ВИ53...
На мой взгляд для полноты картины не хватает теста с чередованием записей 1 и 2.
GATE=0
1.1. Задали режим (out=0)
1.2. Записали в счетчик 1 (out 0->1)
1.3. Подождали немного
1.4. Записали в счетчик 2 или больше (out ?).
Тут надо будет смотреть в аудиоредакторе, на слух не очень понятно. И наверно лучше не в цикле, хотя в редакторе скорее всего и в цикле можно будет разглядеть.
CityAceE
10.01.2023, 16:59
Pyk, хочу запросить фичу :) Делаю свой эмулятор Специалиста и в качестве эталона использую Emu80. Так как у меня реализация i8080 своя собственная, то конечно же где-то я накосячил с флагами или ещё чем-то. Сейчас очень сложно найти в какой команде или командах закралась ошибка. Как я обычно поступаю в таких случаях: запускаю одну и ту же программу на эталонном эмуляторе и на своём, а далее иду пошагово там и там, и глазами сравниваю содержимое регистров и значения флагов. Это очень медленно и утомительно! Но ведь можно же автоматизировать процедуру, если иметь возможность управлять эталонным эмулятором, посылая ему по какому-то, заранее обозначенному, каналу команды в отладчик и получая данные о состоянии регистров и флагов. И то же самое делать с своём эмуляторе. А внешний скрипт будет сам делать всю работу, которую сейчас приходится делать вручную. Наверняка, такая фича пригодится и для какого-нибудь другого применения, не просто же так во "взрослых" отладчиках (GBD, например) такая функция имеется.
CityAceE, посмотри вот этот проц https://github.com/begoon/i8080-core -- он выверен, проходит Эксерсайзер. И там есть простой тестбенч, который ты можешь легко под себя адаптировать.
CityAceE, ещё до кучи - по идее можно писать юнит-тесты, где процессор работает в известной среде - определённым образом заполненная память, подготовленные регистры итп. - выполняем одну или несколько команд, смотрим результат.
Как пример: https://github.com/GunshipPenguin/lib8080/tree/master/test/unit/instructions
CityAceE, можно обсудить, но боюсь, что в итоге реализация этой фичи может оказаться весьма трудоемкой и затянуться на неопределенное время :(
Думаю, что более надежным решением действительно было бы попробовать использовать выверенную модель, хотя бы для целей сравнения.
Или для начала хотя бы погонять на своем движке тест оттуда.
Кстати, и в Emu80 также используется этот движок, ссылку на который привел выше svofski.
Кроме версии на Си у Александра есть еще и версия на JavaScript: https://github.com/begoon/i8080-js
Из проблем в этом движке замечено только неверное количество тактов у команды POP.
Кстати, begoon, может быть, исправишь?
можно писать юнит-тесты, где процессор работает в известной среде - определённым образом заполненная память, подготовленные регистры итп. - выполняем одну или несколько команд, смотрим результат.
Если правильно понимаю о чем речь, то для 8080 и специалиста в частности есть такие тесты (например 1 (https://zx-pk.ru/threads/26438-spetsialist-emulyatsiya.html?p=991947&viewfull=1#post991947), 2 (https://zx-pk.ru/threads/26438-spetsialist-emulyatsiya.html?p=992257&viewfull=1#post992257)). Кстати, в той теме эмулятор begoonа уже был (https://zx-pk.ru/threads/26438-spetsialist-emulyatsiya.html?p=991934&viewfull=1#post991934) рекомендован в качестве ориентира.
CityAceE
11.01.2023, 16:13
боюсь, что в итоге реализация этой фичи может оказаться весьма трудоемкой и затянуться на неопределенное время
Ну да, тут требуется серьёзная мотивация, которая по понятным причинам отсутствует. Но это было, в принципе, ожидаемо, поэтому я пошёл по второму пути и реализовал всё сам, без необходимости лезть в потроха эмулятора:
https://youtu.be/u2AFkmpCA_k
Картинка захватывается и распознается текст?
CityAceE
11.01.2023, 18:59
Картинка захватывается и распознается текст?
Других вариантов, кажется, нет. "Распознавание" текста уложилось в десяток строк, так как шрифт в дебагере используется растровый, и все символы можно однозначно интерпретировать. Тем более для опознания нужны были лишь символы от 0 до F. То есть довольно простая задача. Однако при таком походе имеются некоторые неудобства, которых не было бы, если бы использовался некий API, который я запрашивал :)
Я приветствую любые проявления творческого безумия, но по-моему тут можно проще.
Однако при таком походе имеются некоторые неудобства, которых не было бы, если бы использовался некий API, который я запрашивал
Некий, причем очень простой, API уже есть у begoon-а в проекте.
https://github.com/begoon/i8080-core/blob/master/i8080_test.c -- вот образец по которому можно сделать под себя что угодно. Это фактически минимальный компьютер на 8080. Ему можно подсовывать любые тестовые программы и добавить трассировку всего, что нужно. Например, можно вставить ее после вызова i8080_instruction() в строке 85.
Вот мой, немного расширенный, пример с поддержкой tun/tap. Она тебе вряд ли нужна, но можно взять main, который берет название исполняемого файла из командной строки.
https://gitlab.com/svofski/zpu8080/-/blob/master/testbench/i8080_test.c
можно же автоматизировать процедуру, если иметь возможность управлять эталонным эмулятором, посылая ему по какому-то, заранее обозначенному, каналу команды в отладчик и получая данные о состоянии регистров и флагов. И то же самое делать с своём эмуляторе. А внешний скрипт будет сам делать всю работу, которую сейчас приходится делать вручную.
У Вуди видимо имеется подобный инструмент для своего эмулятора, где он может сравнивать выполнение программы в своем эмуляторе и еще каком-то. Так, чисто для примера.
https://cdn.discordapp.com/attachments/689220116801650811/915155767710089216/unknown.png
Мне кажется, самое просто решение, это вести трассировку, и выдавать лог в какомто стандартном формате. А потом эти логи сравнивать, с одного снапшота, от разных эмуляторов.
zebest, я не очень ориентируюсь в эмуляторах спектрума, откуда этот скриншот?
в данном случае и не надо ориентироваться, ибо эти эмуляторы, как ни странно, эмулят Z80 - частный случай ВМ80 :) Все что надо знать. Я же говорю, чисто для примера, как другие известные эмулеписатели поступают в похожих ситуациях. Возможно это программа персонально Вуди, возможно более распространенная. В любом случае, всегда это можно спросить у него и пообщаться )
SpecEmu можно скачать здесь (https://keybase.pub/woodywoodster/specemu/)
А между тем подоспел новый большой релиз :)
Версия 4.0.444 от 25.01.2023:
https://emu80.org/news/v40444
Сайт эмулятора: https://emu80.org
Загрузить:
Qt-версия (рекомендуется):
Windows-сборка (portable): https://emu80.org/v4beta/Emu80qt_40444.zip
MacOS-сборка: https://emu80.org/v4beta/Emu80qt_40444_macos.zip
Linux-сборка: https://emu80.org/v4beta/Emu80qt_40444_linux_x86-64.tar.gz
Portable SDL/wx-версия, windows-сборка:
https://emu80.org/v4beta/Emu80_40444.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.444:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
+ Добавлена поддержка ПК "Северная Пальмира"
+ Добавлена сборка для ОС Linux x86_64
* Переработана и дополнена документация
* Устранена избыточная загрузка процессора в режиме отладки или паузы,
также несколько снижена загрузка процессора при работе на большинстве платформ
* Добавлен список последних файлов при загрузке файлов
* Реализовано сохранение и восстановление при следующем запуске позиции окна эмулятора (пока без пользовательского размера)
* Изменено поведение индикатора FPS: сейчас показывается реальное значение обновлений в секунду,
период обновления индикатора увеличен до 1 секунды
* При выборе пункта из последних файлов или платформ он сейчас поднимается на верх списка
* При сохранении скриншота установлен по умолчанию формат png
* Убрано ограничение на количество точек останова в отладчике
* В окно отладчика добавлено меню, будут добавляться новые возможности, доступные через меню и панель иснтрументов
* Опция сохранения памяти в отладчике перенесена с клавиши F2 на F12
* Вектор: добавлено отображение в отладчике информации о состоянии квазидисков
* Корвет: уточнено декодирование адресов портов
* КР-04: реализованы прерывания
* КР-04: добавлена возможнсть копирования текстового экрана
* Для ВГ75 теперь в отладчике показывается текущая отображаемая строка;
также при отладке реализовано частичное отображение экрана до текущей позиции луча
* Для ВГ75 добавлена поддержка режима VGA (640*480)
* Улучшена эмуляция SD-контролера по схемме vinxru
* Отключается при сбросе звук таймера на РК86, поскольку стандартный Монитор не инициализирует таймер
- Устранено возникавшее иногда падение эмулятора при переключении платформ
- Исправлен звук при уровне громкости 6
- Устранено искажение звука при ускорении работы эмулятора (например, по клавише Del)
- Исправлено поведение Here (F4) в отладчике, повторное нажатие в той же строке не приводило к выполнению
- В отладчике сейчас обновляется информация после загрузки файла или сброса
- Устранено некорректное поведение при сбросе при открытом отладчике на некоторых платформах
- Исправления в позиционировании окон на экране: окно эмулятора иногда появлялось
на дополнительном мониторе, окно отладчика перемещалось во время работы, не переключался фокус
на основное окно после выхода из отладчика
- Корвет: устранено возможное падение эмулятора в режиме Корвета
- Корвет: удалены неиспользуемые пункты меню и кнопки на панели инструментов
- Вектор: исправлен признак обращения к стеку при выполнении команды CALL;
EDD сейчас работает корректно с этой инструкцией
- Вектор: исправления в поведении эмулятора при сбросе по F12
- КР-04: устранено падение эмулятора при попытке переключения на альтернативный шрифт
- КР-04: исправлена работа SD-контроллера
- КР-04: исправлены проблемы при загрузке некоторых файлов
- РК-86: исправлен диапазон адресов контроллера ПДП
- РК-86: уточнения в эмуляции схемы подключения таймера, исправлен звук в некоторых играх
- Исправлено время выполнения команды MOV B,B на i8080
- Исправления в работе режима 2 таймера ВИ53
- Исправлена сборка с помощью MSVC 2015
- Исправлена сборка SDL/wx-версии с помощью Makefile'а
- Другие мелкие исправления и улучшения
Начиная с этой версии, формируется Linux-сборка (x86-64), поддреживается работа в 64-битных дистрибутивах примерно с 2016 года и позже.
ПК "Северная Пальмира" представляет собой интересный современный клон Радио-86РК, тема на форуме по этому компьютеру здесь:
https://zx-pk.ru/threads/34881-severnaya-palmira.html
Там же есть и ссылки на описания аппаратной и программной частей.
К сожалению, не все из начатого удалось включить в этот релиз, но его выход и так затянулся,
так что пришлось отложить некоторые нововведения до следующих версий. В частности думаю,
что удастся все-таки добавить предложенную b2m реализацию "Башкирии-2М"...
ну что там с обновлением ?
2 месяца уже прошло и всё тишина.
ну что там с обновлением ?
2 месяца уже прошло и всё тишина.
Эмулятор не забрасываю, в основном занимаюсь сейчас модернизацией отладчика, но времени свободного пока мало, движется медленно.
Надеюсь в апреле-мае заняться более плотно, тогда же и вернусь к Башкирии...
"Океан-240"
Pyk, есть ли возможность добавить поддержку "Океана"? Готов помочь всячески.
tnt23, вообще, я с удовольствием, особенно когда предлагает помощь хорошо знающий комп владелец :) К тому же он у меня и так был в планах.
Пока плоховато со временем, но начинаю уже потихоньку выходить из цейтнота. Сейчас готовлю параллельно несколько доработок, не связанных с добавлением компов, но новые компы всегда интереснее :)
На очереди доделать Башкирию (думаю, там немного, главное источник проблем найти), а пока готов начать изучать материалы по Океану, может летом между делом и до него и доберусь.
Где-то есть обобщенная информация по этому компу кроме архива у alemorf (https://github.com/alemorf/retro_computers/tree/master/Ocean_240)? Просто перечитывать все обсуждения по нему на форуме пока не готов...
Можно и в личной переписке обсудить, если не против.
Pyk, отлично, спасибо! Буду ждать лета.
По информации - как ни странно, довольно толковое сжатое описание было по ссылке http://emu80.org/dev/dev_ok.html (сейчас ссылка недоступна). У alemorf оно лежит тут https://github.com/alemorf/retro_computers/blob/master/Ocean_240/russian_programming.txt
Много всего бессистемно размазано по темам в разделе по "Океану" (https://zx-pk.ru/forums/113-okean-240.html), могу там создать топик специально для поддержки Emu80.
ЗЫ я бы попытался сделать конфигурацию платформы, но документация, к сожалению, неполная. Так-то из аппаратных нестандартных вещей в компьютере - аппаратный скролл по вертикали и горизонтали, да и все, наверное.
У alemorfа из софта нет как минимум IBASICа
толковое сжатое описание было по ссылке http://emu80.org/dev/dev_ok.html (сейчас ссылка недоступна)
К сожалению, при обновлении сайта не везде получилось сделать редиректы, а вообще, ничего не удалял, даже старая версия сайта доступна:
https://emu80.org/docs/okean_techinfo
http://old.emu80.org/dev/dev_ok.html
Но описано, действительно, далеко не все, например, нет никакой информации о клавиатуре и вообще о том, какие устройства и как подключены к ВВ55, которых, к слову, аж 4 штуки.
Так что придется смотреть по схеме. Еще, насколько я помню, там все непросто с торможением процессора... На тесты на реале, я так понимаю, можно рассчитывать?
В любом случае, думаю, Океан будет проще в реализации, чем также имеющаяся в планах Ириша...
Я пока неспешно поизучаю то, что есть, потом действительно можно создать топик в соответствующем разделе для выяснения непонятных моментов.
там все непросто с торможением процессора
Для эмулятора как раз все просто - процессор не тормозится. Вот сделать прозрачный доступ к озу с тем вариантом чтения видео, который реализован в океане, было не так уж просто, но авторы справились.
Но описано, действительно, далеко не все, например, нет никакой информации о клавиатуре и вообще о том, какие устройства и как подключены к ВВ55, которых, к слову, аж 4 штуки.
Описание можно будет куда-нибудь добавить (у меня на сайте есть техническая страница-помойка (http://www.sensi.org/~tnt23/ok240/index.html), попробую для начала туда).
Клавиатура подключается к одному из ВВ55, интерфейс расчитан на готовые промышленные клавиатуры от терминалов того времени (Consul, она же Sbrojovka, она же CM-7209 - https://klava.wiki/hypha/zbrojovka). Общий принцип работы - клавиатура выставляет 8-битный код нажатой клавиши и сопровождает его стробом.
В природе встречаются две разновидности прошивок MONITOR для "Океана-240", во второй клавиатура тоже подключена к ВВ55, но интерфейс непонятен.
Так что придется смотреть по схеме. Еще, насколько я помню, там все непросто с торможением процессора... На тесты на реале, я так понимаю, можно рассчитывать?
Да, конечно. Я тоже к лету постараюсь добраться до реала.
В ср/м знакогенератор отображает не корректно, со сдвигом. Как то, это, можно исправить?
При вводе символов, все корректно!
Это вопрос не к эмулятору, а к сочетанию данного бейсика и операционной системы.
Это вопрос не к эмулятору, а к сочетанию данного бейсика и операционной системы.
Почем? Вот товарищ под своим эмулятором запускает тот же бейсик без искажений http://www.nedopc.org/forum/viewtopic.php?f=39&t=20105&sid=ebe99604a274965ac056a0cad66074d4
Запускаю это бейсик в "Корвете" и все тоже, нормально...
У Вас на скриншоте BASIC-80 5.21, а по ссылке BASIC-85 5.29.
- - - Добавлено - - -
Хотя похоже дело не бейсике. Как понимаю у ЮТ-88 в знакогенераторе нет маленьких латинских, а на скриншотах по ссылке они есть. В принципе на уровне ос можно преобразовывать маленькие латинские в большие. Но если в знакогенераторе реала не было маленьких латинских, то делать их в эмуляторе наверно не очень здорово.
- - - Добавлено - - -
Скриншоты по ссылке (с маленькими английскими) сделаны в эмуляторе с "неродным" шрифтом.
У Вас на скриншоте BASIC-80 5.21, а по ссылке BASIC-85 5.29.
- - - Добавлено - - -
Хотя похоже дело не бейсике. Как понимаю у ЮТ-88 в знакогенераторе нет маленьких латинских, а на скриншотах по ссылке они есть. В принципе на уровне ос можно преобразовывать маленькие латинские в большие. Но если в знакогенераторе реала не было маленьких латинских, то делать их в эмуляторе наверно не очень здорово.
Это один и тот же бейсик! При сравнении в HEX редакторе, отличие только в заголовке!
Bytes free BASIC-85 Rev. 5.29
[CP/M Version]
Copyright 1985-1986 ¤ by Microsoft
Created: 28-Jul-85
А вообще, странно...Что, ни кто ранее, в эмуляторе не загружал .com файлы? Поиск на форуме, ни чего не дап.
Я же уже написал, что дело не в бейсике, а в "неродном" знакогенераторе в эмуляторе по ссылке (в отличие от emu80).
Я же уже написал, что дело не в бейсике, а в "неродном" знакогенераторе в эмуляторе по ссылке (в отличие от emu80).
Вы правы! В ДОС версии в файле знакогенератора отсутствуют маленькие.
Попробовал запустить под Emu80qt_40444, в нем присутствует полный знакогенератор ют, файл fontu.bin.
Но выдает так же, с искажениями (((((
Pimas, собственно, все уже ответили.
Маленькие буквы отсутствуют как в DOS-версии 2.x Emu80, так и в 4.x, поскольку они отсутствуют и в оригинальном ЮТ-88.
Автор эмулятора по ссылке решил их добавить в свой эмулятор. Может быть, получилось красиво, но на реальном компьютере так не было.
Кстати, а что заставило использовать древнюю DOS-версию Emu80?
Pimas, собственно, все уже ответили.
Маленькие буквы отсутствуют как в DOS-версии 2.x Emu80, так и в 4.x, поскольку они отсутствуют и в оригинальном ЮТ-88.
...
Вот знакогенератор из публикации в ют, даже присутствует ошибка-опечатка.
https://zx-pk.ru/asset.php?fid=76665&uid=9217&d=1682749873
Вот работа программы STAT в эмуляторе, тут не используются маленькие.
https://zx-pk.ru/asset.php?fid=76664&uid=9217&d=1682749807
https://zx-pk.ru/asset.php?fid=76663&uid=9217&d=1682749791
Кстати, а что заставило использовать древнюю DOS-версию Emu80?
Просто есть еще более крутая(имхо) реализация эмуляции ют от Алексея Рогожина и она под дос.
Вот знакогенератор из публикации в ют
Ну да, строчных латинских нет...
В общем Вы, правы и эмуляторы не причем. Интересно какие версии файлов срм, Бартнеев использовал.
Вот, вмешательство в знакогенератор, но это уже не ЮТ88, как и по ссылке выше.
Доброго дня!
Платформа "Орион-128.2".
Подскажите, почему может не работать форматирование виртуальной дискеты?
Судя по отладчику, виснет ВГ93 на команде F4h:
https://forum-img.guitarplayer.ru/2023/05/05/hQizc.png
Подскажите, почему может не работать форматирование виртуальной дискеты?
Просто команда форматирования сейчас не поддерживается. Не очень актуально для готовых образов, поэтому забыл я про нее ;)
Сделаю, только какое поведение должно быть при форматировании? Заполнять сектора какой-то константой?
Сделаю, только какое поведение должно быть при форматировании? Заполнять сектора какой-то константой?
Хороший вопрос! :) Это надо курить доку по ВГ93. Емнип, это команда сразу форматирует трек целиком. А записывает то, что кормит ей 8-битка, там заранее подготавливается в буфере весь трек со всеми секторами и служебными записями (на основании которых ВГ делает физическую разметку). Ох, как давно это было...
P.S. у Дмитрия в эмуляторе оно работает корректно, наверное можно у него спросить как эмулируется.
- - - Добавлено - - -
Ещё вопрос - как нарастить ОЗУ? :)
Попытался методом интуитивного тыка подправить в orion.inc вот так:
https://forum-img.guitarplayer.ru/2023/05/05/hQuIy.png
Ничего не вышло, по-прежнему только 256 Кб видно:
https://forum-img.guitarplayer.ru/2023/05/05/hQXJP.png
у Дмитрия в эмуляторе оно работает корректно
То, что оно не виснет, не значит, что работает :)
У меня тоже эта команда игнорируется. Дело в том, что форматирование может быть нестандартным, и тогда непонятно, как это всё хранить в посекторном образе. По идее, нужно сохранять файл другого формата, который поддерживает разный формат секторов с нестандартными идентификаторами. По крайней мере номер сектора может быть не от 1 до 5. Номер дорожки вроде ВГ93 контролирует, но можно перемещать головку без отслеживания в регистре дорожки, и тогда физический и логический номера дорожек могут не совпадать. Такое могут делать для защиты от копирования. С номером стороны особо не поиграешься, но этот номер вроде тоже есть в КС, так что при несовпадении будет ошибка.
То, что оно не виснет, не значит, что работает :)
Раньше точно работало. Пока не заработал COM-порт я точно пользовался дискетами из-под эмуля. Сейчас проверил - тоже виснет.. странно, однако.
Емнип, это команда сразу форматирует трек целиком.
Да, точно! Это ж не команда форматирования, а команда заиси дорожки - целиком, со всеми служебными данными...
Можно покурить доки и попробовать сделать, а можно и просто пока игнорировать, как у Дмитрия, если такой вариант устроит.
В конфиге все правильно, но ограничение до 256 у меня в коде, исправить можно быстро, но придется лезть в исходники. Увы, у меня не такие продвинутые конфиги, как у Дмитрия... Я не очень хорошо ориентируюсь в модификациях Ориона, наверное, когда это делал, не знал, что может быть более 256 Кб ОЗУ. А так надо бы и Орион-ПРО добавить, и жесткий диск, может быть и еще что-то...
а можно и просто пока игнорировать, как у Дмитрия, если такой вариант устроит.
Служебку точно можно игнорить (для файла-образа она не нужна), а вот в сектора писать нужно, иначе собственно форматирование работать не будет.
- - - Добавлено - - -
Я не очень хорошо ориентируюсь в модификациях Ориона, наверное, когда это делал, не знал, что может быть более 256 Кб ОЗУ.
Сейчас уже "метр" реализовали в железе! А я новую ОС затачиваю под это дело :)
- - - Добавлено - - -
А так надо бы и Орион-ПРО добавить, и жесткий диск, может быть и еще что-то...
COM-порт в первую очередь! =)
И очень хотелось бы поддержку ROM-диска более 64 Кб (с переключением банков хотя бы через порт #FE).
- - - Добавлено - - -
Ещё такой вопрос:
https://forum-img.guitarplayer.ru/2023/05/05/hQknT.png
У нас точно эмулируется орионовский клок 2,5 МГц?
а вот в сектора писать нужно, иначе собственно форматирование работать не будет
А как же в эмуляторе b2m работает, если у него эта команда игнорируется? Может быть, после команды записи трека еще раз уже конкретно запись в сектора производтся?
Сейчас уже "метр" реализовали в железе!
Все по аналогии, добавляется еще один бит в порту?
COM-порт в первую очередь!
А что к нему подключается?
Давно я за доработками Ориона не следил, надо бы актуализировать поддержку в эмуляторе...
А как же в эмуляторе b2m работает, если у него эта команда игнорируется?
Не, оказывается тоже не работает. Это я по старой памяти написал, т.к. раньше точно работал с дискетами под ним. Видимо, форматировал вручную и кормил эмулю образ с забитыми нулями. Честно, не помню уже, так давно это было...
- - - Добавлено - - -
Все по аналогии, добавляется еще один бит в порту?
Да, порт переключения банок тот же, всё по аналогии. Очень желательно заложить в эмуляцию возможность использования всех битов (до 16 Мб ОЗУ :))
- - - Добавлено - - -
А что к нему подключается?
Приложение на писи ORI-SERVER, для прямого файлообмена с писюком. В случае эмулятора работа через софтовый виртуальный COM-порт.
Подробности тут - https://vk.com/oriserv
- - - Добавлено - - -
Давно я за доработками Ориона не следил, надо бы актуализировать поддержку в эмуляторе...
Ага. И в дистрибутив от 2023-го года включить ROM-образ DSDOS лучше не от 2016-го года, а свежий - https://zx-pk.ru/threads/21984-dsdos-dlya-prk-quot-orion-128-quot.html?p=1102433&viewfull=1#post1102433
- - - Добавлено - - -
Сегодня день вопросов :)
А почему из ВВ55-ой читаются единички? На живой железке если к порту ничего не подключено, то должны быть нолики.
https://forum-img.guitarplayer.ru/2023/05/05/hU8L4.png
В итоге ложный автодетект наличия контроллера IDE:
https://forum-img.guitarplayer.ru/2023/05/05/hUJfz.png
А почему из ВВ55-ой читаются единички? На живой железке если к порту ничего не подключено, то должны быть нолики.
Доберусь до компа с исходниками - отвечу подробнее, а пока только хочу отметить, что вопрос, что должно читаться от неподключенного порта весьма неоднозначный.
Например, если запрограммировать порт на вывод, подать на него все 1, а затем перепрограммировать на ввод, то за счет имеющегося внутренней емкости выходов какой-то время сначала из него будут считываться все 1, а затем постепенно бит за битом перейдут в нулевое состояние. Сам тестировал такое поведение на Апогее. А на некоторых машинах почему-то всегда считываются 1 (за счет каких-то наводок??? не знаю...). Но вроде бы по умолчанию все-таки в эмуляторе должны считываться нули, чуть позже посмотрю.
Да, порт переключения банок тот же, всё по аналогии. Очень желательно заложить в эмуляцию возможность использования всех битов
включить ROM-образ DSDOS лучше не от 2016-го года, а свежий
Принято.
А почему из ВВ55-ой читаются единички? На живой железке если к порту ничего не подключено, то должны быть нолики.
Оказывается, в конфигурации эмулятора по этим адресам вообще нет ВВ55. Можно добавить ppi3 в конфиге по аналогии, как это сделано для ppi1 и ppi2. Из ни к чему не подключенной ВВ55 должны читаться нули (я так понимаю, по схеме они все-таки подтянуты к 0, и мой предыдущий комментарий в данном случае не актуален.)
Приложение на писи ORI-SERVER, для прямого файлообмена с писюком.
Здесь нужно немного вникнуть и подумать. В каком-то эмуляторе это работает, можно "пощупать"?
И не пока увидел никаких подробностей - описания протокола обмена, исходников ori-сервера... Это закрытый проект, и данная информация недоступна?
Из ни к чему не подключенной ВВ55 должны читаться нули (я так понимаю, по схеме они все-таки подтянуты к 0...
Да, всё верно, на реале именно так. По этим нулям я обычно и делаю автодетект наличия соотв. порта ВВ55, но в случае Орион-128 всегда считал, что все родные порты на материнке по-умолчаню у всех запаяны.
Никакой подтяжки к нулям на схеме нет, так работают "голые" выводы ВВ55.
- - - Добавлено - - -
Здесь нужно немного вникнуть и подумать. В каком-то эмуляторе это работает, можно "пощупать"?
Для упрощения сделал единым архивом, вот инструкция:
1) Скачать архив ПО - http://denn.ru/8bit/emu_b2m/emu.zip
2) Разархивировать, например, в корень диска C:
3) Установить виртуальный COM-порт из папки C:\emu\VSPE\SetupVSPE.msi (для 32-разрядной ОС можно зарегистрировать ключом из VSPE_API_32_KEY.txt)
4) Для удобства сделать ярлык запуска эмуляции портов: C:\emu\emu2oriserv.vspe
5) Для удобства сделать ярлык запуска ORI-сервера: C:\emu\oriserv.exe
6) Для удобства сделать ярлык запуска эмулятора 8-битки: C:\emu\EMU.exe
7) Запустить строго в такой последовательности:
- сначала эмулятор портов
https://forum-img.guitarplayer.ru/2023/05/06/hboth.png
- затем ORI-сервер
https://forum-img.guitarplayer.ru/2023/05/06/hbryO.png
- и наконец эмулятор 8-битки
https://forum-img.guitarplayer.ru/2023/05/06/hbPWT.png
8) Выбрать в эмуляторе 8-битки, например, "Орион-512"
9) После загрузки Ориона и ОС DSDOS нажать [Esc] для загрузки оболочки типа Нортона
https://forum-img.guitarplayer.ru/2023/05/06/hbpuf.png
10) В оболочке нажать [F1], затем [G]
https://forum-img.guitarplayer.ru/2023/05/06/hbWCo.png
- если всё верно, то на левой панели откроется содержимое виртуального диска из ORI-Server'а
11) С виртуальным диском работаем как с обычным диском 8-битки, скопированные в него файлы сохраняются на писи в файлах-контейнерах в формате *.ori
Тоже самое на видео:
https://www.youtube.com/watch?v=tokheU8s-2s
- - - Добавлено - - -
P.S. ссылки по теме поддержки виртуального COM-порта:
https://zx-pk.ru/threads/21984-dsdos-dlya-prk-quot-orion-128-quot.html?p=835565&viewfull=1#post835565
https://zx-pk.ru/threads/21984-dsdos-dlya-prk-quot-orion-128-quot.html?p=850213&viewfull=1#post850213
У нас точно эмулируется орионовский клок 2,5 МГц?
Очевидно, нет ;(
в случае Орион-128 всегда считал, что все родные порты на материнке по-умолчаню у всех запаяны
Вообще, в отличие от других компов, я почти не получал откликов и багрепортов по эмулятору от пользователей Ориона. Не знаю, почему так получилось, возможно, из-за наличия для Ориона других хороших эмуляторов. Поэтому и остались подобные глупые баги, а планируемое развитие в сторону Орион-ПРО я тоже отложил в долгий ящик из-за отсутствия на тот момент интереса к этой платформе... Наверное пора вспомнить и доработать ;)
Установить виртуальный COM-порт из папки C:\emu\VSPE\SetupVSPE.msi (для 32-разрядной ОС можно зарегистрировать ключом из VSPE_API_32_KEY.txt)
А для 64-битной системы есть рекомендуемое решение? Старенький (2012 г.) опенсорсный com0com будет работать на современных версиях винды?
Может быть есть проверенное решение также под Linux и/или MacOS? Все-таки Emu80 - кроссплатформенный эмулятор, хотелось бы, чтобы работало везде. Лично мне кажется оптимальным решение для эмулятора поддержка перенаправления последовательного порта в named pipe, локальный сокет или TCP-соединение и специальную сборку сервера с поддержкой того же. И необходимость в стороннем (к тому же и платном, вероятно) ПО в виде виртуального com-порта отпадет. В emu уже есть поддержка named pipe, при желании можно хоть сейчас пробовать... А если получится собрать под Linux/MacOS или, например, запустить под wine - будет вообще здорово.
Для упрощения сделал единым архивом, вот инструкция:
Да, спасибо за архив и ссылки, стало намного понятнее, попробую для начала в 32-битной виртуалке...
Очевидно, нет ;(
Когда я прописал 2500000, то понял, что вот оно! Ощущения отклика реального Ориона.
- - - Добавлено - - -
Вообще, в отличие от других компов, я почти не получал откликов и багрепортов по эмулятору от пользователей Ориона.
Дело всё в том, что орионщики это особый вид :) Ныне скорее вымирающий. По моим ощущениям, популяция представлена количеством - полтора человека.
Те, кто считает себя истинным труъ орионщиком, причастным к искусству типа на полном серьёзе, по факту максимум на что способен - запаять дип микросхемки в купленную (за три клика мышкой) готовую плату и загрузиться в приглашение монитора. Всё! На этом гештальт считается закрытым, а что-то там с чем-то разбираться, оно ему точно не надо. Даже если кто-то и пытается "копнуть чуть глубже", то если что-то не пойдёт, то "ну его нафик", что-то выяснять, разбираться, тем более куда-то что-то писать - не будет точно.
Ведь всегда есть альтернатива скачать и лениво покликать что-нибудь другое, купить и попаять какую-нибудь другую платку, либо просто посмотреть ютубчик..
- - - Добавлено - - -
возможно, из-за наличия для Ориона других хороших эмуляторов.
И это тоже.
- - - Добавлено - - -
А для 64-битной системы есть рекомендуемое решение?
Я использую то же самое, просто два лишних клика чтобы убрать напоминание про регистрацию. Так-то всё работает без ограничений.
Возможно есть другие похожие решения, я не искал, т.к. предпочитаю работать на реале =) Эмулятором активно пользовался, когда орионил на старой работе, т.к. реал в офис было никак..
- - - Добавлено - - -
Старенький (2012 г.) опенсорсный com0com будет работать на современных версиях винды?
Это надо проверять, тут я не в теме, к сож(
- - - Добавлено - - -
Все-таки Emu80 - кроссплатформенный эмулятор, хотелось бы, чтобы работало везде.
Категорически согласен!
- - - Добавлено - - -
...и специальную сборку сервера с поддержкой того же...
К сожалению, проект старого ORI-сервера "похоронен". В планах переделать его заново, по нормальному (работа с потоками), к тому же в планах новый протокол.. но когда доберусь - пока не известно.
- - - Добавлено - - -
И необходимость в стороннем (к тому же и платном, вероятно) ПО в виде виртуального com-порта отпадет.
Я обеими "за" !
- - - Добавлено - - -
А если получится собрать под Linux/MacOS или, например, запустить под wine - будет вообще здорово.
Я с этими ОС не знаком вообще, и в этой жизни видимо не буду)
Был на форуме коллега, который изъявил желание сделать версию ORI-сервера под Линукс, я ему передал всю необходимую информацию по протоколу обмена, по сути отдал готовый код на Си++ своего проекта. После чего он исчез с радаров.. может где-то и появилась версия под Линукс, а я не в курсе?..
Denn, сделал тестовую сборку под Windows (https://emu80.org/v4beta/Emu80qt_40448_test.7z). Что исправлено:
Добавил возможность менять размер ОЗУ (новый параметр bits), размер ОЗУ в конфиге по умолчанию расширен до 512К
Исправлена тактовая частота
DSDOS обновлена до версии 3.95
Добавлен третий ВВ55
А сейчас вопросы (возможно глупые, можно просто ткнуть носом, где почитать ;):
ROM-диск подключается штатным образом, описанном в журнале, образ 64К. Как подключаются РОМ-диски большего объема и как происходит определение емкости? DSDOS почему-то при старте определяет объем РОМ-диска в 1М вместо 64К...
Что за утилита "конфигуратор-анализатор порта F600"? Проверить бы, что она сейчас выдает... Кстати, DSDOS при старте ничего не писала про якобы найденный IDE, даже до добавления третьего ВВ55, как проявлялось некорректное определение?
По какой схеме подключается жесткий диск?
По поводу последовательного порта, ori-сервера, а также форматирования диска пока не готов ничего сказать, здесь нужно время, так что позже...
Denn, сделал тестовую сборку под Windows. Что исправлено:
Добавил возможность менять размер ОЗУ (новый параметр bits), размер ОЗУ в конфиге по умолчанию расширен до 512К
Исправлена тактовая частота
DSDOS обновлена до версии 3.95
Добавлен третий ВВ55
Отлично! А где можно пощупать? На оф. сайте по-прежнему версии от 25 января.
- - - Добавлено - - -
ROM-диск подключается штатным образом, описанном в журнале, образ 64К. Как подключаются РОМ-диски большего объема и как происходит определение емкости? DSDOS почему-то при старте определяет объем РОМ-диска в 1М вместо 64К...
Есть две аппаратные реализации переключения страниц ROM-диска. Думаю, для эмулятора достаточно версии с портом FE, суть та же, что и с портом переключения страниц ОЗУ: по-умолчанию (и по аппаратному сбросу) порт сброшен в 00h, т.о. выбран банк №0 (через порт ROM-диска доступны первые 64 Кб ПЗУ); при записи (командой OUT 0FEh) других значений (01..0Fh) активируются другие 64кб-участки ПЗУ. Максимальный переключаемый объём ПЗУ = 1024 Кб.
Определения ёмкости как такового нет, загрузчик ОС просто пишет поддерживаемый в данной версии теоретический максимум объёма ПЗУ ROM-диска.
- - - Добавлено - - -
Что за утилита "конфигуратор-анализатор порта F600"? Проверить бы, что она сейчас выдает...
Вот эта программа:
https://forum-img.guitarplayer.ru/2023/05/08/hzUC0.png
Т.е. также после загрузки DSDOS жмём [Esc], стрелкой вниз едем до TST$BB55, жмём [Enter]
Она в режиме онлайн отображает состояние порта пользователя (F6xx). Можно при запуске (не по [Enter], а командой [L]) в качестве параметра командной строки указать другой адрес порта, например: L TST$BB55 F400 [Enter], в таком случае будет анализ порта клавиатуры.
- - - Добавлено - - -
Кстати, DSDOS при старте ничего не писала про якобы найденный IDE, даже до добавления третьего ВВ55, как проявлялось некорректное определение?
Второй сверху файл - утилита SYSTEM$:
https://forum-img.guitarplayer.ru/2023/05/08/hzbuv.png
В поле "IDE1" стоит отметка о присутствии:
https://forum-img.guitarplayer.ru/2023/05/08/hzelp.png
Детект производится как раз по подтяжке некоторых (трёх) линий ВВ55 к "1". При загрузке ОС, в случае детекта подтяжек уже даётся логический запрос контроллеру, и если ответ не получен, то ничего не находится и загрузка идёт дальше.
- - - Добавлено - - -
По какой схеме подключается жесткий диск?
IDE1 по т.н. "народной" ("затычка на ВВ55" или "ногодрыг") вот по этой:
https://forum-img.guitarplayer.ru/2023/05/08/hzz3j.png
Подключается к порту пользователя F6xx.
А где можно пощупать?
Забыл ссылку вставить...
https://emu80.org/v4beta/Emu80qt_40448_test.7z
Да, точно! Это ж не команда форматирования, а команда заиси дорожки - целиком, со всеми служебными данными...
Я просто разбираю внутренний формат и если он корректен (и стандартен), то записываю данные в образ, учитывая номер сектора из данных, которые не обязательно должен быть по порядку.
Еще и при записи первой дорожки я определяю формат диска (количество секторов и размер сектора).
Для эмуляции защит это не подходит (но я и не встречал защит на бытовых компьютерах, только на PC), но для форматирования и копирования дисков вполне.
Ну и еще стараюсь время реальное выдержать, а то неверно форматировать "дискету" за доли секунд...
Я просто разбираю внутренний формат и если он корректен (и стандартен), то записываю данные в образ, учитывая номер сектора из данных, которые не обязательно должен быть по порядку.
Да, так же собираюсь сделать.
Еще и при записи первой дорожки я определяю формат диска (количество секторов и размер сектора).
А как ты используешь эту информацию? Не помню, у тебя в эмуляторе есть создание образов дисков при форматировании?
Ну и еще стараюсь время реальное выдержать,
Только при форматировании? Или при чтении/записи секторов тоже? Просто тут я не стал заморачиваться, пусть лучше в эмуляторе все быстро происходит, чтобы не ждать ;)
А вот в контроллере для РК86 пришлось все тайминги точно воспроизводить, да...
P.S. Как у тебя со сборкой под GNUstep? Помнится, звука вроде бы не было, что-нибудь изменилось за последнее время?
Вот задержки чтения/записи реальных дискет лучше не надо эмулировать :) Ну, либо по желанию (настраиваемо).
- - - Добавлено - - -
P.S. клёвее было бы имитировать звук перемещения головок! ))
А как ты используешь эту информацию? Не помню, у тебя в эмуляторе есть создание образов дисков при форматировании?
Если открыть файл нулевой длины, то считаю это новым диском, количество и размер секторов, а также количество дорожек и сторон высчитываю во время записи (форматирования). Таким образом можно посмотреть, как софт поведет себя с условно нестандартной разметкой.
Только при форматировании? Или при чтении/записи секторов тоже?
Всегда. И при позиционировании головки тоже. Время весьма условное, но хоть что-то, что бы можно было оценить, с какой скоростью тогда все работало
P.S. Как у тебя со сборкой под GNUstep? Помнится, звука вроде бы не было, что-нибудь изменилось за последнее время?
Увы, времени нет совсем.
parallelno
20.05.2023, 21:48
Привет!
Нашел интересные баги в режиме эмуляции Вектор06Ц.
1. Опция Show Only Visisble Area не работает если эмулятор стоит на паузе.
2. В режиме вектора 256x256 и установленном Window Size = 1 отключение опции Original Aspect Ratio меняет разрешение окна с 314x256 на 512x256. Ожидаю что резолюшен должен быть 256x256 при отключеной опции Original Aspect Ratio.
3. В режиме вектора 256x256 и установленном Window Size = 3 отключение опции Original Aspect Ratio меняет разрешение окна с 943x768 на 1024x768. Ожидаю что резолюшен должен быть 768x768 при отключеной опции Original Aspect Ratio.
1. Опция Show Only Visisble Area не работает если эмулятор стоит на паузе.
Есть такое в последней версии, знаю. И не только эта опция. Оказалось немного нетривиально сделать, оставил на потом. Исправлю, когда дойдут руки...
2. В режиме вектора 256x256 и установленном Window Size = 1 отключение опции Original Aspect Ratio меняет разрешение окна с 314x256 на 512x256. Ожидаю что резолюшен должен быть 256x256 при отключеной опции Original Aspect Ratio.
3. В режиме вектора 256x256 и установленном Window Size = 3 отключение опции Original Aspect Ratio меняет разрешение окна с 943x768 на 1024x768. Ожидаю что резолюшен должен быть 768x768 при отключеной опции Original Aspect Ratio.
Разрешение на самом деле всегда 512 точек, просто в режиме низкого разрешения они удваиваются. Хотя бы из тех соображений, что есть демки, динамически переключающие разрешение 256/512 в течение кадра. Так что наверное считать фичей...
parallelno
22.05.2023, 19:33
Есть такое в последней версии, знаю. И не только эта опция. Оказалось немного нетривиально сделать, оставил на потом. Исправлю, когда дойдут руки...
Разрешение на самом деле всегда 512 точек, просто в режиме низкого разрешения они удваиваются. Хотя бы из тех соображений, что есть демки, динамически переключающие разрешение 256/512 в течение кадра. Так что наверное считать фичей...
Ок, спасиб. Правильно ли я понимаю что ты называешь фичей растянутое в два раза по ширине окно? Есть ли какая-либо возможность снять скриншот 256x256?
Правильно ли я понимаю что ты называешь фичей растянутое в два раза по ширине окно?
Не окно, а именно картинку, которая на Векторе всегда 512*256. А окно может быть разного рамера.
Есть ли какая-либо возможность снять скриншот 256x256?
Два способа:
1. Неочевидный. Настройки - Window - Exact original aspect ratio - Screet format: Custom, Custom format = 1.086. (Затем Alt-1 и Alt-R при необходимости)
2. Простой. Alt-0 и мышкой подогнать размер окна до 256*256, контролируя размер по информации в статусбаре.
Pyk, что с эмулятором то ?
обновлений с весны нет.
ZEman, действительно, надо бы сделать очередную сборку. Далеко не все же собирают из исходников. Постараюсь на днях подготовить очередной релиз.
На завершение крупных доработок пока нет времени, но и мелких накопилось уже довольно много.
Pyk, скажите, а как вы готовите релиз, в смысле процесса сборки, для Linux и Mac? Есть какие-то руководства или готовый скрипт?
Я попробовал для Linux формат AppImage, в целом как я понял у людей он работает, но сам AppImage получается довольно большой -- порядка 30+ МБ.
Как под Мак правильно собирать -- пока исследую только.
nzeemin, под linux использую linuxdeployqt (https://github.com/probonopd/linuxdeployqt), под MacOS - стандартный macdeployqt (https://doc.qt.io/qt-5/macos-deployment.html#macdeploy) из комплекта Qt. Linuxdeployqt, я так понимаю, кроме копирования нужных файлов, патчит бинарники с помощью patchelf с целью изменения RPATH внутри elf-файлов (в том числе и динамических библиотек). Мой скрипт после сборки запускает linuxdeployqt, удаляет неиспользуемые динамические библиотеки и плагины и копирует дополнительные файлы, требуемые эмулятором (конфиги, шрифты и т. п.). Объем тоже получается немаленький, хотя я и удаляю лишние файлы. Остановился на варианте приложения в директории, пакет AppImage пока делать не стал, так как знаю, что есть любители модифицировать конфиги, поставляемые с эмулятором, в этом смысле директория с portable-эмулятором наверное удобнее. Надо бы еще попробовать статическую линковку, посмотреть какой получится объем итогового пакета.
С macdeployqt все аналогично. Детально не разбирался, но думаю, что он работает примерно так же. Пробовал получить dmg, но не совсем получилось, так что остановился пока на app bundle.
Обещанный новый релиз. Версия 4.0.456 от 12.09.2023:
https://emu80.org/news/v40456
Сайт эмулятора: https://emu80.org
Загрузить:
Qt-версия (рекомендуется):
Windows-сборка (portable): https://emu80.org/v4beta/Emu80qt_40456.zip
MacOS-сборка: https://emu80.org/v4beta/Emu80qt_40456_macos.zip
Linux-сборка: https://emu80.org/v4beta/Emu80qt_40456_linux_x86-64.tar.gz
Portable SDL/wx-версия, windows-сборка:
https://emu80.org/v4beta/Emu80_40456.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.456:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
+ Добавлена новая конфигурация для ПК "Электроника КР-03"
+ Полностью переработаны опции командной строки, старый синтаксис оставлен для совместимости
* Пальмира: в образ SD-карты добавлена CP/M с примером образа диска
* РК-86: образ диска РК в составе эмулятора заменен на более полный
* Вектор: исправлено отображение бордюра в режиме высокого разрешения
* Орион: добавлен третий ВВ55
* Орион DSDOS: обновлена версия DSDOS в составе эмулятора до 3.95
* Орион DSDOS: объем памяти расширен до 512 КБ
* Орион DSDOS: улучшения и исправления в эмуляции дисковода
* Орион DSDOS: поддержка расширенного ROM-диска, управляемого портом FE
* Орион DSDOS: поддержка жесткого диска на третьем ВВ55
* Орион DSDOS: в состав эмулятора включен архив с пустым образом жесткого диска. Перед использованием распаковать!
* КР-04: клавиша ВР назначена на клавишу Menu ПК
* КР-04: обновлен до последней версии SD BIOS
* Корвет: отображение в эмуляторе текущей отображаемой скан-линии
* Корвет: исправления в эмуляции экрана
* Корвет: эмуляция второго канала таймера со строчной частотой экрана на входе (не до конца отлажено)
* Улучшена эмуляция ВВ55
* Улучшена эмуляция ATA (IDE) интерфейса
* Добавлена эмуляция форматирования ГМД. На данный момент протестирована на Орионе и ПК8000.
- Орион: исправлена тактовая частота
- Корвет: исправлена ошибка с использованием всего объема графического ОЗУ и работой RAM-диска
- Корвет: исправлена ошибка - не переключался режим цветности из меню
- Пальмира: исправлен регистр файлов в директории эмулируемой SD-карты (не работала эмуляция SD-карты в системах, отличных от Windows)
- Исправлена ошибка с не работавшим иногда переключением назначения клавиш F5/F9 в отладчике
- Исправлена ошибка при сборке с помощью GCC 13
- Исправлена ошибка при сборке Lite-версии
- Другие мелкие исправления и улучшения
Просто релиз на основе текущего состояния, в основном мелкие изменения.
Все еще в работе снапшоты, обновленный отладчик а также Океан, Башкирия и некоторые другие доработки :(
Из важных изменений полностью переработанные опции командной строки. Наиболее важные опции:
--platform <имя платформы> - запуск в режиме указанной платформы
--run <загружаемый файл> - запуск указанного файла
--disk-a | --hdd | --edd <образ диска> - подключение указанного образа диска
Полный перечень смотрите в документации (Emu80 v4 Manual.rtf)
Старый формат опций также оставлен для совместимости.
Электроника КР-03 представляет собой Радио-86РК с клавиатурой МС7007, причем схема ее подключения отлична от опубликованной в журнале Радио.
Дмитрий Цветков aka tchv71 перенес на Пальмиру CP/M с использованием образов дисков на SD-карте, подключенной с помощью адаптера Алексея Морозова.
В директорию SD-карты в поставке эмулятора добавлен файл CPM.RKL для запуска CP/M, а также образ диска A с минимальным набором утилит и игр.
Источник: https://github.com/tchv71/RK_CPM30/tree/PalmiraSD
Также заменен поставляемый ранее образ диска РК ДОС RK86DOS29.rkdisk на более полный RKDOS29.RDI, содержащий полный комплект файлов
с оригинальных дисков, поставлявшихся кооперативом "Лианозово". За образ спасибо cy6 (https://github.com/c6lab/RKDOS29)
Обратите внимание, что имя файла изменилось, при необходимости его следует подключить заново.
Довольно много изменений по Ориону, в основном они касаются DSDOS, но могут быть использованы и в других конфигурациях
этого компьютера.
Решены проблемы со сборкой в последней версии GCC, а также сборкой Lite-версии. Последняя, кстати, стала намного более функциональной
после добавления новых опций командной строки.
CityAceE
15.09.2023, 10:48
Объясните, пожалуйста, природу явления.
На стеке лежат два нуля. Выполняем команду POP AF (POP PSW). И во флаговом регистре получаем не ожидаемый 0, а 2! То есть флаг 1 после выполнения этой команды устанавливается. Сходу описания такого поведения найти не смог. Видимо, какая-то недокументированная фишка. Где можно почитать об этой фишке и других подобных?
https://pic.maxiol.com/images2/1694763992.3280329127.popaf.png
Насколько понимаю речь о 8080, можно посмотреть например здесь (https://pastraiser.com/cpu/i8080/i8080_opcodes.html). У 8080, в отличие от z80, 3 бита регистра флагов жестко фиксированы. У 8085 и 580ВМ1 тоже часть битов фиксированы.
CityAceE
15.09.2023, 11:07
ivagor, спасибо! То, что нужно!
Да, конечно. Я тоже к лету постараюсь добраться до реала.
В этом году вот такое вот хреновое лето, но я добрался :) плата "Океан-240" лежит в ящике, осталось дождаться клавиатуры и GBS-8200 из Поднебесной.
Pyk, никакой спешки нет, просто увидел сентябрький релиз и порадовался, что океаническая работа идет :)
tnt23, да, что-то совсем плохо было в этом году со свободным временем на развитие эмулятора.
Боюсь обещать, но надеюсь, что скоро все-таки получится поплотнее им заняться и завершить, наконец, начатое...
CityAceE
07.11.2023, 09:57
Bugreport: Конфигурация "Специалист". По моему мнению, основной раскладкой в эмуляторе для Специалиста всё-таки является раскладка "ЙЦУКЕН", так как именно она повторяет матрицу клавиатуры оригинального. А баг заключается в том, что в этой раскладке невозможно нажать три клавиши: [; +], [, <] и [. >]. Эти клавиши просто не вынесены в раскладку. Хотел было и про "умную" раскладку написать, так как там много чего интересного есть, причём на разных клавиатурах и поведение разное. Например, на одной клавиатуре символы "@", "^" и ":" можно набрать (и то только один раз, далее нужно перенажимать SHIFT), а на другой нет - сам с этим дольше всего бился. Но в своём эмуляторе с "умной" раскладкой я сам сильно намучился и в итоге тоже совершенства не достиг, хотя результат, на мой взгляд, несколько получше, чем в Emu80 получился - у меня вообще все символы нанесённые на PC-клавиатуру набираются именно так, как они нанесены на неё, охватывая 100% таблиц КОИ-7Н2 и КОИ-8.
По моему мнению, основной раскладкой в эмуляторе для Специалиста всё-таки является раскладка "ЙЦУКЕН", так как именно она повторяет матрицу клавиатуры оригинального.
Я, наоборот, склонен ее воспринимать как вспомогательную. В основном ведь приходится набирать латинские буквы, по крайней мере сразу после старта в Мониторе точно логично устанавливать именно Qwerty. А ЙЦУКЕН по умолчанию имеет смысл разве что в случае наклеивания наклеек ЙЦУКЕН на клавиатуру... Я не прав?
в этой раскладке невозможно нажать три клавиши: [; +], [, <] и [. >]
Принято. Как раз 3 клавиши остаются свободными, нужно на них назначить.
Но в своём эмуляторе с "умной" раскладкой я сам сильно намучился
Речь про "SpeciARMlist"?
В Emu80 Специалист - чуть ли не единственный компьютер, где нормально не работает "Умная" раскладка, и по умолчанию устанавливается Qwerty. Она у меня почему-то просто тупо не заработала (по крайней мере в Мониторе), отложил на потом, да так и не разобрался до конца, в чем дело. С тех пор появились новые доработки в этом плане, надо будет еще поэскпериментировать...
охватывая 100% таблиц КОИ-7Н2 и КОИ-8
Кстати, тоже пока не придумал, как переключать разные варианты "умных" раскладок для разных таблиц. Пока в эмуляторе нет такой возможности, для большинства других компов несколько таблиц не актуальны.
CityAceE
08.11.2023, 08:18
В основном ведь приходится набирать латинские буквы, по крайней мере сразу после старта в Мониторе точно логично устанавливать именно Qwerty.
Если смотреть с этой стороны то, да. Но если использовать эмулятор для игр, то логичнее оставлять оригинальную матрицу, так как некоторые игры для управления используют не курсорное управление. Пример: пакет игр Dungeon и т.д., где изначальное непереназначаемое управление [И], [Т], [Ь], [Б], [@]. Я под это правление даже джойстик выводил. Так что мнения по поводу раскладок могут быть разными.
Речь про "SpeciARMlist"?
Да. Сейчас им активно занимаюсь. Результат не показываю, потому что всё очень и очень медленно. Последний месяц - это просто поддержка клавиатуры, начиная с физического подключения PS/2 к GPIO и опрос этого дела, и заканчивая "умной" раскладкой.
Она у меня почему-то просто тупо не заработала (по крайней мере в Мониторе)
Угу. Причём у меня на работе в Emu80 тоже не работает. А на домашней клавиатуре вполне себе, с некоторыми оговорками. Хотя тест Рюмика и там, и там показывает вполне корректное поведение: при нажатии на [SHIFT] + [2], отпускается [НР] и нажимается [Ю @]. Тут возникает конфликт: с одной стороны эмулятор рассматривает [SHIFT], как [НР], а с другой стороны при наборе символа @ при нажатом [SHIFT] нужно отпускать [НР]. Причём Рюмик всегда показывает корректное поведение, но Монитор всё равно нажимает [2] вместе с [НР]. Это легко увидеть, если включить КОИ-8 - вместо "@" всегда набирается "`". Я несколько дней сидел над этой задачей. С первого взгляда всё выглядит элементарно, однако ж при воплощении ничего не хочет работать корректно.
Кстати, тоже пока не придумал, как переключать разные варианты "умных" раскладок для разных таблиц.
Слава богу, там вообще никаких заморочек нет. Одна раскладка прекрасно ложится на другую. И если сделать корректную поддержку КОИ-8, то автоматически полностью будет работать и КОИ-7Н2. Конечно, за исключением клавиш с символами, которые есть в КОИ-8, и которые отсутствуют в КОИ-7Н2 - там просто будет игнор. Все символы КОИ-8 в полном составе нанесены на клавиатуру, а на клавиатуре в свою очередь нет ни одного символа, который отсутствовал бы в КОИ-8.
Чуть позже сниму видео, как у меня в эмуляторе работает клавиатура, хотя пока всё ещё довольно сыро.
UPD: https://www.youtube.com/watch?v=NC_Pw3ZIHjU
Причём у меня на работе в Emu80 тоже не работает. А на домашней клавиатуре вполне себе, с некоторыми оговорками.
Не совсем понял, речь по-прежнему о Emu80? То есть "умная" раскладка может работать или не работать в Emu80 в зависимости от конкретной клавиатуры?
CityAceE
08.11.2023, 11:49
То есть "умная" раскладка может работать или не работать в Emu80 в зависимости от конкретной клавиатуры?
Да, именно так. Речь именно про Монитор и именно про символы "@", "^", ":". В тесте Рюмика отработка нажатых клавиш правильная и дома, и на работе. Но может быть дело не в модели клавиатуры, а, например, в операционной системе. У меня дома Win11 (работает), на работает Win10 (не работает).
Проверил дома 4 разных клавиатуры. На всех символ "@" набрать в Мониторе можно.
UPD. Проложил копать, и всё оказалось гораздо проще. Дело было в версии Emu80. На работе была более старая 362, а дома 456. После обновления до 456 всё и на работе заработало. Прошу прощения за ложную тревогу.
CityAceE, понял, спасибо за информацию. Изучу этот вопрос. Кстати, речь идет про Qt или SDL-версию эмулятора?
В тесте Рюмика
Я не совсем в курсе, это что за тест? Который в ПЗУ вместо Монитора?
CityAceE
08.11.2023, 11:58
Изучу этот вопрос.
Обновил свой пост выше.
Я не совсем в курсе, это что за тест?
Да, он. Для собственного удобства я его выделил в отдельную программу (https://zx-pk.ru/threads/35304-voprosy-po-arkhitekture-quot-spetsialista-quot.html?p=1186885&viewfull=1#post1186885), которую можно загружать с ленты.
На работе была более старая 362, а дома 456. После обновления до 456 всё и на работе заработало.
Не понимаю. У меня на Специалисте в Emu80 не работает smart-раскладка ни в одной версии и ни при каких условиях.
Работало с оригинальной версией Монитора и с обычным Специалистом (не MX)?
CityAceE
08.11.2023, 20:32
Работало с оригинальной версией Монитора и с обычным Специалистом (не MX)?
Да, работает со стандартным ПЗУ из комплекта Emu80 и со Стандартным Специалистом. И ещё раз повторюсь, что речь идёт про набор симовла "@" в режиме "Умной" раскладки путём нажатия на SHIFT + 2. Но есть нюанс! Чтобы данная комбинация сработала нужно вначале набрать что-то со SHIFT'ом, например "!". Речь про Qt версию.
CityAceE, понял. Действительно, работает, но на данный момент плохо. А русские буквы вообще не работают. В общем, есть простор для оптимизации ;)
А "@" я как-то исправлял, так что не удивительно, что в старой версии не работало.
CityAceE
08.11.2023, 21:51
В общем, есть простор для оптимизации
Если вдруг дойдут руки до оптимизации, то просьба поделиться решением. Ибо у меня в эмуляторе тоже всё грустно. Я пока бросил что-то улучшать в этом плане, так как устал. И боюсь, что если продолжу, то у меня просто отпадёт охота что-то дальше писать. Так что оставил пока как есть, но понимаю, что такой результат трудно назвать хорошим. Сейчас у меня всё работает чётко по раскладке, но очень нестабильно. Например, невозможно набрать @, если перед этим не нажимался SHIFT. Задача-то элементарная, но что-то как-то никак...
Что то я не понял, без шифта нельзя нажать @, он же на современной клавиатуре в другой раскладке. В чем проблема?
uart, проблемы нет, просто Станислав имеет в виду то, что этот случай нужно обрабатывать особо - на клавиатуре ПК он нажимается с шифтом, а на клавиатуре Специалиста - без. Для большинства других символов имитировать отпускание shift не нужно.
Не помню, как у тебя в Ретро-80, но у меня именно на Специалисте smart-раскладка работает плохо, надо будет разобраться, в чем там дело. На других компах проблем нет, что-то специфичное именно для Специалиста...
Проверил, в оригинальном Специалисте у меня проблемы с нажатием например "!@!@!@!@!@!". Что то в процедуре опроса в мониторе. Поскольку на новых мониторах 2.7, 3.3, SP580, а так же MX/MX2 все нормально нажимается, даже если выбрать Paste. Наверное надо тайминги подкрутить.
В общем, вопрос... А можно сделать возможной загрузку бинарника в эмулятор? Ну то есть в стороннем редакторе набрал, оттранслировал - и уже бинарник загрузил в эмулятор, без промежуточного перегона в *.wav или какой-то другой формат? Или я просто не нашел как? Адрес размещения в памяти нужно указывать дополнительно. Ну как-то так я вижу это.
Zidane, к сожалению, в текущей версии этого нет :(
Планировал сделать в обновленном отладчике, но боюсь обещать, когда он появится...
Alikberov
15.02.2024, 18:03
Имеется ли возможность изменения режима памяти в зависимости от условия, по какому адресу происходит чтение в цикле M1?
Alikberov, что имеется в виду под режимом памяти?
Alikberov
15.02.2024, 19:28
Alikberov, что имеется в виду под режимом памяти?Вопрос напрямую касается этой темы (https://zx-pk.ru/threads/35287-radio-86rm.html?p=1194790&viewfull=1#post1194790) и я бы хотел проверить собственную модель памяти пока хотя бы в рамках эмуляции.
80410
Режим холодного старта
По сигналу Сброса триггер ТМ2 сбрасывается и дешифратор ИД7 блокируется, а ПЗУ РФ2 принудительно включается и проецируется в памяти по зеркалам 0000…07FF / 0800…0FFF / 1000…17FF / 1800…1FFF / 2000…27FF и т.д., при этом код ПЗУ вполне может функционировать при условии, что нету памяти под стек и никаких УВВ. То есть, инструкциями EI/DI генерировать звук подобным кодом:
.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0000 C3 03 00 21 20 00 16 FF 7E B7 CA 03 00 FB 3C C2
0010 0E 00 7E F3 3C C2 14 00 15 C2 08 00 23 C3 06 00
0020 7B BD DE EF F7 89 C4 E2 F1 F8 96 CB E5 F2 F9 00Однако, в Emu80 ничего не происходит, так как Сброс передаёт управление на адрес F800, откуда Jump'ится на 0003, где сплошные 00.
Это конфигурацию нужно подправить или вообще не предусматривалось?
(Из схемы за 1986 год это следует!)
Ведь до первого чтения из 8000…FFFF дешифратор адрес заблокирован и ничего адресовать не может, а ПЗУ выбирается принудительно.
Режим 64 Кб
Хотелось бы в рамках эмулятора проверить режим памяти в 65536 байтов ОЗУ, когда код, работающий с адресов 0000…7FFF получает в 8000…FFFF дополнительное ОЗУ и имеет тем самым все 64 Кб на запись и чтение, так как ИД7 вновь отключается (подробнее - в теме).
Потому, хотелось бы в конфигурации этот режим описать.
P.S.: Спасибо!
Alikberov
22.02.2024, 16:53
В частности, если разместить дополнительное ПЗУ по адресам F000-F7FF, что и предусмотрено в оригинальном Мониторе, то возникает неоднозначная ситуация:
Если SDOS установлен, по F000-F7FF размещаются порт КНГМД и дополнительное ПЗУ уже вне доступа
Если SDOS отключить, запуск дополнительного ПЗУ возможен, но SDOS уже не работает
Нужен некий компромисс, о котором я и говорю: В зависимости от зоны чтения инструкций по M1 переключать конфигурацию.
В данном случае:
По GE000, так как счётчик команд будет находиться в интервале E000-EFFF, отображать область F000-F7FF как порты КНГМД
По GF000, так как счётчик команд будет находиться в интервале F000-FFFF, отображать область F000-F7FF как ПЗУ
(Про что в чатах уже мною уже поднимались вопросы.)
Нужны дополнительные опции конфигурации для оперативного изменения адресного пространства в зависимости от счётчика команд PC.
Pyk, когда новое обновление будет?
Полгода уже прошло.
Alikberov
25.02.2024, 16:00
Желательно ещё иметь следующие функции (озвученные в чате):
Связь эмуляторов в двух окнах по магнитофонному интерфейсу (не обязательно именно через API-звука: можно просто пайпы использовать, например, галочкой в опциях)
Возможность загрузки исходных ASM-листингов
Pyk, когда новое обновление будет?
Полгода уже прошло.
Офигеть! Вот ведь свиньи неблагодарные! Хотя... это по нашему.(
M80, Я гдето ругался ?
грубить некому не хотел, просто я обычно так спрашиваю.
видел на nedopc и гитхабе что в последнее время прогресс какой-то идёт вот и спросил.
NEO SPECTRUMAN
26.02.2024, 00:25
Офигеть! Вот ведь свиньи неблагодарные! Хотя... это по нашему.(
во какой неженка нарисовалсо
демонстративно высказываю свое ФИИИ
когда новое обновление будет?
Прогресс, действительно, некоторый есть. Думаю, в марте.
Связь эмуляторов в двух окнах по магнитофонному интерфейсу (не обязательно именно через API-звука: можно просто пайпы использовать, например, галочкой в опциях)
Сложно и сомнительна необходимость, вряд ли сделаю, по крайней мере в ближайшее время :(
Возможность загрузки исходных ASM-листингов
Есть в планах, хотя и не не ближайшую версию, в любом случае - каков желаемый формат листинга?
Alikberov
26.02.2024, 09:40
Есть в планах, хотя и не не ближайшую версию, в любом случае - каков желаемый формат листинга?В смысле формат?
В основном, чтобы не было ограничений на количество псевдооператоров ORG и был оператор выбора мнемоник - INTEL или ZILOG.
Alikberov, я сначала подумал про lst-файлы для отладчика.
Предлагаешь встроить ассемблер в эмулятор?
NEO SPECTRUMAN
26.02.2024, 12:14
Предлагаешь встроить ассемблер в эмулятор?
ну асм в эмуляторе это конешно классна
но как правило он проигрывает по функционалу нормальномуу компилятору
и таки изобретение велосипеда...
хотя очень удобно написал 3 строчки кода
запустил
остановил в дебагере
поправил/скомпилил
запустил
чисто для встроенный асм+дебагер
я все еще запускаю emuzwin
хотя тот полносью себя изжил
а так самая главное в набортном асме это вложенные DUP-ы :)
а так возьми приладь готовый новый сджасм :)
правда мнемоники и8080 он не умеет
(думаю можно будет легко добавить да еще и смержить с основным потом)
Alikberov
26.02.2024, 14:01
Alikberov, я сначала подумал про lst-файлы для отладчика.
Предлагаешь встроить ассемблер в эмулятор?Так на канале чата я о том и говорил!:D
Уж слишком много возиться приходится в цикле Правка->Сохранение->Конвертация->Загрузка.:v2_wacko:
NEO SPECTRUMAN
26.02.2024, 16:12
Правка->Сохранение->Конвертация->Загрузка
ну в нормальном сорце
правка
1клик компиляция
загрузка
хотя на некоторых машинах загрузка ущербная...
(особенно там где какието мудозвоны додумались клянчить полное имя для загрузки с ленты)
ну вот по этому и должны быть снапшоты
и компилер должен генерить снапшоты а не образы лент
на время разработки/отладки
а так набортного асма можот быть недостатошно для нормального коденга
это удобно отлаживать оттдельные процедуры
в "большых" софтах при компиляции еще вызываетсо бинарники, пакеры итд
может вместо набортного асма
просто запилить вызов внешнего компиллятора и загрузка дампа памяти в память и регистров?
но опять редактировать удобно в привычнном тебе редакторе
а не в каком то бедном окошечке набортнного асма
а если оставить только скомпилить и загрузить
то это мпрактически мало отличаетсо от вышеуказаной цепочки
Alikberov
26.02.2024, 16:41
ну в нормальном сорце
правка
1клик компиляция
загрузка
хотя на некоторых машинах загрузка ущербная...
(особенно там где какието мудозвоны додумались клянчить полное имя для загрузки с ленты)
ну вот по этому и должны быть снапшоты
и компилер должен генерить снапшоты а не образы лент
на время разработки/отладки
а так набортного асма можот быть недостатошно для нормального коденга
это удобно отлаживать оттдельные процедуры
в "большых" софтах при компиляции еще вызываетсо бинарники, пакеры итд
может вместо набортного асма
просто запилить вызов внешнего компиллятора и загрузка дампа памяти в память и регистров?
но опять редактировать удобно в привычнном тебе редакторе
а не в каком то бедном окошечке набортнного асма
а если оставить только скомпилить и загрузить
то это мпрактически мало отличаетсо от вышеуказаной цепочкиКак-то у Вас слишком сложно.
Сейчас в эмуляторе три способа загрузить файл:
Загрузка через Меню
Загрузка через Drag'n'Drop
Загрузка директивой I
Я всего лишь предлагаю, чтобы вместе с файлами *.RK поддерживались файлы *.ASM и грузились такими же способами. Типа, исходный ASM-файл перетащил на окно эмулятора и всё. Пусть даже по директиве I всё так же срабатывает, что будет отлично!
Не нужно вообще пользоваться сторонним транслятором с ассемблера в принципе.
Эмулятор, как самодостаточная интегрированная среда - разве плохо? :-)
А для отладки - достаточно псевдооператором .BREAK в листингах расставить всех точки останова, чем искать их под клавишу F9.
Связь эмуляторов в двух окнах по магнитофонному интерфейсу
Ничего не обещаю, но есть одна идея, подумаю.
Возможность загрузки исходных ASM-листингов
Мне эта фича кажется чужеродной в эмуляторе. Ассемблерами все пользуются разными, часто проекты состоят далеко не из одного файла, а сборку и запуск в эмуляторе можно настроить буквально по одной клавише в любой IDE... А вот inline-ассемблер в отладчике надо будет сделать.
В зависимости от зоны чтения инструкций по M1 переключать конфигурацию.
А вот это, как ни странно, мне кажется наиболее реальным и требующим минимальных усилий на реализацию, так как основа для этого в эмуляторе уже есть. Попробую сделать. Если не вылезут какие-то подводные камни, должно вроде бы получиться...
- - - Добавлено - - -
ну вот по этому и должны быть снапшоты
и компилер должен генерить снапшоты а не образы лент
Ох... Для начала сами снапшоты бы доделать... ;)
Alikberov
26.02.2024, 23:36
А вот это, как ни странно, мне кажется наиболее реальным и требующим минимальных усилий на реализацию, так как основа для этого в эмуляторе уже есть. Попробую сделать. Если не вылезут какие-то подводные камни, должно вроде бы получиться...Спасибо!
Надо теперь как-то заняться написанием хотя бы крошечной демонстрации, чтобы можно было и проверить затем в новеньком эмуляторе.;)
CityAceE
27.02.2024, 12:18
Уж слишком много возиться приходится в цикле Правка->Сохранение->Конвертация->Загрузка.
Решается одним батником. Поправил, сохранил, запустил батник. А он уже скомпилирует, запустит эмулятор и загрузит в него исполняемых код. В качестве примера можно использовать мой вариант для Специалиста.
NEO SPECTRUMAN
27.02.2024, 12:31
А он уже скомпилирует, запустит эмулятор
а тут оказывааетсо что эмулятор не умеет грузить быстро ленту и быстрого режима нету :)
(правда это про другой эмулятор а не про этот)
- - - Добавлено - - -
Типа, исходный ASM-файл перетащил на окно эмулятора и всё.
наверное ты мало представляешь себе что такое исходный ASM-файл
CityAceE
27.02.2024, 12:33
правда это про другой эмулятор а не про этот
А именно про этот. Emu80 так умеет. И я этой его возможностью активно пользуюсь.
Alikberov
27.02.2024, 13:11
Решается одним батником. Поправил, сохранил, запустил батник. А он уже скомпилирует, запустит эмулятор и загрузит в него исполняемых код. В качестве примера можно использовать мой вариант для Специалиста.Написал свой для Midnight Commander
shell_patterns=0
################################################## ############################
+ f \.bin$
0 Translate to RKR
./bin2rkr.sh %f
+ f \.bin$
0 Translate/Execute in Emu80
./bin2rkr.sh --run %f &
#!/bin/bash
function save_rkr {
local codes=$(xxd -g 1 "$1" | sed -E "s/^.{9}(.{3,48}).*$/\1/g" | sed -E "s/([0-9a-f]+)/0x\1/g" )
local dump=(${codes})
local crc86rk=0
local length=${#dump[@]}-1
printf "\x00\x00\x`printf "%02X" $((length>>8))`\x`printf "%02X" $((length&255))`" > $2
for code in ${dump[@]}
do
local data=$((code))
if [[ $length -gt 0 ]]
then
crc86rk=$((crc86rk+data*257))
else
crc86rk=$((crc86rk+data))
fi
((length-=1))
crc86rk=$((crc86rk&0xFFFF))
printf "\x`printf "%02X" $((data))`" >> $2
done
printf "\x00\x00\xE6\x`printf "%02X" $((crc86rk>>8))`\x`printf "%02X" $((crc86rk&255))`" >> $2
}
if [[ "$1" == "--run" ]]
then
temp_file=$(mktemp)
save_rkr $2 ${temp_file}
wine ~/Emu80/Emu80qt.exe --platform rk86 --run ${temp_file}
rm ${temp_file}
else
save_rkr $1 ${1//.bin/.rkr}
fiНо эмулятор стабильно падает при некоторых манипуляциях.
(Загружать через меню, перетаскиванием или директивой I - надёжнее: Не падает сутками!)
CityAceE
27.02.2024, 13:23
Загружать через меню, перетаскиванием или директивой I - надёжнее: Не падает сутками!
Хм.. Тогда тут скорее всего мы имеем дело с какой-то ошибкой, если тип загрузки влияет на стабильность эмулятора. Я в конфигурации Специалиста ни с чем подобным не сталкивался.
Alikberov
27.02.2024, 13:31
наверное ты мало представляешь себе что такое исходный ASM-файлА как тогда называется вот это (https://github.com/Alikberov/rk86-utils/blob/master/utils/POBEDITU.ASM)?
CityAceE
27.02.2024, 14:35
Pyk, тут вот в комментариях под моим видео про ассемблер пошла речь про профилирование функций в Emu80. Нет ли в планах прикрутить к эмулятору такую вещь? Или счётчик тактов не просто так в дебагере есть, и профилирование каким-то образом уже возможно?
NEO SPECTRUMAN
27.02.2024, 14:56
поддерживались файлы *.ASM и грузились такими же способами. Типа, исходный ASM-файл перетащил на окно эмулятора и всё.
А как тогда называется вот это (https://github.com/Alikberov/rk86-utils/blob/master/utils/POBEDITU.ASM)?
ну называетсо то так
но компилеров 100500 штук
у каждого свои особености записи и дополнительные директивы
даже сами команды, благодаря каким то дебилам, могут трактоваатсо по разному
сорец может инклудить все что угодно а иногда и запускать другие софты
так что под "и всё"
задачка совсем не простая и сопаставима с изобретением велосипеда
эмулятор стабильно падает при некоторых манипуляциях
Надо бы найти проблему, раз он падает, тем более стабильно - проще будет локализовать.
function save_rkr
Если что, у меня есть утилита bin2tape для конвертирования бинарных файлов в rk и еще кучу форматов.
пошла речь про профилирование функций в Emu80. Нет ли в планах прикрутить к эмулятору такую вещь? Или счётчик тактов не просто так в дебагере есть, и профилирование каким-то образом уже возможно?
Счетчик есть, но пока этим все и ограничивается. Не читал пока те комментарии, в каком виде хотелось бы видеть профилирование?
CityAceE
27.02.2024, 15:29
в каком виде хотелось бы видеть профилирование?
Я думаю, что в любом. Лишь бы чтобы можно было хоть как-нибудь замерять количество тактов, отъедаемых участком кода или функции, чтобы не считать всё вручную.
Alikberov
27.02.2024, 15:53
Надо бы найти проблему, раз он падает, тем более стабильно - проще будет локализовать.Я тоже об этом подумал. Исходники мои - выше. Может что-то там не так?
Или просто wine под Raspberry подводит.
Если что, у меня есть утилита bin2tape для конвертирования бинарных файлов в rk и еще кучу форматов.Подсчёт контрольной суммы под Bash'ем - отличная разминка для мозгов была!
(Привык не гуглить по качалкам, а писать сам.)
CityAceE, разово замерить количество тактов, за которое выполняется функция, не проблема и сейчас. Я так понимаю, что нужна именно статистика в том или ином виде, процент процессорного времени, которое отнимает некоторый участок кода?
Alikberov
27.02.2024, 16:16
CityAceE, разово замерить количество тактов, за которое выполняется функция, не проблема и сейчас. Я так понимаю, что нужна именно статистика в том или ином виде, процент процессорного времени, которое отнимает некоторый участок кода?Кстати, обычно я в листингах каждую строчку комментирую подсчётом тактов (по памяти или из таблиц). Можно высвечивать количество тактов (опционально) у каждой инструкции в окне отладчика?
Ещё не хватает добавления брейк-поинта не только по F9, но и введением конкретного адреса.
И функции быстрого переключения области дампа (по Ctrl+цифра запоминается до десяти адресов, по Shift+цифра - дамп переключается на нужную).
Спасибо!
Alikberov, пожелания понятны. Отладчик как раз перерабатываю, хотя и медленно дело идет. Что из этого получится учесть, пока не знаю.
CityAceE
27.02.2024, 16:32
Я так понимаю, что нужна именно статистика в том или ином виде, процент процессорного времени, которое отнимает некоторый участок кода?
Классический профайлер, насколько я понимаю, именно так и работает. Запускаем программу, она какое время работает, а потом мы смотрим сколько в процентах заняла та или иная функция от всего времени работы программы. Основная задача - выявить самые жрущие процессор процедуры и попытаться оптимизировать их.
CityAceE, ну вот и надо подумать, в каком виде это можно было бы реализовать. В классическом виде процедур здесь нет, вывести проценты по именам функций не получится... Может быть, в каком-то эмуляторе уже реализовано подобное? Основная проблема даже не в реализации, а в том, как это представить, чтобы было удобно пользоваться...
Может быть, в каком-то эмуляторе уже реализовано подобное?
В Virtual Vector, за что Ramirosу большое спасибо. В большой программе не всегда очевидно, какие участки являются критичными по скорости, и профайлер VV в таких случаях очень помогает.
Alikberov
27.02.2024, 17:13
CityAceE, ну вот и надо подумать, в каком виде это можно было бы реализовать. В классическом виде процедур здесь нет, вывести проценты по именам функций не получится... Может быть, в каком-то эмуляторе уже реализовано подобное? Основная проблема даже не в реализации, а в том, как это представить, чтобы было удобно пользоваться...Боюсь, меня засмеют!!!
А если просто построить статистическую диаграмму/гистограмму по ячейкам памяти и обращений к ним (типа, красным - код, зелёным - чтение данных, жёлтое - запись), горизонталь - адрес, вертикаль - циклы использования?
ivagor, спасибо, посмотрю как у него сделано. Кстати, пришло в голову, что и идею "базыря" из v06x можно использовать, просто немного в другом качестве, да и Alikberov, тоже выше на подобное намекает :)
NEO SPECTRUMAN
27.02.2024, 22:30
Классический профайлер, насколько я понимаю, именно так и работает. Запускаем программу, она какое время работает, а потом мы смотрим сколько в процентах заняла та или иная функция от всего времени работы программы. Основная задача - выявить самые жрущие процессор процедуры и попытаться оптимизировать их.
а это можно выявить и через количество чтений\записей\исполнений одного байта
а это можно выявить и через количество чтений\записей\исполнений одного байта
Вот для этого у меня и сделана heatmap. Зелёное -- чтение, красное -- запись, синее -- исполнение кода.
(в bk2010)
NEO SPECTRUMAN
28.02.2024, 05:59
Вот для этого у меня и сделана heatmap. Зелёное -- чтение, красное -- запись, синее -- исполнение кода.
кинь скриншот как оно выглядит утя
Вот для этого у меня и сделана heatmap.
Посмотрел. Да, неплохая идея. Конечно, надо будет сделать эту карту как минимум кликабельной, да и вообще, подумать, как эту идею развить...
Alikberov
28.02.2024, 13:40
Посмотрел. Да, неплохая идея. Конечно, надо будет сделать эту карту как минимум кликабельной, да и вообще, подумать, как эту идею развить...Можно сделать несколько видов?
Типа, чтобы память представлялась в битмап 256x256 (как кластеры в дефрагментаторе) с цветовой подсветкой, при клике на пиксель выводилась гистограмма статистики?
ИМХО, По идее, если в этом плане немного ещё продвинуться, можно будет реализовать самую сложную и долгожданную часть эмуляции: Динамическую память с требованием регенерации.:rolleyes:
кинь скриншот как оно выглядит утя
https://pic.maxiol.com/thumbs2/1709238533.1500616516.andoslogoheatmap.png (https://pic.maxiol.com/?v=1709238533.1500616516.andoslogoheatmap.png&dp=2)
Вот как-то так. Это вращающийся логотип ANDOS. Сине-зелёный пунктир сверху -- это код, синее -- опкоды, зелёное константы, занавеска далее -- чтение пререндеренных данных из памяти, далее кракозябры -- теневой буфер отрисовки, красные квадраты внизу -- видимый буфер в экранной памяти.
В памяти, которая и читается и пишется цвета складываются, поэтому она жёлтая.
- - - Добавлено - - -
Посмотрел. Да, неплохая идея. Конечно, надо будет сделать эту карту как минимум кликабельной, да и вообще, подумать, как эту идею развить...
Спасибо на добром слове.
И да, мне это уже предлагали. Согласен, да, кликабельность -- это полезно. Как всегда, вопрос свободного личного времени.
NEO SPECTRUMAN
01.03.2024, 00:05
Вот как-то так.
угу ниче нового
не ясно чего я сразу не вынес в оттдельное окно
- - - Добавлено - - -
хотя нет утя с градиентами
это просто motioun blur
или от количества записей/чтений?
HardWareMan
01.03.2024, 10:02
Кстати, FPGA версия звуковой подсистемы SNES, которая на SPC700, с выводом на видео обращения к своей памяти (64КБ) в реальном времени выглядит вот так:
https://www.youtube.com/watch?v=_uDHCZGoHjM
Легенда:
белый - исполняемый код
зелёный - чтение данных
желтый - запись данных
голубой - воспроизведение сэмпла
синий/фиолетовый - буфер эхо
Нашёл последнюю итерацию плеера, но Кевтрис, вроде как, нигде не выкладывал этот проект...
https://www.youtube.com/watch?v=maQffWS2_jQ
это просто motioun blur
или от количества записей/чтений?
Время от последнего обращения. При обращении сразу вспыхивает на максимум, потом гаснет постепенно. Соответственно, горячие участки постоянно яркие, остальное мерцает.
NEO SPECTRUMAN
01.03.2024, 19:16
выводом на видео обращения к своей памяти (64КБ) в реальном времени выглядит вот так:
утя нет такого для NSF/GBS на примете?
HardWareMan
01.03.2024, 19:57
утя нет такого для NSF/GBS на примете?
Неа.
Alikberov
02.03.2024, 13:09
Кстати…
Можно ли окно отладчика в расширенном режиме разделить на несколько отдельных окон?
(Что очень удобно, когда у пользователя в системе больше одного основного монитора.)
Из личного опыта: При отладке в MS Visual Studio это очень облегчало процесс.
Можно ли окно отладчика в расширенном режиме разделить на несколько отдельных окон?
Будет в какой-то степени в новом отладчике. Встречный вопрос - поделишься опытом - какие именно окна нужно отделять и для чего? В основном наверное для того, чтобы расширить размер отдельных областей (код, дамп)?
- - - Добавлено - - -
Если у кого-то есть желание добавить переводы интерфейса Emu80 на другие языки, - пишите, лучше в личку. Но нужно будет в минимальной степени пользоваться инструментами Qt и, самое главное, - периодически обновлять перевод, поддерживать его в актуальном состоянии.
Alikberov
03.03.2024, 14:58
Будет в какой-то степени в новом отладчике. Встречный вопрос - поделишься опытом - какие именно окна нужно отделять и для чего?Боюсь, в лучшем случае, мои личные пожелания будут проигнорированы, а в худшем случае - всё поломают, запутают и осложнят жизнь.
Тут (https://zx-pk.ru/threads/27488-emu80-v-4.html?p=1195095&viewfull=1#post1195095) уже сказал про запоминание нескольких позиций дампа.
Соответственно, полезно будет отображать и карусель дампов (каждая отмеченная позиция - отдельным дампом) в ряд/столбик отдельным окном или в раздельных окошках (плавающих/липких, как в Visual Studio 6).
В основном наверное для того, чтобы расширить размер отдельных областей (код, дамп)?Окно отладчика представляется в DOS-стиле в жёстко фиксированном формате.
Его расширять или менять вид, думаю, не надо. Но, нужно расширить функциональность.
Так, двойным кликом на ячейках секции оперативных микродампов добавлять позицию в карусель дампов или открывать соответствующее окно.
Новый релиз. Версия 4.0.466 от 31.03.2024:
https://emu80.org/news/v40466
Сайт эмулятора: https://emu80.org
Загрузить:
Qt-версия (рекомендуется):
Windows-сборка (portable): https://emu80.org/v4beta/Emu80qt_40466.zip
MacOS-сборка: https://emu80.org/v4beta/Emu80qt_40466_macos.zip
Linux-сборка: https://emu80.org/v4beta/Emu80qt_40466_linux_x86-64.tar.gz
Portable SDL/wx-версия, windows-сборка:
https://emu80.org/v4beta/Emu80_40466.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.466:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
+ Добавлена поддержка вставки текста из буфера обмена (имитация нажатия клавиш).
На данный момент работает на ПК РК-86, Апогей, Партнер, ПК-8000, Вектор, Корвет.
Перечень поддерживаемых ПК будет расширяться.
+ Партнер: добавлена поддержка не существующего пока в железе модуля SD-карты на базе схемы Алексея Морозова.
Вызов оболочки - E1.
* Исправления в работе ВГ75. Исправлено поведение при программировании режима более 80 символов в строке
Проходит этот тест: https://zx-pk.ru/threads/33936-pishem-igry-pod-rk-podobnye.html?p=1192880&viewfull=1#post1192880
* Исправления в работе таймера ВИ53. Сейчас работает Exolon на Векторе и порт "Wave AY".
* Добавлена поддержка ROM-диска для ПК-8000
(закомментировано ввиду некорректной работы образа картриджа с играми из-за неполной эмуляции таймингов)
* В эмуляцию адаптера ROM-диска Апогея добавлен параметр, управляющий размером диска
+ Добавлена поддержка расширенного РОМ-диска по схеме Апогея в РК-86, включается в конфигурационном файле. Спасибо Shaos!
* Вектор: возможность указания в конфиге файла ПЗУ произвольного размера
* ЮТ-88: добавлена поддержка ROM-диска
* ЮТ-88: добавлена возможность задания размера RAM-диска в конфиге
* ЮТ-88: Монитор-F обновлен до версии 1.01 (https://zx-pk.ru/threads/24511-yut-88-displejnyj-modul.html?p=778159&viewfull=1#post778159)
* ЮТ-88: переработана эмуляция экрана с использованием оригинальных таймингов (изображение смещено на 1 строку для полного отображения)
* Микро-80: добавлена поддержка RAM и ROM-дисков
* Для Микро-80 и ЮТ-88 добавлен образ ROM-диска с CP/M из проекта https://github.com/prokushev/micro-80-cpm
* РК-86 и подобные: исправлена невозможность набрать символ подчеркивания ("_") в smart-раскладке.
* РК-86: файл образа диска, поставляемый с эмулятором, заменен более корректно сформированной версией
* Пальмира: уточнена эмуляция ВГ75, реализовано пунктирное подчеркивание, как в оригинальном РК-86
- Партнер: исправлена ошибка: в некоторых режимах некорректно накладывались изображения основного ВГ75 и МЦПГ
- Вектор: исправлено программирование палитры на Векторе при установке высоких частот процессора
- Корвет: исправлен регистр символов при использовании smart-раскладки клавиатуры
- ЮТ-88: исправлена форма курсора
- Пальмира: исправлена наблюдавшаяся иногда проблема с неправильным PAR в режиме VGA
- Отладчик: не работало обновление экрана при изменении экранной области через дамп
Кроме нового релиза эмулятора есть также обновления утилит на сайте и в репозитории https://github.com/vpyk/EmuUtils
Rkdisk (новая утилита):
Утилита командной строки для работы с образами РК ДОС. Позволяет создавать и форматировать образы дисков, просматривать содержимое образов,
добавлять, извлекать и удалять файлы, устанавливать атрибуты.
https://emu80.org/files/?id=81
Bsm2txt (старая, но до сих пор нигде не публиковавшаяся):
Утилита командной строки, служащая для преобразования файлов Basic Micron в текстовые файлы. Результирующий файл имеет кодировку DOS (cp866).
https://emu80.org/files/?id=83
Rdi HFE Tools (выкладывал ранее только здесь на форуме):
Набор из двух утилит hfe2rdi и rdi2hfe на Python. Служат для преобразования образов дисков РК ДОС (rdi, rkdisk), используемых в эмуляторе,
в формат или из формата HFE образа эмулятора дисковода Gotek и его аналогов.
https://emu80.org/files/?id=82
Bin2tape (опубликована давно, просто напоминаю):
Утилита командной строки bin2tape служит для формирования файлов образов лент (и не только) компьютеров, поддерживаемых эмулятором Emu80.
Позволяет из двоичных файлов формировать rk (rkr/rkp/kra/rk8/rku/rke/rkl), rks, rko, bru/ord, cas, lvt.
В качестве параметров принимает имя исходного двоичного файла, начальный адрес, для некоторых форматов также адрес запуска и внутреннее имя файла.
Будет полезна для разработчиков, пишущих под поддерживаемые компьютеры, для автоматизации формирования образа ленты после компиляции.
https://emu80.org/files/?id=78
Хочу поинтересоваться - есть ли возможность добавить эмуляцию TIA MC и ALESTE ?
yur, теоретически возможно, я даже смотрел документацию на ТИА-МЦ-1. Но пока боюсь даже предположить, когда у меня дойдут до этого руки :( Возможно, когда-нибудь все-таки сделаю...
- - - Добавлено - - -
Кстати, сейчас Emu80 присутствует в репозитории AUR. пользователи Arch Linux и основанных на нем дистрибутивов (Manjaro etc.) могут установить Emu80 оттуда:
yay -S emu80-qt
Вчерашняя версия уже там.
Поддержкой занимаюсь не я, если будут вопросы, лучше обращаться напрямую к мейнтейнеру (https://aur.archlinux.org/packages/emu80-qt)
От неча делать ковырнул эмуляцию ЮТ-88. Ну скучно мне стало, но нашел вот такую заковыку в знакогенераторе. Символ, как я понял, с кодом 0Fh явно набран с ошибкой. Или так и задумано? По моему последние два байта стрелки вниз набраны неправильно.
https://imageup.ru/img116/4791018/iut88.png
Zidane, так было в оригинале. Где-то я исправлял явные ошибки в знакогенераторе, а здесь, похоже, осталось. Хотя допускаю, что могли быть более поздние исправления в журнале, а я взял первоначальный вариант прошивки.
CodeMaster
04.04.2024, 20:43
Символ, как я понял, с кодом 0Fh явно набран с ошибкой.
Это человечек?
Это человечек?
Нет, стрелка вниз
CodeMaster
05.04.2024, 11:35
Нет, стрелка вниз
Ну, может задумано, автором конкретной прошивки как человечек для какой-то ASCII-игры?
Krautsov
17.04.2024, 16:05
Pyk, Здравствуйте. Подскажите будет ли когда либо добавлен в эмулятор поддержка компьютера Беста - 88 ?
Krautsov, в обозримом будущем вряд ли :(
https://i.ibb.co/GvPfwRN/2024.jpg (https://ibb.co/bgdjhXD)
Поздравляю!! За связь без брака !!! Ну и за отличные эмуляторы!!!
zebest, спасибо! Всех тоже с праздником!
И да, на скрине выше WebAssembly-версия Emu80 :)
К публичному тестированию пока не готов, но думаю, что уже скоро...
WebAssembly-версия Emu80
Ранний доступ :)
РК-86 добавь.
Приветствую! Хотелось бы поблагодарить за хороший эмулятор и попутно решить проблемы с запуском.
В общем, на старом одноядерном ноуте, установлен дебиан 11 (32 битный) и скачанные отсюда прекомпиленные сборки не запускались (ошибки сегментации выдвавало в терминале). Скачал сырцы и начал потихоньку их компилировать (в надежде, что может откомпиленный в родной системе эмулятор заработает): сначала lite версию, заметм sdl/wx и напоследок qt5 (попутно доустанавливая все необходимые компоненты в систему). Ну так вот по итогу получается лайт и сдл версии выдают ошибки сегментации (valgrind ругается на обращение к адесу 0х0). И я уже не надеялся на qt5 версию, но внезапно она собралась и запустилась. Все бы ничего, но, к сожалению, не работает звук. Это можно как-то починить? Если там нужны с моей стороны какие-то данные или терминальные команды, то я сделаю и выложу результаты.
А, и еще, при разворачивании на весь экран и дальнейшем восстановлении (возврату к рабочему столу), верхняя часть окна эмулятора (та за которую нужно хвататься для перемещения по экрану, сворачиванию и закрытию) она находится за пределами экрана. Пока удалось победить правкой файла _settings/emu80.ini значения
[window]
left=-1
top=-20
правкой на неотрицательные
спасибо
brill, на Debian, чтобы появился звук, нужно доустановить пакет libqt5multimedia5-plugins. Какой оконный менеджер используется?
brill, на Debian, чтобы появился звук, нужно доустановить пакет libqt5multimedia5-plugins. Какой оконный менеджер используется?
Со звуком уже разобрался, просто свет вырубили и не успел отписать. Доустановил libqt5multimedia5-plugins и звук появился. Спасибо. Оконный менеджер: LXDE 11
лайт и сдл версии выдают ошибки сегментации
Странно, нужны подробности - что и как делалось...
А, и еще, при разворачивании на весь экран и дальнейшем восстановлении (возврату к рабочему столу), верхняя часть окна эмулятора (та за которую нужно хвататься для перемещения по экрану, сворачиванию и закрытию) она находится за пределами экрана. Пока удалось победить правкой файла _settings/emu80.ini
Да, есть проблема, смоделировал, спасибо за баг-репорт! Завтра изучу подробнее и постараюсь исправить, но похоже, что проблема с восстановлением позиции окна проявляется только под Linux, и только в LXDE появляются отрицательные значения. Также если выставить режим изменяемого размера окна (Alt-0), то все работает как задумано.
Кстати, не обязательно править конфиг для исправления позиции окна, пока вполне можно переместить окно с помощью клавиатуры, нажав Alt-Пробел и выбрав перемещение из меню.
Странно, нужны подробности - что и как делалось...
Делал сборки строго по инструкции
#### Порядок компиляции и установки SDL/wx-версии:
git clone https://github.com/vpyk/emu80v4.git
cd emu80v4
make -f Makefile.sdlwx
make install -f Makefile.sdlwx
#### Порядок компиляции и установки lite-версии:
git clone https://github.com/vpyk/emu80v4.git
cd emu80v4
make -f Makefile.lite
make install -f Makefile.lite
После компиляции и установки, в домашнем каталоге папку emu80 переименовываю в emu80lite, emu80sdlwx и emu80qt соотв. В итоге получив 3 разные портейбл версии.
Далее, если запускать дабл-кликом через файловый менеджер, то ничего не происходит (кроме qt-версии)
При запуске через терминал sdl и lite версий получаю "Segmentation fault" (кстати, заметил, что и qt-версия выдает при запуске через терминал эту ошибку, но ее выдает на консоль уже после закрытия qt окна эмулятора)
при запуске скажем lite версии через valgrind получаю следующий выхлоп:
user@debian:~/Games/emu80lite$ valgrind ./Emu80lite
==18923== Memcheck, a memory error detector
==18923== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==18923== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==18923== Command: ./Emu80lite
==18923==
==18923== Jump to the invalid address stated on the next line
==18923== at 0x0: ???
==18923== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==18923==
==18923==
==18923== Process terminating with default action of signal 11 (SIGSEGV)
==18923== Bad permissions for mapped region at address 0x0
==18923== at 0x0: ???
==18923==
==18923== HEAP SUMMARY:
==18923== in use at exit: 2,288,212 bytes in 8,298 blocks
==18923== total heap usage: 24,822 allocs, 16,524 frees, 5,614,649 bytes allocated
==18923==
==18923== LEAK SUMMARY:
==18923== definitely lost: 0 bytes in 0 blocks
==18923== indirectly lost: 0 bytes in 0 blocks
==18923== possibly lost: 572,848 bytes in 2,488 blocks
==18923== still reachable: 1,715,364 bytes in 5,810 blocks
==18923== suppressed: 0 bytes in 0 blocks
==18923== Rerun with --leak-check=full to see details of leaked memory
==18923==
==18923== For lists of detected and suppressed errors, rerun with: -s
==18923== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Segmentation fault
user@debian:~/Games/emu80lite$
gdb выхлоп:
user@debian:~/Games/emu80lite$ gdb -q ./Emu80lite
Reading symbols from ./Emu80lite...
(No debugging symbols found in ./Emu80lite)
(gdb) run
Starting program: /home/user/Games/emu80lite/Emu80lite
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[New Thread 0xb6b8bb40 (LWP 19054)]
[New Thread 0xae0a5b40 (LWP 19056)]
[New Thread 0xad8a4b40 (LWP 19057)]
[New Thread 0xaceffb40 (LWP 19058)]
[New Thread 0xac4ffb40 (LWP 19059)]
Thread 1 "Emu80lite" received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) quit
A debugging session is active.
Inferior 1 [process 19050] will be killed.
Quit anyway? (y or n) y
user@debian:~/Games/emu80lite$
Да, есть проблема, смоделировал, спасибо за баг-репорт! Завтра изучу подробнее и постараюсь исправить, но похоже, что проблема с восстановлением позиции окна проявляется только под Linux, и только в LXDE появляются отрицательные значения. Также если выставить режим изменяемого размера окна (Alt-0), то все работает как задумано.
Да, так нормально будет.
Кстати, не обязательно править конфиг для исправления позиции окна, пока вполне можно переместить окно с помощью клавиатуры, нажав Alt-Пробел и выбрав перемещение из меню.
Ясно, так тоже работает. Я ведь только учусь и не шибко знаком с линуксом.
Если нужны какие-то дальнейшие телодвижения, то жду инструкций, а то я не совсем понимаю, что я должен делать при запросе подробностей.
При запуске через терминал sdl и lite версий получаю "Segmentation fault"
Не получилось воспроизвести, какой точно дистрибутив (Debian 11 x86?), какие в нем версии SDL и wxWidgets?
Можно также добавить в Makefile -g к строке CFLAGS и запустить скомпилированный файл в gdb:
gdb ./Emu80
(gdb) run
GDB выдаст номер строки, в которой происходит ошибка.
Ясно, так тоже работает. Я ведь только учусь и не шибко знаком с линуксом.
Alt-Пробел работает также и в Windows :)
Завтра изучу подробнее и постараюсь исправить
Увы, сегодня не успел, чуть позже...
Не получилось воспроизвести, какой точно дистрибутив (Debian 11 x86?),
Уж не знаю те ли я команды ввожу, но раз о них сказано не было, то какие нашел - такие и ввел.
user@debian:~/emu80lite_debug$ hostnamectl
Static hostname: debian
Icon name: computer
Machine ID: ---
Boot ID: ---
Operating System: Debian GNU/Linux 11 (bullseye)
Kernel: Linux 5.10.0-30-686-pae
Architecture: x86
какие в нем версии SDL и wxWidgets?
user@debian:~/emu80lite_debug$ sdl-config --version
1.2.15
user@debian:~/emu80lite_debug$ sdl2-config --version
2.0.14
user@debian:~/emu80lite_debug$ wx-config --version
3.0.5
Можно также добавить в Makefile -g к строке CFLAGS и запустить скомпилированный файл в gdb:
gdb ./Emu80
(gdb) run
GDB выдаст номер строки, в которой происходит ошибка.
Добавил ключ -g в секцию CFLAGS файла Makefile.lite
CFLAGS = -g -c -Wall -std=c++11 `sdl2-config --cflags` -DPAL_SDL -DPAL_LITE
далее
make clean -f Makefile.lite
make -f Makefile.lite
после этого версию с отладочной информацией запускаю в gdb и получаю результат как и ранее
user@debian:~/emu80lite_debug$ gdb ./Emu80lite
GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
--Type <RET> for more, q to quit, c to continue without paging--
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./Emu80lite...
(gdb) run
Starting program: /home/user/emu80lite_debug/Emu80lite
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[New Thread 0xb6b8bb40 (LWP 4359)]
[New Thread 0xae0a5b40 (LWP 4363)]
[New Thread 0xad6ffb40 (LWP 4364)]
[New Thread 0xacefeb40 (LWP 4365)]
[New Thread 0xac4ffb40 (LWP 4366)]
Thread 1 "Emu80lite" received signal SIGSEGV, Segmentation fault.
--Type <RET> for more, q to quit, c to continue without paging--
0x00000000 in ?? ()
(gdb) quit
A debugging session is active.
Inferior 1 [process 4354] will be killed.
Quit anyway? (y or n) y
user@debian:~/emu80lite_debug$
Alt-Пробел работает также и в Windows :)
Это когда часто приходиться вызывать это меню, а если раз в сто лет, то комбинация совершенно забывается.
Увы, сегодня не успел, чуть позже...
А я и не тороплю, эмуль работает, а мелкие неудобства можно и пережить.
brill, я даже попробовал в виртуалке ту же версию Debian с теми же версиями библиотек - проблема не воспроизвелась.
Странно, не знаю в чем причина. Ну да ладно, все равно я бы не советовал SDL-версию, если Qt работает.
Проблему с убегающим окном решил, чуть позже залью в репозиторий.
brill, попытка решения проблемы с "убегающим" окном в репо. К сожалению, на 100% решить не получается ввиду особенностей X11 и разного поведения различных оконных менеджеров при управлении окнами.
Pyk, перекомпировал и бегло протестировал. Все отлично работает. Еще раз Спасибо.
Новый релиз. Версия 4.0.480 от 19.04.2024:
https://emu80.org/news/v40480
Сайт эмулятора: https://emu80.org
Загрузить:
Qt-версия (рекомендуется):
Windows-сборка (portable): https://emu80.org/v4beta/Emu80qt_40480.zip
MacOS-сборка: https://emu80.org/v4beta/Emu80qt_40480_macos.zip
Linux-сборка: https://emu80.org/v4beta/Emu80qt_40480_linux_x86-64.tar.gz
Portable SDL/wx-версия, windows-сборка:
https://emu80.org/v4beta/Emu80_40480.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.480:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
+ Поддержка ПК "Башкирия-2М". Основная часть эмуляции выполнена Дмитрием Целиковым (b2m)
+ WebAssembly-версия эмулятора. Доступна онлайн на сайте https://online.emu80.org
* Вектор: возможность подключать и загружать образы дисков по "Load & Run" (Alt-F3)
* Орион: добавлена поддержка загрузки файлов формата .ori
* Орион: убрана проверка на выравнивание по границе 16 байт при загрузке bru/ord-файлов
* Специалист: поддержка конфигурации с Монитором-1 и ПК-01М (для запуска ПК-01М см. подсказку)
* ПК-8000: в образ жесткого диска, поставляемого с эмулятором, добавлен файловый менеджер FM.COM (DemonId7)
* Пальмира: корректное отображение режима ВГ75 VGA 400 строк
* Размер окна в режиме пользовательского размера сейчас сохраняется между запусками
* Поддержка ROM-дисков по схеме vinxru для ПК Апогей увеличенного объёма до 8 Мб, спасибо Shaos!
* Небольшие исправления в эмуляции ВВ55 и ВГ75
* Более корректное поведение и более понятные сообщения об ошибках, если при запуске эмулятора отсуствуют необходимые для работы файлы
* Состояние ВН59 сейчас отображается в отладчике
* Корвет: поддержка строчного прерывания
- Вектор: исправлены тайминги прерываний, приводившие к "некруглости"
- Исправлены тайминги команды CALL cc на Z80
- В большой степени переписана поддержка ВН59, исправлены множественные ошибки
- Исправления в обработке прерываний ВМ80
- ВИ53: исправлена работа операции защелкивания
- ВИ53: добавлены 2 такта ожидания после загрузки счетчика, демо SkyNet на Векторе сейчас не обнаруживает работу под эмулятором :)
- Скорректированы тайминги клавиш при вставке текста из буфера обмена
- Исправлена ошибка, вызывающая падение эмулятора при попытке открыть файл c несколькими точками в имени из директории SD-карты
- Исправлена сборка SDL-версии эмулятора
- Устранены проблемы с восстановлением размера и положения окна после выхода из полноэкранного режима (Qt)
- Решена проблема с отображением интерфейса эмулятора при запуске в MacOS с темной темой
За реализацию Башкирии большое спасибо b2m, образы дисков для запуска в эмуляторе можно найти на его сайте (https://bashkiria-2m.narod.ru/)
С онлайн-версией Emu80 можно ознакомиться по адресу https://online.emu80.org
Данная версия обладает меньшей функциональностью, чем десктопная: не имеет отладчика, доступны не все настройки, многие действия возможны только с помощью "горячих клавиш".
P. S. В репозитории AUR также обновлен
Прошу по возможности потестировать экспериментальную сборку:
https://emu80.org/temp/Emu80qt_40481test.7z
Пока только Qt-версия для Windows, позже могу сделать сборки для linux и mac os либо предоставить исходники для самостоятельной сборки.
Изменил логику работы эмулятора при синхронизации с экраном. Что должно измениться:
серьезно уменьшился фрейм эмуляции, должен кардинально уменьшиться input lag, улучшиться отзывчивость в играх
на мониторах с поддержкой FreeSync/G-Sync должна поддерживаться реальная частота обновления экрана эмулируемого ПК
также появилась возможность сделать "полный газ": по клавише Del работает ускорение не в 4 раза, а до максимума
Что проверить:
убедиться, что не стало хуже в плане лагов, заикания звука, загрузки процессора и т.п., особенно на старых компах вроде Pentium 4
у кого есть поддержка FreeSync/G-Sync в мониторе/видеокарте/подключении, проверить работу реальной частоты кадров. В директории !testsoft собрал несколько примеров программ, использующих плавное движение (скроллинг) или гигаскрин. Лучше работает в полноэкранном режиме, даже если в настройках разрешен G-Sync в окне. В принципе, очень неплохо работает и просто на мониторах с высокой частотой кадров, даже если нет поддержки FreeSync/G-Sync
убедиться в отсутствии tearing при горизонтальном скролле (robocop.rka), особенно на старых компах со встроенным видео
проверить работу full throttle по клавише Del, особенно на слабых компах, где невелика разница между реальной скоростью и "полным газом"
желательно все проверить как в режиме с выключенным v-sync в настройках (рекомендуется), так и с включенным
По результатом тестов подумаю о переносе изменений в основную ветку эмулятора.
В этой сборке отключена поддержка некоторых компьютеров, не обновляйте стабильную версию, распакуйте для теста отдельно. Также пока не трогал звук, думаю в будущем также получится уменьшить лаг между изображением и звуком и улучшить синхронизацию
Добавил в тесты еще Flight для Апогея от inozemcew отсюда (https://zx-pk.ru/threads/33936-pishem-igry-pod-rk-podobnye.html?p=1200306&viewfull=1#post1200306).
Прошу по возможности потестировать экспериментальную сборку:
Почему-то если кинуть в эмулятор файл FORMULA.RK, окно сворачивается. С другими играми от RK такого не заметил.
если кинуть в эмулятор файл FORMULA.RK, окно сворачивается
Оказывается, это игра для Партнера, на реальном РК она также не будет работать.
Видимо, попала в архив с играми для РК, поскольку в некоторых эмуляторах, не полностью эмулирующих ВГ75, все же запускается.
То же касается aliaz1 и вроде бы еще некоторых игр.
Я так понимаю, судя по отсутствию отзывов, что особых отличий от стабильной версии в худшую сторону не замечено?
вроде всё хорошо работает.
ждём добавления в основную версию.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot