Точность эмуляции Радио 86РК

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

Moderator: Pyk

User avatar
Ball Bess
Maniac
Posts: 211
Joined: 14 Mar 2006 00:20
Location: Иркутск

Post by Ball Bess »

Shiru Otaku wrote:
Ball Bess wrote:А в режиме "прозрачных" на каждое знакоместо надо отводить по два байта (атрибут и код символа). При этом объём экранной области ОЗУ увеличивается вдвое
Нет, это неправильно. Не два байта, и не вдвое. Дело в том, что в режиме прозрачных атрибутов на строке их не может быть использовано больше 16 - иначе возникнет переполнение буфера FIFO (выставится соответствующий флажок, и будут браться символы с начала буфера FIFO - как сказано в документации)...
Да, что-то я поторопился с выводами... :D
По-видимому, предложенная мною система годится только для дисплеев с 16-ю символами в строке, а у разработчиков РК кроме вышеназванных проблем была ещё одна:
СПРАВОЧНИК wrote:... Следует отметить, что "прозрачный" режим достаточно сложен при разработке системы, так как требует переменной длины знакоряда в страничном ЗУ видеотерминала, в связи с чем мало распространён...
Про переполнение FIFO там же пишут:
СПРАВОЧНИК wrote:... Если превысить ёмкость стека, то первые знаки будут "вытолкнуты" и потеряны. В этом случае в регистре состояния установится флаг переполнения стека, который будет считан и обработан центральным процессором видеотерминала...
Не сказано, правда, что заставит CPU читать регистр состояния. Нужно, по-видимому, настраивать ВГ на генерирование запроса прерывания в конце каждого кадра.
Shaos wrote:А ещё вроде есть Радио-86РК с цветным текстом! И там помниться авторы хвалились использованием стандартных фич ВГ75
Правильно, в РК-шном включении у ВГ есть неиспользуемые ноги, кои можно задействовать через механизм атрибутов так, как тебе вздумается, в том числе и для раскрашивания текста. Требуется навешивание небольшого кол-ва "логики" на выходе.

P.S. Русское описание ВГ75 имеется в первом томе двухтомника "Микропроцессоры и микропроцессорные комплекты интегральных микросхем" М., "Радио и связь", 1988 г. под ред. В.А.Шахнова. Довольно подробно, со схемами, эпюрами и т.п. (из него я и давал цитаты).

Значительно укороченное описание мне попадалось в журнале "Микропроцессорные средства и системы", номер 3 за 1988 год.
Last edited by Ball Bess on 13 Aug 2006 18:18, edited 1 time in total.
Кто мешает тебе выдумать порох непромокаемый?
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

Ball Bess wrote:Не сказано, правда, что заставит CPU читать регистр состояния. Нужно, по-видимому, настраивать ВГ на генерирование запроса прерывания в концекаждого кадра.
Только в РК-шке это невозможно, там не используется запрос прерывания от ВГ, вообще никаких прерываний нет.
Ball Bess wrote:P.S. Русское описание ВГ75 имеется в первом томе двухтомника "Микропроцессоры и микропроцессорные комплекты интегральных микросхем" М., "Радио и связь", 1988 г. под ред. В.А.Шахнова. Довольно подробно, со схемами, эпюрами и т.п.
Отсканить-бы эти страницы?

Я пользуюсь только оригинальным даташитом на 8275, больше ничего не нашлось. На русском в инете есть маленькая статейка на http://www.computer-museum.ru, но там перевод выборочных мест даташита, и с ошибками.
User avatar
Ball Bess
Maniac
Posts: 211
Joined: 14 Mar 2006 00:20
Location: Иркутск

Post by Ball Bess »

Насчёт отсканить - сканера пока нет под рукой... :(
Попробую цифровым фотоаппаратом, может быть получится... Мой выдаёт максимум 1600х1200 точек JPG, а потом надобно объём файла уменьшить (для удобной передачи через Сеть). У меня стоит для фоток прога XnView, вроде как может конвертировать, попробую...
Да и радиоконструктор надобно бы заодно сфотать, как ты говорил - "для истории"...
Короче, смотри личное сообщение.
Кто мешает тебе выдумать порох непромокаемый?
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

Ball Bess отфоткал странички из книжки, и с его разрешения я их выкладываю, если кому надо (jpg'и в архиве, полтора мегабайта):

http://rapidshare.de/files/29434072/vg75.rar.html

Описание похоже на вольный пересказ datasheet'а на 8275 - таблички и некоторые картинки похожи. Зато на родном языке, и не дословный перевод, всё-таки понимали, о чём пишут - может пригодится кому-нибудь, кроме меня.
DDp
Novelist
Posts: 46
Joined: 24 Aug 2006 02:14
Location: pуcвoceмьнадцaть

Post by DDp »

Shiru Otaku wrote:> Выяснял тут различные подробности устройства РК-шки - как работает ВГ75 вообще
> (даташит 8275 местами ошибается или умалчивает детали),
> и какие её фичи реализованы в РК.
> Написал тест, прогнал его на моём Спектр'е.
> Публикую результат, чтобы авторы эмуляторов РК (я знаю, что они сюда захаживают:),
> если у них будет такое желание, реализовали эмуляцию видеоконтроллера более точно.
Я думаю, они сделали достаточную эмуляцию для использования с существующим ПО.
Но всё равно это оччень интересно.
Shiru Otaku wrote:> Потестировал Emu80 Виктора Пыхонина...
> В режиме непрозрачных атрибутов:... ...атрибут инверсии эмулируется (а не должен)...
Инверсия появилась "благодаря" схеме цвета. Так же должен был появиться курсор "блок".
Вот кстати моя схема. (которую, я считаю, более правильной :) )
(Кнопочкой можно инвертировать цвета)
RK_COLOR.RAR
Shiru Otaku wrote:> Но это всё самодеятельность, в конструкторах и промышленных клонах ничего такого не было.
:idea:



Вот результат прогона твоих тестов на моём РК (Радиоконструктор "Электроника КР-02". Отличается от описанного в журнале "Радио" только матрицей клавиатуры и соответствующей процедурой обработки в Мониторе.)
RK_TEST1_50p.7z (~66k)
RK_TEST2_50p.7z (~170k)
RK_TEST3_50p.7z (~780k)
Сигнал снят с оригинального выхода (не цветного).
Проверка с чередующимися знакорядами вызвала срыв синхронизации у caprute device. А на экране выглядит примерно также как у тебя.

- Подчёркивание через знакоместо! Даже не знаю, почему в Спектре сплошное
(надо будет разобраться). Анализировал схемы (мою, оригинала, Спектра и Микроши) - у всех выходная часть CRT сделана абсолютно одинаково.

- Замечание к проверкам с изменением размера экранного буфера в большую сторону.
Вопрос на засыпку: откуда будет DMA брать байты, если ОЗУ "внезапно" кончиться? :wink:
(А кончается "внезапно" ОЗУ после адреса 7FFF)
Правильно! Из клавиатурного ВВ55 !!!
Для таких проверок нужно выбрать другой адрес начала экрана.


Я тут поиздевался над програмками... :roll:
src_TEST123_v02.7z
Все тесты в одном. Мнемоники родного i8080 (компилятор прилагается).


P.S. Интересно ещё по исследовать подробнее проверки с чередующимися знакорядами и конец строки и кадра с остановкой DMA.
P.S.S. А вот размер знакоряда по вертикали ты не потестировал, а он используется в играх и эмулируется Emu80.
P.S.S.S. Спасибо Ball Bess за доку по ВГ75.
Last edited by DDp on 14 Jun 2008 10:00, edited 1 time in total.
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Post by Shiru Otaku »

DDp wrote:Я думаю, они сделали достаточную эмуляцию для использования с существующим ПО. Но всё равно это оччень интересно.
Не спорю, но ведь приятно получить 100% точный эмулятор, а не просто РК-совместимое нечто:) Благо, современные PC уже давно позволяют этого добиться.
DDp wrote:Инверсия появилась "благодаря" схеме цвета. Так же должен был появиться курсор "блок".
Но ведь Emu80 не эмулирует цвет, разве не так? А если нет эмуляции схемы цвета, то и инверсии быть не должно.
DDp wrote:Вот кстати моя схема. (которую, я считаю, более правильной
А софт под неё есть?
DDp wrote:Вот результат прогона твоих тестов (1 и 2) на моём РК
Спасибо!
DDp wrote:Проверка с чередующимися знакорядами вызвала срыв синхронизации у capture device. А на экране выглядит примерно также как у тебя.
Да, возможно, у меня тоже происходит срыв синхронизации. Надо будет проверить на телевизоре.
DDp wrote:- Подчёркивание через знакоместо! Даже не знаю, почему в Спектре сплошное
(надо будет разобраться). Анализировал схемы (мою, оригинала, Спектра и Микроши) - у всех выходная часть CRT сделана абсолютно одинаково.
Тут будет более уместно "даже не знаю, почему в КР-02 через знакоместо":) В даташите нет ни слова про прерывистое подчёркивание, оно должно быть сплошным (как и действие всех других атрибутов). Я даже не представляю, как оно может быть прерывистым.
DDp wrote:- Замечание к проверкам с изменением размера экранного буфера в большую сторону.
Вопрос на засыпку: откуда будет DMA брать байты, если ОЗУ "внезапно" кончиться?
Я посчитал это непринципиальным, хотя по хорошему, конечно, надо переносить буфер пониже.
DDp wrote:Все тесты в одном. Мнемоники родного i8080 (компилятор прилагается).
Спасибо. Я писал под кроссасмом Z80, что довольно неудобно (и чуток накосячил, как ты правильно заметил).
DDp wrote:P.S. Интересно ещё по исследовать подробнее проверки с чередующимися знакорядами и конец строки и кадра с остановкой DMA.
Да, и ещё надо проверить, что будет, если курсор находится на пустом знакоряде (будет-ли он виден, или загасится).
DDp wrote:P.S.S. А вот размер знакоряда по вертикали ты не потестировал, а он используется в играх и эмулируется Emu80.
Не затестил, потому-что этот момент у меня особых вопросов не вызвал. Единственная тонкость там - учесть, что из 4-ёх выходов выбора линии пикселей символа в РК используются только младшие 3. Кстати, Lode Runner использует изменение высоты знакоряда, и у меня изображение в нём начинает мощно мигать (при подключении через тюнер). При этом курсор с экрана не пропадает в моменты мигания.


Даташиты на 8275 и 8257: http://rapidshare.de/files/31061299/8257_8275.7z.html (4 мегабайта)
DDp
Novelist
Posts: 46
Joined: 24 Aug 2006 02:14
Location: pуcвoceмьнадцaть

Post by DDp »

2 Shiru Otaku: Огромное спасибо за даташиты.
Shiru Otaku wrote:Но ведь Emu80 не эмулирует цвет, разве не так?
Emu80 эмулирует цвет в текстовом режиме эмулятора, в графическом режиме цвет не реализован.
Вообще можно (и нужно было) сказать, что Emu80 эмулирует оригинальный "Радио-86РК" плюс доработки (цвет, ВИ53),
которые только добавляют функции и никак не влияют на совместимоть с ПО_для_оригинальной_схемы.
Shiru Otaku wrote:
DDp wrote:Вот кстати моя схема.
А софт под неё есть?
Она совместима с приведённой выше и поддерживаемой Emu80.
Я её сделал в 2000 году, после того как цвет появилася в эмуляторе.
Но реализована более правильно (imho).
Вот ещё про цвет...

Code: Select all

Статьи								¹/год	Стр. 

Л.ТОЛКАЛИН.
"Цветные" компьютеры "Радио-86К" 
Схемы и программы для использования цвета в компьютерах
с видеоконтроллером КР580ВГ75.					4/92	10
								6/92	12
								7/92	9
								9/92	14

М.АКИМЕНКО.
Контроллер "Самоцвет-М" 
Приставка к "Радио-86РК" для введения цветного режима 
(8 цветов). К155ЛЕ1, К155ЛП5.					10/92	13 

В.КОВАЛЕНКО.
"Цветные" компьютеры "Радио-86РК"
Вариант формирования цветных сигналов из сигналов
атрибутов контроллера дисплея (замена микросхемы).		4/93	9 

Б.ФРОЛКИН. 
Еще раз о цвете в "Радио-86РК" 
Схема формирования сигналов цвета,
исключающая необходимость в,переключателе "цвет - монохром".	4/93	9 

----------------------------------------------------
Журналы "Радиолюбитель" -->  http://www.radioliga.com/
Shiru Otaku wrote:
DDp wrote:- Подчёркивание через знакоместо! Даже не знаю, почему в Спектре сплошное...
(надо будет разобраться). Анализировал схемы (мою, оригинала, Спектра и Микроши) - у всех выходная часть CRT сделана абсолютно одинаково.
Тут будет более уместно "даже не знаю, почему в КР-02 через знакоместо":) В даташите нет ни слова про прерывистое подчёркивание, оно должно быть сплошным (как и действие всех других атрибутов). Я даже не представляю, как оно может быть прерывистым.
Хе! Я скажу более: оно прерывисто и в Микроше! :D

Shiru Otaku wrote:
DDp wrote:- Замечание к проверкам с изменением размера экранного буфера в большую сторону.
Я посчитал это непринципиальным, хотя по хорошему, конечно, надо переносить буфер пониже.
Программировать такие устройства, как ВГ75, нужно очень осторожно. Пример ниже.
Shiru Otaku wrote:Кстати, Lode Runner использует изменение высоты знакоряда, и у меня изображение в нём начинает мощно мигать (при подключении через тюнер). При этом курсор с экрана не пропадает в моменты мигания.
А я знаю! :P Высота знакоряда особо не при чём...
В LodeRunner-е количество знакорядов 38, адрес начала экрана 4000h, его размер 78*38=2967 (0B94h).
Смотрим (на реальном компьютере) конец видеобуфера:

Code: Select all

4B00 20 20 20 20-20 20 20 20-20 20 20 20-20 20 20 20
4B10 20 20 20 20-20 20 20 20-20 20 20 20-20 20 20 20
4B20 20 20 20 20-20 20 20 20-20 20 20 20-20 20 20 20
4B30 20 20 20 20-20 20 20 20-20 20 20 20-20 20 20 20
4B40 20 20 20 20-20 FF F3 FF-00 FF 00 FF-00 FF 00 FF
4B50 00 FF 00 FF-00 FF 00 FF-00 FF 00 FF-00 FF 00 FF
4B60 00 FF 00 FF-00 FF 00 FF-00 FF 00 FF-00 FF 08 FF
4B70 08 FF 08 FF-00 FF 00 FF-00 FF 00 FF-00 FF 00 FF
4B80 EB 14 EB 04-FF 00 FF 00-EB 00 FF 00-FF 00 FF 00
4B90 EB 00 FF 00-FF 00 FF 00-FB 00 FF 00-FF 00 FF 00
4BA0 EB 00 FF 00-FF 00 FF 00-FF 00 FF 00-FF 00 FF 00
4BB0 FF 00 FF 00-FF 00 FF 00-FF 00 FF 00-FF 00 FF 00
4BC0 00 FF 00 FF-00 FF 00 FF-00 FF 00 FF-00 FF 00 FF
4BD0 00 FF 00 FF-00 FF 00 FF-00 FF 00 FF-00 FF 00 FF
4BE0 00 FF 00 FF-00 FF 00 FF-00 FF 00 FF-00 FF 00 FF
4BF0 00 FF 00 FF-00 FF 00 FF-00 FF 00 FF-00 FF 00 FF
В РК86 (и подобных ему) при сбросе и включении питания ОЗУ не очищается.
Содержимое не очищеного динамического ОЗУ чаще всего выглядит как чередующиеся FF 00 FF 00 FF 00.
Эта комбинация знакома тому, кто включал Спектрум[48] без ROM или без CPU. На экране это выглядит как "шахматка".

В наше случае FF это (официально) запрещённый атрибут для ВГ75.

Выход: или отчистить память (директива "F" монитора) перед использованием LodeRunner, или подкоррекрировать игрушку, чтобы она затирала буфер экрана полностью.


:lol: (С сарказмом) ПРЕДЛАГАЮ эмулировать запрещённые атрибуты, глюки и мусор в динамическом ОЗУ! А "до кучи", что б эмулировалось "осыпающееся" ОЗУ при отключенном контроллере ПДП (читай: отключенной регенерации).




P.S. Вспомнилось: Буратино дали три яблока...
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

DDp wrote: :lol: (С сарказмом) ПРЕДЛАГАЮ эмулировать запрещённые атрибуты, глюки и мусор в динамическом ОЗУ! А "до кучи", что б эмулировалось "осыпающееся" ОЗУ при отключенном контроллере ПДП (читай: отключенной регенерации).
Хехе, хаотичные FF/00 вперемежку с битыми битами я эмулировал в своем эмуляторе Спеца - ибо там они классно смотрятся. Вот алгоритм, прост до безобразия:
for adr:=0 to 65535 do begin
if (adr and 1)=0 then RAM[adr]:=0 else RAM[adr]:=255;
if (adr and 128)=0 then RAM[adr]:=RAM[adr] xor 255;
if (adr and 4096)=0 then RAM[adr]:=RAM[adr] xor 255;
if (adr and 7)=0 then
if random(32)=0 then RAM[adr]:=random(255);
end;
DDp
Novelist
Posts: 46
Joined: 24 Aug 2006 02:14
Location: pуcвoceмьнадцaть

Post by DDp »

НАШЁЛ почему в "Радио-86РК" и "Микроше" подчёркивание пунктиром.
Это цепь от 20 вывода ИР13 до 13 вывода ТМ2.
Перерезал. Подчёркивание стало сплошное (на курсор никак не повлияло).

Вопрос (разработчикам): ЗАЧЕМ... :evil:

to Shiru Otaku: посмотри эту цепь на "Спектре". На схеме она есть, на фотографии платы дорожку видно.
Last edited by DDp on 14 Jun 2008 10:02, edited 1 time in total.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Выкидываем сканы Ball Bess'а (ему все равно отдельное спасибо) и качаем полную книгу тут: viewtopic.php?t=8406
User avatar
Ball Bess
Maniac
Posts: 211
Joined: 14 Mar 2006 00:20
Location: Иркутск

Post by Ball Bess »

HardWareMan wrote:Выкидываем сканы Ball Bess'а (ему все равно отдельное спасибо) и качаем полную книгу тут: viewtopic.php?t=8406
Да выкидывайте, я и не вынуждаю никого ими пользоваться. Если эти фотки подтолкнули вас порыться в Сети и найти книжку - это уже хорошо. Своего рода реклама книги получилась... :-|
Кто мешает тебе выдумать порох непромокаемый?
micko
Novelist
Posts: 40
Joined: 26 Mar 2008 23:21
Location: Serbia

Post by micko »

Может ли кто-нибудь, пожалуйста загрузить тестовые файлы, поскольку они не доступны.
DDp
Novelist
Posts: 46
Joined: 24 Aug 2006 02:14
Location: pуcвoceмьнадцaть

Post by DDp »

micko wrote:Может ли кто-нибудь, пожалуйста загрузить тестовые файлы, поскольку они не доступны.
Обновил ссылки в своих постах.
Вот оригинальные тесты Shiru (без видео).
micko
Novelist
Posts: 40
Joined: 26 Mar 2008 23:21
Location: Serbia

Post by micko »

Спасибо DDP.
DDp
Novelist
Posts: 46
Joined: 24 Aug 2006 02:14
Location: pуcвoceмьнадцaть

Post by DDp »

Обнаружились(нашлись) игрушки для Микроши заслуживающие внимания в плане более точной эмуляции. ( games hit-parade N 1)
Здесь в более компактном виде+ скриншоты.
( Для получения WAV, воспользуйтесь утилитой CSW ).
А основная проблема - они имеют автостарт и записаны не стандартным способом. Защита использует (как минимум) не документированные команды процессора, фальш-импульсы и фальш-блоки в сигнале. Основной код и загрузчик расположены в адресам стандартного буфера экрана.

Я был шокирован тем, что во время загрузки не отключается дисплей.
Оказалось, что контроллер дисплея настраивается на более короткий пакет DMA запросов, и процессор "тормозится" чаще и на более короткий промежуток времени. Таким образом достигается более равномерная скорость работы процессора.

На данный момент не удалось загрузить эти игрушки ни в одном эмуляторе (из поддерживающих WAV я знаю только MESS и Башкирия2М).
У меня имеется реальный Микроша, могу помочь прояснить некоторые детали его работы...