PDA

Просмотр полной версии : "Океан-240": видеовыход



tnt23
09.11.2018, 09:27
Картинка Для Привлечения Внимания: так выглядит "Турбо-Монитор" на студийном мониторе Sony PVM-14.

http://sensi.org/~tnt23/ok240/ok240_video_signal.png

Ссылки для медитаций:

http://nauchebe.net/2014/05/formirovanie-televizionnyx-signalov-v-sxemax-na-mikrokontrollere/

HardWareMan
09.11.2018, 11:45
А так ли он студиен этот твой Сони ПВМ-14?
http://jpegshare.net/images/72/a0/72a046b8be2cce3816d34681dd14e9db.png

tnt23
09.11.2018, 12:24
На этом же мониторе BBC Micro показывает шикарно.

HardWareMan
09.11.2018, 12:49
Ну, у меня 32ВТЦ шикарно показывает Денди и Спецтрум. Так что тоже не показатель. :)

В любом случае, в строке нет задней площадки.

tnt23
09.11.2018, 14:36
Ну, у меня 32ВТЦ шикарно показывает Денди и Спецтрум. Так что тоже не показатель. :)

В любом случае, в строке нет задней площадки.

А как 32ВТЦ показывает "Океан"? :)

Про заднюю площадку вот мне тоже показалось странновато.

HardWareMan
09.11.2018, 15:49
tnt23, я могу узнать это если ты мне его подаришь!

tnt23
09.11.2018, 16:21
tnt23, я могу узнать это если ты мне его подаришь!

Подставляй полу!

https://upload.wikimedia.org/wikipedia/commons/0/0a/The_Great_Wave_off_Kanagawa.jpg

tnt23
09.11.2018, 22:55
Так-то, если резисторы R19-R21 выкрутить в ноль, картинка становится более-менее пристойная (режим 512x256 моно).

http://sensi.org/~tnt23/ok240/mono.jpg

perestoronin
10.11.2018, 02:55
R19-R21 выкрутить в ноль
В схеме косяк, видеовыход нужно промоделировать и скорректировать и саму схему и номиналы деталей.
Если в лом, то можно позаимствовать подобные схемы из новых клонов БК-0011М и Спектрума Профи

L Juriy
10.11.2018, 07:06
Проверил схему на соответствие журнальной, полностью совпадают.
Проверил на собранной плате(старой), там все тоже соответствует схеме и номиналы стоят как в схеме.
Я планирую подключать EGA монитор, поэтому после ПЗУ пока не ставлю ничего.
Новую плату не допаял, жду детали, вот придут тогда и проверим выход на этот монитор.

tnt23
10.11.2018, 11:11
Проверил на собранной плате(старой), там все тоже соответствует схеме и номиналы стоят как в схеме.

А старую плату к чему подключали?

perestoronin
10.11.2018, 14:15
Проверил схему на соответствие журнальной, полностью совпадают.
я про некорректную журнальную схему писал
ошибки в проектировании схемы Океана
предлагаю присмотреться к аналогичным узлам у Профи Спектрумовского и к БК-0011М. Последняя как раз тоже имеет ПЗУ палитр на видеовыходе. Можно подсмотреть как там согласование выходов РТ4 сделаны со входами транзисторными.

L Juriy
10.11.2018, 16:04
tnt23,
Юность Ц401 с переделанным входом.
А ч/б как обычно "колокольчик", но с раздельными видео и ССИ, КСИ.

tnt23
10.11.2018, 23:37
Поразглядывал каскады формирования видео в БК-0011М, много думал.

66883

В принципе, если в наших двухтактных выходах выбросить нижнее плечо на КТ361, получится обычный эмиттерный повторитель.



Пока остановился на таком варианте модификации выходов R, G и B:


заменил перемычками резисторы R19-R21 (в оригинале 1К6)
резисторы R13-R15 заменил на 3К3 (в оригинале 5К1)
базы транзисторов посадил на землю через резисторы 510 Ом


Выходы ч/б VIDEO и синхросмеси не трогал. В ч/б VIDEO по-прежнему отсутствует задняя полка, с этим надо будет разобраться позже.

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

L Juriy
11.11.2018, 10:54
tnt23,
Мне внести эти изменения на плату, или еще подождать немного до окончательного варианта.
А может сделать так. Выбросить все эти формирователи с платы, а вывести сигналы на разьем.
На него (разьем ) добавить питание и весь огород(если он нужен) городить на доп плате.
Все сигналы вывести раздельно.(R, G, B, Vsyn, Hsyn, Video).

tnt23
11.11.2018, 19:41
L Juriy, думаю, формирователи лучше на плате оставить. Все-таки реплика, более-менее точная и законченная. Чтобы подключать к ТВ без дополнительных плат.

tnt23
18.11.2018, 17:03
Откопал стюардессу:





заменил перемычками резисторы R19-R21 (в оригинале 1К6)


Оказалось, что с такими номиналами совершенно не работает цвет фона. Новая вводная:


R19-R21 - 220R

perestoronin
20.11.2018, 00:54
совершенно не работает
Может в симулятор электронных схем участок схемы с РТ4 c палитрой, резисторами "ЦАП" и транзисторными каскадами согласования, эквивалентом входа монититора/телевизора попробуете загнать и замучить до победного, после чего рабочую теорию из симулятора на железке проверить и сообщить какие номиналы резисторов по факту нужны и возможно какие изменения в схеме требуются.

tnt23
20.11.2018, 09:12
Может в симулятор электронных схем участок схемы с РТ4 c палитрой, резисторами "ЦАП" и транзисторными каскадами согласования, эквивалентом входа монититора/телевизора попробуете загнать и замучить до победного, после чего рабочую теорию из симулятора на железке проверить и сообщить какие номиналы резисторов по факту нужны и возможно какие изменения в схеме требуются.

Так я это уже проделал в первом приближении, разве что схему формирования полного ч/б ТВ сигнала не учитывал. В принципе все выглядело красиво, кроме выходного размаха напряжения:


http://sensi.org/~tnt23/ok240/video_sim.png

Более того, вчера я убил очередной вечер, играясь с номиналами, и в результате опять вернулся к штатному журнальному варианту. Только придавил уровни RGB после усилителей сильно.

PS В Тест-ПЗУ второй графический тест, который рисует монохромную шахматную доску, пошагово окрашивает ее темные шашечки в цвета фона

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

PPPS а "Инв.зеленый" у меня отображается как "черные буквы на синем".

tnt23
22.11.2018, 20:06
Вход видеосигнала черно-белого ТВ соединяется с выходом VIDEO кабелем, имеющим волновое сопротивление 50...150 Ом. Амплитуда сигнала составляет 3 В (двойной размах) (ее можно уменьшить, установив резистор 50...100 Ом между выходом VIDEO и общим проводом).

И все-таки что-то не так с формированием видео. Попробую сделать несколько слайдов.

tnt23
24.11.2018, 18:37
Верхняя половина экрана - монохромный режим (мелкие кудряшки). Лаконичная палитра из двух цветов, варианты перебираются каждые 16 строк растра.
Нижняя половина экрана - цветной режим (бигуди покрупнее). Цветов на строчку растра уже заметно больше.
Возможность отслеживать обратный ход луча - бесценно.

http://sensi.org/~tnt23/ok240/retrace.png

(А еще же ведь есть прерывания, и вообще маячит гигаскрин)

BYTEMAN
24.11.2018, 20:47
Возможность отслеживать обратный ход луча - бесценно.

попахивает коммодорщиной)

tnt23
24.11.2018, 21:01
Да не только коммодорщиной, даже спектрумизмом где-то!

MacBuster
24.11.2018, 23:23
Возможность отслеживать обратный ход луча - бесценно.
Прямо вот так - именно момент начала обратного хода луча в каждой строке?

tnt23
25.11.2018, 09:52
Прямо вот так - именно момент начала обратного хода луча в каждой строке?

Строчный и кадровый сигналы гашения заведены на линии 0 и 1 порта B с адресом 41h. Читая их, можно узнавать момент начала невидимой части строки и кадра с некоторой погрешностью. А если повезет, то и их окончания.

L Juriy
16.01.2019, 19:59
tnt23, У меня вопрос по РТ4.
У тебя которая стоит, журнальная или от Az mastera.?
В протеусе что то не нормально работают, или я где то накосячил.

tnt23
16.01.2019, 20:09
L Juriy, у меня журнальная, см.приложение.

Прошивка от AZMaster на экране давала очень странную картинку, с пикселями в области бордюра и прочим мусором.

tnt23
31.01.2019, 22:52
Все же в эмуляторе цвета перепутаны:

67923

ivagor
01.02.2019, 09:10
У меня давно есть вопрос. Возможно он глупый и интересный только мне, но надеюсь, что на него просто ответить. На картинках (http://azmaster.narod.ru/Ocean-240/Magazine/MPSS_1986_4_75.jpg) параметры изображения соответствуют пиксельклоку 12.5/6.25 МГц. Но откуда берутся такие частоты? На схеме есть генератор на 12 МГц, в тексте и на других картинках параметры соответствуют частоте 12 МГц. На рисунках 4 и 5 ошибка или я проглядел источник частоты 12.5?

tnt23
01.02.2019, 11:13
ivagor, 40.96мкс - это длительность вывода видимой части растра (собственно 32 байтов в строке видеоОЗУ, не учитывая всякие полки до и после и обратный ход). Так-то генератор там на 12МГц ровно (у нервных вроде меня 12.228МГц).

Раз уж ты неосторожно сюда забрел, давай тебя помучаем про бейсики для "Океана", а потом еще про однобитный звук?

svofski
01.02.2019, 12:01
Раз уж ты неосторожно сюда забрел, давай тебя помучаем про бейсики для "Океана", а потом еще про однобитный звук?
Все корабли легко плывут по морю-окиану, но «Сокол» – корабль Садко, не может сдвинуться с места. Напрасно Садко велит кидать в море сперва пшеницу, потом – бочки серебра и золота. Корабль не двигается с места, и Садко понимает, что Морской Царь требует человеческой жертвы.

ivagor
01.02.2019, 12:02
Помучать меня про бейсики и звук можно, но все же я пока не понял насчет пиксельклока.

ivagor, 40.96мкс - это длительность вывода видимой части растра (собственно 32 байтов в строке видеоОЗУ, не учитывая всякие полки до и после и обратный ход). Так-то генератор там на 12МГц ровно (у нервных вроде меня 12.228МГц).
Попробую расписать подробнее, что именно я не понял.
картинка 4: 1.28 мкс - это 16 точек при пиксельклоке 12.5 МГц или 8 при 6.25 МГц
картинка 5: 40.96 мкс - это 512 точек при пиксельклоке 12.5 МГц или 256 при 6.25 МГц
Откуда взялись именно такие цифры? Скорее всего ошибка на картинках 4 и 5? На других картинках и в тексте цифры соответствуют частотам кратным 12 МГц. Разница все же не такая и маленькая. Например 512 точек при 12 МГц будет 42.67 мкс (как на векторе) - разница 1.71 мкс с картинкой 5.
Просто есть еще смежный вопрос, связанный с выборкой видеоданных из памяти и доступом процессора к памяти.
Пусть все пляшет от 12 МГц. Fcpu=12/5=2.4 МГц. Tcpu=416.67 нс. Fpix512=12 МГц. Tpix512=83.33 нс. Tpix512*512/Tcpu=102.4 такта, т.е. нацело не делится. Доступ проца и видеоконтроллера к озу асинхронный (судя по диаграммам вроде нет)?

tnt23
01.02.2019, 12:11
Все корабли легко плывут по морю-окиану, но «Сокол» – корабль Садко, не может сдвинуться с места. Напрасно Садко велит кидать в море сперва пшеницу, потом – бочки серебра и золота. Корабль не двигается с места, и Садко понимает, что Морской Царь требует человеческой жертвы.


У далеких немских стран
Есть, ребята, окиян.
По тому ли окияну
Ездят только басурманы;
С православной же земли
Не бывали николи
Ни дворяне, ни миряне
На поганом окияне.
От гостей же слух идет,
Что девица там живет;
Но девица не простая,
Дочь, вишь, месяцу родная,
Да и солнышко ей брат.
Та девица, говорят,
Ездит в красном полушубке,
В золотой, ребята, шлюпке
И серебряным веслом
Самолично правит в нем;
Разны песни попевает
И на гусельцах играет...

- - - Добавлено - - -


Помучать меня про бейсики и звук можно, но все же я пока не понял насчет пиксельклока.

Попробую расписать подробнее, что именно я не понял.
картинка 4: 1.28 мкс - это 16 точек при пиксельклоке 12.5 МГц или 8 при 6.25 МГц
картинка 5: 40.96 мкс - это 512 точек при пиксельклоке 12.5 МГц или 256 при 6.25 МГц
Откуда взялись именно такие цифры? Скорее всего ошибка на картинках 4 и 5? На других картинках и в тексте цифры соответствуют частотам кратным 12 МГц. Разница все же не такая и маленькая. Например 512 точек при 12 МГц будет 42.67 мкс (как на векторе) - разница 1.71 мкс с картинкой 5.
Просто есть еще смежный вопрос, связанный с выборкой видеоданных из памяти и доступом процессора к памяти.
Пусть все пляшет от 12 МГц. Fcpu=12/5=2.4 МГц. Tcpu=416.67 нс. Fpix512=12 МГц. Tpix512=83.33 нс. Tpix512*512/Tcpu=102.4 такта, т.е. нацело не делится. Доступ проца и видеоконтроллера к озу асинхронный (судя по диаграммам вроде нет)?

Я склонен думать, что ошибка на картинках. При пиксельклоке 6.5МГц тактовая должна была бы быть 13.0МГц. Не знаю, существовали ли в природе СССР доступные кварцевые резонаторы на такие частоты (хотя 6.5МГц похожа на ПЧ звука в советском же телевидении (поправьте меня) и можно было раздуть кварц на гармонике? во я гоню). Возможно также, что цифры на картинках взяты из расчетных данных, где для простоты могли оперировать кратными степеням двойки частотами.

Про асинхронный доступ не скажу, но вроде они доступаются к видеопамяти по очереди. Там еще странно написано в статье, что видеопроцессор притормаживается при конфликте доступа с процессором, но я это плохо понимаю.

L Juriy
01.02.2019, 12:24
Наконец то считал свою РТ4. Она полностью совпала с журнальной.
Я грешил что она сдохла, но оказывается ошибался.
Тест запускал и тишина. Подозреваю ВВ55 , на ней все время висячие выводы, а их не должно быть.
Пока отложил, другими делами занимаюсь.

ivagor
01.02.2019, 12:28
Не, 6.5 там не фигурирует, 6.25 (12.5/2).

У меня есть дикое предположение, надеюсь неправильное, что некоторые точки при выводе пропускаются. Тогда все получается легко и просто.
Если выборка видеоданных 2 байта за 3 такта процессора, то
1) Tсpu*3=1.25 мкс
2) 1.25 мкс/Tpix512=15 точек. Т.е. при такой прикидке в режиме 512 точек не успеваем показать 1 точку из 16. В режиме 256 покажем 7 с половиной точек.

tnt23
01.02.2019, 13:42
L Juriy, у меня тест в самом начале не шел дальше, так как была неисправна ВВ55, на которую заведен обратный ход луча. В ожидании этого самого луча тест не двинется дальше темного экрана.

- - - Добавлено - - -



У меня есть дикое предположение, надеюсь неправильное, что некоторые точки при выводе пропускаются. Тогда все получается легко и просто.
Если выборка видеоданных 2 байта за 3 такта процессора, то
1) Tсpu*3=1.25 мкс
2) 1.25 мкс/Tpix512=15 точек. Т.е. при такой прикидке в режиме 512 точек не успеваем показать 1 точку из 16. В режиме 256 покажем 7 с половиной точек.

Это очень смелая гипотеза. Пропущенные при выводе точки быстро бы себя обнаружили на границах байт. (В цветном режиме, действительно, какая-то паразитная полоска в конце видимой части строки видна, но это может быть что угодно).

А откуда взялась длительность такта процессора, равная 0.5мкс?

ivagor
01.02.2019, 13:53
Это очень смелая гипотеза. Пропущенные при выводе точки быстро бы себя обнаружили на границах байт. (В цветном режиме, действительно, какая-то паразитная полоска в конце видимой части строки видна, но это может быть что угодно).

А откуда взялась длительность такта процессора, равная 0.5мкс?
Такт процессора Tcpu=1/2.4e6=416.67 нс

Есть идея, как можно сочетать целые такты процессора и кратность 8 точкам - надо чередовать циклы выборки разной длительности.
Например чередование циклов
1) 6 тактов процессора (за которые нужно выбрать 4 байта видеоинформации)
и
2) 10 тактов процессора (за которые нужно выбрать 6 байт видеоинформации)
Tcpu*16/Tpix=80 точек, т.е. за 16 тактов процессора мы покажем ровно 80 точек 512 (или 40 точек 256)
512 точек при этом ровно на такты процессора не разобьем, но это и не обязательно, только надо иметь отдельный способ узнать, где у нас можно начинать показывать точки и где надо заканчивать их показывать с разрешением не хуже Tpix512*2=166.67 нс. Такую инфу можно хранить, например, в пзу.

tnt23
01.02.2019, 14:07
Я только не пойму, зачем такие сложности с процессором. В моем представлении видеопроцессор - обычно довольно тупая схема с кучей счетчиков, формирующая ворох клоков для разверток, регистров-мультиплексоров и проч. И вывод на экран обычно тупой и незатейливый, читаем видео-ОЗУ подряд и подряд (16 бит за раз, между прочим), а в перерывах давая CPU доступиться к памяти.

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

- - - Добавлено - - -


Такую инфу можно хранить, например, в пзу

Такое ПЗУ там как раз есть, это РТ4 с пиксельклоком/2 и сигналами цвета и разверток на входах.

ivagor
01.02.2019, 14:19
Сложность в том, что если у нас доступ процессора и видеоконтроллера к озу не асинхронный и частоты кратные, тогда надо как-то сгруппировать целое число тактов в циклы. Можно не париться с группировкой в сравнительно малотактные циклы, если читать видеоинформацию на строку раньше в какое-нибудь промежуточное озу маленькой емкости, но вроде в океане это не так.

tnt23
01.02.2019, 14:33
Единственное место, куда данные из видео-ОЗУ читаются видеоконтроллером, это составной сдвиговый регистр в 16 бит на основе ИР16. Он тактируется клоком 6МГц, а значения в него записываются по сигналу V, который где-то формируется чуть загодя (пока не нашел) получается делением 12МГц на 16 (выход >=15 ИЕ7) и вполне может чуть задержаться в исключительном случае.

ivagor
01.02.2019, 15:22
Почитал, посмотрел и кажется понял.
Можно визуализировать примерно так:

VvvvvvvvvvvvvvvvVvvvvvvvvvvvvvvvVvvvvvvvvvvvvvvvVv vvvvvvvvvvvvvvVvvvvvvvvvvvvvvv
PppppPppppPppppPppppPppppPppppPppppPppppPppppPpppp PppppPppppPppppPppppPppppPpppp
!!!!!++++++++++!!!!!++++++++++!!!!!++++++++++!!!!! ++++++++++!!!!!+++++++++++++++
Строка v - это точки видеопроцессора (режим 512). V - условное место запроса на выборку из озу (каждые 16 точек режима 512).
Строка p - такты процессора. P - выделил начало такта.
Нижняя строка показывает, где запросы на доступ попадают на такты процессора (!). Видеоконтроллер читает параллельно из двух линеек озу, поэтому на каждый V достаточно одного чтения из одной линейки. Получается видеоконтроллеру нужно читать примерно 1 раз в 3 такта процессора (и 1 раз в 4 такта процессора) в рамках этого макроцикла (16 тактов процессора или 80 точек 512). Как я понял из статьи, если процессор обращается к памяти, видеоконтроллер ждет, но это не проблема т.к. в рамках микроцикла (3 или 4 такта процессора) окно доступа для него останется, процессору же память чаще одного раза в 3 такта не нужна.

- - - Добавлено - - -

Т.е. доступ проца к памяти в океане прозрачный.

tnt23
01.02.2019, 15:47
У меня интуитивное ощущение прозрачности доступа процессора тоже было, навеянное статьей и слегка подкрепленное результатами простого цикла вывода единичек-ноликов в порт спикера для формирования стабильных как скала 50КГц.

ivagor
01.02.2019, 15:57
tnt23, спасибо за обсуждение! Мне было интересно сравнить с вектором, где ту же проблему (сочетание пиксельклока 6/12 МГц и быстрой работы процессора) решили задиранием частоты процессора. В океане более цивильно, без оверклока проца, зато сложнее, т.е. дороже.

tnt23
01.02.2019, 16:00
ivagor, взаимное спасибо! я от силы треть твоих рассуждений смог одолеть, но неизменно поражен обстоятельностью подхода. Чтобы подвести наукоподобный итог теме, могу попытаться снять осциллограммы ключевых сигналов.

А про бейсики пройдем в соседнюю тему?

ivagor
01.02.2019, 16:06
А про бейсики пройдем в соседнюю тему?
Я готов, главное не возлагать на меня особых надежд :)

tnt23
01.02.2019, 16:31
ivagor, пройдемте! https://zx-pk.ru/threads/30047-mnogoobrazie-okeanskikh-bejsikov.html

ivagor
02.02.2019, 08:09
А я все не уймусь. Есть еще вопрос. Сколько тактов процессора в строке? Если брать 64 мкс, то это 768 точек режима 512, а целого числа тактов процессора не получается. Можно предположить, что их 152, а в точках, соответственно 760, тогда длительность строки 63.33 мкс. Есть еще неприятный вариант, что точек все же 768 (64 мкс), но тогда в строке нецелое число тактов процессора (153.6). При этом будет период 5 строк для повторов "паттерна смещений" тактов процессора относительно изображения.

- - - Добавлено - - -

Еще бы уточнить, сколько строк в кадре - 312?

tnt23
02.02.2019, 10:53
картинка 4: 1.28 мкс - это 16 точек при пиксельклоке 12.5 МГц или 8 при 6.25 МГц

Видеопроцессор заносит данные о точках в выходной сдвиговый регистр с частотой 12.0МГц/16=750КГц. Это дает 1.3(3)мкс на 16 точек в режиме 512.

- - - Добавлено - - -


Еще бы уточнить, сколько строк в кадре - 312?

Это разве что измерить период следования кадровых гасящих с поправкой на мой кварц 12.288.

ivagor
02.02.2019, 11:22
Видеопроцессор заносит данные о точках в выходной сдвиговый регистр с частотой 12.0МГц/16=750КГц. Это дает 1.3(3)мкс на 16 точек в режиме 512.
После того, как ты написал

Так-то генератор там на 12МГц ровно
я уже исходил из этого

Fpix512=12 МГц. Tpix512=83.33 нс.
И все цифры и прикидки дальше ориентированы на это.


Это разве что измерить период следования кадровых гасящих с поправкой на мой кварц 12.288.
Или написать программку, которая, например, будет менять палитру с периодом равным предполагаемой длительности строки. Если при этом граница цветов будет горизонтальная - длительность строки правильная. Если диагональная - неправильная. А если привязаться к развертке (по прерыванию вроде можно на океане?), то картинка будет неподвижная.

- - - Добавлено - - -


если привязаться к развертке (по прерыванию вроде можно на океане?)
Что-то я засомневался насчет океанского прерывания для данной задачи

tnt23
02.02.2019, 12:02
Или написать программку, которая, например, будет менять палитру с периодом равным предполагаемой длительности строки. Если при этом граница цветов будет горизонтальная - длительность строки правильная. Если диагональная - неправильная. А если привязаться к развертке (по прерыванию вроде можно на океане?), то картинка будет неподвижная.

Такое я пробовал (давно и бессистемно). Получал цветные полоски с диагональной границей цветов.

Прерываний напрямую от луча нет, есть только прерывание от программируемого таймера. Я просто в цикле ждал обратного хода луча по строке, читая соответствующий бит ВВ55, и менял палитру. Все же инструментальный способ надежнее :)

b2m
03.02.2019, 17:00
Все же в эмуляторе цвета перепутаны:
Это ещё вопрос, у кого перепутаны. Я делал по таблице из журнала МПСиС 86-4 стр. 76 (http://azmaster.narod.ru/Ocean-240/Magazine/MPSS_1986_4_76.jpg). Как минимум, сразу бросается в глаза порядок цветов в монохромном/одноцветном режиме, по журналу: белый, красный, зелёный, синий, голубой, желтый, инв.зелёный, чёрный.

Цвет фона я перепутал, согласен, но если он чёрный, то он чёрный в любом случае.

tnt23
03.02.2019, 17:10
Это ещё вопрос, у кого перепутаны. Я делал по таблице из журнала МПСиС 86-4 стр. 76 (http://azmaster.narod.ru/Ocean-240/Magazine/MPSS_1986_4_76.jpg). Как минимум, сразу бросается в глаза порядок цветов в монохромном/одноцветном режиме, по журналу: белый, красный, зелёный, синий, голубой, желтый, инв.зелёный, чёрный.

Цвет фона я перепутал, согласен, но если он чёрный, то он чёрный в любом случае.

На приведенном снимке один и тот же код, выполняемый на железке (клоне) и на эмуляторе в цветном режиме. На эмуляторе имеем цвета: черный (биты 00), красный (01), малиновый (10), белый (11). На железке: черный (00), красный (01), синий (10), голубой (11).

Можно было бы предположить, что в железе тоже перепутаны цвета, однако картинка OKEAH.240 выводится достоверно, с синим морем и красным флажком на трубе корабля.

ivagor
03.02.2019, 17:23
картинка OKEAH.240 выводится достоверно, с синим морем и красным флажком на трубе корабля.
Как или где можно увидеть эту картинку?

tnt23
03.02.2019, 17:27
Как или где можно увидеть эту картинку?

Здесь есть ссылка на видео - https://zx-pk.ru/threads/14176-kompyuter-quot-okean-240-quot.html?p=989926&viewfull=1#post989926

Как-то так:

67942

ivagor
03.02.2019, 17:44
Насчет рисунка корабля - он сам палитру не задает, какая палитра будет на момент его запуска, та и повлияет на результирующие цвета.

tnt23
03.02.2019, 17:47
Насколько помню, корабль на реале я запускал с палитрой по умолчанию. (Хотя вот сказал и засомневался; оригинальные цвета Монитора 240.2 были довольно вырвиглазные, и я точно что-то патчил в нем).

Anyway, вот картинка из эмулятора:

67943

ivagor
03.02.2019, 18:28
Насчет заливки корабля - крупноблочная выполняется прямоугольниками (Esc '1'), поэтому так быстро. Как конкретно дозаливаются оставшиеся уголки я не смотрел, но кроме линий и прямоугольников (и инверсных точек) других примитивов нет, т.ч. выбор невелик.

b2m
03.02.2019, 18:46
я точно что-то патчил в нем
Интересно, какое число у тебя в порт 0E1h выводится?

- - - Добавлено - - -

Anyway, на твоей картинке цвета в другом порядке, хотя я полагаю там в порт 0E1h числа подряд выводятся.

http://sensi.org/~tnt23/ok240/retrace.png

ivagor
03.02.2019, 18:47
Смотрю на картинку и в журнал (палитра 3) и то ли авторы не знали, что такое малиновый цвет или потом в прошивке РТ4 поменяли на синий (или голубой).

b2m
03.02.2019, 18:51
На приведенном снимке один и тот же код, выполняемый на железке (клоне) и на эмуляторе в цветном режиме.
Многое зависит от того, что у тебя в РТ-шке записано. Я же делал в соответствии с таблицей из журнала, хотя и там могли накосячить.

tnt23
03.02.2019, 18:53
Интересно, какое число у тебя в порт 0E1h выводится?

- - - Добавлено - - -

Anyway, на твоей картинке цвета в другом порядке, хотя я полагаю там в порт 0E1h числа подряд выводятся.


На картинке с бигудями точно не вспомню, исходника не сохранилось. Вроде там в порт 0E1h писались числа типа 41h, 42h и так далее.

- - - Добавлено - - -


Многое зависит от того, что у тебя в РТ-шке записано. Я же делал в соответствии с таблицей из журнала, хотя и там могли накосячить.

У меня в РТ4 прошит журнальный вариант. Коллега L Jury вычитал свою РТ4 и подтверждает идентичность журнальной прошивке.

b2m
03.02.2019, 18:54
В журнале только один цвет описан как инверсный - зелёный, а у тебя на картинке он синий. И вода, скорее всего, не синяя должна быть, а бирюзовая, т.е. синий+зелёный.

tnt23
03.02.2019, 18:57
В журнале только один цвет описан как инверсный - зелёный, а у тебя на картинке он синий. И вода, скорее всего, не синяя должна быть, а бирюзовая, т.е. синий+зелёный.

Вот что такое "инв.зеленый", я ваще не понимаю, кроме того, что он относится к монохромному режиму 512 точек. Не исключено, что у меня перепутаны местами выходы RGB на разъеме видео.

b2m
03.02.2019, 19:09
Не исключено, что у меня перепутаны местами выходы RGB на разъеме видео.
Вот я об этом постоянно думаю :)

- - - Добавлено - - -

А инверсный зелёный - это такая фича, там 0 - это зелёный, а 1 - цвет фона.

- - - Добавлено - - -

Там с РТ-шки один выход идёт, означающий, будет ли добавлен цвет фона. Интересно, есть ли такие варианты, когда и цвет фона выдаётся и цвет пикселей не чёрный?

- - - Добавлено - - -


На картинке с бигудями точно не вспомню, исходника не сохранилось.
Жаль. Я делал нечто аналогичное для Вектора, чтобы все цвета всех палитр отображать. Хотелось бы такое и для Океана иметь...

tnt23
03.02.2019, 19:19
Сообщение от tnt23
Не исключено, что у меня перепутаны местами выходы RGB на разъеме видео.
Вот я об этом постоянно думаю
Перепаять пару проводков нетрудно. Но на эмуляторе-то море малиновое :)


А инверсный зелёный - это такая фича, там 0 - это зелёный, а 1 - цвет фона.

Понятно. Зеленый фон в цветном режиме я наблюдал, а вот синий - только в моно.


Там с РТ-шки один выход идёт, означающий, будет ли добавлен цвет фона. Интересно, есть ли такие варианты, когда и цвет фона выдаётся и цвет пикселей не чёрный?

Надо покурить прошивку РТ. Кстати, прошивка с сайта AZMaster сильно отличается. Попробуй ее с эмулятором?

Испытательную таблицу для Океана я накодю (накожу).

b2m
03.02.2019, 19:24
Смотрю на картинку и в журнал (палитра 3) и то ли авторы не знали, что такое малиновый цвет или потом в прошивке РТ4 поменяли на синий (или голубой).
Вот кстати да, белый цвет с кодом не 00 есть только в палитре 3, т.е. у tnt23 выбрана та-же палитра. Выходит содержимое РТ4 всё же не соответствует описанию в журнале?

- - - Добавлено - - -


Попробуй ее с эмулятором?
Это надо сильно менять формирование видеовывода, у меня пока цвета жёстко зашиты в коде эмуляции видео Океана.

ivagor
03.02.2019, 19:31
Товарищи, господа, вместо долгих прений можно было просто посмотреть прошивку РТ4 и увидеть, что авторы считают, что малиновый - это синий с красным (A по адресам DC и DD).

- - - Добавлено - - -

Прошивку RT4_VC_MPSS.ZIP я с журналом сравнил (хотя до меня ее уже сравнивали) - совпадает.

- - - Добавлено - - -

Т.е. у b2ma соответствует журналу, а вот какая РТ4 была на компе, за которым рисовали кораблик - это вопрос.

b2m
03.02.2019, 19:35
Может я чего не понимаю, но А это будут еденицы на шинах 12,14, идут через резисторы на 15,17 и далее подписано R,G. А если видеовыход инверсный, то это и будет синий. А белый там случайно не ноль?

- - - Добавлено - - -

Да нет, Е стоит, т.е. не инверсный.

ivagor
03.02.2019, 19:40
Может я чего не понимаю, но А это будут еденицы на шинах 12,14, идут через резисторы на 15,17 и далее подписано R,G. А если видеовыход инверсный, то это и будет синий. А белый там случайно не ноль?
Но тогда бы все другие цвета не соответствовали. Белый - E.
Для ориентира
палитра 0 (C0-C7): 1 1 - черный/фон(как я понимаю) 2 2 - красный 4 4 - зеленый 8 8 - синий
палитра 1 (С8-СF): E E - белый 2 2 - красный 4 4 - зеленый 8 8 - синий
палитра 2 (D0-D7): 2 2 - красный 4 4 - зеленый C C - голубой 6 6 - желтый
палитра 3 (D8-DF): 1 1 - черный/фон 2 2 - красный A A - малиновый, так малиновый E E - белый
и т.д.

b2m
03.02.2019, 19:59
Всё было бы так, если бы слева от транзисторов было написано (сверху вниз) 15,16,17, но там почему-то 17,15,16.

tnt23
03.02.2019, 20:09
Совсем забыл. В "Прекрасном ассемблере" есть рыба для "Океана" (https://zx-pk.ru/threads/29780-programmirovanie-na-assemblere.html?p=988115&viewfull=1#post988115): ждет ввода с клавиатуры, полученный код маскирует по 7fh и засылает в порт цвета. Запускать с 8000h.

Вот такая картинка получается с 40h в порту цвета:






40h
67950


41h
67951


42h
67952


43h
67953

ivagor
03.02.2019, 20:17
Всё было бы так, если бы слева от транзисторов было написано (сверху вниз) 15,16,17, но там почему-то 17,15,16.
Можно попробовать прикинуть и из такого расклада
палитра 0 (C0-C7): 1 1 - черный/фон 2 2 - зеленый 4 4 - синий 8 8 - красный
палитра 1 (С8-СF): E E - белый 2 2 - зеленый 4 4 - синий 8 8 - красный
палитра 2 (D0-D7): 2 2 - зеленый 4 4 - синий C C - малиновый 6 6 - голубой
палитра 3 (D8-DF): 1 1 - черный/фон 2 2 - зеленый A A - желтый E E - белый
...
Тоже как-то не очень. Считать интерпретацию с инверсией желания нет, т.к. будет совсем интересно.
Может схема на сайте azmastera не вполне соответствует журнальной? Или она тоже из журнала? Тогда непонятно, почему его прошивка такая своеобразная.

tnt23
03.02.2019, 20:21
Может схема на сайте azmastera не вполне соответствует журнальной? Или она тоже из журнала? Тогда непонятно, почему его прошивка такая своеобразная.

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

ivagor
03.02.2019, 20:26
Может схема на сайте azmastera не вполне соответствует журнальной? Или она тоже из журнала?
Увидел, схема из журнала.

tnt23
03.02.2019, 20:50
Такс. На реале в моно-режиме (ESC 80) имеем белый цвет на чёрном фоне, что соответствует журналу. А вот дальше последовательность цветов: зеленый, синий, красный, малиновый, голубой, инверсный синий (!), черный.

ivagor
03.02.2019, 20:58
Такс. На реале в моно-режиме (ESC 80) имеем белый цвет на чёрном фоне, что соответствует журналу. А вот дальше последовательность цветов: зеленый, синий, красный, малиновый, голубой, инверсный синий (!), черный.
На 100% соответствует прошивке, если учесть порядок нумерации выводов, на который обратил внимание b2m. Но тогда и цвета в 4х цветном должны совпадать с этими (https://zx-pk.ru/threads/29725-quot-okean-240-quot-videovykhod.html?p=997606&viewfull=1#post997606). И тогда сильное несоответствие с таблицей 2.

tnt23
03.02.2019, 21:16
Я перепаял выходной кабель так, чтобы в монохромном режиме последовательность цветов соответствовала журнальной (особенно "инв. зелёный"). И все стало замечательно, и цвета у Тетриса такие же, как в эмуляторе (только палитру надо выбрать правильно).

Попозже попробую кораблик.

ivagor
03.02.2019, 21:32
Вопрос сводится к тому - где ошибка, в таблице или в схеме. Критерии выбора тут определять владельцам реалов и автору эмулятора.
Можно привлечь всякие дополнительные соображения, например красный фон в палитре 2 при старте конфига с fdd вызывает вопрос, зеленый наверно менее неприятный. С другой стороны, белый кораблик и синее море получить меняя распайку все равно не получится.

- - - Добавлено - - -


С другой стороны, белый кораблик и синее море получить меняя распайку все равно не получится.
Правда можно получить белый корабль и голубое море.

tnt23
03.02.2019, 21:56
Правда можно получить белый корабль и голубое море.

Как? Палитры с сочетанием белого и голубого нет вроде.

b2m
04.02.2019, 00:49
Как? Палитры с сочетанием белого и голубого нет вроде.
Вот это-то и смущает.


Критерии выбора тут определять владельцам реалов и автору эмулятора.
Не, я сдаюсь. Я когда сделал эмуляцию Океана, меня цвета тоже напрягали, но софта особо не было (а тем более работающего реала), и я решил подождать. Сейчас есть реал, но всё равно не понятно. Так что буду ждать.

ivagor
04.02.2019, 06:28
Насчет белого корабля и голубого моря. Фиксируем прошивку, меняем распайку. Черный фон и белый корабль будут только с палитрой 3, остаются еще 2 цвета и 2 варианта распайки (не соответствующих ни таблице ни схеме), дающих голубое море. Отличаться они будут цветом полоски на трубе и букв - зеленые или синие.
Если вдруг кого-то интересовало (меня интересовало), какая палитра здесь (https://youtu.be/M6C2gXHD-to?t=12), то это палитра 5 при распайке соответствующей схеме. Там черный фон, красная полоска и буквы, синее море и голубой корабль. Из за серьезных засветов в некоторые моменты видео можно принять голубой за белый, но при журнальной прошивке это невозможно.

Размышления вслух. Теоретически можно посадить сверху вторую РТ4 и переключать их каким-нибудь битиком. Одна прошивка будет давать соответствие таблице 2 и эмулятору, а вторая - нумерации выводов на схеме.

L Juriy
04.02.2019, 07:16
А тогда чему соответствует прошивка AZmaster?
Какой схеме и распайке разьема?
Ведь для чего она была сделана.

ivagor
04.02.2019, 09:12
Прошивка AZmastera явно требует другой распайки входных (адресных) сигналов РТ4. 6 МГц нужно подать на A3 вместо A0, номер палитры на A4-A6 вместо A3-A5, переключение режима на A7 вместо A6, сигнал с DD10.4 на A0 вместо A7. При таких изменениях должна пойти адекватная картинка с его прошивкой, но это еще не все, палитру он тоже поменял. Причем некоторые изменения можно понять, например во всех (кроме черной 7й) 4х цветных палитрах 0й цвет стал цветом фона - имхо это вполне логично и рационально, т.к. я не могу понять зачем авторы океана решили потерять возможность произвольно менять один из цветов в части палитр. А вот то, что 3й цвет в 6 из 8 4х цветных палитр стал белым - это спорное решение.
С 2х цветными режимами тоже интересно, во всех, кроме 7й черной цвет фона стал цветом фона, "инверсного зеленого" нет. Но добавилась своя фишка - в трех палитрах цветной бордюр.

- - - Добавлено - - -

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

tnt23
04.02.2019, 12:21
Надо будет сделать экспериментальную прошивку на основе "журнальной", разрешив произвольные цвета фона. Но это, конечно, будет уже не труъ.


зачем авторы океана решили потерять возможность произвольно менять один из цветов в части палитр

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

ivagor
04.02.2019, 13:19
Насчет ч/б я не понял, возможность выбирать градации ярксти тоже хорошая. Я вижу простую вещь, что они фиксировали в некоторых палитрах цвет фона, хотя вместо этого могли дать возможность его выбирать произвольно, в т.ч. тот который фиксировали?! Если бы они при этом сделали другой цвет выбираемым (как в случае с "инверсным зеленым") - тогда еще понятно. Возможно я что-то упускаю.

- - - Добавлено - - -

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

svofski
04.02.2019, 15:20
А не может быть, что это осадок итеративного процесса разработки? Сначала сделали чб, потом придумали как прикрутить палитру, но не обязательно самый удобный для разработчиков способ совпал с нашими представлениями о комфорте. В какой-то момент решили, что переделывать софт некогда, лучше публикация.

tnt23
04.02.2019, 16:33
Единственная фишка, которую смог придумать и которая теоретически могла быть реализована с неизменяемым цветом фона в некоторых палитрах - использование битов фона для каких-то других целей. Т.е. включаем палитру с фиксированным фоном, меняем для каких-то левых надобностией биты цвета фона (например соединили с ними еще один канал магнитофонно-звукового цапа и получили стерео-цап) а на экране при этом все спокойно.

Genlock!

- - - Добавлено - - -


А не может быть, что это осадок итеративного процесса разработки? Сначала сделали чб, потом придумали как прикрутить палитру, но не обязательно самый удобный для разработчиков способ совпал с нашими представлениями о комфорте. В какой-то момент решили, что переделывать софт некогда, лучше публикация.

Вот если бы добраться до Трушкина (vladtru), который последним общался с Д.А.Тилининым, может, у него какие-то материалы остались или контакты других разработчиков из той же группы.

svofski
04.02.2019, 17:04
Вот если бы добраться до Трушкина (vladtru), который последним общался с Д.А.Тилининым, может, у него какие-то материалы остались или контакты других разработчиков из той же группы.
Он на ютубе вроде активно обитает, что мешает ему написать? Только зачем. Сейчас-то уж точно есть что есть, а все это вечное кто виноват? к чему тут.

tnt23
04.02.2019, 19:49
Он на ютубе вроде активно обитает, что мешает ему написать? Только зачем. Сейчас-то уж точно есть что есть, а все это вечное кто виноват? к чему тут.

Ну я писал, а фигли толку (с)

И не "кто виноват" было движителем моей мысли, а "что еще можно узнать".

svofski
04.02.2019, 19:58
Ну я писал, а фигли толку (с)
Из собственного опыта реакции на ютубные подергивания: может быть есть смысл написать еще разок. Она иногда странным образом сглатывает уведомления и не всегда очевидно, где их потом искать.

Daniil Chislov 86
09.02.2019, 00:01
svofski, а можно ссылочку на его канал ?)

svofski
09.02.2019, 01:43
Daniil Chislov 86, конечно: https://www.youtube.com/channel/UCxL5_4cP-CMFeo4NDoX9cEQ

Daniil Chislov 86
10.02.2019, 12:22
svofski, сколько плейлистов ,ухх :)

tnt23
17.02.2019, 17:29
Палитры:

http://sensi.org/~tnt23/ok240/palettes.jpg

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

ivagor
17.02.2019, 18:05
А сколько строк на каждую палитру, примерно 13?

tnt23
17.02.2019, 18:47
Около 13, да.

Делитель для системного таймера 0x500, что при клоке 1.5МГц даёт прерывание с частотой 1171.875 Гц, или каждые 13,3(33) строки.

ivagor
17.02.2019, 19:21
Получается у океана 320 строк в кадре.

- - - Добавлено - - -

Интересно, если делитель 96, то прерывания должны быть каждую строку. Только надо еще как-то по горизонтали попасть.

- - - Добавлено - - -

На реале можно попробовать отталкиваться от бита в порту 41h, а в эмуляторе никак.

tnt23
17.02.2019, 19:29
Получается у океана 320 строк в кадре.

В видимой области (внутри черного бордюра) их точно 256. А вот сколько в кадре всего - я делю 15625 на 50 и получаю 312.5. Магическое число, знакомое по УКНЦ.

- - - Добавлено - - -


Только надо еще как-то по горизонтали попасть.

Как на Векторе (?), видимо: подождать луча и быстро запрограммить таймер. Будем иметь некоторое одинаковое запаздывание прерывания, что даже может быть удобно для перенастройки палитры в момент обратного хода по кадру.

А по горизонтали попасть - ну, наверное, как все делают - добить NOP-ами. Я пробовал менять палитру парой команд MVI A и OUT, в видимую строку растра таких полосок попадает примерно 6.

ivagor
17.02.2019, 19:51
делю 15625 на 50 и получаю 312.5
Как рассуждал я: видим довольно качественную фотографию, без смазывания, артефактов и т.д. Т.е. скорее всего картинка статическая, кадры не бегут, значит общее число строк нацело делится на период прерываний. Ближайшее подходящее 320/13.(3)=24. Причем в кадр умещается 24/8=3 повторения цикла палитры (часть спрятана в невидимой области). 320 строк есть, например, у ориона, у пентагона, может еще у кого, так сразу не вспомню. А кадровая 15625/320=48.828 Гц.
Если кадры бегут, то мои рассуждения рассыпаются.

- - - Добавлено - - -

Кроме того, если оценивать на глаз, то я бы сказал, что верхняя черная строка примерно такой же высоты, как и две другие, а значит действительно 3 полных периода перебора палитр в кадре. Если строки и бегут, то очень медленно.

tnt23
17.02.2019, 19:58
ivagor, кадры и строки не бегут. Чуть дрожал момент смены палитр, у меня не было этому объяснения. Дрожание пропало, когда я добавил синхронизацию еще и по обратному строчному сигналу перед программированием таймера.

Вот картинка со сменой палитр каждую строку, с правильно предсказанным тобой делителем 96.
http://sensi.org/~tnt23/ok240/palette_per_line

ivagor
17.02.2019, 20:12
Если менять палитру каждые 8 строк (делитель 96*8=768), то в кадр поместится 320/8/8=5 периодов смены палитр. При этом строки будут одинаковые, в отличие от делителя 500h.

- - - Добавлено - - -

Кстати, насчет кадровой частоты и прочих частот. Вспомнил, что у тебя кварц 12.28 МГц, значит реальная кадровая будет не 48.8 Гц (которая была бы при кварце 12 МГц), а почти точно 50 Гц, примерно 49.967448 Гц.

tnt23
17.02.2019, 20:19
Если менять палитру каждые 8 строк (делитель 96*8=768), то в кадр поместится 320/8/8=5 периодов смены палитр. При этом строки будут одинаковые, в отличие от делителя 500h

Как-то так:

http://sensi.org/~tnt23/ok240/palette_per_8_lines

- - - Добавлено - - -


Вспомнил, что у тебя кварц 12.28 МГц, значит реальная кадровая будет не 48.8 Гц (которая была бы при кварце 12 МГц), а почти точно 50 Гц, примерно 49.967448 Гц

Это да, но монитор студийный лопает почти все подряд :)

ivagor
17.02.2019, 20:44
Но я еще не угомонился. У меня остался вопрос, который пытался поднимать раньше - сколько тактов процессора в строке? Судя по последним данным, строка все же должна быть ровно 64 мкс (при кварце 12 МГц). Точек в строке целое число - 768 HiRes или 384 LoRes. А вот тактов процессора - 153.6. Пытаюсь совместить это с одинаковыми видимыми строками и пока не вполне получается.

- - - Добавлено - - -

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

tnt23
17.02.2019, 20:44
На последнем слайде процессор никак не участвует в формировании строки, кроме изменения палитры с частотой строчной развертки.

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

ivagor
17.02.2019, 20:50
На последнем слайде процессор никак не участвует в формировании строки, кроме изменения палитры с частотой строчной развертки.
Но он же меняет палитру после реакции на на прерывание, и делает это с точностью в лучшем случае до своего такта, а не до такта таймера (тактов таймера в строке целое число). Вытаскивание смены палитр в видимую область, как я написал выше, может помочь.

tnt23
17.02.2019, 21:16
Добавил в обработчик прерывания 4 NOP, момент смены палитры снова вылез в видимую область (снова - потому что он уже раньше был виден). Проявляется в виде легкого дрожания, видимого как градиент из четырех коротких отрезков строки шириной примерно 5-6 пикселей (точно не измерить, эффект дрожит).

- - - Добавлено - - -

Дрожание можно заметить на этом кадре, выражается как сечение лучом строк примерно в районе 5 и 6 вертикальных столбцов (каждый шириной в байт).

http://sensi.org/~tnt23/ok240/palette_jitter.jpg

ivagor
17.02.2019, 21:50
Зафиксирую, что про вытаскивание момента смены палитр в видимую область я скорее всего туплю, т.к. если бы там был "узор", то он бы и на остальной строке сказался.
Надо подумать, может схему посмотреть. Вопрос очень узкоспециальный, просто мне хотелось бы сложить пазл, чтобы все части подошли друг к другу.

- - - Добавлено - - -

Последний скриншот все же склоняет к мысли, что вытаскивать момент смены палитр в видимую область небесполезно.
У меня в итоге есть только идея попробовать менять палитру не по прерываниям, а по программным задержками. Каждые 5 строк - это должны быть 768 тактов процессора. В кадре будет 320/5=64 смены палитр, т.е. 8 периодов смены. На сегодня я все, может завтра ближе к вечеру попробую набросать программку. Или другие идеи появятся.

- - - Добавлено - - -

Собрался уже все выключить и идея появилась. Можно тестировать с прерываниями, но иначе. Экран очищаем, все 0. Задаем период прерывания 48, т.е. пол строки. И меняем две палитры с разным нулевым цветом, например 0ю (черный) и 1ю (белый), или 0ю (черный) и 2ю (красный) и т.д., там еще зеленый есть, если больше нравится. Будет ли строго вертикальная и стабильная граница между двумя цветами?
А я уже на сегодня точно все.

tnt23
17.02.2019, 22:18
Задаем период прерывания 48, т.е. пол строки.

Попробовать можно, но это уже на пределе. Процессор медленный, обработчик может не успеть.

ivagor
18.02.2019, 06:05
Утро вечера мудренее или что-то в этом духе. Сообразил, как простой вилкой тестов проверить число тактов проца в строке. Делаем 2 теста, меняющих палитру с разными фонами каждые N тактов - N=153 и 154. 153 должен давать диагональ в одну сторону, а 154 - в другую. Но у простоты есть и оборотная сторона - кадры будут бежать, число тактов в кадре нацело на 153 или 154 не делится. Надеюсь диагонали все же можно будет разглядеть.

tnt23
18.02.2019, 09:39
Делаем 2 теста, меняющих палитру с разными фонами каждые N тактов - N=153 и 154. 153 должен давать диагональ в одну сторону, а 154 - в другую. Но у простоты есть и оборотная сторона - кадры будут бежать, число тактов в кадре нацело на 153 или 154 не делится. Надеюсь диагонали все же можно будет разглядеть.

А практически как это должно выглядеть? tight loop без прерываний, забитый NOP-ами?

И нельзя ли использовать для синхронизации тактов процессора с началом прерывания команду HALT?

ivagor
18.02.2019, 10:01
А практически как это должно выглядеть? tight loop без прерываний, забитый NOP-ами?
Да, только вместо чисто nopов будет микс команд. Вечером сделаю.


И нельзя ли использовать для синхронизации тактов процессора с началом прерывания команду HALT?
:) можно, а почему вдруг такой вопрос?

- - - Добавлено - - -

А, наверно я не понял вот это

для синхронизации тактов процессора с началом прерывания
Т.е. в таком смысле вряд ли.

tnt23
18.02.2019, 10:13
Сообщение от tnt23
И нельзя ли использовать для синхронизации тактов процессора с началом прерывания команду HALT?
можно, а почему вдруг такой вопрос?

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

ivagor
18.02.2019, 10:33
jmpом лучше не ждать, лучше halt. Есть даже картинка (https://zx-pk.ru/threads/9431-pk8000-bystrodejstvie-arkhitektury-issledovanie.html?p=152134&viewfull=1#post152134) от другого компьютера (ПК8000) где я зачем-то (сем не знаю зачем) ждал прерывания jmpом. Полоса странного цвета на бордюре между зеленым и синим как раз "дрожание", последняя версия emu80 Pyka даже практически умеет эмулировать этот момент.

ivagor
18.02.2019, 18:58
tnt23, я тут накопипастил три тестика, надеюсь найдешь время их попробовать.
Ожидаемые результаты: во всех два цвета - зеленый и красный.
test153 - недолет, кадры бегут, граница между цветами диагональная, в сторону /
test154 - перелет, кадры бегут, граница между цветами диагональная, в сторону \
test768 - попадание, картинка неподвижна, 5 строк одного цвета и 5 - другого (но строки могут начинаться в любом месте).

- - - Добавлено - - -

Забыл (как обычно) - выход в дос по нажатию любой клавиши.

tnt23
18.02.2019, 22:27
ivagor, результаты домашки прилагаю.

681246812568126

(Вместо выхода в дос у меня рисуется дивной красоты сине-белый матросский матрас. Видимо, включается альтернативная страница видео-ОЗУ)

ivagor
19.02.2019, 08:39
Вместо выхода в дос у меня рисуется дивной красоты сине-белый матросский матрас. Видимо, включается альтернативная страница видео-ОЗУ
Виноват, выход в дос сначала был, а прямо перед выкладыванием я его случайно "соптимизировал" и не обратил внимания.
Результаты 153 и 768 не вызывают удивления, а вот над 154 надо подумать.

- - - Добавлено - - -

Важный вопрос - в 153 и 154 кадры бегут?

- - - Добавлено - - -

Понял, в названии 153 и 154 run, а в 768 stand still

tnt23
19.02.2019, 09:29
В 153 и 154 кадры бегут, заснять это на видео сложно.

ivagor
19.02.2019, 11:05
Предлагаю следующее толкование результатов.
То, что мы видим на фото - это результат комбинации двух разверток: развертки ТВ/монитора и развертки фотоаппарата (вероятно в телефоне).
Если внимательно посмотреть на фотографию 153 (strips_run_right.jpg) то мы видим 3 линии. 2 потемнее с одинаковым наклоном - это результат работы программы, а светлая диагональная (примерно по центру) с другим наклоном - это результат сочетания развертки ТВ и фотоаппарата для данной картинки.
На 154 (strips_run_left_do_they_not.jpg) видны две светлые линии с наклоном / - это опять результат сочетания развертки ТВ и фотоаппарата для данной картинки. А результат работы программы - это три фрагмента темной линии с наклоном \. Три фрагмента получились из-за развертки фотика.
Развертка фотоаппарата сказывается на динамичных бегущих кадрах, на стабильных все нормально.

Что из этого следует. Получить с использованием того же фотоаппарата картинки только с "нужными" линиями на бегущих кадрах не получится. В лучшем случае можно поменять картинку, чтобы эффект был более заметен.

tnt23
19.02.2019, 11:08
А если предварительно засинхриться по окончанию кадрового гасящего импульса? Тогда, по моим представлениям, тесты 153 и 154 будут образовывать стабильную диагональ, и останется только подобрать режим съемки (или попробовать видеозахват).

ivagor
19.02.2019, 11:43
А если предварительно засинхриться по окончанию кадрового гасящего импульса? Тогда, по моим представлениям, тесты 153 и 154 будут образовывать стабильную диагональ
Да, только я в эмуляторе не могу отладить такую программу.

- - - Добавлено - - -

Вернее так - нужно не предварительно засинхриться, а синхрить каждый кадр.

- - - Добавлено - - -

Сообразил, как можно совместить стабильную картинку и наклон и отладить (но не посмотреть) в эмуляторе.
Делаем в кадре максимальное число строк по 153 или 154 такта, а остаток до 49152 добиваем балластом.
153*321 + 39 (балласт) = 49152
154*319 + 26 (балласт) = 49152

tnt23
19.02.2019, 12:16
Вернее так - нужно не предварительно засинхриться, а синхрить каждый кадр.

Да, я это и имел в виду.


Делаем в кадре максимальное число строк по 153 или 154 такта, а остаток до 49152 добиваем балластом.

Лучше сделать меньшее количество строк, чтобы бОльшая часть с начала кадра была ими заполнена, а меньшая (остаток) просто черная. Легче идентифицировать конец работы кода.

ivagor
19.02.2019, 12:27
Лучше сделать меньшее количество строк, чтобы бОльшая часть с начала кадра была ими заполнена, а меньшая (остаток) просто черная. Легче идентифицировать конец работы кода.
Можно и так, но я не вполне понял зачем идентифицировать конец работы кода.

tnt23
19.02.2019, 12:46
Можно и так, но я не вполне понял зачем идентифицировать конец работы кода.

Не знаю, это чисто моё психологическое. Типа глазом видно, что вот до этого момента мы щелкали палитрами, а вот тут перестали.

ivagor
19.02.2019, 18:21
Сделал вариант практически по ТЗ - основное место занимает зеленый фон с красной линией и есть черный промежуток. Приложил исходники. В дос эта версия должна выходить.

tnt23
19.02.2019, 23:55
Слайды 153 и 154. Картинки стоят как вкопанные, цвета в обоих случаях красный с зеленым, просто телефон так видит.

6813968140

ivagor
20.02.2019, 06:49
Думаю можно подвести итог по параметрам изображения океана. 320 строк, 384 LoRes точки / 768 HiRes точек в строке, 153.6 такта процессора в строке, 49152 такта процессора в кадре.
Дальше отвлеченные бесполезные рассуждения.
На мой взгляд авторы могли взять кварц 12.5 МГц и сделать 400/800 точек в строке, 160 тактов процессора в строке, и 312 строк в кадре (49920 тактов процессора в кадре). Тогда и штатные возможности ВМ80 были бы полностью использованы (2.5 МГц) и целое число тактов процессора в строке и нормальное число строк в кадре. Возможно такие кварцы были менее доступны, чем 12 МГц.

tnt23
20.02.2019, 09:35
320 строк, 384 LoRes точки / 768 HiRes точек в строке, 153.6 такта процессора в строке, 49152 такта процессора в кадре.

Отлично, это можно уже занести в копилку знаний. Заодно вычислить, сколько занимает один такт процессора.


На мой взгляд авторы могли взять кварц 12.5 МГц и сделать 400/800 точек в строке, 160 тактов процессора в строке, и 312 строк в кадре (49920 тактов процессора в кадре). Тогда и штатные возможности ВМ80 были бы полностью использованы (2.5 МГц) и целое число тактов процессора в строке и нормальное число строк в кадре. Возможно такие кварцы были менее доступны, чем 12 МГц.

Авторы точно не страдали от невозможности достать комплектуху. Скорее просто не могли придумать, куда нужно столько строчек в строке, и сколько видеопамяти отъестся. Или, возможно, просто не задумывались в эту сторону. Вот что процессор работает на 1.5МГц, как я понял, малость расстраивает.

Эти доработки можно по идее реализовать, переписать софт, но это будет уже не "Океан-240".

ivagor
20.02.2019, 10:01
Насчет процессора не все так плохо, 2.4 не намного меньше 2.5.

- - - Добавлено - - -

А лично у тебя, кстати, в связи с общим оверклоком проц аж на 2.45-2.46 работает.

tnt23
20.02.2019, 10:22
Я стал себя чувствовать немного лучше :)

Но все равно маловато процессора, тем более что доступ ко вкусным периферийным вещам идет через команды IN/OUT. 153.6 тактов на строку имеется в виду на все 384 точки, включая бордюр; значит, типовая пара


MVI A, d8 ; 7 тактов
OUT d8 ; 11 тактов

съедает 7+11=18 тактов, и таких типовых пар за строку процессор успеет сделать лишь 19. А если выкинуть бордюр, то на 256 точек типовых пар будет 14... что плохо согласуется с практикой. На практике у меня в видимую строку укладывалось хорошо если 3 таких пары, ну максимум 6. (NB: проверить еще раз)

ivagor
20.02.2019, 11:10
tnt23, ты в расчете торопишься.
1. mvi + out = 7+10 тактов для 8080. В видимой части строки (256 точек) таких пар поместится 153.6*256/384/17=почти точно 6.

На практике у меня в видимую строку укладывалось хорошо если 3 таких пары, ну максимум 6.
Т.е. 6 пар - нормальный, правильный результат.
И это даже можно попробовать высчитать из последних картинок.
2. Картинка 154 снята попрямее, лучше по ней. Ширина "зеленой" (мы же знаем, что она зеленая) части изображения в районе над черной линией - примерно 371 точка картинки. Ширина красной части в этой строке - примерно 64 точки картинки. 371/64=5.7969. Учитывая перекошенность картинки и низкую точность измерения вполне нормальный результат.

- - - Добавлено - - -

А есть еще "метод b2ma", xra + out=14 тактов. В видимой части строки поместится 153.6*256/384/14=7.3 полоски. Если бы у тебя показывал цвет фона, то почти можно было бы стандартную последовательность цветов БЖГЗПКСЧ показать, по крайней мере 7 цветов из 8.

tnt23
20.02.2019, 11:19
А есть еще "метод b2ma", xra + out=14 тактов. В видимой части строки поместится 153.6*256/384/14=7.3 полоски. Если бы у тебя показывал цвет фона, то почти можно было бы стандартную последовательность цветов БЖГЗПКСЧ показать, по крайней мере 7 цветов из 8.

Как работает "метод b2m"? Просто пересылкой регистр-регистр можно вывести 6 значений с заранее установленным признаком цветного режима, если требуется.

Займусь-ка обратно цветом фона.

ivagor
20.02.2019, 11:56
Как работает "метод b2m"?
Есть исходное состояние
01111000 Б
и 7 переходов по маске xor (я привел маски, не результирующие состояния)
00001000 Б->Ж
00101000 Ж->Г
00001000 Г->З
00111000 З->П
00001000 П->К
00101000 К->С
00001000 С->Ч
Получается есть 1 исходное значение и 3 разных маски, регистров хватает и даже остаются.
Но у меня есть подозрение, что если менять цвет только цветом фона, полоски могут получиться слегка зигзагообразные.
Чтобы было ровно возможно придется продумать комбинированный метод, т.е. нарисовать полоски разными цветами и менять цвет фона/палитру на одинаковых цветах. А тут возникает еще один вопрос - b2m в эмуляторе сделал цвета фона темными, а переднего плана - светлыми, т.е. они не совсем совпадают и не взаимозаменяемы. Интересно, как на реале.

tnt23
20.02.2019, 12:09
b2m в эмуляторе сделал цвета фона темными, а переднего плана - светлыми, т.е. они не совсем совпадают и не взаимозаменяемы. Интересно, как на реале.

На реале, подозреваю, один и тот же цвет фона и переднего плана должен выглядеть одинаково. На моей реплике это уже давно не так, я скрутил яркости напроч(tm), чтобы получить пристойные цвета переднего плана на студийном RGB мониторе. При этом полностью потерял цвета фона, то есть фон всегда черный (темный).

b2m
20.02.2019, 16:15
b2m в эмуляторе сделал цвета фона темными, а переднего плана - светлыми
Там на схеме вроде разные номиналы резисторов для фона и для переднего плана. Или я ошибаюсь?

tnt23
21.02.2019, 10:23
Там на схеме вроде разные номиналы резисторов для фона и для переднего плана. Или я ошибаюсь?

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

tnt23
03.03.2019, 23:27
Уменьшил сопротивления в диодных цепях до 220 Ом, в палитрах стал проявляться бледный цвет фона:

https://sensi.org/~tnt23/ok240/background.png

HardWareMan
04.03.2019, 08:04
tnt23, у тебя серт протух:
https://jpegshare.net/images/51/7c/517c9c97f076f6e5e78d2124211b1ac6.png
Обновись.

tnt23
04.03.2019, 10:25
HardWareMan, спасибо. Это не совсем у меня, но я передам по принадлежности :)

Update: поправили.

HardWareMan
04.03.2019, 13:38
tnt23, вижу, даже тэг сработал:
https://jpegshare.net/images/b2/1c/b21c880b30e321bbf560df79e0b0ba97.png

ivagor
10.03.2019, 17:47
Жизнь потихоньку налаживается, можно и конфиг эмулятора чуть подкорректировать. Чтобы вторая область видеопамяти была в эмуляторе и на реале в одном месте, надо поправить в разделе vid : okean-video {
строку
page[1]=mem[4000]
на
page[1]=mem[1C000]