26

Re: Разделение памяти между процессором и видеоконтроллером

> Кстати, уже позже я узнал, что нечто подобное сделали для ZX-Spectrum - к нему подключается "малина"

А как подключили -то ? Адаптер какой-то или прям gpio завели на шину спека ? Вроде у малины gpio не сильно много... 16 +8 + служебку слушать.

Если даже по прерываниям работать, это надо слушать доступ ко всей подряд памяти,
выбирать адреса видео и схватывать налету значения ?
В малине код на C или на асме писали? не на перле же ?

27 Отредактировано AlexBel (28-11-2019 13:18)

Re: Разделение памяти между процессором и видеоконтроллером

Я подробностей не знаю, видел случайно в каком-то ролике, но, так как меня это не заинтересовало, уточнять детали не стал. Про "малину" я просто услышал, когда бегло это видео просматривал. Вот оно: https://youtu.be/X2eV-a1ATCU

28 Отредактировано LeoN (28-11-2019 15:00)

Re: Разделение памяти между процессором и видеоконтроллером

Более того, на Яблочке тоже такое есть: #1, #2.

Если на двухпортовке в виде отдельной карточки в слот:
1. При переключении на новую текстовую/графическую страницу получаем мусор до перерисовки экрана.
2. На слоте надо отслеживать запись не только всего адресного пространства памяти, но и регистр режима ДК $C7xx, регистры маппера $C1xx, Яблочные регистры $C05x. На слот это все прозрачно транслируется? Надо смотреть схему.
3. Новый ДК будет по определению не синхронизирован с основным, а значит "привет" эффектам с использованием таймерных прерываний (только на новом ДК!)...

PS. Не ПЛИС, а малинка и подобное (программная эмуляция железа в родном железе) - это резиновая женщина, ИМХО... :(

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

29

Re: Разделение памяти между процессором и видеоконтроллером

LeoN пишет:

Если на двухпортовке в виде отдельной карточки в слот:
1. При переключении на новую текстовую/графическую страницу получаем мусор до перерисовки экрана.

Точно так же, как и со штатным видеоконтроллером "Агата", так же, как и с любым другим.

LeoN пишет:

2. На слоте надо отслеживать запись не только всего адресного пространства памяти, но и регистр режима ДК $C7xx, регистры маппера $C1xx, Яблочные регистры $C05x. На слот это все прозрачно транслируется? Надо смотреть схему.

Достаточно присутствия на слоте сигналов процессора.

LeoN пишет:

3. Новый ДК будет по определению не синхронизирован с основным, а значит "привет" эффектам с использованием таймерных прерываний (только на новом ДК!)...

Ну, возможно, для кого-то это важно. Лично для меня это не потеря вообще.

30 Отредактировано LeoN (28-11-2019 17:14)

Re: Разделение памяти между процессором и видеоконтроллером

AlexBel, ИМХО, это совершенно очевидные вещи, и меня удивляет, что ты этого не видишь... :(

AlexBel пишет:

Точно так же, как и со штатным видеоконтроллером "Агата", так же, как и с любым другим.

Ты не понял о чем речь...
Представь, ты включаешь АГАТ с новым ДК в таком слотовом исполнении. Без дисководов. Включается режим 2Т, Монитор переходит в режим диалога. Ты хочешь проверить работу ДК в режиме МГВР - обращаешься по $C703. Родной ДК переключается в МГВР и отображает содержимое нулевой страницы физической памяти: мусор по включению питания. Одновременно новый ДК также включается в МГВР - и должен показывать также содержимое нулевой страницы прозрачной копии физической памяти. А прозрачной записи-то в эту страницу еще не было... А содержимое после включения питания однозначно разное... Экраны двух ДК будут совпадать?

Это только один из примеров. Да, практическая ценность в этом стремится к нулю. Однако, истина остается истиной. Быть может, где-то в какой-то проге этот момент и проявится знАчимым.

AlexBel пишет:

Достаточно присутствия на слоте сигналов процессора.

Наверное, да (при условии, что все транслируется на слоты прозрачно).

Отслеживание регистра режима ДК - очевидно.

Аналогично и по Яблоку.

По мапперу: ДК умеет экранизировать в графрежимах всю физическую память 128КБ (все 16 страниц), в текстовых режимах только первые 64КБ. И разные страницы могут быть подключены на разные сегменты. Поэтому новому ДК нужно для себя дублировать маппер, чтобы правильно отслеживать прозрачную запись в страницы копии физической памяти из сегментов адресного пространства процессора.

AlexBel пишет:

Ну, возможно, для кого-то это важно. Лично для меня это не потеря вообще.

Ох, сколько раз на форуме ты менял свои мнения и суждения... ;)

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

31

Re: Разделение памяти между процессором и видеоконтроллером

1. Если записи в экранную страницу не было и там мусор, то какая разница, какой это мусор - памяти "Агата" или памяти дополнительного видеоконтроллера? Это называется неактуальная информация. Чем это чревато?

2. Как это - "при условии, что все транслируется на слоты прозрачно"? Я предполагал, что мы говорим об "Агате", а с его слотами всё, насколько я знаю, понятно. Какие могут быть условия?

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

32 Отредактировано Voldemar0 (29-11-2019 06:04)

Re: Разделение памяти между процессором и видеоконтроллером

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

Мне известно две ошибки в прогах, которые приводили к зависимостям от начального состояния ОЗУ: цвет курсора в Агат-Авторе при первом обращении к процедуре ввода (цвет задавался только в режиме редактирования и если обратиться к процедуре ввода до входа в редактирование текста то курсор был непредсказумого цвета). Также была какая-то ошибка в ИКП, в поиске принтера: если ячейки принтера нет, события развивались в зависимости от какой-то ячейки в ZP. Ненормальных, которые бы расчитывали на предсказуемое заполнение (видео)озу, не было.

Другое дело, что иногда, например, прога сперва чистила страницу, потом переключала c7xx, и только потом что-то рисовала на странице. Поэтому при эмуляции нужно будет держать на ДопДК полный объём базового озу. Что, по нынешним меркам, не так уж чтобы много.

А вот нужен ли мапер озу - дело не такое простое как кажется.
У семёрки мапер не нужн - базовые 32 кб на своих адресах всегда.
У девятки никто уже архитектуру IOSub не менял и там, во всяком случае текстовый режим, всегда мапиться при выводе
на те же адреса, что и в семёрке. Иначе придётся переделывать одну мелкую процедурку, которая расчитывает адрес строки в памяти из номера строки на экране и адреса страницы. Либо процедурку, которая расчитывает адрес начала страницы из программног о переключателя страницы. А кому оно надо ? Не думаю, что и в игрушках кто-то сильно напрягался.

Вообще, прог, которые бы использовали маппер девятки, не так уж много. Этим занимались, в основном, операционки и отдельные крупные проги, типа копировщиков. А игрушки, например, были тянуты с эпла или семёрки и им вполне хватало ОЗУ без переключений.

Насчёт совмещённых режимов ДК: вроде на этом форуме или ещё раньше - где-то были уже сообщения о том, что на девятках разных версий эти режимы работали по разному (что-то там с периодом прерываний). И, вроде бы, между семёркой и девяткой есть отличия. Реальные проги, которым это было нужно, были на семёрке, под Рапирой. Так что это можно выкинуть, практически ничего не теряя.

C1xx, С7xx, C05x - конечно они есть на слоте - кто бы и зачем их фильтровал на материнке ?
Как бы работала ячейка 121, если бы ей были недоступны C05x ?
Да и модули доппамяти ожидают полные шины адреса и данных для работы.

33 Отредактировано AlexBel (29-11-2019 06:50)

Re: Разделение памяти между процессором и видеоконтроллером

Конечно, дополнительный видеоконтроллер должен иметь ОЗУ, полностью соотвествующую по объёму ОЗУ компьютера, из которого может выводиться изображение и дубликаты всех связанных с видеовыводом служебных регистров.
Запись информации в память дополнительного видеоконтроллера происходит всегда, независимо от того, активна соответствующая видеостраница или нет. При выполнении этих условий дополнительный видеоконтроллер будет работать аналогично штатному (кроме синхронизации) в любой ситуации.

Вопрос в том, нужно ли реально такое устройство? Если кто-то приобретает "Агат", то, думаю, он знаком, хотя бы приблизительно, с его характеристиками и подготовит соответствующее устройство видеовывода. Если даже нужно использовать VGA или HDMI, то GBS8200 стоит прмерно 1300 рублей. Если нужно HDMI, дополнительно конвертер будет стоить ещё 250р. Итого - примерно 1500-1600 рублей для подключения "Агата" по VGA/HDMI. И это я говорю о реально существующих устройствах, которые легко заказать на "Али". Дополнительный видеоконтроллер потребует разработки схемы, платы, HDL, заказ платы, сборка, отладка... Это время и деньги, деньги, уверен, не меньше, чем упомянутая выше сумма. Если, конечно, интересно просто разработать такое устройство, тогда, конечно, всё вышесказанное неважно :)   Конечно, карта, вставляемая в слот, удобнее в использовании и занимает меньше места, но, во-первых, она занимает при этом слот, что, иногда, может помешать, а во-вторых, при размерах "Агата" лежащая рядом GBS8200, думаю, ситуации не усугубит.
Есть ещё вопрос качества изображения, но об это, пока что, не буду. Я постараюсь на выходные подключить "Агат" к телевизору через GBS8200 и через дополнительный конвертер в HDMI, сделать фото с экрана и выложить сюда.

34

Re: Разделение памяти между процессором и видеоконтроллером

>  то GBS8200 стоит прмерно 1300 рублей.
Но нужно держать в зубках паяльник, чтобы сделать кабели для агата. И, возможно, потом ещё подстроить эту плату.

>  Если нужно HDMI, дополнительно конвертер будет стоить ещё 250р.
Купил я такой, только наоборот (hdmi -> svga), но он кой где работает, кой где- нет. А одна железка просто валится при его подключении - вроде как напряг просаживается, то ли кз из-за косяков распиновки, то ли что-то ещё, но не из-за питальник железки - он ещё ампер-два в запасе имеет.


Цели две: да, просто сократить место. И число проводов и, соответственно, сложность сборки агата (у меня он хранится разобранным). Слот, даже в набитой семёрке, есть свободный. И ещё - возможно, некоторое упрощение ремонтов.

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

35 Отредактировано AlexBel (29-11-2019 18:36)

Re: Разделение памяти между процессором и видеоконтроллером

Тому, кто приобретает "Агат" для использования, а не для заполнения кладовки или перепродажи, в любом случае нужно уметь держать в руках паяльник, чтобы сделать кабели. К тому же, моё мнение, тот, кто обзаводится таким компьютером, уже имеет навыки в области пайки :)

Тот, что наоборот - это совсем другое дело, он питается от HDMI, где нагрузочная способность невелика. Решается дополнительным питанием. А те, что я купил (VGA>HDMI) работают от внешнего питания, им источник на +5В нужен в любом случае.

Подключил "Агат" по HDMI. Путь сигнала: "Агат-9" > GBS-8200 > VGA2HDMI > TV
Использовано разрешение 1024х768, режим 4:3 (нативное разрешение телевизора 1920х1080). Лично мне результат понравился. Правда, не нашёл, как у "девятки" включить инверсный режим текста 64х32, может, там такого вообще нет.

Фотографии сделаны стареньким фотоаппаратом с разрешением 1600х1200. Вот одна, загрузил на сайт, остальные на "Яндексе", для экономии места на сервере:

Spoiler

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

https://yadi.sk/i/f5JDnXiEYuPmvQ
https://yadi.sk/i/3mvkXP8Kn_L-wg
https://yadi.sk/i/WZgdH5i055Rcfw
https://yadi.sk/i/esnZfMTpGZdSZg
https://yadi.sk/i/6Y4zkJVHOjhccQ
https://yadi.sk/i/c7HWn_Jogv_p0A
https://yadi.sk/i/wKmIY65eCABPGw

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

Post's attachments

Attachment icon S2500199.JPG 529.28 kb, 409 downloads since 2019-11-29