Emu80 v.4

Эмулятор Радио-86РК и других советских компьютеров на КР580ВМ80А http://www.emu80.org

Moderator: Pyk

Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Re: Emu80 v.4

Post by Pyk »

Для контент-пака можно и побольше набрать ;)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

Pyk wrote:Для контент-пака можно и побольше набрать ;)
А ты оценивал общий объём существующего ПО для советских компьютеров?
Вроде бы ты собирал прям всё-всё-всё с конца 90х и выкладывал тематическими архивами
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Re: Emu80 v.4

Post by Pyk »

Собирал и выкладывал. Только мало того, что последний архив был в июне 2000-го, так я еще и собирал только программы для поддерживаемых на тот момент компьютеров, коих было в разы меньше, чем сейчас. Очень хочется собрать все примерно как это сделано для "Вектора" (да и сам Вектор давно уже поддерживается):
http://tenroom.ru/scalar/ (с сайтом пока есть проблемы: нет последних поступлений, не работает встроенный эмулятор, но это к слову, для примера не так важно)

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

И если я еще мог бы продумать структуру БД для будущего каталога и может быть даже набросать какой-то несложный интерфейс, но я точно не потяну работу по каталогизации. Я тут не далее как вчера попробовал перенести Bolder Dash на упомянутую недавно "Пальмиру", так пробежался по архивам и нашел 8 (!) разных версий этой игры для "РК", "Микроши" и т.п. компьютеров. Отличия минимальные - где-то рисунок стен изменили, где-то время на конкретный уровень добавили, где-то что-то раскрасили... Это только 8 разных, а сколько в архивах было дублей, причем иногда под разными именами, я даже не считал... И это игра в виде отдельного rk-файла, а сколько всего на образах дискет...
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

> кроме того, я лет на 10-15 отходил от темы эмуляции и старых компов

10-15??? Мне казалось, что ты всегда в теме :)

Для перекрёстного сравнения бинарей тебе нужен программистский подход - типа того как я в своё время делал программку для сравнения разных версий советских бейсиков с западными для вычислением процента плагиата у биллгейца:
http://www.nedopc.org/forum/viewtopic.php?f=39&t=9630
http://www.nedopc.org/forum/viewtopic.php?p=90698#p90698
https://gitlab.com/nedopc/sdk/-/commits/master/utils/cmp8080.c
Если разница между версиями только в паре текстур, то процент совпадений будет высок
Более того - мой код даже перекомпиляцию вроде как выявляет - со сдвигом адресов и т.д. ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
forthuser
Senior
Posts: 165
Joined: 12 Jan 2023 07:26

Re: Emu80 v.4

Post by forthuser »

Pyk wrote: Отладчиком как раз планировал позаниматься в ближайшее время...
Может заинтересует такой подход к задействованию Форт-подобного языка ESIL применённого в программе Radare2
ESIL

P.S. Там же применён какой то язык описания метаданных кода программы для дизасемблировани
Adding Metadata to Disassembly
А, в отладчике будут проставляться символьные метки на процедуры из Биоса компьютера?

А, не планируется ли ещё добавление каких то компьютеров, к примеру на Z80 в состав этого проекта или отдельной ветки его?
К примеру такого JUPITER ACE
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Re: Emu80 v.4

Post by Pyk »

Спасибо всем за ссылки и информацию к размышлению!

После выхода последней ДОС-версии эмулятора в 2000-м и до 2016 за эмулятор я брался всего пару раз по полгода, пытаясь что-то сделать с 3-й версией.
И хотя никуда не пропадал, был на связи, но следил на форуме практически только за этим разделом, а, на других тематических форумах вообще не был зарегистрирован.
Поэтому и говорю, что отходил от темы...

Да, насчет оценки объема. Для РК и подобных может быть и не так много, но например, объем архива софта и других материалов для Вектора, на который я давал ссылку выше, уже приближается г гигабайту :esurprised: .

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

Про ESIL раньше не слышал, посмотрю. Еще компы, конечно же, будут добавляться, но в первую очередь все-таки старые советские, насчет JUPITER ACE совершенно не уверен, доберусь ли когда-либо до подобного. Но проект открытый, при желании можно попробовать добавить и самостоятельно.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

Pyk wrote:Да, насчет оценки объема. Для РК и подобных может быть и не так много, но например, объем архива софта и других материалов для Вектора, на который я давал ссылку выше, уже приближается г гигабайту :esurprised: .
И откуда столько? Непонятно...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

О - чудо! QT-версия эмулятора собралась и запустилась в Debian GNU/Linux v10.13 "Buster" без каких-либо видимых проблем :o
Emu80qt.jpg
P.S. А вот SDL/wx-версия, как недавно выяснилось, сносит цвета в иксах десятого дебияна, как и все другие SDL-приложения :(
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Re: Emu80 v.4

Post by Pyk »

Э... А почему рядовая сборка софтины из исходников - это чудо? Или в Stretch по какой-то причине не собиралось?

Насчет цветов. А не 256 цветов у тебя режим, случайно? Такое ощущение, что палитра слетела... Вообще, многие SDL1.2-приложения используют режим 256 цветов, может быть, влияет как-то? Хотя в SDL2 такое не практикуется... Кстати, dosbox-staging тоже уже использует SDL2, да и вообще поприятней будет чем древний 0.74...

P.S. У меня на не основной машине тоже есть Stretch, надо бы обновить до Buster... Но немного опасаюсь, что будет как с обновлением Jessie до Stretch, когда автоматическое обновление по какой-то причине не сработало, система отказалась грузиться, разобраться в причинах не удалось и пришлось ставить потом с нуля...
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

> Э... А почему рядовая сборка софтины из исходников - это чудо? Или в Stretch по какой-то причине не собиралось?

Ну да - в 9м и 8м дебияне у меня были проблемы - надо поискать... :roll:
А - нашёл! Мы по электронной почте обсуждали в апреле 2018 года и я жаловался, что у меня "не взлетело" :)
Судя по году, речь шла о Debian 8 "Jessie" - там какие-то нестыковки были с дебияновской версией Qt Creator и ты советовал Qt5 скачать прям у авторов...

> будет как с обновлением Jessie до Stretch, когда автоматическое обновление по какой-то причине не сработало,
> система отказалась грузиться, разобраться в причинах не удалось и пришлось ставить потом с нуля...

P.S. Кстати да - после 8 мне пришлось переустанавливать 9 поверх вроде (только я про это ничего не написал тут и детали смутно помню - обновление делал в июле 2020, уже будучи в Калифорнии)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

> Насчет цветов. А не 256 цветов у тебя режим, случайно? Такое ощущение, что палитра слетела...
иксы вроде многоцветные, а в приложении моём, которое тоже слетело, используется палитра, да.
возможно обновлённая версия SDL стала менять режим для всей системы и оставлять сломанным?
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Re: Emu80 v.4

Post by Pyk »

А какая версия SDL2 у тебя сейчас? Только что для пробы собрал с 2.0.12 - все ок с цветами, хотя и система не debian...
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

Pyk wrote:А какая версия SDL2 у тебя сейчас? Только что для пробы собрал с 2.0.12 - все ок с цветами, хотя и система не debian...

Code: Select all

root@amd64s:/etc# aptitude show libsdl2-2.0-0 
Package: libsdl2-2.0-0                   
Version: 2.0.9+dfsg1-1
State: installed
Automatically installed: yes
Multi-Arch: same
Priority: optional
Section: libs
Maintainer: Debian SDL packages maintainers <pkg-sdl-maintainers@lists.alioth.debian.org>
Architecture: amd64
Uncompressed Size: 1,343 k
Depends: libasound2 (>= 1.0.27), libc6 (>= 2.27), libpulse0 (>= 0.99.1), libsndio7.0 (>= 1.1.0), libwayland-client0 (>= 1.9.91),
         libwayland-cursor0 (>= 1.0.2), libwayland-egl1 (>= 1.15.0), libx11-6 (>= 2:1.2.99.901), libxcursor1 (> 1.1.2), libxext6,
         libxi6 (>= 2:1.2.99.4), libxinerama1, libxkbcommon0 (>= 0.5.0), libxrandr2 (>= 2:1.2.99.3), libxss1, libxxf86vm1
Conflicts: libsdl-1.3-0
Breaks: libsdl2-2.0-0:i386 (!= 2.0.9+dfsg1-1)
Replaces: libsdl-1.3-0, libsdl2-2.0-0:i386 (< 2.0.9+dfsg1-1)
Description: Simple DirectMedia Layer
 SDL is a library that allows programs portable low level access to a video framebuffer, audio output, mouse, and keyboard. 
 
 This version of SDL is compiled with X11 and Wayland graphics drivers and OSS, ALSA, sndio and PulseAudio sound drivers.
Homepage: https://www.libsdl.org/
Tags: role::shared-lib
P.S. Проблема с цветами была решена переустановкой видеодрайверов: http://www.nedopc.org/forum/viewtopic.php?p=168634#p168634
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Re: Emu80 v.4

Post by Pyk »

Версия 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_404..._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-версии. Последняя, кстати, стала намного более функциональной
после добавления новых опций командной строки.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 v.4

Post by Shaos »

Приаттачиваю документацию от последней версии в PDF формате, если кому надо ;)
Emu80 v4 Manual.pdf
Пытаюсь с ROM-диском поиграться в соответствии с документацией:
Screenshot from 2024-01-10 21-55-14.png
И заодно в код смотрю - в src/RkRomDisk.cpp

Code: Select all

bool RomDiskPageSelector::setProperty(const string& propertyName, const EmuValuesList& values)
{
    if (AddressableDevice::setProperty(propertyName, values))
        return true;

    if (propertyName == "romDisk") {
        m_romDisk = static_cast<ExtRkRomDisk*>(g_emulation->findObject(values[0].asString()));
        return true;
    } else  if (propertyName == "bits") {
        int bits = values[0].asInt();
        m_mask = (((1 << bits) - 1) & 0xFF);
        return true;
    }

    return false;
}
Этот код похоже никогда не вызывается? Имя файла ромдиска приходит сразу в конструктор класса RkRomDisk:

Code: Select all

RkRomDisk::RkRomDisk(string romDiskName)
{
    m_romDisk = palReadFile(romDiskName, m_fileSize);
}
А при попытке изменить имя в конфигурации платформы оно просто пересоздаёт объект заново с новым именем.

Это я хочу попробовать подсунуть файл размером до 4 мегов :roll:
А для этого похоже надо как-то задать bits=7 в объекте класса RomDiskPageSelector?
И как-то надо включить ExtRkRomDisk вместо RkRomDisk?...

P.S. Похоже надо таки код ковырять

P.P.S. Поковырял :)
Теперь оно работает как надо с таким конфигом:

Code: Select all

ifdef ROM_DISK
  ExtRkRomDisk romDisk = @CFG_ROMDISK_FILE
  RomDiskPageSelector sel
  sel.romDisk = &romDisk
  sel.bits = 7
  ppi2.circuit = &romDisk
endif
Однако судя по всему класс RomDiskPageSelector был выделен как отдельная сущность чтобы можно было через Platform Configuration его как-то подёргать или как? Так то программно можно было всё внутри класса ExtRkRomDisk накодить - по аналогии с тем, как сделано в классе ApogeyRomDisk:

Code: Select all

void ApogeyRomDisk::setPortC(uint8_t value)
{
    bool newA15 = value & 0x80;
    value &= 0x7f;
    m_curAddr = (m_curAddr & ~0x7f00) | (value << 8);
    if (newA15 && !m_oldA15) // перед переключением банка нужно сбросить бит 7 порта B
        m_curAddr = (m_curAddr & 0x7fff) | ((m_curAddr & 0xf) << 15);
    m_oldA15 = newA15;
}
P.P.P.S. А - всё, увидел :)
Это для орионовского DSDOS-а было сделано:
https://github.com/vpyk/emu80v4/commit/760bef9ec9d1aa48d4e82a8f58818a0973027948
Значит я прозрачно расширил это дело для РК :)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net