Emu80 — 2013

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

Moderator: Pyk

uart
Writer
Posts: 12
Joined: 18 Apr 2013 05:19
Location: 188.255.113.144

Post by uart »

Сейчас проект существует только в моем XCode и не буду гарантировать, что доведу до стадии публичной версии. Я можно сказать на нем изучаю программирование под Cocoa :)
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

uart wrote:Сейчас проект существует только в моем XCode и не буду гарантировать, что доведу до стадии публичной версии. Я можно сказать на нем изучаю программирование под Cocoa :)
Я тоже в этом году взялся за какаву :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Emu80 — 2013

Post by Shaos »

VituZz wrote:
Pyk wrote:linux-сборки требуют наличия библиотеки libsdl
У меня в Debian 5 запуск программы порождает только пустое окошко.
В моём дебияне таже фигня - чёрное окошко, которое только через killall -9 можно убить...

P.S. Короче виснет оно на вот этой строчке:
if (bWaitSnd) WaitSound();
в функции Resume из файла emuinit.cpp - закомментил её и всё заработало!

P.P.S. Вставил печать в эмуляцию 8080, чтобы узнать последовательность инициализации РК-шного железа:

Code: Select all

Write byte #8A to address #8003
Write byte #00 to address #C001
Write byte #4D to address #C000
Write byte #1D to address #C000
Write byte #99 to address #C000
Write byte #93 to address #C000
Write byte #27 to address #C001
Write byte #80 to address #E008
Write byte #D0 to address #E004
Write byte #76 to address #E004
Write byte #23 to address #E005
Write byte #49 to address #E005
Write byte #A4 to address #E008
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #08 to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #09 to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0A to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0B to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0C to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0D to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0E to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0F to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #10 to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #11 to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #12 to address #C000
Write byte #03 to address #C000
Write byte #00 to address #C001
Write byte #4D to address #C000
Write byte #1D to address #C000
Write byte #99 to address #C000
Write byte #93 to address #C000
Write byte #27 to address #C001
Write byte #80 to address #E008
Write byte #D0 to address #E004
Write byte #76 to address #E004
Write byte #23 to address #E005
Write byte #49 to address #E005
Write byte #A4 to address #E008
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #08 to address #C000
Write byte #03 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #08 to address #C000
Write byte #04 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #09 to address #C000
Write byte #04 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0A to address #C000
Write byte #04 to address #C000
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #80 to address #C001
Write byte #0B to address #C000
Write byte #04 to address #C000
Write byte #00 to address #8002
Write byte #FF to address #A002
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
Write byte #00 to address #8000
Write byte #00 to address #8002
Write byte #06 to address #8003
......
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Post by Pyk »

Ну зачем же так кардинально? Просто в эмуляторе время привязано к звуковой подсистеме. Если по какой-то причине не удается инициализировать звуковую подсистему, то да, сейчас эмулятор виснет. По умолчанию в конфиге стоит audiodriver=alsa), но если конфиг не найден, то сейчас SDL по-умолчанию использует pulse audio. Так что либо alsa недоступна, либо (что скорее всего) рядом с бинарником просто совсем нет конфига. Ну, и всегда вместо комментирования можно просто отключить в конфиге звук (audiodriver=none).

P.S. Эмулятор не бросаю, хотя и получается уделять ему меньше времени, чем хотелось бы. Да и на github отправляю далеко не каждый коммит...
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

А кстати есть где-то полное описание конфига? Я чего-то с ходу не нашёл...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Post by Pyk »

Описание конфига в комментах в самом конфиге. Вот только для linux-версии описание было слегка модифицированным, но на каком-то этапе, похоже, потерялось, подправлю.

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

В общем, отвечу на любые непонятные вопросы. Что касается аудио драйверов, то сейчас вроде бы доступны всего 2 варианта для linux-версии:
auto - автовыбор библиотекой SDL. Почему-то на данный момент SDL в таком случае всегда пытается использовать pulse audio
alsa - собственно alsa. По умолчанию в конфиге оно и стоит

По видеодрайверам в linux-версии: можно указать любые варианты, поддерживаемые SDL, по умолчанию стоит auto (автовыбор библиотекой SDL), обычно работает, даже не помню, что в таком случае выбирается...

Кстати, последние (декабрьские) коммиты не тестировал под Linux. текущий снапшот нормально компилируется и работает?
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Я забирал 20 декабря - всё собиралось
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Взял emu80.cfg из utils - его содержимое игнорировалось, пока я не сделал из досовского файла юниксовый (переводы строк из одного символа) - можно код чтения универсиализировать, чтобы игнорировал '/r' в конце строк. Поставил alsa - виснуть перестало!
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Post by Pyk »

Кажется понял суть проблемы - я просто не положил актуальный emu80.cfg в очевидное место в репозиторий. В архивах с бинарными сборками он присутствует, как и все другие необходимые файлы (шрифты, ПЗУ и т.д.). В принципе, в репозитории пример конфига тоже есть, но он лежит вместе с исходниками утилиты конфигурирования Emu80Cfg.

Посоветуйте, куда бы его лучше поместить в репозиторий, учитывая, что должно быть 2 разных дефолтных конфига - виндовый и линуксовый? Сделать emu80.cfg.win32 и emu80.cfg.linux, а в readme написать, что нужно взять нужный и переименовать? Или так и написать, что, мол, конфиг брать в соответствующей бинарной сборке?
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

да - можно с суффиксами win32 и linux положить прямо в src, и линуксовый сделать в UNIX-формате, чтобы проблем с переводом строк небыло

P.S. у тебя эмуляция ВИ53 сразу три канала умеет играть?

P.P.S. а вижу - умеет, например в Апогее все три канала складываются
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот этот набор файлов сильно отличается от того, что уже есть?
Игровые и системные программы для РК-86, написанные Эдуардом Волковым, можно найти на сайте автора: http://intel8080.da.ru.
А то этот сайт уже несуществует...

P.S. И ещё линк http://emu80.org/files/BAS1A.ZIP надо заменить на http://emu80.org/files/bas1a.zip, а то ошибку 404 выдаёт...

P.P.S. Это я всё про Download страничку http://emu80.org/dl.html
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Post by Pyk »

Shaos wrote:
Игровые и системные программы для РК-86, написанные Эдуардом Волковым, можно найти на сайте автора: http://intel8080.da.ru.
А то этот сайт уже несуществует...
Он переехал на http://rk86.shatu.ru/
В разделе Download я поправил, а здесь пропустил, поправлю.
Shaos wrote:P.S. И ещё линк http://emu80.org/files/BAS1A.ZIP надо заменить на http://emu80.org/files/bas1a.zip, а то ошибку 404 выдаёт...
Спасибо, тоже поправлю. Сколько лет уже так, странно, что никто не заметил и не написал раньше :(

А вообще сайт я тоже хочу обновить, но руки еще не дошли... Пока занимаюсь "переливанием из пустого в порожнее" - переписываю ассемблерный код и меняю структуру приложения. В принципе, уже скоро ядро будет переписано, что позволит добавлять новые фичи, даже не избавившись еще полностью от ассемблера. Ну а появятся новые фичи - можно будет и новую версию выпустить, и сайт обновить...
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Pyk wrote: Спасибо, тоже поправлю. Сколько лет уже так, странно, что никто не заметил и не написал раньше :(
Может ты раньше на винде хостился? На микрософтовском сервере это бы работало...

P.S. Ещё меня интересует по какой схеме у тебя цвет в РК-86 эмулится? Их вроде несколько было в своё время выдумано...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Pyk
Maniac
Posts: 252
Joined: 21 Jan 2003 04:08

Post by Pyk »

Да, был период, когда хостился на винде, но было это где-то в 2006-2007 гг. Неужели с тех пор за 7 лет никто так и не заметил?

Цвет эмулируется вот по этой схеме («Самоцвет»):
http://rk86.shatu.ru/rk-color.htm
User avatar
Shaos
Admin
Posts: 24036
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Pyk wrote:Да, был период, когда хостился на винде, но было это где-то в 2006-2007 гг. Неужели с тех пор за 7 лет никто так и не заметил?

Цвет эмулируется вот по этой схеме («Самоцвет»):
http://rk86.shatu.ru/rk-color.htm
OK - спасибо!
Я тут за главного - если что шлите мыло на me собака shaos точка net