Difference between revisions of "Uknc Resources chapter1"
(→Пример 4. С ног на голову и наоборот) |
|||
| Line 90: | Line 90: | ||
:64 + 32 = 96 Кб. | :64 + 32 = 96 Кб. | ||
| − | ===== Пример 1. Прогулка по адресному пространству ===== | + | <blockquote> |
| + | ===== Пример 1. Прогулка по адресному пространству. ===== | ||
Влезьте, пожалуйста, любым известным Вам способом в монитор ЦП. Уже виден значок <code>@</code> ? Итак, мы на месте. Место это — адресное пространство ЦП. | Влезьте, пожалуйста, любым известным Вам способом в монитор ЦП. Уже виден значок <code>@</code> ? Итак, мы на месте. Место это — адресное пространство ЦП. | ||
| Line 136: | Line 137: | ||
Ну что ж, теперь мы полностью восстановили первоначальный вариант: монитор ЦП видит ОЗУ пользователя + страницу ввода-вывода, а монитор ПП — свое суверенное адресное пространство. С возвращением! | Ну что ж, теперь мы полностью восстановили первоначальный вариант: монитор ЦП видит ОЗУ пользователя + страницу ввода-вывода, а монитор ПП — свое суверенное адресное пространство. С возвращением! | ||
| + | </blockquote> | ||
===== Регистровый доступ к ОЗУ ===== | ===== Регистровый доступ к ОЗУ ===== | ||
| Line 157: | Line 159: | ||
'''''TODO''''' | '''''TODO''''' | ||
| − | ===== Пример 2. Пример работы с регистрами РА и РД в ЦП ===== | + | <blockquote> |
| + | ===== Пример 2. Пример работы с регистрами РА и РД в ЦП. ===== | ||
В прошлом примере для того, чтобы поменять кое-что в СОЗУ ЦП, нам приходилось залезать в монитор ПП. «Подглядывание» за ОЗУ ЦП оттуда осуществлялось, конечно же, с помощью регистрового доступа: ПП через регистры доступно все ОЗУ в машине. Теперь попробуем воспользоваться тем же механизмом, но в ЦП, причем более осознанно. | В прошлом примере для того, чтобы поменять кое-что в СОЗУ ЦП, нам приходилось залезать в монитор ПП. «Подглядывание» за ОЗУ ЦП оттуда осуществлялось, конечно же, с помощью регистрового доступа: ПП через регистры доступно все ОЗУ в машине. Теперь попробуем воспользоваться тем же механизмом, но в ЦП, причем более осознанно. | ||
| Line 169: | Line 172: | ||
После этой кропотливой работы можете убедиться, что перед Вами — ОЗУ ЦП в режиме HALT, и никаких регистров по адресам 176640 и 176642 уже не наблюдается. А так как их нет, то и говорить больше не о чем. | После этой кропотливой работы можете убедиться, что перед Вами — ОЗУ ЦП в режиме HALT, и никаких регистров по адресам 176640 и 176642 уже не наблюдается. А так как их нет, то и говорить больше не о чем. | ||
В заключение совершенно бесполезный и не относящийся к делу совет — запишите в ячейку 163731 число 77000 (вместо 71400), а в 163735 — 20077. Приятного Вам времяпрепровождения с клавишами ИСП и СТОП в мониторе ЦП! | В заключение совершенно бесполезный и не относящийся к делу совет — запишите в ячейку 163731 число 77000 (вместо 71400), а в 163735 — 20077. Приятного Вам времяпрепровождения с клавишами ИСП и СТОП в мониторе ЦП! | ||
| − | + | </blockquote> | |
| − | |||
Теперь вернемся к видеоинформации. Видеоинформация — это не что иное, как данные, хранящиеся в планах ОЗУ и считываемые построчно на экран. В принципе, три плана можно называть и ВидеоОЗУ. | Теперь вернемся к видеоинформации. Видеоинформация — это не что иное, как данные, хранящиеся в планах ОЗУ и считываемые построчно на экран. В принципе, три плана можно называть и ВидеоОЗУ. | ||
| + | <blockquote> | ||
===== Пример 3. Сохранение части экрана ===== | ===== Пример 3. Сохранение части экрана ===== | ||
| Line 228: | Line 231: | ||
13146: 60100</pre> | 13146: 60100</pre> | ||
Теперь при посылке в терминал (то есть на экран) кода <001> (соответствует комбинации клавиш <УПР>+A) будет выполняться сохранение, а при посылке кода <002> (<УПР>+B) — восстановление левой верхней четверти рабочего экрана. | Теперь при посылке в терминал (то есть на экран) кода <001> (соответствует комбинации клавиш <УПР>+A) будет выполняться сохранение, а при посылке кода <002> (<УПР>+B) — восстановление левой верхней четверти рабочего экрана. | ||
| − | + | </blockquote> | |
| − | |||
Как происходит считывание видеоинформации на экран? | Как происходит считывание видеоинформации на экран? | ||
| Line 246: | Line 248: | ||
Формат последнего слова элемента: | Формат последнего слова элемента: | ||
| − | |||
{| | {| | ||
| style="width:15px; text-align:center;" | 15 | | style="width:15px; text-align:center;" | 15 | ||
| Line 270: | Line 271: | ||
| colspan="1" style="text-align:center; background-color:#DDDDDD;" | к | | colspan="1" style="text-align:center; background-color:#DDDDDD;" | к | ||
|} | |} | ||
| − | |||
* 0 разряд отвечает за состояние аппаратного курсора (им мы займемся чуть позже). | * 0 разряд отвечает за состояние аппаратного курсора (им мы займемся чуть позже). | ||
* 1 разряд определяет размер следующего элемента: | * 1 разряд определяет размер следующего элемента: | ||
| Line 316: | Line 316: | ||
Формат первого слова регистра УЦ: | Формат первого слова регистра УЦ: | ||
| − | |||
{| | {| | ||
| style="width:15px; text-align:center;" | 15 | | style="width:15px; text-align:center;" | 15 | ||
| Line 404: | Line 403: | ||
Для черно-белых экранов сигнал Y не влияет на яркость изображения. Для них этот четвертый бит не имеет никакого значения. | Для черно-белых экранов сигнал Y не влияет на яркость изображения. Для них этот четвертый бит не имеет никакого значения. | ||
| + | <blockquote> | ||
===== Пример 5. Негатив служебного экрана ===== | ===== Пример 5. Негатив служебного экрана ===== | ||
| Line 418: | Line 418: | ||
4702: 177334, | 4702: 177334, | ||
или просто сбросьте машину. | или просто сбросьте машину. | ||
| − | + | </blockquote> | |
| + | <blockquote> | ||
===== Пример 6. Пылающий экран ===== | ===== Пример 6. Пылающий экран ===== | ||
| Line 432: | Line 433: | ||
000207 RETURN</pre> | 000207 RETURN</pre> | ||
В ячейку (7132) запишите адрес этой подпрограммки — 40200, а в ячейку (7130) — единичку. То, что происходит теперь с цветами служебного экрана, — это следствие того, что УЦ1 и УЦ2 соответствующего участка таблицы строк увеличиваются на 1 с частотой 50 Гц. | В ячейку (7132) запишите адрес этой подпрограммки — 40200, а в ячейку (7130) — единичку. То, что происходит теперь с цветами служебного экрана, — это следствие того, что УЦ1 и УЦ2 соответствующего участка таблицы строк увеличиваются на 1 с частотой 50 Гц. | ||
| + | </blockquote> | ||
===== Регистр управления отображением и аппаратный курсор ===== | ===== Регистр управления отображением и аппаратный курсор ===== | ||
| Line 438: | Line 440: | ||
'''1-е слово''' управляет видом курсора, его горизонтальной позицией на экране, а также цветом. | '''1-е слово''' управляет видом курсора, его горизонтальной позицией на экране, а также цветом. | ||
| − | |||
{| | {| | ||
| style="width:15px; text-align:center;" | 15 | | style="width:15px; text-align:center;" | 15 | ||
| Line 525: | Line 526: | ||
Таблица строк позволяет для каждой строки установить свой формат. По умолчанию установлен формат 640 точек в строке. Загрузкой регистра УО можно изменить формат, тогда в последующих строках также установится новый режим, и так до строки, где вновь загрузится регистр УО (либо до конца таблицы строк). | Таблица строк позволяет для каждой строки установить свой формат. По умолчанию установлен формат 640 точек в строке. Загрузкой регистра УО можно изменить формат, тогда в последующих строках также установится новый режим, и так до строки, где вновь загрузится регистр УО (либо до конца таблицы строк). | ||
| + | <blockquote> | ||
===== Пример 7. Апофеоз таблицы строк. ===== | ===== Пример 7. Апофеоз таблицы строк. ===== | ||
Этот пример следует выполнять лишь в том случае, если дальше Вы не собираетесь использовать УК с какой-либо важной целью, ибо выход из него — только системный сброс. | Этот пример следует выполнять лишь в том случае, если дальше Вы не собираетесь использовать УК с какой-либо важной целью, ибо выход из него — только системный сброс. | ||
| Line 531: | Line 533: | ||
То, что Вы увидите на экране, послужит, пожалуй, лучшей иллюстрацией к описанию УО и УЦ, да и всему устройству таблицы строк. Команда <УПР>+V — это комнда прокрутки рулона. Но, поскольку рулон для служебного экрана не предусмотрен, с таблицей строк происходят такие вот забавные превращения, что и отражается на экране. | То, что Вы увидите на экране, послужит, пожалуй, лучшей иллюстрацией к описанию УО и УЦ, да и всему устройству таблицы строк. Команда <УПР>+V — это комнда прокрутки рулона. Но, поскольку рулон для служебного экрана не предусмотрен, с таблицей строк происходят такие вот забавные превращения, что и отражается на экране. | ||
| + | </blockquote> | ||
==== Резюме к §1 ==== | ==== Резюме к §1 ==== | ||
Revision as of 03:35, 1 April 2007
- Это глава из книги «Ресурсы УКНЦ».
Глава 1. Аппаратные средства вывода на экран
Решение некоторых сложных проблем иногда полезно начинать с конца. Поскольку вывод на экран — штука отнюдь не простая, мы именно так и сделаем. Причем концом будет у нас сам экран.
Contents
- 1 §0. Немного об экранах.
- 2 §1. Как видеоинформация попадает на экран
- 3 §2. Формирование видеоизображения. Использование аппаратных возможностей.
- 4 §3. Каналы связи между процессорами.
§0. Немного об экранах.
Экраном обычно служит телевизор или монитор. Оба они бывают черно-белые, цветные и выключенные. Причем последний тип легко может быть превращен в один из первых двух путем включения последнего. Если Вы уже запутались, кто первый, а кто последний, не страшно. Немного страшнее, если после подключения монитора или телевизора к компьютеру вместо удобоваримой картинки Вы обнаружите беспорядочное мерцание полос и бегание кадров с потрясной скоростью. Если предположить, что и монитор (телевизор), и ЭВМ исправны, то остается лишь разобраться с подключением одного к другому.
Обычно от компьютера к экрану идут следующие сигналы:
- Синхросмесь (смесь строчной и кадровой разверток).
Этот сигнал, грубо говоря, управляет положением электронного луча на экране. - Видеосигнал.
Для черно-белых экранов этот сигнал управляет яркостью точки в текущем положении электронного луча. В него еще подмешано немного синхросмеси (для вкуса). - R, G, B.
Сигналы управления красным (Red), зеленым (Green) и синим (Blue) составляющими цвета точки (для цветных экранов). - Звук.
Тот же сигнал, что подается на пьезодинамик ЭВМ. Как правило, его подключают к телевизору в плату звукового канала. - Общий (земля).
Все эти сигналы выводятся на разъемы "ВМ" на задней панели компьютера. Этих разъемов у УКНЦ два. Поэтому к ней можно подключить целых два монитора. (Любопытно, что у человека тоже целых два глаза. Совпадение?)
Теперь осталось подключить компьютер. К каждой машине прилагается видеошнур. В нем 10 жил. Разводка сигналов по этим жилам такова:
- СС — 10
- GND — 2, 4, 6, 8
- R — 5
- G — 3
- B — 1
- Видео — 9
- Звук — 7
Для передачи черно-белого изображения достаточно всего двух проводов — Видео и Земля. Для цветного требуется минимум 5: R, G, B, СС и земля.
Напряжение на выходе из компьютера в видеоразъеме - порядка 1 В.
§1. Как видеоинформация попадает на экран
1.0 Вывод картинки на экран
Вы, очевидно, знаете принцип передачи теле-изображения. Электронный луч под управлением сигналов строчной и кадровой разверток обегает весь экран построчно (рисунок 1.0).
То есть при движении от левого края к правому луч высвечивает на экране строку с переменной яркостью, а при обратном ходе он гасится и возвращается снова к левому краю экрана, сместившись немного вниз. Далее процесс повторяется до тех пор, пока луч не достигнет нижнего края экрана. Тогда он гасится и перебрасывается снова на начало экрана. Кадр нарисован.
То, что появилось на экране, назовем видеоизображением, или просто картинкой. Картинка перерисовывается на экране 50 раз в секунду. За время, равное 1/50 секунды, часто называемое тиком, глаз не успевает забыть старое изображение, поэтому картинка не мерцает.
1.1 Создание картинки
Будем постепенно продвигаться от конца к началу. Теперь вдоль видеошнура, через разъем «ВМ» влезем в компьютер и разберемся, как формируется видеоизображение.
Среди прочих устройств УКНЦ есть устройство, отвечающее за формирование картинки. Оно называется так: Устройство Управления ВидеоОЗУ (УВОЗУ). Помимо других функций, в задачи его входит считывание видеоинформации на экран.
Видеоинформацией мы будем называть данные, хранящиеся в особо отмеченной области оперативной памяти ЭВМ, а саму эту область — ВидеоОЗУ (ВОЗУ). Чтобы разобраться в строении ВОЗУ, давайте пройдемся по адресному пространству УКНЦ.
1.2 Экскурсия в адресное пространство УКНЦ
Среди всех микро-ЭВМ, выпущенных в нашей стране, УКНЦ — самая нетривиальная. Ни в одном другом компьютере больше не встретишь такого оригинального решения — 2 ОЗУ + 2 процессора. Некоторыми вопросами, связанные с повышенной микропроцессорностью УКНЦ, мы займемся позже, а теперь же перейдем к структуре памяти.
Прямой доступ к памяти
Каждый процессор — центральный (ЦП) и периферийный (ПП) имеет свое ОЗУ. Коль скоро в машине применены процессоры КМ1801ВМ2, адресное пространство которых 64 Кб, то прямым доступом к памяти оба они берут лишь каждый свои 64 Кб.
Взгляните на рисунок 1.2. Здесь показаны карты памяти для обоих процессоров при прямом доступе.
![]()
Рисунок 1.2 Адресное пространство при прямом доступе
Адресное пространство обоих процессоров может меняться. То есть будут меняться устройства, к которым могут они обращаться, а сам объем адресных пространств не изменится.
Устройства, «намертво» подключенные в адресное пространство, выделены (*) . К ним относятся:
в ЦП:
- ОЗУ пользователя (56 Кб, адреса 0 ... 157777). Именно здесь располагаются все программы пользователя, будь то Бейсик, RT-11 или Ваши собственные (если Вы случайно не являетесь автором Бейсика или RT-11);
в ПП:
- ОЗУ ПП (32 Кб, адреса 0 ... 77777). Это ОЗУ используется для системных нужд. Для каких — Вы скоро узнаете. Интересно то, что около 22 Кб из этих 32 остаются свободными и также пригодны к использованию пользователем.
- Системное ПЗУ (банки 2-4 в адресах 120000-176777). До него нам тоже пока нет дела. Всему свой черед.
- Страница ввода-вывода ПП. Здесь выведены регистры внешних и внутренних устройств.
Сменные устройства:
ЦП:
- В верхние адреса (160000 и выше), в зависимости от режима работы ЦП (а их два - HALT и USER) подставляются:
- Системное ОЗУ ЦП — 8 Кб (режим HALT), где хранится программа-монитор, драйверы внешних устройств, доступных ЦП через страницу ввода-вывода, программа-эмулятор команд с плавающей точкой и программа тестирования.
- Страница ввода-вывода ЦП (режим USER). Аналогично странице ввода-вывода ПП, сюда подставляются по фиксированным адресам регистры внешних и внутренних устройств.
- Как можно менять эти режимы ЦП из ЦП же, сказано в главе ... .
ПП:
- ПП в своем адресном пространстве имеет так называемое «окно» с адресами 100000-117777, в которое может подключаться:
- Первый банк СПЗУ;
- Один из трех банков ПЗУ на внешней кассете N1;
- Один из трех банков ПЗУ на внешней кассете N2;
- Вообще ничего.
- Всем этим управляет особый регистр в странице ввода-вывода ПП. Его адрес — 177054.
Как видим, каждый процессор глядит напрямую только в свое адресное пространство, а общий объем ОЗУ при прямом доступе составляет:
- 64 + 32 = 96 Кб.
Пример 1. Прогулка по адресному пространству.
Влезьте, пожалуйста, любым известным Вам способом в монитор ЦП. Уже виден значок
@? Итак, мы на месте. Место это — адресное пространство ЦП.Набрав любое восьмеричное число от 0 до 157776, и, нажав стрелку вправо, Вы увидите содержимое ячеек памяти с набранными адресами, а проделав то же с адресом от 160000 — сможете полюбоваться на грозные надписи «Зависание». На них не стоит обращать внимание, ибо УКНЦ как угодно может оповестить о своем зависании, но только не так. Эта часть адресного пространства ЦП — страница ввода-вывода. Здесь можно отыскать ячейки, не вызывающие при открытии никакого возмущения со стороны машины. Скорее всего, это и есть те самые регистры устройств.
Проделаем такой опыт: запишем в ячейку 177566 число 7. Машина что-то невнятно прогудит. Это значит, что число 7 попало куда следует (а следует ему попасть в канал связи с ПП). ПП обработал наш код, ответив добродушным гудком.
Тем, кому наскучило играться в мониторе ЦП, предлагаю покопаться с монитором ПП. Влезаем в него так:
- нажимаем <УСТ>, при этом должно появиться меню «Установка режимов». Если оно не появилось, проверьте, действительно ли ЭВМ перед Вами — это УКНЦ;
- нажмите <УПР>+@ или <ГРАФ>+<ИСП>.
Теперь мы находимся в «царстве теней» — мониторе ПП. Экран здесь не такой просторный, как в мониторе ЦП. Поэтому совет страдающим клаустрофобией — не задерживайтесь здесь подолгу! Из этого отладчика можно и не выбраться. Иногда случается находить в ОЗУ ПП останки тех, кто так и не смог выйти из лабиринтов монитора ПП. Именно их духи, мне кажется, время от времени и подвешивают машины. Но я отвлекся.
Правила игры с монитором ПП те же — можно с полным правом копаться в содержимом любых ячеек от 0 до 77776 (ОЗУ ПП) и любоваться на ячейки от 100000 до 176776 (ПЗУ). Также можно заглянуть и в страницу ввода-вывода ПП. ЭВМ же, в свою очередь, оставляет за собой право подвиснуть в любое удобное ей время.
Если вы устали, выйдите:
- <УПР>+C,
а дальше, через меню «Установки», куда пожелаете.
Оставшимся предлагаю заглянуть туда, где доселе редко ступала нога человека — в СОЗУ ЦП. Для этого прибегнем к черной магии: наберем в ОЗУ ПП 2 масенькие программки:
40000: 012704 MOV #450, R4 000450 004737 CALL @#162164 16216440020: 012704 MOV #450, R4 000450 004737 CALL @#162204 162204С помощью первой мы включим режим просмотра ОЗУ ЦП из монитора ПП. Смело жмем 40000 <ИСП>. Вверху появляются новые две буквы: ЦМ. Что они означают, не знаю, но вот что изменилось — можно посмотреть. Теперь перед нами до боли знакомое ОЗУ ЦП пользователя (в адресах от 0 до 157776) и совсем незнакомое СОЗУ ЦП (от 160000 и выше). Лазать в ОЗУ ЦП можно по-всякому — и записывать в ячейки, и считывать. Но вот запускать программы в ЦП из монитора ПП невозможно — даже черная магия здесь бессильна.
Прежде чем выбраться из этого заколдованного места, подправим кое-что в СОЗУ ЦП:
- в ячейку 163416 вместо 000021 запишем 012500,
- в ячейку 163450 вместо 000031 — 010045.
Теперь со всех ног бежим в монитор ЦП: <УПР>+C, <ENTER>. Наше последнее хитрое действо дало свои результаты — теперь из монитора ЦП можно без проблем «промониторить» все ОЗУ ЦП — пользователя и системное. Это адресное пространство ЦП в режиме «HALT».
Если Вы все же соскучились по монитору ПП и по ОЗУ ПП, вернитесь в монитор ПП, и запустите вторую программку, что с адреса 40020. Ничего страшного в том, что Вы не увидите эту записанную ранее программку - ведь монитор ПП покажет эти адреса в ОЗУ ЦП. Наберите 40020, крепко зажмурьтесь, и нажмите <ИСП>. Если, открыв глаза, в верхней строке Вы обнаружите слово "ПМ", значит, эксперимент удался.
Человек быстро привыкает ко всему хорошему. Поэтому вот инструкция к тому, чтобы восстановить обычную точку зрения монитора ЦП (работаем в мониторе ЦП):
- в ячейку 163416 обратно запишем 21,
- в ячейку 163450 — 31.
Ну что ж, теперь мы полностью восстановили первоначальный вариант: монитор ЦП видит ОЗУ пользователя + страницу ввода-вывода, а монитор ПП — свое суверенное адресное пространство. С возвращением!
Регистровый доступ к ОЗУ
— Есть ли у вас план, мистер Фикс?
— План, план… Да у меня целых три плана!
Ж.Верн «80 дней вокруг света»
96 Кб — вроде не так уж и мало для микро-ЭВМ. Но экран — вещь, которая требует под себя значительную часть памяти машины. Поэтому в УКНЦ наряду с прямым применяется регистровый доступ к памяти.
В страницах ввода-вывода обоих процессоров есть регистры, с помощью которых можно заглянуть туда, куда с прямым доступом нам путь заказан. Делается это так.
В регистр адреса (РА), который доступен нам как ячейка в странице ввода-вывода, пишется, как Вы уже догадались, адрес. Моментально в другой регистр — данных (РД) аппаратно считывается содержимое ОЗУ, соответствующее записанному адрес. Если теперь записать в РД число, то оно аппаратно же запишется по соответствующему адресу в память. У каждой страницы ввода-вывода эти регистры свои, и каждый процессор может записывать и считывать информацию с помощью своих регистров.
Таким способом мы можем достать, помимо обычного ОЗУ, еще и дополнительное, которое выходит за пределы адресного пространства процессоров при прямом доступе. Такое дополнительное, или верхнее ОЗУ называется планами ОЗУ.
На рис. 1.3 показано адресное пространство при регистровом доступе. Планов всего 3. В каждом содержится по 32 Кб. Их адреса в РА — 100000 и выше. При РА, меньшем 100000, идет доступ к обычным ОЗУ.
TODO
Рисунок 1.3 Адресное пространство при регистровом доступе
В таблице 1.1 приведены адреса РА и РД для каждого процессора. Центральному процессору доступны через РА и РД планы 1 и 2, а также свое собственное ОЗУ. Периферийному процессору доступно все ОЗУ в машине. То есть через РД ПП может читать и записывать сразу 3 байта. Совокупность этих трех байтов в разных планах назовем Т-словом.
Таблица 1.1
TODO
Пример 2. Пример работы с регистрами РА и РД в ЦП.
В прошлом примере для того, чтобы поменять кое-что в СОЗУ ЦП, нам приходилось залезать в монитор ПП. «Подглядывание» за ОЗУ ЦП оттуда осуществлялось, конечно же, с помощью регистрового доступа: ПП через регистры доступно все ОЗУ в машине. Теперь попробуем воспользоваться тем же механизмом, но в ЦП, причем более осознанно.
Предлагаю совершить такую нехитрую манипуляцию (в мониторе ЦП):
(176640)=71607 Записываем с помощью РА и РД по адресам (176642)=12500 163416 и 163450 некоторые числа. Адреса пишем (176640)=71624 в РА несколько обделенными на 2. (176642)=10045После этой кропотливой работы можете убедиться, что перед Вами — ОЗУ ЦП в режиме HALT, и никаких регистров по адресам 176640 и 176642 уже не наблюдается. А так как их нет, то и говорить больше не о чем. В заключение совершенно бесполезный и не относящийся к делу совет — запишите в ячейку 163731 число 77000 (вместо 71400), а в 163735 — 20077. Приятного Вам времяпрепровождения с клавишами ИСП и СТОП в мониторе ЦП!
Теперь вернемся к видеоинформации. Видеоинформация — это не что иное, как данные, хранящиеся в планах ОЗУ и считываемые построчно на экран. В принципе, три плана можно называть и ВидеоОЗУ.
Пример 3. Сохранение части экрана
Используя регистровый доступ к ВОЗУ из ПП, сделаем две подпрограммки. Первая будет сохранять содержимое рабочего экрана в области ВОЗУ, которая обычно используется под меню «Установка» и под монитор ПП, т.е. в служебный экран. Вторая будет восстанавливать содержимое рабочего экрана.
Подпрограмма сохранения:
60000: 012702 MOV #100000,R2 100000 012703 MOV #154540,R3 154540 M1: 005004 CLR R4 M2: * 010237 MOV R2, @#177010 177010 013700 MOV @#177012,R0 177012 013701 MOV @#177014,R1 177014 * 010337 MOV R3, @#177010 177010 010037 MOV R0, @#177012 177012 010137 MOV R1, @#177014 177014 005204 INC R4 005202 INC R2 005203 INC R3 022704 CMP #50, R4 000050 001356 BNE M2 062702 ADD #50, R2 000050 022703 CMP #157700,R3 175700 100350 BPL M1 000207 RETURNПодпрограмма восстановления отличается лишь двумя словами (они отмечены звездочкой). Поэтому легче написать простенькую программу копирования, чем заново набивать нашу тяжеловесную подпрограмму.
Программа копирования:
40040: 012702 MOV #60000, R2 060000 012703 MOV #60100, R3 060100 012701 MOV #37, R1 000037 M: 012223 MOV (R2)+, (R3)+ 077103 SOB M, R1Итак, Вы набиваете п/п, набиваете программу копирования, запускаете ее с начального адреса (40040). После этого в ОЗУ ПП появится копия подпрограммы, но уже с адреса 60100. В ней Вы меняете местами содержимое двух помеченных слов.
А для вызова этих подпрограмм используем местную хитрость — эти подпрограммы сделаем спецфункциями:
13144: 60000 13146: 60100Теперь при посылке в терминал (то есть на экран) кода <001> (соответствует комбинации клавиш <УПР>+A) будет выполняться сохранение, а при посылке кода <002> (<УПР>+B) — восстановление левой верхней четверти рабочего экрана.
Как происходит считывание видеоинформации на экран?
Экран УКНЦ состоит из 288 видео-строк. Каждой строке ставится в соответствие адрес в ВОЗУ, с которого последовательно считывается содержимое трех планов так, что одной точке на экране соответствуют три бита в трех различных планах по одному адресу. Цвет каждой из точек строки (для цветных экранов), либо градация яркости (для черно-белых) зависит от содержимого смежных битов в ВОЗУ.
1.3 Таблица строк
Эти соответствия — номера строки начальному адресу в ВОЗУ, цвета точек содержимому ВОЗУ и кое-что другое указываются в специальной таблице в ОЗУ ПП, называемой ТАБЛИЦЕЙ СТРОК. Она строится следующим образом.
Две ячейки с фиксированными адресами в ОЗУ ПП — 270 и 272 являются первым элементом таблиц строк. Вообще количество элементов в таблице должно бы равняться 288 (количеству строк). Но УВОЗУ сделано так, что первые 20 элементов в таблице строк не указывают на строки, и считывание информации на экран начинается с 21-го.
Элемент таблицы строк всегда содержит указатель на адрес в ВОЗУ, с которого начинается вывод на экран в данной строке. Этот адрес находится в предпоследнем слове элемента (а слово — это 2 байта). Адрес здесь задается так же, как при регистровом доступе. То есть адреса, начиная со 100000, указывают на планы памяти, а меньше 100000 — на ОЗУ ЦП + ОЗУ ПП.
Последнее слово элемента содержит адрес следующего элемента таблицы строк, а также некоторую информацию о нем.
Формат последнего слова элемента:
| 15 | 3 | 2 | 1 | 0 | |||||||||||
| Адрес следующего элемента | у | р | к | ||||||||||||
- 0 разряд отвечает за состояние аппаратного курсора (им мы займемся чуть позже).
- 1 разряд определяет размер следующего элемента:
- 1 — 4 слова.
- 0 — 2 слова.
Элементы в таблице строк могут быть либо четырехсловными, либо двухсловными. Первый элемент (270 и 272) всегда двухсловный. Двухсловный элемент состоит из адреса в ВОЗУ (1-е слово) и указателя на следующий элемент (2-е слово).
Четырехсловный элемент в первых своих двух словах несет дополнительную информацию, 3-е и 4-е слова имеют то же назначение, что и в двухсловном элементе. Как УВОЗУ будет интерпретировать первые два слова, зависит от содержимого 2-го разряда последнего слова предыдущего элемента:
- 2 разряд:
- если следующий элемент двухсловный (1-й разряд равен 0), то этот разряд интерпретируется просто как 2-й разряд адреса следующего элемента
- если следующий элемент все-таки четырехсловный (1-й разряд равен 1), то возможны два варианта:
- 0 — из первых двух слов следующего элемента загружается регистр управления отображением (УО);
- 1 — из них загружается регистр управления цветом (УЦ).
- 3-15 разряды определяют адрес следующего элемента в таблице строк.
Пример 4. С ног на голову и наоборот
Ради развлечения и только ради него был задуман этот пример. Наберите в ОЗУ ПП такой фрагмент:
40100: 012700 MOV #2500, R0 002500 A: 162710 SUB #54420, (R0) 054420 005410 NEG (R0) 062700 ADD #4, R0 000004 020027 CMP R0, #4666 004666 100770 BMI A 000207 RETURN 13152: 040100Теперь при приеме терминалом кода <004> (<УПР>+D) рабочий экран перевернется вверх тормашками. Отменяется это безобразие все тем же кодом <004>.
Регистры УО и УЦ не имеют фиксированного адреса. Они могут загружаться из таблицы строк произвольное количество раз.
Регистр управления цветом
Этот регистр имеет очень важное значение. Он ставит в соответствие триаде в планах ВОЗУ (комбинации из трех бит) цвет выводимых точек, то есть является тем самым мостиком между видеоинформацией и картинкой. Младший бит в триаде соответствует содержимому плана 0, старший — плана 2.
Регистр управления цветом состоит из двух слов. В первом слове определяются цвета тех точек, которым соответствуют коды от 0 до 3 в планах ВОЗУ. Второе слово определяет цвета триад с содержимым от 4 до 7.
Формат первого слова регистра УЦ:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Y | R | G | B | Y | R | G | B | Y | R | G | B | Y | R | G | B |
| 011 | 010 | 001 | 000 | ||||||||||||
Формат второго слова регистра УЦ:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Y | R | G | B | Y | R | G | B | Y | R | G | B | Y | R | G | B |
| 111 | 110 | 101 | 100 | ||||||||||||
Нетрудно заметить, что каждому возможному коду в ВОЗУ (а их всего 8) соответствует комбинация из 4 бит. Три из них (R, G, B) отвечают за составляющие цвета в цветных мониторах, а черно-белых — за градацию яркости: 1 — составляющая есть, 0 — составляющей нет. Но есть и четвертый — Y. Этот управляет яркостью сразу всех цветов: 1 — 100% яркости, 0 — 50%. Хотя на протяжении одной видеостроки может быть одновременно максимум 8 цветов, в разных строках на экране их может быть 16.
Для черно-белых экранов сигнал Y не влияет на яркость изображения. Для них этот четвертый бит не имеет никакого значения.
Пример 5. Негатив служебного экрана
Чтобы не перенапрячься в изучении регистров УО и УЦ, приведу такой пример. В мониторе ПП обновим 2 ячейки в ТС: 4700: 042547 4702: 000443
Делать это следует невзирая на все безобразия, которые будут проистекать на экране. Для пущей красочности выйдите в меню «Установка»: <УПР>+C, и полюбуйтесь на результат.
Числа в словах для УЦ служебного экрана подобраны так, чтобы поменять местами триады — они теперь расположены в обратной последовательности, отсюда и инверсия экрана.
Для того, чтобы восстановить прежнее положение, запишите в эти ячейки старые значения: 4700: 135230 4702: 177334, или просто сбросьте машину.
Пример 6. Пылающий экран
Набейте в мониторе ПП такую программку:
40200: 005237 INC @#4700 006750 005237 INC @#4702 006752 012737 MOV #1, @#7130 000001 007130 000207 RETURNВ ячейку (7132) запишите адрес этой подпрограммки — 40200, а в ячейку (7130) — единичку. То, что происходит теперь с цветами служебного экрана, — это следствие того, что УЦ1 и УЦ2 соответствующего участка таблицы строк увеличиваются на 1 с частотой 50 Гц.
Регистр управления отображением и аппаратный курсор
Этот регистр также состоит из двух слов.
1-е слово управляет видом курсора, его горизонтальной позицией на экране, а также цветом.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Позиция курсора | Поз.гр.к | тк | Y | R | G | B | |||||||||
- 0-3 разряды — яркость и цвет курсора:
- 1 — есть составляющая,
- 0 — нет составляющей.
- 4 разряд — тип курсора:
- 1 — графический курсор,
- 0 — символьный.
- 5-7 разряды — позиция графического курсора в октете.
- 8-14 разряды — позиция курсора (октета) на экране.
- 15 разряд — не используется.
Курсор на экране формируется следующим образом. Включенный символьный курсор накладывается поверх изображения строки. Он занимает 8 подряд высвеченных точек, то есть один октет. Его позиция определяется 8-14 разрядами первого слова регистра УО. Минимальная позиция — 0, максимальная — 79. Графический курсор отличается от символьного тем, что из восьми точек октета лишь одна остается включенной. Ее положении в октете определяют 5-7 разряды. Цвет включенного курсора зависит от 0-3 разрядов.
- О включении/выключении курсора.
- В последнем слове каждого элемента таблицы строк есть разряд, который отвечает за изменение состояние курсора.
- Это нулевой разряд. Если он установлен, курсор изменяет свое состояние. То есть если в предыдущих строках курсор был включен (зажжен), то начиная с этой строки он выключится, и наоборот. Изначально (по умолчанию) курсор выключен.
- Найдя установленным этот бит, УВОЗУ изменяет состояние курсора и оставляет его таким в последовательных строках до следующего установленного нулевого бита последнего элемента, либо до конца строк.
- Мигание курсора делается программно.
Не забудем и про 2-е слово регистра УО. Оно отвечает за масштабирование изображения по горизонтали, а также за яркость R,G,B сигналов в текущей видеостроке.
Его формат:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| масш | яR | яG | яB | ||||||||||||
- 0-2 разряды — управляют яркостью R,G,B сигналов соответственно. Это управление распространяется лишь на текущую строку:
- 1 — 100%,
- 0 — 50%.
- 3 разряд — не используется.
- 4, 5 разряды управляют количеством выводимых на экран точек, то есть масштабированием (таблица 1.2).
Таблица 1.2
TODO
В УКНЦ 4 формата экрана. В режиме максимального количества точек в строке на экран отображается видеоинформация из 80 последовательных Т-слов, адрес первого указывается в таблице строк для каждой строки. Режим наименьшего количества точек в строке позволяет выводить 80 точек, то есть всего 10 Т-слов в строке. Общий размер картинки при этом не меняется. Видеоизображение занимает всегда весь экран.
Таблица строк позволяет для каждой строки установить свой формат. По умолчанию установлен формат 640 точек в строке. Загрузкой регистра УО можно изменить формат, тогда в последующих строках также установится новый режим, и так до строки, где вновь загрузится регистр УО (либо до конца таблицы строк).
Пример 7. Апофеоз таблицы строк.
Этот пример следует выполнять лишь в том случае, если дальше Вы не собираетесь использовать УК с какой-либо важной целью, ибо выход из него — только системный сброс.
Войдите в монитор ПП, а в нем — в режим терминала (нажав D). А теперь нажмите комбинацию <УПР>+V и держите ее под треск пьезодинамика, пока не надоест.
То, что Вы увидите на экране, послужит, пожалуй, лучшей иллюстрацией к описанию УО и УЦ, да и всему устройству таблицы строк. Команда <УПР>+V — это комнда прокрутки рулона. Но, поскольку рулон для служебного экрана не предусмотрен, с таблицей строк происходят такие вот забавные превращения, что и отражается на экране.
Резюме к §1
- Изображение на экране УКНЦ состоит из 288 видеострок.
- Видеоинформация на экран построчно считывается Устройством Управления ВидеоОЗУ (УВОЗУ) из видеопамяти.
- Адресное пространство может быть доступно либо прямым доступом процессоров, либо регистровым доступом.
- Через РА и РД (регистры адреса и данных) доступно 192 Кб ОЗУ. Одному адресу соответствует Т-слово: 3 байта из трех смежных областей, называемых планами. ЦП доступны планы 1 и 2, ПП — 0, 1 и 2, т.е. все ОЗУ в УКНЦ.
- Одному Т-слову соответствуют восемь выведенных подряд точек на экране.
- Адреса в РА с 100000 указывают на особую область памяти, прямым доступом не видимую. Объем ее - 96 Кб, по 32 в каждом плане, и используется она в качестве ВОЗУ. Адреса меньше 100000 — это ОЗУ ЦП +ОЗУ ПП.
- Таблица строк — список в ОЗУ ПП, необходимый УВОЗУ для формирования видеоизображения. Начинается с пары ячеек с адресами 270 и 272.
- Таблица строк состоит из отдельных элементов. Каждый элемент, начиная с 21-го, соответствует видеостроке на экране. 21-й элемент соответствует самой верхней строке. Элементы могут быть двухсловными и четырехсловными. Первый элемент (270 и 272) всегда двухсловный.
- Формат двухсловного элемента:
- 1-е слово — адрес в ВОЗУ, с которого начинается вывод видеоинформации в текущую строку.
- 2-е слово — адрес следующего элемента в таблице строк. В трех младших битах слова содержится информация о типе следующего элемента, о переключении курсора в данной строке, а также определяется, какой регистр УВОЗУ загрузится из следующего элемента, если он — четырехсловный.
- Формат четырехсловного элемента:
- 1-е, 2-е слова — интерпретируются УВОЗУ либо как регистр управления отображением, либо как регистр управления цветом.
- 3-е слово — адрес в ВОЗУ.
- 4-е слово — адрес следующего элемента.
- Регистры управления цветом (УЦ) и отображением (УО) состоят из двух 16-битных слов каждый и входят в состав УВОЗУ. Загружаются они лишь из таблицы строк, только из четырехсловных элементов.
- Регистр УЦ определяет соответствие цвета точки содержимому трех битов в планах ВОЗУ. В данной строке может быть одновременно 8 цветов.
- Регистр УО управляет: цветом, типом, горизонтальной позицией аппаратного курсора.
- масштабированием изображения по горизонтали.
- яркостью составляющих R,G,B в текущей строке.
§2. Формирование видеоизображения. Использование аппаратных возможностей.
TODO
§3. Каналы связи между процессорами.
TODO