Difference between revisions of "Uknc RAM description"

From Felixl.com
Jump to navigationJump to search
 
(ЯЧЕЙКИ ДРАЙВЕРА КЛАВИАТУРЫ (7176-13141))
Line 269: Line 269:
 
----/----    ФИКС  регистра (10534-11013)
 
----/----    ФИКС  регистра (10534-11013)
 
</pre>
 
</pre>
 +
Для каждой клавиши выделено одно слово. Если старший байт равен нулю, то
 +
младший содержит код КОИ-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
 +
 +
== ЯЧЕЙКИ ДРАЙВЕРА ТЕКСТОВОГО ТЕРМИНАЛА ==
 +
  
 
'''''TODO: Дооформить остальную часть документа'''''
 
'''''TODO: Дооформить остальную часть документа'''''

Revision as of 01:33, 23 March 2007

Оригинальный документ 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

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

TODO: Дооформить остальную часть документа