Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
76
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

Приложение А.01: Основные системные структуры данных

Продолжение таблицы А.01-1

3Eh

7

Статус флоппи-дисководов, подробнее в A.08-1

49h

22

Данные видеорежима, подробнее в A.10-6

67h

4

Адрес рестарта (примечание 4 к A.12-1)

6Ch

4

Счет времени в тактах, начиная с полуночи

70h

1

Счет суток, сбрасываемый от INT 1A\AH=00h

71h

1

Бит 7 установлен после нажатия Ctrl-Break

72h

2

Предписываемые действия POST (примечание 1)

74h

1

Код завершения последней операции (A.06-1)

75h

1

Число дисководов на жестких магнитных дисках

77h

1

Адрес порта для жестких магнитных дисков

78h

1

Счетчик времени ожидания для порта LPT 1

7Ch

1

Счетчик времени ожидания для порта COM 1

7Dh

1

Счетчик времени ожидания для порта COM 2

80h

4

Адреса буфера клавиатуры (A.02-3)

84h

8

Регистры видеорежима, подробнее в A.10-6

8Ch

3

Статус контроллера жестких магнитных дисков

8Fh

7

Данные флоппи-контроллера, подробнее в A.08-1

96h

2

Статус клавиатуры, подробнее в A.02-3

98h

4

Указатель на флаг ожидания INT 15\AX=8300h

9Ch

4

Заданное время ожидания в микросекундах

A0h

1

Флаги системного таймера:

 

 

бит 0: произведен вызов INT 15\AH=86h

 

 

бит 7: время ожидания истекло

CEh

2

Счет дней с последнего включения компьютера

F0h

16

Область обмена данными для программ.

Примечание 1: при перезагрузке путем перехода на адрес F000:FFF0h (примечание 4 к A.12-1) компьютер может выполнять тест POST по-разному в зависимости от слова, заранее записанного по адресу 0040:0072h:

0000h – "холодная" перезагрузка (с проверкой памяти) 1234h – "теплая" перезагрузка (без проверки памяти)

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

A.01-2 Избранные данные из Списка Списков MS-DOS

Список Списков представляет собой одну из базовых системных структур, создаваемую загрузчиком IO.SYS в момент начала загрузки MS-DOS. Указатель на начало Списка Списков можно получить с помощью INT 21\AH=52h (8.02-59). Рис. 10 (в разделе A.03-3) иллюстрирует процесс доступа к Списку Списков.

– 589 –

Приложение А.01: Основные системные структуры данных

Сведения о назначении отдельных данных в Списке Списков показаны в приведенной ниже таблице.

Смещение

Длина

Содержание

– 02h

2

Сегмент дескриптора (A.12-7) 1-го блока памяти

00h

4

Указатель на первый блок DPB (примечание 1).

04h

4

Указатель на SFT (System File Table, A.01-4)

0Ch

4

Указатель на драйвер устройства CON (Console)

10h

2

Предельный размер сектора на любом диске

16h

4

Адрес первой записи в таблице CDS (A.03-3)

20h

1

Число зарегистрированных дисководов

21h

1

Число записей в таблице CDS (A.03-3)

22h

18

Заголовок драйвера NUL (примечание 2)

34h

1

Число виртуальных дисков программы Join.exe

37h

4

Указатель на таблицу драйвера SETVER.EXE

3Dh

2

Сегмент PSP последней исполненной программы

43h

1

Загрузочный диск (01h = A:, 03h = C:, и т.д.)

45h

2

Размер расширенной памяти в килобайтах.

Примечание 1: блоки DPB (Drive Parameter Blocks, A.03-1) организованы в цепочку, так что указатель на каждый следующий блок DPB находится в ячейке со смещением 19h в предыдущем блоке DPB.

Примечание 2: заголовок устройства NUL – первый в цепи заголовков драйверов. Первые 4 байта в заголовке каждого драйвера заняты указателем на заголовок следующего драйвера. Указатель на заголовок второго драйвера также можно получить с помощью INT 2F\AX=122Ch. У последнего драйвера заголовок начинается со слова FFFFh.

A.01-3. Избранные записи в области SDA

Адрес области SDA (Swappable Data Area) и ее размер можно узнать с помощью INT 21\AX=5D06h (8.02-70). В этой области MS-DOS содержит текущие данные, характеризующие ее состояние в каждый конкретный момент, в том числе основные системные стеки. В зависимости от размера стеков область SDA может занимать до нескольких килобайт.

Сохранение и последующее восстановление всей области SDA представляют собой основной механизм обеспечения реентерабельности DOS, то есть возможности вызова функций DOS обработчиками прерываний, вызванными во время исполнения функции DOS. Если в момент вызова обработчик прерывания обнаруживает, что флаг критической ошибки и флаг InDOS (в байтах области SDA со смещениями 00h и 01h) не сброшены в нуль, значит, данный вызов прервал

– 590 –

Приложение А.01: Основные системные структуры данных

исполнение функции DOS, и тогда следующий вызов функции DOS может изменить данные в области SDA так, что возврат к продолжению исполнения прерванной программы станет невозможен. Хотя иногда возврат все же возможен (8.02-28, 8.02-87), тем не менее наиболее универсальный выход состоит в том, чтобы перед вызовом функций DOS записать состояние области SDA, о после окончания их исполнения восстановить состояние области SDA по сохраненной записи. Еще нужно иметь ввиду, что функция INT 21\AX=5D06h (8.02-70) тоже не-реентерабельна, и потому определить адрес области SDA надо заранее, в процессе инициализации обработчика прерывания, а в момент прерывания следует лишь пользоваться заранее подготовленным адресом.

Приводимая ниже таблица показывает размещение избранных данных в области SDA.

Смещение

Длина

Содержание

00h

1

Флаг критической ошибки ("ErrorMode")

01h

1

Флаг InDOS (INT 21\AH=34h, 8.02-28)

02h

1

Диск, вызвавший ошибку (FFh - ошибки нет)

03h

1

Место возникновения ошибки (A.06-4)

04h

2

Код завершения последней операции (A.06-1)

06h

1

Способ исправления ошибки (A.06-3)

07h

1

Класс последней ошибки (A.06-2)

08h

4

Состояние ES:DI в момент последней ошибки

0Ch

4

Адрес области DTA (8.02-16)

10h

2

Сегмент PSP - идентификатор текущего процесса

14h

2

Уровень ошибки (errorlevel) последнего процесса

16h

1

Номер текущего логического диска

17h

1

Флаг BREAK (3.01, 4.02, 8.02-25)

2Ah

1

Флаг ответа Fail при вызове INT 24 (8.02-84)

2Bh

1

Разрешенные действия INT 24 (8.02-84)

30h

1

День месяца

31h

1

Месяц

32h

2

Год, отсчитываемый от 1980 года

34h

2

Число дней с 1 января 1980 года

36h

1

День недели (0 = воскресенье)

A.01-4 Структура блоков описания в таблицах SFT

Взаимное соответствие между номерными ссылками и теми "открытыми" объектами, на которые они ссылаются, задается последовательностью системных файловых таблиц SFT (System File Tables). Название SFT не вполне корректно,

– 591 –

Приложение А.01: Основные системные структуры данных

потому что объектами ссылок могут быть не только файлы, но также области памяти, каналы посылки данных и т.п.

Указатель на первую таблицу SFT помещается в ячейку со смещением 04h в "Списке Списков" (A.01-2). Таблицы SFT образуют цепь: первые 4 байта в каждой таблице содержат указатель на начало следующей таблицы SFT, за исключением последней таблицы, которая начинается со слова FFFFh. Слово со смещением 04h в каждой таблице SFT объявляет число блоков описания, содержащихся в данной таблице. Каждый блок описания соответствует одному "открытому" объекту. Общее число блоков описания во всех таблицах SFT ограничено спецификацией команды

FILES (4.12) в конфигурационном файле CONFIG.SYS.

Номера блоков описания, "открытых" для конкретной программы, записываются в таблицу JFT, которая размещена начиная со смещения 18h в префиксе сегмента (PSP, A.07-1) этой программы. Соответствующие "открытые" объекты адресуются посредством номерных ссылок (INT 21\AH=3Dh, 8.02-33), которые идентифицируют блоки описания в таблицах SFT по порядку размещения их номеров в таблице JFT. Номер блока описания в таблице SFT, соответствующий определенной ссылке, можно найти с помощью INT 2F\AX=1220h (8.03-11). Затем по найденному номеру блока описания с помощью INT 2F\AX=1216h (8.03-09) можно получить адрес этого блока описания в таблице SFT. Некоторые сведения о блоках описания в таблицах SFT и соответствующих им объектах можно получить с помощью INT 21\AX=4400h (8.02-40).

Первые три блока описания в таблице SFT по умолчанию связаны с определенными объектами: 00h – с каналом AUX в порт COM1, 01h – с каналами драйвера устройства CON (консоли), 02h – с каналом PRN в порт LPT1. Эти три номера автоматически записываются в таблицу JFT каждой программы, причем порядок их размещения в JFT (01h, 01h, 01h, 00h, 02h) определяет соответствующие им номерные ссылки: 0000h – для канала STDIN, 0001h – для канала STDOUT, 0002h – для канала STDERR, 0003h – для порта COM1, 0004h – для порта LPT1.

Блоки описания в таблицах SFT, которым соответствуют номерные ссылки от 0005h и далее, создаются по запросу обработчиками прерываний INT 21\AH=3Dh (8.02-33) и INT 21\AX=6C00h (8.02-78).

Первый блок описания в каждой таблице SFT начинается со смещения 06h. Начальные смещения всех следующих блоков описания несложно рассчитать, так как каждый из них имеет постоянную длину 3Bh. Приведенная ниже таблица

показывает размещение данных в любом отдельном блоке описания с отсчетом смещений от его начала, причем первая колонка "CDE" (= character device entries) показывает размещение данных в блоках описания не-файловых объектов, а вторая колонка "OFE" (= ordinary file's entries) показывает размещение данных в блоках описания обычных файлов.

– 592 –

Приложение А.01: Основные системные структуры данных

CDE

OFE

Длина

Содержание

00h

00h

2

Число ссылок на объект (FFFFh - нет ссылок)

02h

02h

1

Условия доступа (A.09-4)

 

03h

1

Флаги (примечание 1)

 

04h

1

Атрибуты файла (A.09-2)

05h

05h

2

Информационное слово объекта (A.04-2 для

 

 

 

файлов, A.05-2 для не-файлов)

07h

07h

4

Адрес блока DPB (A.03-1) для файлов или адрес

 

 

 

заголовка драйвера (A.05-1) для не-файлов

 

0Bh

2

Номер 1-го кластера (для локальных файлов)

 

0Dh

2

Время последнего изменения (8.02-63)

 

0Fh

2

Дата последнего изменения (8.02-63)

 

11h

4

Размер файла

 

15h

4

Положение указателя в файле (8.02-38)

 

19h

2

Относительный номер кластера, к которому

 

 

 

производилось предыдущее обращение

19h

 

4

Адрес блока данных IFS

 

1Bh

4

Сектор каталога с записью о данном файле

 

1Fh

1

Номер записи о файле в секторе каталога

20h

20h

11

Имя объекта в FCB-формате (A.09-5)

 

31h

2

Сегмент PSP программы, открывшей объект

 

35h

2

Абсолютный номер кластера, к которому

 

 

 

производилось предыдущее обращение

37h

 

4

Адрес IFS-драйвера (или 0000:0000h без IFS)

Примечание 1: байт флагов в ячейке со смещением 03h включает все, что задается в регистре BH при вызове INT 21\AX=6C00h (8.02-78) и, кроме того, бит 7, устанавливаемый для тех файлов, которые открыты посредством блоков FCB (File Control Blocks).

A.02 Коды клавиатуры и национальная адаптация

A.02-1 Коды клавишей

Задача достижения совместимости компьютера с разными типами клавиатур возложена на аппаратные средства материнской платы и на систему BIOS, потому что управление с клавиатуры должно быть обеспечено всегда, даже когда операционная система не загружена. С этой целью сразу после включения компьютера система BIOS загружает обработчики прерываний INT 09 и INT 16, обслуживающие операции, связанные с клавиатурой.

– 593 –

Приложение А.02: Коды клавиатуры и национальная адаптация

При каждом нажатии на клавишу и при каждом отпускании клавиши контроллер клавиатуры принимает и преобразует поступающие от клавиатуры сигналы, а затем выставляет код в порт 60h и посылает запрос по линии IRQ 01, вызывающий на исполнение обработчик прерывания INT 09. Некоторые клавиши заставляют контроллер передавать последовательность кодов, вызывая обработчика INT 09 несколько раз подряд. Код, считываемый обработчиком из порта 60h, обычно является скэн-кодом конкретной клавиши, но может оказаться служебным кодом. К служебным кодам относятся 00h, AAh, а также все коды от E0h до FFh.

Для идентификации нажатия клавишей особое значение имеют два служебных кода, называемые префиксами:

E0h – префикс для различения клавиш, которым ради сохранения совместимости со старыми 84-клавишными клавиатурами дан одинаковый скэн-код.

E1h – префикс для клавиш с двухбайтовым скэн-кодом. Обычно такая клавиша только одна: Pause/Break (примечание 6 к A.02-1).

Считывание префикса подготавливает обработчик прерывания INT 09 к особой интерпретации того скэн-кода, который будет передан ему при следующем вызове. Во 2-м столбце (INT 09) приводимой ниже таблицы показаны шестнадцатеричные скэн-коды нажатия клавиш, считываемые в момент вызова обработчиком прерывания INT 09. Коды отпускания отличаются от кодов нажатия только установленным в единицу старшим (седьмым) битом, и в таблице не показаны, так как их легко вывести из кодов нажатия (например, 1Eh – нажатие клавиши "A", а 9Eh – ее отпускание). Но те скэн-коды, которым предшествует передача префикса E0h или E1h, приведены во втором столбце таблицы совместно с этим префиксом, причем тот же префикс обычно предшествует и коду отпускания тех же клавишей.

Обработчики прерываний INT 09 и INT 16 преобразуют считанный из порта скэн-код в унифицированный скэн-код и в значение кода ASCII, соответствующие нажатой клавише. Именно эта пара значений предоставляется любой программе,

которая пошлет запрос на ввод данных с клавиатуры посредством прерывания INT 16. Унифицированный скэн-код, как правило, повторяет скэн-код нажатия, но может быть изменен, если одновременно удерживалась нажатой какая-либо из "функциональных" клавишей: Shift, Ctrl или Alt. Каждая "функциональная" клавиша имеет свой скэн-код, все они показаны во второй колонке таблицы и принимаются во внимание обработчиком прерывания INT 09, но в буфер клавиатуры не заносятся. Состояние "функциональных" клавишей отображается иначе через слово статуса, возвращаемое при вызове INT 16\AH=12h (8.01-85).

По номенклатуре клавишей приведенная ниже таблица соответствует широко распространенной 104-клавишной "улучшенной" клавиатуре. Слово "num" перед

названием клавиши в первом столбце таблицы является отличительным признаком клавишей из цифровой группы в правой части клавиатуры, причем значения кодов

для таких клавишей указаны при выключенном состоянии переключателя

– 594 –

Приложение А.02: Коды клавиатуры и национальная адаптация

NumLock. Клавиши упоминаются в порядке возрастания исходного скэн-кода (во второй колонке).

Шестнадцатеричные числа в 3-й 6-й колонках таблицы представляют данные, которые обработчик прерывания INT 16\AH=10h (8.01-83) возвращает в регистре AX. Левые две цифры в каждом четырехзначном числе это унифицированный скэн-код, возвращаемый в AH, а правые две цифры это код ASCII соответствующего знака, возвращаемый в AL. Данные третьей колонки (AX) представляют одиночное нажатие, не сопровождаемое удержанием какой-либо "функциональной" клавиши. Данные в четвертой колонке (SHIFT) соответствуют случаю, когда удерживается нажатой "функциональная" клавиша SHIFT, данные в пятой колонке (CTRL) – случаю удержания "функциональной" клавиши CTRL, данные в шестой колонке (ALT) – случаю удержания "функциональной" клавиши ALT. Если в ячейке таблицы число не указано, значит, соответствующая

клавишная комбинация не отображается обработчиком прерывания

INT 16\AH=10h.

Клавиша

INT09

AX

SHIFT

CTRL

ALT

Примечания

Esc

 

01

011B

011B

011B

0100

1

1

!

02

0231

0221

 

7800

 

2

@

03

0332

0340

0300

7900

 

3

#

04

0433

0423

 

7A00

 

4

$

05

0534

0524

 

7B00

 

5

%

06

0635

0625

 

7C00

 

6

^

07

0736

075E

071E

7D00

 

7

&

08

0837

0826

 

7E00

 

8

*

09

0938

092A

 

7F00

 

9

(

0A

0A39

0A28

 

8000

 

0

)

0B

0B30

0B29

 

8100

 

_

0C

0C2D

0C5F

0C1F

8200

 

=

+

0D

0D3D

0D2B

 

8300

 

Backspace

0E

0E08

0E08

0E7F

0E00

1

Tab

 

0F

0F09

0F00

9400

A500

1, 2

Q

 

10

1071

1051

1011

1000

 

W

 

11

1177

1157

1117

1100

 

E

 

12

1265

1245

1205

1200

 

R

 

13

1372

1352

1312

1300

 

T

 

14

1474

1454

1414

1400

 

Y

 

15

1579

1559

1519

1500

 

U

 

16

1675

1655

1615

1600

 

I

 

17

1769

1749

1709

1700

 

O

 

18

186F

184F

180F

1800

 

– 595 –

Приложение А.02: Коды клавиатуры и национальная адаптация

Продолжение таблицы А.02-1

 

 

 

 

 

 

P

 

19

 

1970

1950

1910

1900

 

 

[

{

1A

 

1A5B

1A7B

1A1B

1A00

1

 

]

}

1B

 

1B5D

1B7D

1B1D

1B00

1

 

Enter

 

1C

 

1C0D

1C0D

1C0A

1C00

1

 

num Enter

E0 1C

 

E00D

E00D

E00A

A600

1, 3

 

Left Ctrl

1D

 

 

 

 

 

4

 

Right Ctrl

E0 1D

 

 

 

 

 

4

 

A

 

1E

 

1E61

1E41

1E01

1E00

 

 

S

 

1F

 

1F73

1F53

1F13

1F00

 

 

D

 

20

 

2064

2044

2004

2000

 

 

F

 

21

 

2166

2146

2106

2100

 

 

G

 

22

 

2267

2247

2207

2200

 

 

H

 

23

 

2368

2348

2308

2300

 

 

J

 

24

 

246A

244A

240A

2400

 

 

K

 

25

 

256B

254B

250B

2500

 

 

L

 

26

 

266C

264C

260C

2600

 

 

;

:

27

 

273B

273A

 

2700

1

 

'

"

28

 

2827

2822

 

2800

1

 

`

~

29

 

2960

297E

 

2900

1

 

Left Shift

2A

 

 

 

 

 

4

 

SysRq

 

E0 2A

 

 

 

7200

 

5

 

\

|

2B

 

2B5C

2B7C

2B1C

2B00

1

 

Z

 

2C

 

2C7A

2C5A

2C1A

2C00

 

 

X

 

2D

 

2D78

2D58

2D18

2D00

 

 

C

 

2E

 

2E63

2E43

2E03

2E00

 

 

V

 

2F

 

2F76

2F56

2F16

2F00

 

 

B

 

30

 

3062

3042

3002

3000

 

 

N

 

31

 

316E

314E

310E

3100

 

 

M

 

32

 

326D

324D

320D

3200

 

 

,

<

33

 

332C

333C

 

3300

1

 

.

>

34

 

342E

343E

 

3400

1

 

/

?

35

 

352F

353F

 

3500

1

 

num /

 

E0 35

 

E02F

E02F

9500

A400

1, 2 ,3

 

Right Shift

36

 

 

 

 

 

4

 

num *

 

37

 

372A

372A

9600

3700

1, 2

 

Left Alt

 

38

 

 

 

 

 

4

 

Right Alt

E0 38

 

 

 

 

 

4

 

Spacebar

39

 

3920

3920

3920

3920

 

 

Caps Lock

3A

 

 

 

 

 

4

 

F1

 

3B

 

3B00

5400

5E00

6800

 

 

F2

 

3C

 

3C00

5500

5F00

6900

 

 

F3

 

3D

 

3D00

5600

6000

6A00

 

– 596 –

Приложение А.02: Коды клавиатуры и национальная адаптация

Продолжение таблицы А.02-1

 

 

 

 

 

 

F4

 

3E

 

3E00

5700

6100

6B00

 

 

F5

 

3F

 

3F00

5800

6200

6C00

 

 

F6

 

40

 

4000

5900

6300

6D00

 

 

F7

 

41

 

4100

5A00

6400

6E00

 

 

F8

 

42

 

4200

5B00

6500

6F00

 

 

F9

 

43

 

4300

5C00

6600

7000

 

 

F10

 

44

 

4400

5D00

6700

7100

 

 

NumLock

 

45

 

 

 

 

 

4

 

Pause

E1 1D

45

 

 

 

 

 

4, 6

 

ScrollLock

 

46

 

 

 

 

 

4

 

num 7

 

47

 

4700

4737

7700

0007

7

 

Home

E0

47

 

47E0

47E0

77E0

9700

1, 3

 

num 8

 

48

 

4800

4838

8D00

0008

2, 7

 

Arrow Up

E0

48

 

48E0

48E0

8DE0

9800

1, 2, 3

 

num 9

 

49

 

4900

4939

8400

0009

7

 

PgUp

E0

49

 

49E0

49E0

84E0

9900

1, 3

 

num –

 

4A

 

4A2D

4A2D

8E00

4A00

1, 2

 

num 4

 

4B

 

4B00

4B34

7300

0004

7

 

LeftArrow

E0

4B

 

4BE0

4BE0

73E0

9B00

1, 3

 

num 5

 

4C

 

4C00

4C35

8F00

0005

2, 7

 

num 6

 

4D

 

4D00

4D36

7400

0006

7

 

RightArrow

E0

4D

 

4DE0

4DE0

74E0

9D00

1, 3

 

num +

 

4E

 

4E2B

4E2B

9000

4E00

1, 2

 

num 1

 

4F

 

4F00

4F31

7500

0001

7

 

End

E0

4F

 

4FE0

4FE0

75E0

9F00

1, 3

 

num 2

 

50

 

5000

5032

9100

0002

2, 7

 

ArrowDown

E0

50

 

50E0

50E0

91E0

A000

1, 2, 3

 

num 3

 

51

 

5100

5133

7600

0003

7

 

PgDn

E0

51

 

51E0

51E0

76E0

A100

1, 3

 

num 0

 

52

 

5200

5230

9200

 

2, 7

 

Ins

E0

52

 

52E0

52E0

92E0

A200

1, 2, 3

 

num .

 

53

 

5300

532E

9300

 

2, 7

 

Del

E0

53

 

53E0

53E0

93E0

A300

1, 2, 3

 

F11

 

57

 

8500

8700

8900

8B00

8

 

F12

 

58

 

8600

8800

8A00

8C00

8

 

LeftWin

E0

5B

 

B6E0

C2E0

CEE0

DAE0

8

 

RightWin

E0

5C

 

B7E0

C3E0

CFE0

DBE0

8

 

Menu

E0

5D

 

B8E0

C4E0

D0E0

DCE0

8

Примечание 1: обработчик прерывания INT 16\AH=00h не отвечает на комбинацию нажатий этой клавиши и "функциональной" клавиши ALT.

– 597 –

Приложение А.02: Коды клавиатуры и национальная адаптация

Примечание 2: обработчик прерывания INT 16\AH=00h не отвечает на комбинацию нажатий этой клавиши и "функциональной" клавиши CTRL.

Примечание 3: обработчик прерывания INT 16\AH=00h вместо значения E0h кода ASCII возвращает 00h, за исключением нажатий клавиш "num /" и "num Enter": для них вместо скэн-кода E0h он выдает коды 35h, и 1Ch соответственно.

Примечание 4: собственный код этой клавиши в буфер клавиатуры не заносится, но влияет на действия обработчика прерывания INT 09, например, изменяет формирование кодов других клавишей.

Примечание 5: контроллер клавиатуры отвечает на нажатие клавиши SysRq выдачей кодовой последовательности "E0 2A E0 37", а на отпускание выдачей обратной кодовой последовательности "E0 B7 E0 AA". Не все версии BIOS выдают один и тот же код в ответ на клавишную комбинацию CTRL-SysRq.

Примечание 6: клавиша Pause/Break уникальна тем, что ее отпускание отдельно не фиксируется, код отпускания следует сразу после кода нажатия, образуя последовательность E1 1D 45 E1 9D C5. Прием такой последовательности обработчиком прерывания INT 09 влечет сброс (обнуление) буфера клавиатуры и вызов INT 1B.

Примечание 7: показанные коды данной клавиши соответствуют выключенному состоянию переключателя NumLock, а когда он включен, коды из третьей и четвертой колонок таблицы меняются местами.

Примечание 8: обработчик прерывания INT 16\AH=00h вообще не реагирует на нажатие этой клавиши.

Примечание 9: в некоторых моделях клавиатур имеются три клавиши управления электропитанием компьютера: POWER, SLEEP и WAKE UP. Этим клавишам соответствуют скэн-коды E0 5E, E0 5F, E0 63.

A.02-2 Раскладки клавиатуры и национальные кодовые страницы

В этом разделе представлены избранные сведения для осуществления национальной адаптации клавиатуры и шрифтов с помощью средств, имеющихся в поставке операционной системы Windows-95 фирмы Microsoft. Поставляемые средства включают файл данных Country.sys, три файла с раскладками клавиатур

(Keyboard.sys, Keybrd2.sys и Keybrd3.sys), и четыре файла со шрифтами (Ega.cpi, Ega2.cpi, Ega3.cpi и Iso.cpi) для различных кодовых страниц.

Первая колонка (Abbr) приведенной ниже таблицы содержит сокращенные буквенные обозначения стран мира, а третья колонка (ID) – идентификаторы раскладки клавиатуры для тех же стран. Сведения из первой и третьей колонок нужны для составления командной строки запуска драйвера Keyb.com (5.02-04). Идентификатор раскладки клавиатуры необходимо указывать только тогда, когда в

– 598 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]