Часовой форум Watch.ru (http://forum.watch.ru/index.php)
-   Электроника (http://forum.watch.ru/forumdisplay.php?f=28)
-   -   Уголок яйцеловов. Обсуждаем, чиним, хвастаемся находками (http://forum.watch.ru/showthread.php?t=154411)

rumod 01.05.2025 09:35

Цитата:

Сообщение от Igor427 (Сообщение 7224254)
А вы не помните, другие игры (картриджы) этой серии - Стройка, Сказка, тоже проектировали у вас?

Нет, точно не у нас. Я думаю это уже результат сотрудничества ребят из "Циклона" с производителями.

Igor427 02.05.2025 19:21

Цитата:

Сообщение от rumod (Сообщение 7224014)
Разрабатывался этот комплект с прицелом на то, чтобы использовать его потом в микрокомпьютере МК-85.

Борис, добрый день. Вопрос немного в сторону, но как раз активно обсуждается на другом форуме — про использование нескольких ЖКИ-контроллеров в МК-85. Можно попросить Вас уточнить несколько моментов:

- Правильно ли я понимаю, что выбор нужного контроллера осуществлялся дополнительными разрядами в посылке данных? Вы писали на форуме iXBT, что в расширенной посылке было полноценных 8 (а не 5) бит данных

- Как конкретно осуществлялся выбор контроллера? Я предполагал, что "номер" задавался распайкой выводов и определялся внутри самого контроллера. Однако на блок-схеме есть порт P0–P3 — правильно ли я понимаю, что он использовался для выбора "следующего" в схеме (ведущий/ведомый) или у него была другая задача? ( Вот ссылка на описание, которое я имею в виду: https://calculators.pdp-11.ru/manuals/1013vg2.pdf )

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

rumod 03.05.2025 07:03

Цитата:

Сообщение от Igor427 (Сообщение 7225236)
Борис, добрый день. Вопрос немного в сторону, но как раз активно обсуждается на другом форуме — про использование нескольких ЖКИ-контроллеров в МК-85. Можно попросить Вас уточнить несколько моментов:

- Правильно ли я понимаю, что выбор нужного контроллера осуществлялся дополнительными разрядами в посылке данных? Вы писали на форуме iXBT, что в расширенной посылке было полноценных 8 (а не 5) бит данных

- Как конкретно осуществлялся выбор контроллера? Я предполагал, что "номер" задавался распайкой выводов и определялся внутри самого контроллера. Однако на блок-схеме есть порт P0–P3 — правильно ли я понимаю, что он использовался для выбора "следующего" в схеме (ведущий/ведомый) или у него была другая задача? ( Вот ссылка на описание, которое я имею в виду: https://calculators.pdp-11.ru/manuals/1013vg2.pdf )

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

Здравствуйте. Относительно конкретно этого контроллера - да, изначально была заложена возможность подключения к процессору двух контроллеров ЖКИ без задействования дополнительных выводов процессора.
Посылка на последовательном интерфейсе состоит из 8 бит адреса и 5 бит данных, причем адрес задвигается в регистр непрерывно и может быть любой длины, в регистре остаются последние 8 бит на момент изменения состояния вывода SYNC. А вот данные - наоборот - задвигаются по внутреннему счетчику, первые же пять бит после изменения состояния вывода SYNC, которые сразу записываются в ячейку ОЗУ или в регистр.
Имеется 96 ячеек ОЗУ размером 5 бит в адресами 00H..5FH, регистр курсора по адресу 60H и регистр порта по адресу 68H. В регистре курсора старший бит определяет тип курсора (подчеркивание или блок), младшие 4 - номер знакоместа. Младшие 4 бита регистра порта просто выводятся на выводы P0..P3.
Регистр порта задумывался просто как расширитель для процессора (у него сильно не хватало выводов для управления внешними устройствами). В АОНе на базе этого комплекта - ребята повесили на эти выводы R2R матрицу и получили простейший ЦАП, который использовали для управления контрастностью.
Старший бит адреса должен соответствовать уровню на входе Т. Собственно это и давало возможность подключить два контроллера к одной шине данных (подключив вывод Т к земле у первого, и к питанию у второго) и выбирать нужный одним битом в адресе. Это штатная работа того контроллера, который используется в МК-85 и МК-87. От процессора тут тоже ничего дополнительного не требуется в аппаратном смысле.
Версия контроллера с посылкой 8 бит данных - это совсем другое изделие, и в виде микросхем не выпускалось - 4 контроллера разваривались прямо на стекле индикатора и управляли матрицей 80х64 точек - это был индикатор для советского GPS приемника.
Версия двух контроллеров, которые могли управлять одним ЖКИ с двумя строчками по 12 символов была мной сделана на базе Т36ВГ2 в начале 90-х годов и, насколько мне известно, в серию не пошла.

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

Igor427 03.05.2025 15:55

Цитата:

Сообщение от rumod (Сообщение 7225427)
Однако хочу отметить, что все это - жуткий офтоп здесь, наверное лучше обсуждать

Борис, ещё раз спасибо!
Понимаю, что вопросы оффтоп, но продолжать обсуждение в теме "про калькуляторы", наверное, тоже не лучший вариант. Надеюсь, Андрей нас простит и, если посчитает нужным, перенесёт посты в другую ветку.

В целом теперь всё стало ясно. Т.е. для адресации второго ЖКИ надо подать питание на вывод "Т" (61, вход управления режимом) и писать в область, начинающуюся с 0x80. С самого начала мне казалось странным использовать дополнительные биты данных именно для адресации — логично было бы передавать полные 8 бит данных. Вероятно, недопонимание у меня возникло из-за формулировок в описании Т36ВМ1-2 (в КА1013ВМ1 уже явно говорится о 5 битах) и вашей статьи на форуме iXBT:

"Контроллер дисплея преобразует 8 младших разрядов адреса и 8 младших разрядов данных в последовательный код на выводе ADO и формирует сигнал синхронизации каждого разряда этого кода на выводе SHIFT"


Еще один уточняющий вопрос: Правильно ли я понимаю, что нумерация знакомест в регистре курсора начинается с нуля и, чтобы "погасить" курсор в одной из строк, достаточно записать в регистр номер несуществующего знакоместа, например 0xF?

rumod 03.05.2025 17:17

Цитата:

Сообщение от Igor427 (Сообщение 7225665)
Борис, ещё раз спасибо!
Понимаю, что вопросы оффтоп, но продолжать обсуждение в теме "про калькуляторы", наверное, тоже не лучший вариант. Надеюсь, Андрей нас простит и, если посчитает нужным, перенесёт посты в другую ветку.

Ну по крайней мере там оно будет выглядеть уместнее - хотя бы по теме.

Цитата:

Сообщение от Igor427 (Сообщение 7225665)
В целом теперь всё стало ясно. Т.е. для адресации второго ЖКИ надо подать питание на вывод "Т" (61, вход управления режимом) и писать в область, начинающуюся с 0x80. С самого начала мне казалось странным использовать дополнительные биты данных именно для адресации — логично было бы передавать полные 8 бит данных. Вероятно, недопонимание у меня возникло из-за формулировок в описании Т36ВМ1-2 (в КА1013ВМ1 уже явно говорится о 5 битах) и вашей статьи на форуме iXBT:

Нет, не может быть никаких дополнительных битов в данных, Данные едут пятью битами - по размеру ячейки ОЗУ (либо служебного регистра). Либо пять точек в матрице 5х7, либо один из служебных символов, если выбрана строка 0. За этим следит специальный внутренний счетчик
Остальные данные, едущие по шине просто игнорируются, до изменения состояния на выводе SYNC, которое сбрасывает состояние последовательного интерфейса в исходное.

Цитата:

Сообщение от Igor427 (Сообщение 7225665)
"Контроллер дисплея преобразует 8 младших разрядов адреса и 8 младших разрядов данных в последовательный код на выводе ADO и формирует сигнал синхронизации каждого разряда этого кода на выводе SHIFT"

Я не смог найти, где я это написал, но в любом случае - к 1013вг2 это не относится. Он реально воспринимал только 5 бит.

Цитата:

Сообщение от Igor427 (Сообщение 7225665)
Еще один уточняющий вопрос: Правильно ли я понимаю, что нумерация знакомест в регистре курсора начинается с нуля и, чтобы "погасить" курсор в одной из строк, достаточно записать в регистр номер несуществующего знакоместа, например 0xF?

Совершенно в точку. Так и есть.

Igor427 03.05.2025 17:41

Цитата:

Сообщение от rumod (Сообщение 7225704)
Совершенно в точку. Так и есть.


"Контроллер дисплея преобразует 8 младших разрядов адреса и 8 младших разрядов данных в последовательный код на выводе ADO и формирует сигнал синхронизации каждого разряда этого кода на выводе SHIFT" - скопирована из документации на процессор Т36ВМ1-2 (скорее всего, это просто ошибка).

А вот в более подробном описании микросхемы КА1013ВМ1 (в моем понимании, та же микросхема) дано уже "правильное" описание.

Еще раз спасибо за ответы, все понятно.

rumod 03.05.2025 18:29

Цитата:

Сообщение от Igor427 (Сообщение 7225711)
"Контроллер дисплея преобразует 8 младших разрядов адреса и 8 младших разрядов данных в последовательный код на выводе ADO и формирует сигнал синхронизации каждого разряда этого кода на выводе SHIFT" - скопирована из документации на процессор Т36ВМ1-2 (скорее всего, это просто ошибка).

Не могли бы вы дать точную ссылку на эту цитату? Я не могу вспомнить. Скорее всего тут дело в контексте. Даже интересно.

Есть еще такая фигня - первая версия МК-85 была сделана на стандартном 1806вм2 и куче достаточно тупых БМК типа 1515хм1. И в этой версии - в контроллере дисплея хранилась только одна строка битов для вывода на ЖКИ. То есть - на каждую строку отображения ЖКИ генерировалось прерывание, процессор выкатывал очередную строку (30х1) на контроллер ЖКИ для вывода, заодно опрашивая состояние клавиатуры. Это была первая версия МК-85, она была полностью рабочей, но прожила недолго - до момента замены всего комплекта на Т36. И, как положено, компьютер именно этой первой версии и имеется у меня:)

Igor427 03.05.2025 20:53

Цитата:

Сообщение от rumod (Сообщение 7225736)
Не могли бы вы дать точную ссылку на эту цитату? Я не могу вспомнить. Скорее всего тут дело в контексте. Даже интересно.

Есть еще такая фигня - первая версия МК-85 была сделана на стандартном 1806вм2 и куче достаточно тупых БМК типа 1515хм1. И в этой версии - в контроллере дисплея хранилась только одна строка битов для вывода на ЖКИ. То есть - на каждую строку отображения ЖКИ генерировалось прерывание, процессор выкатывал очередную строку (30х1) на контроллер ЖКИ для вывода, заодно опрашивая состояние клавиатуры. Это была первая версия МК-85, она была полностью рабочей, но прожила недолго - до момента замены всего комплекта на Т36. И, как положено, компьютер именно этой первой версии и имеется у меня:)

Да, конечно, https://www.dropbox.com/scl/fi/s8xpi...g2hmrgsq9u74ph (страница 2-149).

Разные версии МК-85 это очень интересная тема! Еще бы Бэйсик получше и побыстрее (p-code + двоичная арифметика) ... но что не случилось, то не случилось.

Ну и давайте сразу попробую "просуммировать" и попросить разрешения скопировать текст, т.к. разговор изначально стартовал на другом форуме:

Использование двух ЖКИ-контроллеров КА1013ВГ2 (МК-85/87)
(по информации Бориса Кроткова, разработчика контроллера)

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

Информация передается на вход AD под управлением сигналов SHIFT и SYNC (W/R сигнал процессора). При этом на последовательную шину передаются адрес и данные, начиная с младшего бита. По переднему фронту сигнала SHIFT процессор устанавливает очередной бит на выводе AD, по заднему фронту информация защёлкиваются в приёмнике контроллера ЖКИ. Посылка начинается с передачи адреса. После перехода сигнала SYNC из высокого уровня в низкий передаются данные. Контроллер всегда использует последние 8 переданных бит адреса и первые 5 бит данных.

Контроллер обрабатывает посылку только если старший бит адреса совпадает с уровнем на входе "Т", т.е. байтовая запись в ПЗУ процессора с адресами 00H–7FH обрабатывается контроллером с входом "Т", подключённым к земле. Запись в адреса 80H–FFH — контроллером с входом "Т", подключённым к питанию.

Обращение к памяти и регистрам со стороны процессора :
ОЗУ (адреса 00H–5FH / 80H–DFH): 96 ячеек по 5 бит.

Регистр курсора (60H / E0H): старший бит задаёт тип курсора (подчёркивание или блок), младшие 4 бита — номер знакоместа, начиная с нуля. Значение 0FH отключает курсор.

Регистр порта (68H / E8H): младшие 4 бита выводятся на линии P0–P3 контроллера ЖКИ. В МК-85 не используется, однако применялся в других устройствах (АОH) для управления ЦАП регулировки контраста.
По информации от Бориса разрабатывались и другие версии контроллеров. Вариант с 8 битами данных собирались применять в сборках ЖКИ (80×64 точки), предназначенных для GPS-приёмников. Также была опытная версия на базе Т36ВГ2 для ЖКИ с двумя строками по 12 символов.

rumod 04.05.2025 16:59

Цитата:

Сообщение от Igor427 (Сообщение 7225825)
Да, конечно, https://www.dropbox.com/scl/fi/s8xpi...g2hmrgsq9u74ph (страница 2-149).

Спасибо. Теперь понятно, откуда такая пурга. В этом тексте контроллером дисплея называется не контроллер ЖКИ, а кусочек процессорного чипа, отвечающий за последовательную передачу. Это наверняка Сергей Ермаков написал. За ним водится:) Правильная картинка интерфейса на стр. 2-151 внизу.

Цитата:

Сообщение от Igor427 (Сообщение 7225825)
Разные версии МК-85 это очень интересная тема! Еще бы Бэйсик получше и побыстрее (p-code + двоичная арифметика) ... но что не случилось, то не случилось.

Опять за рыбу деньги? На IXBT спрашивал, и тут спрошу - вы бы лучше сделали? Тогда расскажите, как надо было.:)

Цитата:

Сообщение от Igor427 (Сообщение 7225825)
Ну и давайте сразу попробую "просуммировать" и попросить разрешения скопировать текст, т.к. разговор изначально стартовал на другом форуме:

Я позволил себе немножко подредактировать текст, и считаю, что в таком виде его можно использовать. А что это за "другой форум"?

Использование двух ЖКИ-контроллеров КА1013ВГ2 (МК-85/87)
(по информации Бориса Кроткова, одного из разработчиков контроллера)

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

Информация передается на вход AD под управлением сигналов SHIFT и SYNC (W/R сигнал процессора). При этом на последовательную шину передаются адрес и данные, начиная с младшего бита. По переднему фронту сигнала SHIFT процессор устанавливает очередной бит на выводе AD, по заднему фронту информация защёлкиваются в приёмнике контроллера ЖКИ. Посылка начинается с передачи адреса. После перехода сигнала SYNC из высокого уровня в низкий передаются данные. Контроллер всегда использует последние 8 переданных бит адреса и первые 5 бит данных. При переходе сигнала SYNC в высокий уровень последовательный интерфейс контроллера ЖКИ переходит в исходное состояние.

Контроллер обрабатывает посылку только если старший бит адреса совпадает с уровнем на входе "Т", т.е. байтовая запись в ПЗУ процессора с адресами 00H–7FH обрабатывается контроллером с входом "Т", подключённым к земле. Запись в адреса 80H–FFH — контроллером с входом "Т", подключённым к питанию. (**)

Обращение к памяти и регистрам со стороны процессора :
ОЗУ (адреса 00H–5FH / 80H–DFH): 96 ячеек по 5 бит.

Регистр курсора (60H / E0H): старший бит задаёт тип курсора (подчёркивание или блок), младшие 4 бита — номер знакоместа, начиная с нуля. Значение 0СH..0FH отключает курсор.

Регистр порта (68H / E8H): младшие 4 бита выводятся на линии P0–P3 контроллера ЖКИ. В МК-85 не использовался, однако применялся в других устройствах (АОH) для управления ЦАП регулировки контраста.
По информации от Бориса разрабатывались и другие версии контроллеров. Вариант с 8 битами данных применяли в сборках ЖКИ (80×64 точки), предназначенных для GPS-приёмников. Также была опытная версия на базе Т36ВГ2 для ЖКИ с двумя строками по 12 символов (в серию не пошла).

* - эту фразу я не понял, извините. Что за "нижние адреса"? оставил как есть
** - в те времена было модно считать низкий уровень как логическая "1", а высокий - как логический "0". Так что может быть и наоборот.

Igor427 04.05.2025 22:39

Цитата:

Сообщение от rumod (Сообщение 7226313)
Опять за рыбу деньги? На IXBT спрашивал, и тут спрошу - вы бы лучше сделали? Тогда расскажите, как надо было.:)
Я позволил себе немножко подредактировать текст, и считаю, что в таком виде его можно использовать. А что это за "другой форум"?

Большое спасибо за правки и замечания!
Я имел в виду "младшие" адреса - эх, давно уже ничего не писал по-русски. Вы также абсолютно правы по поводу уровней - я перепроверил по схеме МК-85 и исправил.

Обсуждение велось на этом форуме, однако, на мой взгляд, ко многим сообщениям (особенно касающимся планов модификации МК-85) стоит относиться с определённой осторожностью:

http://www.leningrad.su/calc/cforum....1&topicid=1215

Использование двух ЖКИ-контроллеров КА1013ВГ2 (МК-85/87)
(по информации Бориса Кроткова, одного из разработчиков контроллера)

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

Информация передается на вход AD под управлением сигналов SHIFT и SYNC (W/R сигнал процессора). При этом на последовательную шину передаются адрес и данные, начиная с младшего бита. По переднему фронту сигнала SHIFT процессор устанавливает очередной бит на выводе AD, по заднему фронту информация защёлкиваются в приёмнике контроллера ЖКИ. Посылка начинается с передачи адреса. После перехода сигнала SYNC из высокого уровня в низкий передаются данные. Контроллер всегда использует последние 8 переданных бит адреса и первые 5 бит данных. При переходе сигнала SYNC в высокий уровень последовательный интерфейс контроллера ЖКИ переходит в исходное состояние.

Контроллер обрабатывает посылку только если старший бит адреса соответствует уровню на входе "Т" - байтовая запись в ПЗУ процессора с адресами 00H–7FH обрабатывается контроллером с входом "Т", подключённым к питанию. Запись в адреса 80H–FFH — контроллером с входом "Т", подключённым к общему. (Этот вариант используется в МК-85)

Обращение к памяти и регистрам со стороны процессора :
ОЗУ (адреса 00H–5FH / 80H–DFH): 96 ячеек по 5 бит.

Регистр курсора (60H / E0H): старший бит задаёт тип курсора (подчёркивание или блок), младшие 4 бита — номер знакоместа, начиная с нуля. Значение 0СH..0FH отключает курсор.

Регистр порта (68H / E8H): младшие 4 бита выводятся на линии P0–P3 контроллера ЖКИ. В МК-85 не использовался, однако применялся в других устройствах (АОH) для управления ЦАП регулировки контраста.
По информации от Бориса разрабатывались и другие версии контроллеров. Вариант с 8 битами данных применяли в сборках ЖКИ (80×64 точки), предназначенных для GPS-приёмников. Также была опытная версия на базе Т36ВГ2 для ЖКИ с двумя строками по 12 символов (в серию не пошла).


Цитата:

Сообщение от rumod (Сообщение 7226313)
Опять за рыбу деньги? На IXBT спрашивал, и тут спрошу - вы бы лучше сделали? Тогда расскажите, как надо было.:)

Да, думаю что мог бы сделать "лучше" - хотя, конечно, есть такие факторы как ТЗ и возможные ограничение на использование только 8К в ПЗУ (хотя вроде микросхема стояла 16К), которые я не могу оценить.

Тут надо определиться с тем, что такое сделать "лучше":
- Удобство использования - однозначно (разве что было жесткие ограничения ТЗ).
- Расширение/дополнения языка BASIC - от введения целых/одинарной/двойной точносит (скорость) до другого определения массивов, команд работы с портами, возможность ассемблерных вставок (опять-таки тут возможны проблемы с ТЗ)
- Изменение работы с переменными (предварительная упаковку, одинарная/двойная точность, денормализация). Тут, возможно, были бы проблемы с размером кода в 8К ПЗУ, но частично можно было бы реализовать.

У меня (был) неплохой опыт разработки ПРО под эту платформу (Э-60/ ДВК/НЦ-80) - не только "офисных" приложений (за моим авторством EDIK, CALC, EM.SYS), но и оптимизации вычислений для систем управления реального времени.

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


Часовой пояс UTC +3, время: 08:31.

© 1998–2024 Watch.ru