Программирование в среде IS-DOS 1993 г.

Приложения к системным рестартам - вектор для строкового редактора. Некоторые коды клавиш формируемые ttyin.key. Коды, формируемые edstr. Вектор 3-го уровня "Оконная технология". Подпрограммы функции panel.


ПРИЛОЖЕНИЕ 11. Вектор для строкового редактора

/ edstr(#7F) WIND.SYS /
подается в IX.

сме-
щение имя длина комментарии

-23 KDEV 1 Логический номер драйвера клавиатуры (ДК)
-22 KCSR 1 управляющий регистр для ДК (KCSR)

-21 MCSR 1 ............. (MCSR) (см. ПРИЛОЖЕНИЕ 2)

-20 XS 1 Х-координата начала редактируемой области

экрана (РОЭ) в знакоместах
-19 YS 1 то же по оси Y.(левый верхний угол (ЛВУ)

прямоугольной РОЭ относ-но ЛВУ экрана)
-18 LN 1 длина РОЭ в знакоместах
-17 НТ 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 ХС 1 текущая Х-координата курсора в буфере
-12 ХМАХ 1 максимальная длина строки-2
-11 LM 1 левая логичесая граница
-10 RM 1 правая логическая граница
-9 Х0 1 число пропускаемых символов
-8 SZ 1 ширина поля требования скроллинга
-7 CODE 1 код, возвращаемый редактором
-6 LNST 1 длина строки с <ENTER>
-5 СОМ 1 команда, к-рую должен выполнить

редактор при входе
-4 TYPE 2 адрес подпрограммы отображения текущего

состояния (если 0Г то не вызывается)

KDEV: может принимать 2 значения: (0/1). При входе
edstr переключается на указанный, на выходе восстанавли-
вает текущий. При загрузки iS-DOS устанавливает 0-ой.

Программа edstr(#7Fj является внутренней точкой входа
рестарта smbgt(#6E) (см.ПРИЛОЖЕНИЕ 14).

Предполагалось его использование в Базах Данных прямо
в файловых панелях, для чего их вектора совместили
(см. ПРИЛОЖЕНИЕ 18).

(Коды, с которыми edstr возвращается см. ПРИЛОЖЕНИЕ 13).

ПРИЛОЖЕНИЕ 12

Некоторые коды клавиш
формируемые ttyin.key

Код клавиша Функция

4 CS/3 Ins/Ovr

5 CS/4 Ноше

6 CS/2 BIG/smal

7 CS/1 Pyc/Lat

8 CS/5 Left

9 CS/8 Right
A CS/6 Down
В CS/7 Up

С CS/0 Delete

D ENTER

E CS/SS Macro

F CS/9 End

10 SS/A PgDn

11 SS/ENTER Prefix

12 SS/SPACE Prefix

13 SS/W Erase

14 SS/E Insert

15 SS/Q PgUp

16 CS/SPACE

17 CS/ENTER Tabulator

ПРИЛОЖЕНИЕ 13. Коды , формируемые edstr(#7F)

/ WIND.sys /

Xmax = 32 - попытка передвинуть курсор (ППК)

за правую физическую границу (ФГ) ХМАХ
Xmin = 33 - ППК за левую ФГ (0)
Pdel = 34 - попытка удаления за левой ФГ

Rmrg = 35 - ППК за правую логическую границу (ЛГ) RM

Lmrg = 36 - ППК за левую ЛГ (LM)

Ldel = 37 - попытка удаления за левой ЛГ

Rscr = 38 - требование правого скроллинга
Lscr = 39 - требование левого скроллинга
Sdel = 40 - попытка удаления за окном

Pins = 41 - попытка выдвинуть текст за правую ФГ
Lins = 42 - попытка выдвинуть текст за правую ЛГ
Elns = 43 - длина строки превышает ХМАХ+2

ПРИЛОЖЕНИЕ 14. Вектор 3-го уровня "Оконная технология"

/ g scr(#72) WIND.SYS /

смещ имя длина комментарии
ение

-2 2 адрес таблицы ф-ций пользователя для

panel(#6А) (см.ПРИЛОЖЕНИЕ 15.)

0 PAPER 1 атрибуты экрана

1 B0RD 1 атрибуты бордюра

2 9 Не используются

параметры для smbgt(#6Е):

11 SMDRV 1 Логический номер драйвера клавиатуры(ДК)

12 SMKCS * 1 управляющий регистр для ДК (KCSR)

13 SMMCS * 1 MCSR (см. ПРИЛОЖЕНИЕ 2.)

14 SMXS * 1 левая верхняя координаты редактируемой

15 SMYS * 1 строки на экране в знакоместах

16 SMLN * 1 длина редактируемой области экрана

17 SMHT * 1 высота редактируемой области экрана

18 SMCSR 1 регистр состояния строкового редактора.

Биты 0/1:

* 6 - s_e - smbgt/edstr - режим работы (0)
1 - c_i - change/insert

19 SMDBF * 2 адрес строки

21 SMXC * 1 тек Х-коор курсора в тексте

22 SMXMX * 1 максимальная длина строки-2 (LN*HT-1)

23 SMLM * 1 левая лог граница (0)

24 SMRM 1 правая лог граница

25 SMX0 * 1 число пропускаемых символов (0)

26 SMSZ 1 ширина поля требования скроллинга

27 SMC0D 1 код, возвращаемый редактором

28 SMLNS 1 длина строки с кодом 13

29 SMC0M 1 команда, к-рую должен выполнить

редактор при входе

30 SMTYP 2 адрес подпрограммы отображения тек.

состояния (если 0, то не вызывается)

Параметры для строкового редактора smbgt полностью
дублируют вектор для edstr(#7F), в чем Вы можете
убедиться, ознакомившись с ПРИЛОЖЕНИЯМИ 11 и 18.

Значения всех границ могут изменяться в пределах от 0
до 253

* Все параметры отмеченные звездочками smbgt
инициализирует сам

ПРИЛОЖЕНИЕ 15. ПОДПРОГРАММЫ ФУНКЦИИ panel(#6А)

- РАБОТА С ПАНЕЛЬЮ / WIND.SYS /

Рестарт имеет 21 точку входа, причем первые 12 функций
необходимы для его поддержки (он сам обращается к этим
функциям), а остальные задают режим работы. Адреса
ф-ций 0..11 сведены в таблицу, адрес которой лежит в
векторе WIND.SYS со смещением -2 (см. ПРИЛОЖЕНИЕ 14).

Т.о. пользователь может подменить эти 12 ф-ций на
свои, что и делают некоторые Базы Данных. Этим же
рестартом пользуется оболочка (уровень SHELL.SYS),
|хисуя на экране свои панели с файлами. Рестарт вынесен
в уровень WIND.SYS, что предполагает возможность его
использования даже при отсутствии уровня SHELL.SYS.
Нужная функция выбирается с помощью регистра А.

0. fprev - по входному номеру записи в регистре

DE найти предыдущую запись.
Выход : Флаг с -ошибка ввода;

z -успешно (DE'= номер)
nz -запись отсутствует.

(DE'= прежний номер записи)

1. fnext - по входному номеру записи в регистре DE

найти следующую запись.
Выход : Флаг с -ошибка ввода;

z -успешно (в DE' - номер)
nz -запись отсутствует.

(DE'= прежний номер записи)

2. pread - заполнить буфер текущей записью

3. g_rcst - вернуть в регистр А состояние записи

4. p_rcst - установить состояние текущей записи.

равным per. В

5. g_no - вернуть в регистр А номер отметки

6. р_по - установить номер отметки текущей записи

равным per. В

7. g_min - вернуть в DE' минимальный номер записи

8. g_max - вернуть в DE' максимальный номер записи

9. сгсог - установка курсора

10. tssel - проверка можно ли отмечать данную запись.

Z-да, NZ-нет.

11. tsres - проверка на маску.

^ Z - подходит, NZ -нет, С -нет.

12. inipnl - самостоятельная инициализация вектора

панели. С - системная ошибка.

13. ctman - печать панели с инициализацией начала

страницы.

14. ctmin - то же, но конца страницы.

15. tymin - скроллинг вверх с печатью нижней строки.

16. tymax - скроллинг вверх с печатью верхней строки.

17. fcmon - движение по панели.

18. cname - печать текущей записи на месте курсора.

19. oners - зажигание курсора.

20. ofcrs - тушение курсора.

21. crset - установка курсора на заданный номер

записи и желаемую позицию




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Лит. страничка - Побасенка про старого деда.
Презентация - Сетевая ролевая игра: Wizard.
Авторы - Адреса редакции.
Размышления - Проблемы AY: вся музыка на AY-редакторах врёт!
Премьера - программа проверки штрихкода EAN-13, Календарь планет, демоверсия игры Kingdom, Zanny, Montana Jones II и новый ассемблер MASM от KSA.

В этот день...   23 апреля