Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по функциям С++.doc
Скачиваний:
168
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

Biosequip

----------------------------------------------------------------

НазначениеКонтроль оборудования.

Синтаксисint biosequip (void)

Прототип вbios.h

ЗамечанияЭта функция возвращает целое число, описывающее

оборудование, связанное с системой. Для этого

используется прерывание BIOS - 0x11.

Возращаемое Возвращаемое значение интерпретируется как

значениенабор битовых полей. Для IBM PC эти значения

таковы:

бит 14-15 количество принтеров

бит 13 не используется

бит 12 наличие игрового адаптера

бит 9-11 количество портов передачи данных

бит 8 признак наличия DMA

0 - есть DMA,

1 - нет DMA,

например - модель PC Jr

бит 6-7 количество дисководов

1 дисковод = 00,

2 дисковода = 01,

3 дисковода = 10,

4 дисковода = 11, только если 0-ой

бит равен 1

бит 4-5 видео-режим

00 = не используется

01 = 40*25 черно-белый с цветным виде-

оконтроллером

10 = 80*25 черно-белый с цветным виде-

оконтроллером

11 = 80*25 черно-белый с монохромным

видеоконтроллером

бит 2-3 объем ОЗУ

00 = 16К

01 = 32К

10 = 48К

11 = 64К

бит 1 сопроцессор с плавающей запятой

бит 0 загрузка с дискеты

ПереносимостьЭта функция работает только на IBM PC и

совместимых моделях.

----------------------------------------------------------------

Bioskey

----------------------------------------------------------------

Назначение Интерфейс клавиатуры.

Синтаксис int bioskey (int cmd)

Прототип вbios.h

ЗамечанияЭта функция выполняет различные операции с

клавиатурой, используя при этом прерывание 0х16

BIOS. Параметр cmd полностью определяет опера-

цию.

ВозвращаемоеЗначение, возвращаемое функцией, зависит от

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

очередь, определяются параметром cmd:

-----------------------------------------------

cmd ¦ Действия, выполняемые функцией

_______________________________________________

0 возвращает следующую клавишу, нажатую на

клавиатуре. Если младшие 8 бит отличны от

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

ASCII. Если же младшие 8 бит - нуль, то в

старших 8 битах передаются расширенные ко-

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

описании IBM PC.

1 Производится проверка наличия символа

для чтения. Если возвращаемое значение

равно 0, считывать нечего. В противном

случае возвращается значение следующего

символа. Сам же символ сохраняется для

возвращения при следующем вызове bioskey

со значением cmd равном 0.

2 Получает текущий статус shift - клавиш.

Возвращаемая величина получается с помощью

логической операции OR для следующих зна-

чений:

0x80 Установлен режим Insert (вставка)

0x40 Установлен режим Caps (прописные буквы)

0x20 Установлен режим NumLock (клавиши кальку-

ляторного поля используются как цифры)

0x10 Установлен режим Scroll Lock (используется

прикладными программами)

0x08 Нажата клавиша Alt

0x04 Нажата клавиша Ctrl

0x02 Нажата левая клавиша Shift

0x01 Нажата правая клавиша Shift

ПереносимостьЭта функция работает только на IBM PC и совмес-

тимых моделях.

Пример

#include<stdio.h>

#include<bios.h>

#include<ctype.h>

#define RIGHT 0x0001

#define LEFT 0x0002

#define CTRL 0x0004

#define ALT 0x0008

main ()

{

int key;int modifiers;

/* Функция 1 возвращает 0 пока не будет

нажата клавиша. Ожидание ввода c помощью

повторяющейся проверки нажатия клавиши */

while (bioskey (1) == 0);

/* Теперь функция О используется для

получения значения нажатой клавиши. */

key = bioskey (0);

printf("Была нажата клавиша: " );

/* Используется функция 2 для определения

была ли нажата клавиша shift. */

modifiers = bioskey (2);

if (modifiers) {

printf ("[");

if (modifiers & RIGHT) printf ("RIGHT");

if (modifiers & LEFT) printf ("LEFT");

if (modifiers & CTRL) printf ("CTRL");

if (modifiers & ALT ) printf ("ALT");

printf ("]");

}

if (isalnum(key & 0xFF))

print ("'%c'\n",key);

else

printf ("%c02x\n",key);

}

Результат выполнения программы

Была нажата клавиша :[LEFT] 'T'

-----------------------------------------------------------------