УКНЦ RAM.LST

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Оригинальный документ RAM.LST составлен Alex_K (Alexey Kisly).

ОБЛАСТЬ ВЕКТОРОВ ПРЕРЫВАНИЙ И СТЕК (0-1777)

1. Вектора прерывания (0-377)

  0      207         команда RETURN
  4,6    160200,600  вектор прерывания по обработке ошибки канала
 10,12   160210,600  вектор прерывания по обработке резервной команды
 24,26   160220,600  вектор прерывания по обработке аварии сетевого питания
 30,32   174270,0    вектор прерывания по обработке команды EMT
 34,36   174334,200  вектор прерывания по обработке команды TRAP
100,102  174612,200  сетевой таймер
300,302  175412,200  клавиатура
304,306  174612,200  программируемый таймер
314,316  176130,200  сигнал RESET на магистрали ЦП
320,322  175700,200  канал 0, приемник
324,326  175540,200  канал 0, источник
330      177066      канал 1, приемник
340,342  175762,200  канал 2, приемник
270,272  0,2270      адрес первой видеостроки

2. 414-447 -- стек пультового отладчика

3. ОЗУ пультового отладчика (450-567)

Адрес  Смещение    Комментарии
 450       0        Значение R0
 452       2        ----/--- R1
 454       4        ----/--- R2
 456       6        ----/--- R3
 460      10        ----/--- R4
 462      12        ----/--- R5
 464      14        ----/--- SP
 466      16        ----/--- PC
 470      20        ----/--- PS
 472      22        Адрес открытой ячейки
 474      24        Содержимое открытой ячейки
 476      26        Указатель на область со смещением 70-117
 500      30        Адрес выводимой надписи (СТОП, ЗАВИСАНИЕ и т.д.)
 502      32 Byte   Значение 'R или 'A (вывод регистров или точек останова)
 503      33 Byte   Значение 10(8) или 4(8)(число регистров или точек останова)
 504      34        Разрешение(0)/запрет(2) вывода надписей (СТОП, ЗАВИСАНИЕ)
 506      36        Выход в меню загрузки(0)/в монитор(2) (для ЦП)
 510      40        Просмотр памяти ПП(0)/ЦП(4) (для ПП)
 512      42        Ключ 125252 (производить или не производить тест памяти)
 514      44        Ключ продолжения выполнения (для ЦП)
 520      50        Адрес 0-точки останова
 522      52        Адрес 1-точки останова
 524      54        Адрес 2-точки останова
 526      56        Адрес 3-точки останова
 530      60        Значение 0-точки останова
 532      62        Значение 1-точки останова
 534      64        Значение 2-точки останова
 536      66        Значение 3-точки останова
 540-567  70-117    Буфер для сохранения адресов при открытии ячеек с помощью
                    НР+стрелки

БУФЕРА (2000-2267)

2000-2177 (200) - буфер для хранения символов, подлежащих выводу на экран
                  (передаются от ЦП по каналу 0 или от ПП по запросам
		  EMT 42, EMT 44, EMT 46). Обрабатывается драйвером
		  текстового терминала.
2200-2237 (40)  - буфер для хранения одиночных ASCII-кодов и адресов на строки
                  символов, формируемых драйвером клавиатуры (передаются ЦП 
		  по каналу 0 или программам ПП по запросам EMT 22 и EMT 24).
		  Направление передачи зависит от содержимого ячейки 7042.
		  Элемент буфера занимает одно слово, если старший байт
		  равен нулю, то в младшем содержится код клавиши в КОИ-8,
		  в противоположном случае элемент содержит адрес строки
		  символов, конец строки - байт с кодом 0.
2240-2257 (20)  - буфер для хранения скэн-кодов клавиш, на которые назначен
                  автоповтор (буфер автоповтора). Формируется драйвером
		  клавиатуры.
2260-2267 (10)  - буфер для хранения скэн-кодов нажатия и отжатия клавиш.
		  Заполняется подпрограммой обслуживания прерывания
		  клавиатуры.

СПИСКИ ВИДЕОСТРОК (2270-7037)

Список видеострок начинается с ячейки 270

270,272     0,2270  -  1-я неотображаемая видеострока

Ячейки с 2270 по 2362 содержат следующую информацию:

n,n+2       0,n+4   -   15 неотображаемых видеострок (со 2-й по 16-ю)

2364,2366   0,2372  -   17-я неотображаемая видеострока, следующий элемент
			является регистром управления отображением

2370,2372 - регистр управления отображением для верхней информационной строки
2374,2376 - 0,2406  -   18-я неотображаемая видеострока, следующий элемент
			является регистром управления цветом
2400,2402 - регистр управления цветом для верхней информационной строки
2404,2406 - 0,2410  -   19-я неотображаемая видеострока

2410-2456 - список 10 видеострок для верхней информационной строки
            Адрес начала видеопамяти - 175700 (длина видеостроки - 50(8))

2460,2462 - регистр управления отображением для экрана пользователя
2464,2466 - 11 видеострока верхней информационной строки. Адрес начала
	    видеопамяти - 176520 (длина видеостроки - 120(8))
2470,2472 - регистр управления цветом для экрана пользователя
2474,2476 - разделительная видеострока между верхней информационной
	    строкой и экраном пользователя/установки. Адрес начала
	    видеопамяти - 177460 (длина видеостроки - 120(8))

2500-4666 - список 286 видеострок экрана пользователя
            Адрес начала видеопамяти 100000 (длина видеостроки - 120(8))

4670,4672 - регистр управления отображением для экрана установки
4674,4676 - 1-я видеострока верней части экрана установки. Адрес начала
	    видеопамяти - 177460 (длина видеостроки - 50(8))
4700,4702 - регистр управления цветом для экрана установки

4704-5026 - список 21 видеостроки верхней части экрана установки.
            Для всех этих видеострок начало видеопамяти - 177460,
	    а длина видеостроки - 50(8)

5030-6606 - список 220 видеострок для области отображения меню УСТАНОВКА
            Адрес начала видеопамяти - 154540 (длина видеостроки - 50(8))

6610-6736 - список 22 видеострок нижней части экрана установки
            Для всех этих видеострок начало видеопамяти - 177460,
	    а длина видеостроки - 50(8)

6740,6742 - регистр управления отображением для нижней информационной строки
6744,6746 - разделительная видеострока между экраном пользователя/установки
	    и нижней информационной строкой. Для этой видеостроки адрес
	    начала видеопамяти - 177460, длина - 50(8).
6750,6752 - регистр управления цветом для нижней информационной строки

6754-7026 - список 11 видеострок для нижней информационной строки
            Адрес начала видеопамяти - 176570 (длина видеостроки - 50(8))

7030   177460  \
7032    7034   |
7034   177460  |  Завершающий цикл
7036    7034   /

ЯЧЕЙКИ ОБЩЕГО НАЗНАЧЕНИЯ (7040-7055)

7040 - сохраняется значение SP при проверке присутствия контроллера дисковода
7042 - передача ASCII-кодов клавиатуры ЦП по каналу 0 (значение 2) или прог-
       рамме ПП по запросам EMT 22 или EMT 24 (значение 0)
7044 - разрешение обращения к программе управления дисковым накопителем.
       Положительное значение разрешает обращение. При отрицательном значении
       происходит обращение к программе управления кассетами ПЗУ.
7046 - длительность звукового сигнала в тиках сетевого таймера.
       Сначала необходимо включить звуковой сигнал, установив соответствующие
       биты в регистре системного управления. Потом в ячейке 7046 установить
       длительность сигнала. Через этот промежуток времени подпрограмма
       обработки прерываний сетевого таймера отключит звуковой сигнал.
	BIS	#600,@#177716	; Включить сигнал
	MOV	#20,@#7046	; Установить длительность

ВЫЗОВЫ СИСТЕМНЫХ ПОДПРОГРАММ В ДИСПЕТЧЕРЕ ПРОЦЕССОВ (7056-7127)

В цикле вызываются 10 системных подпрограмм (в скобках указана точка входа):

  1. Драйвер клавиатуры (104306)
  2. Драйвер канала 2 (125030)
  3. Драйвер текстового терминала (111144)
  4. Обслуживание переключения курсора (176056)
  5. Обслуживание меню УСТАНОВКА (100040)
  6. Обслуживание меню ЗАГРУЗКА (100742)
  7. Драйвер принтера (176076)
  8. Вызов п/п пользователя (176116)
  9. Запуск теста (176460)
  10. Фиктивная п/п (174222)

Фиктивная п/п служит для передачи управления на начало цикла.

Поиск осуществляется с ячейки A=7060. Нулевое значение означает ее пропуск и просмотр следующей (диапазон 7060-7102). Ненулевое значение - вызов соот- ветствующей системной п/п. Значение A+2 заносится в ячейку 7056, а адрес запуска берется из ячеек 7104-7126. Если данная ячейка содержит нуль, то производиться вызов п/п командой CALL по адресу пуска. Ненулевое значение - осуществляется переход командой JMP на адрес по значению ячейки, ячейка очищается.

Ячейки из диапазона 7060-7102 используются как индикаторы вызова, а для 1-й и 3-й п/п также как счетчики числа принятых скэн-кодов и символов по каналу 0/запросам EMT 42/44/46 соответственно.

ЯЧЕЙКИ ОБЩЕГО НАЗНАЧЕНИЯ (7130-7151)

7130 - длительность вращения двигателя дисковода после прекращения выполнения
       операции. Задается в тиках сетевого таймера и устанавливается п/п
       обслуживания накопителя (значение 372(8) (5 секунд))
7132 - адрес п/п выключения двигателя дисковода. Устанавливается п/п обслужи-
       вания накопителя (значение 134454) и вызывается п/п обработки прерываний
       сетевого таймера по истечении времени, заданного в ячейке 7130.
7134 - управление состоянием курсора:
       0 - выключить курсор в старой позиции и включить его в новой позиции;
       2 - не изменять состояние курсора;
       4 - выдержка временных интервалов горения курсора (мигание).
7136 - тип рулона экрана пользователя - плавный(0) или дискретный(2)
7140 - адрес пуска п/п пользователя по запросу через канал 2
7142,7144 - сохранение значения SP в режиме УСТАНОВКА
7146 - пользовательский (=0) или системный (!=0) режим клавиатуры
7150 - режим вывода в верхнюю информационную строку:
       0          - вывод разрешен;
       177772(-6) - вывод блокирован.

РЕЖИМЫ МЕНЮ УСТАНОВКА И ЗАГРУЗКА (7152-7175)

7152 - текущий пункт меню УСТ
7154 - --------/--------- УСТ/система команд
7156 - --------/--------- УСТ/формат экрана
7160 - --------/--------- УСТ/цвет символа
7162 - --------/--------- УСТ/цвет знакоместа
7164 - --------/--------- УСТ/цвет экрана
7166 - --------/--------- УСТ/цвет курсора
7170 - --------/--------- УСТ/рулон
7172 - --------/--------- УСТ/таймер
7174 - --------/--------- ЗАГРУЗКА

ЯЧЕЙКИ ДРАЙВЕРА КЛАВИАТУРЫ (7176-13141)

Указатели на буферы (7176-7211)

7176 - указатель для чтения с буфера 2260-2267 (буфер скэн-кодов)
7200 - указатель для записи в буфер  2260-2267
7202 - указатель для чтения с буфера 2240-2257 (буфер автоповтора)
7204 - указатель для записи в буфер  2240-2257
7206 - указатель для чтения с буфера 2200-2237 (буфер ASCII-кодов)
7210 - указатель для записи в буфер  2200-2237

В байтах 7212 и 7213 сохраняются коды отжатия регистровых клавиш при исполнении комбинаций REG/ФИКС

7214 - адрес текущей таблицы раскладки клавиатуры
7216 - адрес предыдущей таблицы раскладки клавиатуры
Байт 7220 - режим заглавные(0)/строчные(40(8)) буквы
Байт 7221 - предыдущий режим букв
7222 - последовательность посылки кодов 16(8) и 17(8) при нажатии и отжатии
       АЛФ. Младший байт содержит код нажатия, старший - отжатия.
7224 - код, посылаемый при отжатии АЛФ. Нулевое значение означает запрет
       посылки.
Байт 7226 - задержка при автоповторе:
            2 (40 мс) - нормальный автоповтор;
            1 (20 мс) - ускоренный автоповтор.
Байт 7227 - текущее используемое время для реализации автоповтора:
            31(8)(0.5 сек) - между нажатием и автоповтором;
            2,1 - описано выше.
 Значения задержек устанавливаются драйвером клавиатуры

7230 - разрешение исполнения TRAP 2 по окончании обслуживания очереди 
       скэн-кодов нажатия и отжатия. Это необходимо, если по прерыванию
       от канала 0/запросу EMT 22/24 затребовано очередное значение
       для передачи, а буфер ASCII-кодов был пуст.
7232 - разрешение(0)/запрет(!=0) передачи одиночных символов в буфер
       ASCII-кодов

Таблицы раскладки клавиатуры (7234-11013)

Раскладка основного регистра (7234-7513)
----/----  нижнего  регистра (7514-7773)
----/----    ГРАФ   регистра (7774-10253)
----/----    УПР    регистра (10254-10533)
----/----    ФИКС   регистра (10534-11013)

Для каждой клавиши выделено одно слово. Если старший байт равен нулю, то младший содержит код КОИ-8. Старший байт равен 1, младший - код регистровой клавиши:

0 - НР
1 - АЛФ
2 - ГРАФ
3 - УПР
4 - ФИКС
5 - УСТ
6 - УПР+ПОМ (включение/выключение режима ИСУ)
7 - УПР+ИСП (печать экрана)

В последнем случае (старший байт больше 1) это слово содержит адрес строки символов. Конец строки - байт 0.

Сперва в таблице идут клавиши с X0Y5 по X0Y15 (скэн-коды 5 - 17), далее с X1Y5 по X1Y15 (скэн-коды 25 - 37) и т.д. по X7Y5 - X7Y15 (скэн-коды 165 - 177).

Буфер 11014-11053 используется для сохранения режимов дополнительной клавиатуры при исполнении последовательностей Esc = и Esc >.

11014 - режим не ДКЛ(0)/ДКЛ(!=0), далее сохраняются значения клавиш <ВВОД>, <.>,<0>,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<+>,<->,<,>.

Буфер 11054-11137 используется для сохранения режимов клавиш при переключении между системным и пользовательским режимами.

11054 - пользовательский(0)/системный(!=0) режим, далее сохраняются значения клавиш <0>,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<ВК>,<ВВОД>,<ПОМ>,<ИСП>, <ВВЕРХ>,<ВНИЗ>,<ВЛЕВО>,<ВПРАВО>,<НР+ВВЕРХ>,<НР+ВНИЗ>,<НР+ВЛЕВО>,<НР+ВПРАВО>, <ПРОБЕЛ>,<ЗАБОЙ>,<СБРОС>.

11140 содержит 0. Это используется при начальной установке клавиш К1-К25.

Буфер 11142-13137 используется для сохранения строк символов, назначенных на клавиши К1-К25.

13140 - указатель для записи в буфер 11142-13137

ЯЧЕЙКИ ДРАЙВЕРА ТЕКСТОВОГО ТЕРМИНАЛА

Буфер 13142-14141 содержит адреса п/п обработки управляющих и Esc последовательностей. Всего 256 слов. Первые 32 слова содержат адреса обработки управляющих последовательностей (коды 0 - 37), а остальные 224 слова - адреса обработки Esc-последовательностей (от Esc Space (033 040) до Esc БОЛЬШОЙ ТВЕРДЫЙ ЗНАК (033 377)

Буфер 14142-15141 содержит адреса начала рисунков символов, начиная с символа с кодом 0 и т.д. по символ с кодом 255.

Буфер 15142-22541 предназначен для сохранения рисунков символов, определенных пользователем. На каждый символ выделено 11 байт.

22542 - указатель для чтения с буфера 2000-2177
22544 - указатель для записи в буфер 2000-2177

22546 - разрешение исполнения TRAP 4 по окончании вывода символов на экран. Это необходимо, если по прерыванию от канала 0 затребован вывод очередного символа, а буфер был заполнен.

22550 - разрешение(0)/запрет(2) снятия/установки сигнала HALT для ЦП при исполнении Esc ГРАФ-]/Esc ГРАФ-_ ГРАФ-] (033 275 / 033 277 275).

Байт 22552 - установлен(377(8))/не установлен(0) режим ИСУ

Байт 22554 - установлен (!=0) режим инверсии (ИНВ)
Байт 22555 - установлен (!=0) режим подчеркивания (ПОДЧ)

Байт 22556 - латинский (0) или русский (200(8)) режим алфавита
Байт 22557 - предыдущий режим алфавита

Таблицы видеопараметров (22560-23147)

  • ТВ для верхней строки (22560-22655)
  • ТВ для экрана пользователя (22656-22753)
  • ТВ для экрана установки (22754-23051)
  • ТВ для нижней строки (23052-23147)

Структура ТВ:

Смещение  Назначение

  0        Текущий адрес видеопамяти для вывода символа (под курсором)
  2        Начальный адрес видеопамяти
  4        Количество символов в строке 
  6        Число отображаемых видеострок
 10        Длина видеостроки в байтах
 12        Число символьных строк на экране
 14        Общее число видеострок
 16        Количество оставшихся позиций в строке от курсора
 20        Количество оставшихся символьных строк от курсора
 22        Константа начального отступа
 24        Начальный адрес списка видеострок
 26        Конечный адрес списка видеострок
 30        Адрес списка видеострок верхней части экрана
 32        Текущий адрес списка видеострок (под курсором)
 34        Текущий цвет символа
 36        Предыдущий цвет символа
 40        Текущий цвет знакоместа в формате для загрузки в регистр кода
           цвета фона
 42        Предыдущий цвет знакоместа в формате для загрузки в регистр кода
           цвета фона
 44        Текущий цвет фона в формате для загрузки в регистр кода цвета фона
 46        Предыдущий цвет фона в формате для загрузки в регистр кода цвета
           фона
 50        Адрес первого слова регистра управления цветом
 52        Адрес второго слова регистра управления цветом
 54        Адрес второго слова регистра управления отображением
 56        Нормальный режим(0)/инверсия(362(8))/подчеркивание(336(8))
 60        Предыдущий адрес списка видеострок (используется при переключении
           курсора)
 62        Адрес старшего байта первого слова регистра управления отображением
           (координата курсора в строке)
 64        Адрес первого слова регистра управления отображением
 66        Режим экрана 80(1)/40(2)/20(4)/10(10)
 70        Цвет курсора
 72        Разрешение(2)/запрет(0) использования курсора
 74        Присутствие(2)/отсутствие(0) рулона
23150 - адрес текущей таблицы видеопараметров
23152,23154 - сохраняется SP при обработке Esc-последовательностей
23156 - позиция курсора в строке
23160 - указатель на текущий регистр управления отображением
23162 - временные параметры горения курсора (110060). Положительный байт
        означает время горения в тиках таймера (48), отрицательный байт - 
        время нахождения курсора в погашенном состоянии уменьшенное на 2
        без учета старшего бита (32). Времена должны находится в диапазоне
        от 1 до 128.
23164 - разрешение(2)/запрет(0) использования курсора
23166 - текущие временные параметры переключения курсора
23170 - количество видеострок для скроллинга. Положительное значение соот-
        ветствует скроллингу вверх, отрицательное - вниз.
23174 - если ее значение равно 2, то при вызове п/п передачи следующего символа
        производится его проверка на принадлежность к управляющему. Если этот
        символ управляющий, то вызывается соответствующая п/п обработки, а
        символ Esc вообще прерывает исполнение командной последовательности.
        При равенстве содержимого ячейки нулю проверки не производиться.
23176 - ее значение 2 устанавливается п/п исполнения Esc-последовательности
        Esc ГРАФ-_ (033 277) (отмена режима)

ЯЧЕЙКИ ДРАЙВЕРА КАНАЛА 2 (23200-23411)

23200 - в ней сохраняется адрес массива параметров, принятый по каналу 2
23202 - счетчик числа принятых байтов

Ячейки драйвера дисковода (23204-23303)

23204 - значение этой ячейки помещается в РС накопителя (177130). Это необхо-
        димо, т.к. РС различен по чтению и записи.
23206 - указатель на буфер текущих дорожек
Байт 23212 - текущая сторона
Байт 23313 - текущая дорожка
23216 - время разгона двигателя в миллисекундах (0.4 сек для НГМД 5305 и
        1 сек для НГМД 6022)
23220 - текущее время шага в миллисекундах
23222 - текущее время загрузки головки в миллисекундах
23224 - счетчик ошибок

Байт 23226 - номер дорожки, начиная с которой включается задержка 250 нс
Байт 23227 - номер дорожки, начиная с которой включается задержка 500 нс
 Соответственно для НГМД 5305 это дорожки 40 и 80, а для НГМД 6022 - 8 и 30

23230 - сохранение содержимого ячейки 177010
23232 - ----------/----------- R0
23234 - ----------/----------- R1
23236 - ----------/----------- R2
23240 - ----------/----------- R3
23242 - ----------/----------- R4
23244 - ----------/----------- R5

23246 - ячейка общего назначения

23250 - текущий формат сектора
23252 - число слов в секторе

23254-23257 - буфер текущих дорожек для 4 накопителей. Отрицательный байт
              соответствует неопределенному номеру дорожки.

23260-23263 - буфер времен шага для четырех накопителей
23264-23267 - буфер времен загрузки головок для четырех накопителей
23270-23273 - буфер числа секторов в дорожке для четырех накопителей
23274-23277 - буфер параметров SKIP для четырех накопителей

Байт 23300 - текущий параметр SKIP
Байт 23301 - текущее число секторов в дорожке
Байт 23302 - текущий размер межсекторного промежутка

Ячейки драйвера магнитофона (23304-23333)

23304 - длина бита "0". При одинарной скорости записи это 320(8), при
        двойной - 150(8). Время в интервалах по 2 мкс.
23306 - длина бита "1". При одинарной скорости записи это 150(8), при
        двойной - 64(8).
23310 - число записываемых битов "1" при записи пилот-тона перед заголовком.
        Стандартное значение - 17500(8).
23312 - число записываемых битов "1" при записи пилот-тона перед зоной данных.
        Стандартное значение - 3720(8).
23314 - число перепадов логического уровня при поиске пилот-тона перед
        заголовком. Стандартное значение - 17540(8).
23316 - число перепадов логического уровня при поиске пилот-тона перед
        зоной данных. Стандартное значение - 1750(8).
23322 - разброс времени между перепадами логического уровня при поиске
        пилот-тона. Стандартное значение - 64(8).
23324 - среднее значение между длиной битов "0" и "1". Определяется по
        пилот-тону при чтении.
23326 - проверять(0) или не проверять(22(8)) заголовок.
23330 - реальное(0) или фиктивное(4) чтение файла.
23332 - сохранение значения SP.

Буфер 23334-23411 служит для хранения массива параметров управления устройством

23412-23657

ОБЛАСТЬ ОЗУ В ДИАПАЗОНЕ 23412-23657 ИСПОЛЬЗУЕТСЯ ДРАЙВЕРОМ ГРАФИЧЕСКОГО ДИСПЛЕЯ

ПАМЯТЬ ПОЛЬЗОВАТЕЛЯ (23660-77777)

Вся память может быть разбита по областям. Перед каждой областью памяти находится блок описания, состоящий из трех слов.

1 слово - область свободна(0) или занята(<>0);
2 слово - адрес блока описания предыдущей области. У самой первой и послед-
          ней(фиктивной) областей равен нулю;
3 слово - размер области в байтах.

С адреса 77772 расположено описание фиктивной области, состоящее из значений 1(занята), 0(ссылка), 0(размер).

После запуска машины имеется одна свободная область. Ее адрес блока описания равен 23660. Значения 0(свободна), 0(ссылка), 54104(размер).

ПРИЛОЖЕНИЯ

См. УКНЦ RAM.LST app.