|
Приложение 11,13,14 - вектор для строкового редактора.
|
Приложение 11
Вектор для строкового редактора / edstr(#7F) WIND.SYS
/ подается в IX.
Смеще-ние
|
Имя
|
Длина
|
Комментарий
|
-23
|
KDEV
|
1
|
Логический номер драйвера клавиатуры
|
-22
|
KCSR
|
1
|
управляющий регистр для драйвера клавиатуры (K_CSR)
|
-21
|
MCSR
|
1
|
(M_CSR) (см. ПРИЛОЖЕНИЕ 2)
|
-20
|
XS
|
1
|
X-координата начала редактируемой области экрана в знакоместах 6x8
|
-19
|
YS
|
1
|
Y-координата
(от левого верхнего угла экрана) начала редактируемой области экрана
|
-18
|
LN
|
1
|
Длина редактируемой области экрана в знакоместах 6х8
|
-17
|
HT
|
1
|
Высота редактируемой области экрана
|
-16
|
SCSR
|
1
|
Регистр состояния строкового редактора. Биты (0/1):
7 - mod - признак модифицированной строки (1)
6 - s_e - smbgt/edstr
1 - c_i - change/insert
0 - t_d - text/document - отрабатывать(1) или нет(0) логические границы
|
-15
|
DBUF
|
2
|
адрес ASCII-буфера строки
|
-13
|
XC
|
1
|
текущая Х-координата курсора в буфере
|
-12
|
XMAX
|
1
|
максимальная длина строки-2
|
-11
|
LM
|
1
|
левая логичесая граница
|
-10
|
RM
|
1
|
правая логическая граница
|
-9
|
XO
|
1
|
число пропускаемых символов
|
-8
|
SZ
|
1
|
ширина поля требования скроллинга
|
-7
|
CODE
|
1
|
код, возвращаемый редактором
|
-6
|
LNST
|
1
|
длина строки с <ENTER>
|
-5
|
COM
|
1
|
команда, которую должен выполнить редактор при входе
|
-4
|
TYPE
|
2
|
адрес подпрограммы отображения текущего состояния (если 0, то не
вызывается)
|
KDEV: может принимать 2 значения: (0/1). При входе
edstr переключается на указанный, на выходе восстанавливает текущий. При
загрузки iS-DOS устанавливает 0-ой.
Программа edstr(#7F) является внутренней точкой
входа рестарта smbgt(#6E) (см. ПРИЛОЖЕНИЕ 14).
Предполагалось его использование в базах данных
прямо в файловых панелях, для чего их вектора совместили (см. ПРИЛОЖЕНИЕ
18).
(Коды, с которыми edstr возвращается см. ПРИЛОЖЕНИЕ
13).
|
Приложение 13
Коды, формируемые edstr
(#7F) / WIND.SYS /
Значение
|
Комментарий
|
XMAX=32
|
Попытка передвинуть курсор за правую физическую границу XMAX
|
XMIN=33
|
Попытка передвинуть курсор за левую физическую границу (0)
|
PDEL=34
|
Попытка удаления за левой физической границей
|
RMRG=35
|
Попытка передвинуть курсор за правую логическую границу (RM)
|
LMRG=36
|
Попытка передвинуть курсор за левую логическую границу (LM)
|
LDEL=37
|
Попытка удаления за левой логической границей
|
RSCR=38
|
Требование правого скроллинга
|
SDEL=40
|
Требование левого скроллинга
|
PINS=41
|
Попытка выдвинуть текст за правую физическую границу
|
LINS=42
|
Попытка выдвинуть текст за правую логическую границу
|
ELNS=43
|
Длина строки превышает XMAX+2
|
Приложение 14
Вектор 3-го уровня "Оконная технология" / g_scr (#72) WIND.SYS /
Смеще-ние
|
Имя
|
Длина
|
Комментарии
|
-2
|
|
2
|
Адрес таблицы функций пользователя для $panel (#6A)
(см. ПРИЛОЖЕНИЕ 15)
|
0
|
PAPER
|
1
|
Атрибуты экрана
|
1
|
BORD
|
1
|
Атрибуты бордюра
|
2
|
|
9
|
Не используются
|
параметры для smbgt
(#6E):
|
11
|
SMDRV
|
1
|
Логический номер драйвера клавиатуры
|
12
|
SMKCS*
|
1
|
Управляющий регистр для драйвера клавиатуры (K_CSR)
|
13
|
SMMCS*
|
1
|
M_CSR (см. ПРИЛОЖЕНИЕ 2)
|
14
|
SMXS*
|
1
|
Левая верхняя координаты редактируемой строки на
экране в знакоместах
|
15
|
SMYS*
|
1
|
16
|
SMLN*
|
1
|
Длина редактируемой области экрана
|
17
|
SMHT*
|
1
|
Высота редактируемой области экрана
|
18
|
SMCSR
|
1
|
Регистр состояния строкового редактора. Биты (0/1):
*6 - s_e - smbgt/edstr - режим работы (0)
7 - c_i - change/insert
|
19
|
SMDBF*
|
2
|
Адрес строки
|
21
|
SMXC*
|
1
|
Текущая X-координата курсора в тексте
|
22
|
SMXMX*
|
1
|
Максимальная длина строки - 2·(LN·HT-1)
|
23
|
SMLM*
|
1
|
Левая логическая граница
|
24
|
SMRM
|
1
|
Правая логическая граница
|
25
|
SMXO*
|
1
|
Число пропускаемых символов
|
26
|
SMSZ
|
1
|
Ширина поля требования скроллинга
|
27
|
SMCOD
|
1
|
Код, возвращаемый редактором
|
28
|
SMLNS
|
1
|
Длина строки с кодом 13
|
29
|
SMCOM
|
1
|
Команда, которую должен выполнить редактор при входе
|
30
|
SMTYP
|
2
|
Адрес подпрограммы отображения текущего состояния (если 0, то не
вызывается)
|
Параметры для строкового редактора smbgt полностью дублируют вектор для edstr (#7F),
в чем можно убедиться, ознакомившись с ПРИЛОЖЕНИЯМИ 11 и 18
Значения всех границ могут изменяться в пределах от
0 до 253
* Все параметры, отмеченные "*" smbgt инициализирует сам.
|
|
|