User Tag List

Показано с 1 по 10 из 1564

Тема: Программирование на УКНЦ как?

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Про курсор. Естественно никаких Esc-последовательностей для изменения его формы нет. Нет также и ячеек памяти, где хранится информация в какой строке начинается курсор, и в какой оканчивается. Его форма зашита жестко в подпрограммах ПЗУ. Но все не так плохо. Для переключения курсора существует ячейка с адресом 7134. При значении её равное нулю, курсор выключается в старой позиции и включается в новой. Обрабатывается эта ячейка в подпрограмме обслуживания прерываний сетевого таймера по адресам 175072-175304. Значение ячейки равное нулю обрабатывается в диапазоне 175150-175276. Но значение ячейки 7134, равное нулю, присваивается только в одном месте - в подпрограмме переключения координат курсора, расположенной по адресу 176056. Эта подпрограмма вызывается только из диспетчера процессов по флагу из ячейки 7066. Так что в данном случае нужно перехватить вызов п/п в диспетчере процессов и ложить в ячейку 7134 значение равное разнице между адресом новой п/п переключения и адресом 175076, т.к. переход делается командой ADD @#7134,PC.
    Само переключение делается просто - в таблице видеопараметров есть два слова со смещениями 032 и 060, в которых расположены соответственно адреса списка видеострок новой позиции курсора и предыдущей позиции. Список видеострок для экрана пользователя и установки двухсловный, во втором слове младший бит указывает изменять состояние курсора или нет. Поэтому для выключения курсора там есть две команды BIC #1,6(R1) и BIC #1,52(R1). Для включения соответственно BIS #1,6(R1) и BIS #1,52(R1). В соответствии с этими командами курсор расположен со 2-й по 10-ю строки знакоместа (нумерация с единицы), включение происходит в списке 2-й видеостроки, а выключение в 11-й. Этим примером, расположенным в системном ПЗУ можно спокойно воспользоваться, если курсор не будет расположен в самой последней 11-й видеостроке, т.к. выключать его придется уже в следующей символьной строке. Если же курсор будет находится и в последней 11-й видеостроке, то здесь возможно два варианта. Сразу замечу, что это не относится к экрану установки (когда он активен, то ячейка 23150 равна 22754), т.к. там нет скроллинга и описание строк расположено последовательно, то и сработает правило 56(R1).
    Вариант 1 относится к тому случаю, когда курсор расположен не на последней символьной строке, это можно узнать из таблицы видеопараметров, если по смещению 020 записано 1, то строка последняя, в этом случае вариант 2.
    Вариант 1. Список видеострок для экрана пользователя является закольцованным, он описывает 26 текстовых строк (286 видеострок), при этом на экране отображаются только 24, две невидимы. Сама таблица занимает адреса с 2500 по 4666. При скроллинге само изображение в видеопамяти не прокручивается, меняются только адреса следующих видеострок в таблице. Соответственно при таком раскладе значение ячейки 4666 обычно указывает на следующий адрес 2500 для закольцовки. Поэтому, если адрес равен или больше 4670, то надо вычесть 02170 (286*4 в десятичном).
    Вариант 2. В этом случае просто, выключать курсор надо уже в нижней разделительной видеостроке, адрес ячейки - 6746.
    Ещё надо перехватывать обработку Esc-последовательности <033>%, т.к. при переходе в режим графики по <033>%!0 вызывается подпрограмма по адресу 111632, которая выключает курсор командами BIC #1,6(R0) и BIC #1,52(R0).
    Еще кстати в дополнение при включении курсора надо запомнить ячейки списка видеострок, где он включен и выключать уже по этим адресам. Это необходимо, т.к. узнать в какой символьной строке расположен курсор (смещение 020 в таблице видеопараметров) можно узнать только для новой позиции.

    Естественно программа обработки должна висеть резидентом в ОЗУ ПП.

    ---------- Post added at 20:53 ---------- Previous post was at 20:47 ----------

    Цитата Сообщение от form Посмотреть сообщение
    А кто мешает? PRUN для того и делал чтобы такие вещи упростить. Даже позиционнонезависимый код не нужен
    Про более сложную ситуацию я имел ввиду не загрузку резидента, а алгоритм изменения формы курсора, для этого надо знать как устроен список видеострок в УКНЦ, и как он обрабатывается подпрограммами в системном ПЗУ. Соответственно как переключается курсор, ну т.д. и т.п.

    А PRUN хорош только для загрузки резидента, который ничего на экран не выводит, т.к. обычно RT-11 свой промптер иногда успевает вывести вперед. Если же нужно взаимодействие программ между собой в ОЗУ ЦП и ОЗУ ПП, то только свой загрузчик в программе. Да и не столь сложно сделать MOV PC,R0 ADD #LABEL-.,R0, не столь часто это встречается.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Про более сложную ситуацию я имел ввиду не загрузку резидента, а алгоритм изменения формы курсора, для этого надо знать как устроен список видеострок в УКНЦ, и как он обрабатывается подпрограммами в системном ПЗУ. Соответственно как переключается курсор, ну т.д. и т.п.

    А PRUN хорош только для загрузки резидента, который ничего на экран не выводит, т.к. обычно RT-11 свой промптер иногда успевает вывести вперед. Если же нужно взаимодействие программ между собой в ОЗУ ЦП и ОЗУ ПП, то только свой загрузчик в программе. Да и не столь сложно сделать MOV PC,R0 ADD #LABEL-.,R0, не столь часто это встречается.
    Про то как устроено есть тех описание, а насчет вывода из загруженного в ПП, так никто не мешает подождать с выводом. Но вообще лезть в ПП ради того, чтобы что-то выводить на экран бессмысленно если только это не нужно программе какой-нибудь, а тогда это дело самой программы
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  4. #3

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Про то как устроено есть тех описание ....
    Техописание поможет только на 10%, не более. Здесь надо смотреть и анализировать листинги ПЗУ, т.к. надо не только знать, как это устроено на аппаратном уровне, но и как используется на программном уровне. Т.к. в данном случае надо вклиниваться в обработку диспетчера процессов, в документации к УКНЦ про это ничего нет, надо знать распределение памяти, чтобы с толком применить (где узнать текущие параметры, где их изменить).

  5. #4

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Техописание поможет только на 10%, не более. Здесь надо смотреть и анализировать листинги ПЗУ, т.к. надо не только знать, как это устроено на аппаратном уровне, но и как используется на программном уровне. Т.к. в данном случае надо вклиниваться в обработку диспетчера процессов, в документации к УКНЦ про это ничего нет, надо знать распределение памяти, чтобы с толком применить (где узнать текущие параметры, где их изменить).
    Ну это да, но для этого есть и листинги с коментариями
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  6. #5

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Ну это да, но для этого есть и листинги с коментариями
    Я про это и говорил, без этого не обойдешься.

  7. #6

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Я про это и говорил, без этого не обойдешься.
    Ну не то, чтобы не обойдешься, просто раз есть смысла нет обходиться
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Программирование на Эмуляторе. Возможно ли это?
    от Toxic в разделе Программирование
    Ответов: 10
    Последнее: 20.01.2008, 19:20
  2. Программирование Altera и JTAG
    от Mikka_A в разделе Несортированное железо
    Ответов: 7
    Последнее: 18.01.2008, 09:07
  3. Программирование и софтмейк на NES
    от Splinter в разделе Nintendo
    Ответов: 7
    Последнее: 30.06.2006, 04:31

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •