1 Отредактировано electroscat (23-02-2024 16:05)

Тема: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

Доброго времени Коллеги ! Столкнулся с проблемой, в некоторых программах Бадера, в частности в "демо часах" и в системе "The Best" внизу экрана в режиме T32 присутствует подпись "Бадер Р" и дата написания программы в режиме T64.  Реально виртуозная подпись, которая позволяет лишний раз понять мошь гения Романа Бадера, но есть в этом и негативная сторона. Для ЭЛТ монитора в целом не важно сколько прорисовывается пикселов в строке, и по этому такая подпись для аналогового CRT монитора в целом и не представляет пролем. Но если речь идет о цифровом устройстве, которое чтобы конвертировать из одного формата в другой - должно изначально понимать сколько строк в каре и пикселов в строке, все совсем не так. Таким устройствам удвоение количества пикселов, причем только в семи - восьми строках кадра - как удар по голове... Когда Агат показывает эту картинку, GBS8200 начинает дергать экран, происходит "разрыв внутреннего шаблона" конвертора, и кадр перескакивает вверх - вниз с заломанными краями экрана..
Посоветуйте, что с этим можно сделать ? Единственное что я видел, это удалить эти надписи с экранов. Но моих знаний не достаточно для того, чтобы дизассемблировать и найти как они туда попадают. Макстмум что я смог сделать, это в HEX редакторе поискать соответствующий текст. но это ни привело к результату, потому что эта подпись туда попиксельно рисуется, такого текста в коде нет. Вероятно кто то сможет мне в этом помочь ?

http://forum.agatcomp.ru//misc.php?action=pun_attachment&item=1251&download=1
http://forum.agatcomp.ru//misc.php?action=pun_attachment&item=1250&download=1

Post's attachments

Attachment icon TheBest.JPG 82.08 kb, 330 downloads since 2024-02-20 

Attachment icon clock.JPG 41.68 kb, 327 downloads since 2024-02-20 

2

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

Тут можно посмотреть видео с проявлением данной проблемы:

https://t.me/agatcomp/22365
https://t.me/agatcomp/22369
https://t.me/agatcomp/22385

3

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

electroscat пишет:

Таким устройствам удвоение количества пикселов, причем только в семи - восьми строках кадра - как удар по голове...

Вообще-то для таких устройств как GBS совершенно по барабану число пикселей в строке. У него внутри есть свой тактовый генератор и GBS сам решает, где во входной строке пиксели.
Вот на что ему не по барабану - так это на равномерность поступления синхроимпульсов. Если синхроимпульсы не идут через строго одинаковые интервалы (64 мкс для горизонтальных и 20 мс для вертикальных), то картинку будет "срывать".

Мне кажется, что проблема тут в переключении режима Т32/Т64. Синхронизация в этих режимах совершенно одинаковая, но в сам момент переключения может сбиваться работа дисплейного контроллера. ЭЛТ монитор в силу инерционности развертки обычно не успевает на это среагировать (хотя иногда успевает и это видно), а GBS, видимо, реагирует всегда.

electroscat пишет:

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

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

4

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

avivanov76 пишет:

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

Благодарю за ваш ответ !
Да, у меня и такие мысли были тоже, что при переключении режима вероятно происходит какая то задержка синхронизации, или типа того. GBS вообще очень плохо реагирует на подобные вещи.
Сам не разберусь, но один хороший человек взялся, говорит что уже нашел прерывания, и вполне сможет убрать переключения. Опубликую тут если получится, мало ли может у кого то еще проблемы подобные возникнут.

5

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

Инерционность CRT-мониторов в отношении развёртки - это свойсто, заложенное специально для того, чтобы уменьшить влияние помех (т.е. чтобы одиночная помеха не ломала картинку). Причем в старых телеках (на ха11) это регулировалось перемычкой (видеомагнитофон / эфир). Если в современных платах-конверторах этой логики нет - это само по себе не совсем правильно.

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

2electroscat: откуда ты берёшь синхронизацию ? Всё только с "RGB"-коннектора Агата или с "Видео" ?
Нет ли какого -то подмешивания видеосигнала в синхро ?

6

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

Voldemar0 пишет:

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

Речь идет про девятку и систему the BEST (http://agatcomp.ru/agat/Software/OsDos/TheBest.shtml).
На семерке действительно синхроимпульсы генерируются счетчиками, при смене режима ДК их работа не меняется и срывов синхронизации там быть не может.

Но в девятке синхроимпульсы генерируются автоматами, сделанными на ПЗУ. Одновременно эти автоматы делают кучу другой работы, поэтому их работу приходится менять при переключении режима ДК. И иногда это загоняет их в неправильное состояние. Причем, это видно и на ЭЛТ тоже (картинка "прыгает").

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

7 Отредактировано Voldemar0 (22-02-2024 15:06)

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

> И иногда это загоняет их в неправильное состояние. Причем, это видно и на ЭЛТ тоже (картинка "прыгает").

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

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

8

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

Voldemar0 пишет:

electroscat: откуда ты берёшь синхронизацию ? Всё только с "RGB"-коннектора Агата или с "Видео" ?
Нет ли какого -то подмешивания видеосигнала в синхро ?

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

9

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

В форуме телеграмма товаришь Jeeno Laretti исправил обе программы, теперь они не переключают режим с T32 на Т64 за несколько строк до конца кадра, а потом в конце кадра обратно. Ну и соответственно не выводят текст, он и это тоже убрал. И теперь все работает исключительно. Ему пришлось повозиться с часиками, ибо они были с защитой от записи, пересчитывалась контрольная сумма. Но теперь все отлично работает на GBS.
Видос с рабочими часиками можно посмотреть по ссылке:

https://t.me/agatcomp/22519

Сами программы исправленные вот тут можно скачать, в HFE, для Готека: https://disk.yandex.ru/d/xreeQhHXe5ObiQ и часики там же в AIM.

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

10

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

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

А то боюсь новая байка может родится :)

11 Отредактировано AlexBel (23-02-2024 09:09)

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

garnizon пишет:

А то боюсь новая байка может родится :)

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

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

P.S. Даже сам заголовок "Реально ли исправить софт Бадера, чтобы не дергался экран GBS82XX ?" подразумевает, что нужно что-то исправлять. А зачем исправлять, что там не так?

12

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

garnizon пишет:

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

А то боюсь новая байка может родится :)

Тут все-таки важно с водой ребенка не выплеснуть :)
1) Изначально была взята оригинальная программа и реальный Агат, все это подключили к GBS и возникла проблема - срывы синхронизации.
2) В программе убрали переключение режимов и проблема исчезла.

Если бы все работало отлично, то никакие патчи ничего бы не изменили. Значит, как минимум, проблема существует.
Я сам время от времени наблюдаю такие "уплывания" картинки на своей плате и на платах, которые попадают на ремонт. Значит, это не проблема одного конкретного Агата.
Ну и если посмотреть схему, то можно даже найти конкретное место, которое может вызывать сбои в работе ДК.

Для начала надо вспомнить, как работает ПЗУ. Это матрица ячеек. Когда на ПЗУ подается адрес, с помощью дешифратора выбирается строка матрицы, а с помощью мультиплексора - столбец. В тот момент, когда входной адрес меняется, предыдущие строка и адрес выключаются, а новые включаются.

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

Если в двух словах, то ПЗУ - это генератор "иголок". И чтобы схема с использованием ПЗУ надежно работала, нужно соблюдать определенный порядок:
1) подать адреса на вход ПЗУ
2) выждать время, пока переключаются дешифраторы и мультиплексоры (оно указано в даташите на ПЗУ)
3) если данные с выхода ПЗУ должны поступать на его вход, то нужно их сначала записать в регистр, чтобы разнести во времени момент появления надежных данных на выходе ПЗУ и момент подачи их обратно на его вход

Так, теперь к дисплейному контроллеру :)
Он в девятке весь собран на автоматах, использующих ПЗУ.
Но это полбеды. Беда в том, что ДК имеет свой тактовый генератор, а ЦП - свой (режим Apple не рассматриваем!).
Теперь смотрим схему. На входы 1, 2, 3 ПЗУ D84 и входы 1, 2, 3, 4 ПЗУ D85 приходят сигналы с регистра управления ДК (РУПДК), а на входы 23 - сигнал ПА. А на входы 5-8 приходят сигналы с регистра D87.

Сигналы с регистра D87 в режиме Агат привязаны к тактовому генератору 10.5 МГц. А сигналы с РУПДК привязаны к тактовой частоте ЦП (14.3/14 МГц). В результате:
1) момент изменения режима ДК никак не синхронизирован по времени с работой автомата
2) этот момент все время плавает. Между моментом, когда процессор запишет данные и моментом, когда регистр D87 защелкнет данные с выхода ПЗУ может пройти меньше времени, чем требуется ПЗУ. И в этом случае в регистр попадет мусор. Потом этот мусор попадает на вход генераторов синхронизации D61 и D62 и вот мы получаем сбой синхронизации.

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

Кстати, тому, что "всё работает отлично" может быть объяснение. Не исключено, что разработчики в каких-то поздних версиях девятки эту проблему пытались "лечить". Странно только, что от этих версий не осталось ни схем, ни прошивок.

13

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

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

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

14 Отредактировано LeoN (04-03-2024 17:21)

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

Чтобы проверить версию Алексея предлагаю следующий мод.
Сигналы РВИ1 (D60-4) и РВИ2 (D60-7) оторвать от шины 6+7, завести на два триггера (один корпус ТМ2), триггеры затактировать также как и D87-11 (и D88-11), то есть пиксельклоком. Асинхронные входы RS триггеров через резистор 1-10кОм на +5В. А уж выходы триггеров обратно в шину 6+7.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

15

Re: Реально ли изменить софт Бадера, чтобы не дергался экран GBS82XX ?

Направление правильное, но там больше, чем 2 сигнала. Если буферизировать только сигналы 6 и 7, то вообще ничего не изменится: в программе используется переключение между режимами Т32 и Т64, а оно делается 19 ногой D56 (она приходит на вход 1 D84 и вход 2 D85). Ну и выход 12 D56 тоже идет на D85 (вывод 1).

Так что я бы взял регистр на 4 бита (ТМ8, ТМ9).