Приложение 15
Подпрограммы функции panel (#6A) - работа с панелью / WIND.SYS /
|
№ функции |
Имя |
Примечание |
|
Рестарт имеет 21 точку входа, причем первые 12 функций необходимы для его поддержки (он сам обращается к этим функциям), а остальные задают режим работы. Адреса функций 0..11 сведены в таблицу, адрес которой лежит в векторе WIND.SYS со смещением -2 (см. ПРИЛОЖЕНИЕ 14). Т.о. пользователь может подменить эти 12 функций на свои, что и делают некоторые базы данных. Этим же рестартом пользуется оболочка (уровень SHELL.SYS), рисуя на экране свои панели с файлами. Рестарт вынесен в уровень WIND.SYS, что предполагает возможность его использования даже при отсутствии уровня SHELL.SYS. Нужная функция выбирается с помощью регистра A. |
||
|
0 |
fprev |
По входному номеру записи в регистре DE найти предыдущую запись. Выход: C - ошибка ввода Z - успешно (DE' - номер) NZ - запись отсутствует (DE' - прежний номер записи) |
|
1 |
fnext |
По входному номеру записи в регистре DE найти следующую запись. Выход: C - ошибка ввода Z - успешно (DE' - номер) NZ - запись отсутствует (DE' - прежний номер записи) |
|
2 |
pread |
Заполнить буфер текущей записью |
|
3 |
g_rcst |
Вернуть в регистр A состояние записи |
|
4 |
p_rcst |
Установить состояние текущей записи равным регистру B |
|
5 |
g_no |
Вернуть в регистр A номер отметки |
|
6 |
p_no |
Установить номер отметки текущей записи равным регистру B |
|
7 |
g_min |
Вернуть в DE' минимальный номер записи |
|
8 |
g_max |
Вернуть в DE' максимальный номер записи |
|
9 |
crcor |
Установка курсора |
|
10 |
tssel |
Проверка, можно ли отмечать данную запись: Z- да, NZ - нет |
|
11 |
tsres |
Проверка на маску: Z - подходит, NZ - нет, C - нет |
|
12 |
inipnl |
Самостоятельная инициализация вектора панели. C - системная ошибка |
|
13 |
ctman |
Печать панели с инициализацией начала страницы |
|
14 |
ctmin |
То же, но конца страницы |
|
15 |
tymin |
Скроллинг вверх с печатью нижней строки |
|
16 |
tymax |
Скроллинг вверх (вниз?) с печатью верхней строки |
|
17 |
fcmon |
Движение по панели |
|
18 |
cname |
Печать текущей записи на месте курсора |
|
19 |
oncrs |
Зажигание курсора |
|
20 |
ofcrs |
Тушение курсора |
|
21 |
crset |
Установка курсора на заданный номер записи и желаемую позицию |
Приложение 16
Команды оболочки / SHELL.SYS /
|
Код |
Клавиша |
Имя |
Примечание |
|
0(#00) |
|
fcmon |
Выход без каких-либо специальных действий |
|
5(#37) |
7 |
mkdir |
Создание подкаталога на текущей панели |
|
6(#06) |
CS/2 |
rtdev |
Выбор устройства на правой панели |
|
7(#07) |
CS/1 |
lfdev |
Выбор устройства на левой панели |
|
8(#08) |
CS/5 |
plpan |
Перемещение курсора на левую панель без открытия устройства |
|
9(#09) |
CS/8 |
prpan |
Перемещение курсора на правую панель без открытия устройства |
|
13(#0D) |
ENTER |
curun |
Запуск файла, на котором стоит курсор, а также вход и выход из каталога |
|
14(#0C) |
CS/SS |
dbpnl |
Копирование текущей панели на альтернативную |
|
54(#36) |
6 |
view |
Запуск программы просмотра согласно файлу S:SHELLextview.txt |
|
56(#38) |
8 |
gmenu |
Вызов главного меню |
|
79(#4F) |
O |
nlpan |
Перемещение курсора на левую панель с открытием устройства |
|
80(#50) |
P |
nrpan |
Перемещение курсора на правую панель с открытием устройства |
|
104(#68) |
h |
prnt |
Запуск программы печати согласно файлу S:SHELLextprint.txt |
|
111(#6F) |
o |
plpan |
то же, что 8 - CS/5 |
|
112(#70) |
p |
prpan |
то же, что 9 - CS/8 |
|
|
|||
|
Код |
pnCSR |
Имя |
Примечание |
|
240(#F0) |
01110 |
cvwnel |
Перепечатка текущей панели с сохранением позиции курсора |
|
241(#F1) |
01010 |
nvwpnl |
Перепечатка текущей панели с установкой курсора на начало панели |
|
242(#F2) |
01110 |
cshel2 |
Аналог $shel2(#82) с сохранением позиций курсора на обеих панелях |
|
243(#F3) |
01010 |
nshel2 |
Полный аналог рестарта $shel2 |
|
244(#F4) |
01110 |
cshel1 |
Аналог $shel1(#81) с сохранением позиций курсора на обеих панелях |
|
245(#F5) |
01010 |
nshel1 |
Полный аналог рестарта $shel1 |
|
246(#F6) |
01110 |
cshel0 |
Аналог $shel0(#80) с сохранением позиций курсора на обеих панелях |
|
247(#F7) |
01010 |
nshel0 |
Полный аналог рестарта $shel0 |
|
248(#F8) |
00110 |
_panel |
Перепечатка текущей панели с сохранением отметки |
|
251(#FB) |
11010 |
new |
Перепечатка текущей панели с открытием устройства |
|
Выполнить все эти команды можно если вернуться в оболочку с флагом Z и NC по RET или по рестарту shout(#84). Чтобы выполнить данные команды и остаться в прикладной задаче пользуйтесь рестартом shsubr(#8E). Эти же команды отрабатывает оболочка при опросе клавиатуры. Все остальные коды клавиш оболочка ищет в файле S:SHELLextkey.txt. Рестарт shsubr инициализирует панель при ее перепечатке. После чего при повторном его вызове с любым кодом кроме перечисленных (например 255) он перехватит управление и будет сам отрабатывать движение по панели вверх и вниз. По любой клавише кроме A, Q,CS/A,CS/Q он вернет управление. Запуска файлов рестарт shsubr не производит. В случае вызова по рестартам флаг Z не существенен. Биты регистра pnCSR см. ПРИЛОЖЕНИЕ 17. |
|||
Приложение 17
Вектор оболочки / $g_mpan (#87) - BC' / SHELL.SYS/
|
Смещение |
Имя |
Длина |
Комментарий |
|
-9 |
SHLDAT |
2 |
Дата трансляции SHELL.SYS |
|
-7 |
ERCSR |
1 |
Управляющий байт для $shexe (#93): 0 - не/1 - сообщить об ошибке 81 (нет файла) |
|
-6 |
FNC |
1 |
Код ошибки или клавиши |
|
-5 |
nLOG |
1 |
Управление подкраской строки подсказок: 1 - красить, 0 - нет / $mmenu (#89) |
|
-4 |
pnCSR |
1 |
Регистр состояния печати панелей. Биты: 0 - pn - временный номер панели 1 - sw - разрешение (требование) смены панели (1) 2 - crs - сброс (0)/сохранение (1) позиции курсора 3 - in - сброс (1)/сохранение (0) отметки 4 - nw - открытие устройства (1) 5 - err - наличие ошибок (внутреннее употребление) pnCSR подаётся в регистре B на входе в $shpanl (#90) |
|
-3 |
DFANL |
2 |
Адрес анализатора 12 функций (см. ПРИЛОЖЕНИЕ 15) |
|
-1 |
NPANL |
1 |
Номер панели / $g_curs (#8A) - B' |
|
0 |
CHPAN |
2 |
Номера каналов левой и правой панелей / $g_mpan (#87) - BC' |
|
2 |
PAPER |
1 |
Цвет верхней части экрана |
|
3 |
GRAND |
1 |
Цвет бордюра |
|
4 |
MWCOL |
2 |
Цвета надписей "Please Wait" левой и правой |
|
6 |
FCURS |
2 |
|
|
8 |
Pshl |
8 |
Путь: "S:SHELL" |