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

Bdosptr

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

НазначениеСистемный вызов MS-DOS.

Синтаксис int bdosptr(int dosfun, void *argument,unsigned

dosal);

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

Замечанияbdosptr обеспечивает прямой доступ ко многим

системным вызовам MS-DOS. Смотри руководство

системного программиста (Programmer's Reference

Manual) для детализации каждого системного вы-

зова.

Те системные вызовы, которые требуют целый ар-

гумент, используют bdos, те же, которые требуют

указатель на аргумент, используют bdosptr.

Для малых модeлей данных (tiny, small и medium)

bdos и bdosptr аналогичны. В больших моделях

данных (compact, largе и huge), очень важно ис-

пользование именно bdosptr для системных вызо-

вов, которые требуют указатель в качестве аргу-

мента вызова.

dosfun описана в Руководстве программиста по MS

-DOS.

В малых моделях параметр argument в bdosptr за-

дается в DX; в больших моделях этот параметр

задается парой величин DS:DX, используемой в

системныx вызоваx.

dosal - значение регистра AL.

Возвращаемоеbdosptr в случае успешного завершения возвра-

значениещает значение регистра AX, а в случае ошибки

-1. Кроме того, в случае ошибки устанавливаются

значения _doserrno и errno.

ПереносимостьУникальна для MS-DOS.

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

Смотри такжеbdos, geninterrupt, int86, int86x, intdos,

intdosx

Пример Смотри harderr

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

Bioscom

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

НазначениеКоммуникация ввода/вывода.

Синтаксисint bioscom(int cmd, char byte, int port)

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

Замечанияbioscom осуществляет различные коммуникационные

связи в соответствии с протоколом обмена интер-

фейса RS232 через порт, заданный в port.

Величина port равная 0 соответствует COM1, рав-

ная 1 - COM2 и т.д.

Значение cmd может быть одним из следующиx:

0 - устанавливает коммуникационные параметры

равные значению, указанному в byte.

1 - посылает в линию связи символ из byte.

2 - получает символ из линии связи.

3 - возвращает текущее состояние коммуникацион-

ного порта.

byte представляет собой комбинацию из следующих

битов:

0х02 7 бит данных

0х03 8 бит данных

0х00 1 стоп бит

0х04 2 стоп бит

0х00 отсутствие контроля четности

0х08 контроль на нечетности

0х18 контроль четности

0х00 110 бод

0х20 150 бод

0х40 300 бод

0х60 600 бод

0х80 1200 бод

0хA0 2400 бод

0хC0 4800 бод

0хE0 9600 бод

Например, заданное в byte значение 0хEB (0хE0|0

х08|0х00|0х03) устанавливает коммуникационный

порт в 9600 бод, контроль на нечетность, 1 стоп

-бит и 8 бит данныx. Функция bioscom использует

прерывание BIOS 0x14.

ВозвращаемоеДля всеx значений cmd кодом возврата является

значение16-битовое целое, в котором 8 старшиx бит явля-

ются битами состояния, а 8 младших - изменяются

в зависимости от значения cmd.

Старшие биты кода возврата определяются следую-

щим образом:

бит 15 - истек тайм-аут

бит 14 - сдвиговый регистр передачи пуст

бит 13 - передающий регистр-защелка пуст

бит 12 - фиксация завершения

бит 11 - ошибка кодирования

бит 10 - ошибка четности

бит 9 - ошибка переполнения

бит 8 - готовность данныx

Если значение cmd=1 и 15-ый бит установлен, то

значение byte не может быть передано. В против-

ном случае оставшиеся старшие и младшие биты

устанавливаются соответствующим образом.

При обнаружении ошибки устанавливается по край-

ней мере один из старших битов. Если старшие

биты не установлены, то байт был принят без

ошибки.

При значении cmd 0 или 3, старшие биты возвра-

щаемого значения установлены как описано выше,

а младшие биты определяются следующим образом:

бит 7 - получен сигнал открытия линии

бит 6 - индикатор кольца

бит 5 - готовность набора данныx

бит 4 - посылка сброса

бит 3 - получен дельта-сигнал открытия линии.

бит 2 - обрыв кольца

бит 1 - завершение модификации набора данных

бит 0 - дельта-сброс

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

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

Пример

/* Демонстрационный пример работы bioscom */

#include<bios.h>

#include<conio.h>

#define COM1 0

#define DATA_READY 0x100

/* 1200 бод, 7 бит, 1 стоп-бит, контроль

четности отменен */

#define SETTINGS (0x80|0x02|0x00|0x00)

main()

{

int register in,out,status;

bioscom(0,SETTINGS,COM1);

cprintf("...BIOSCOM [ESC] для завершения "

" ...\n");

while(1)

{

status = bioscom(3,0,COM1);

if (status & DATA_READY)

if ((out = bioscom(2,0,COM1) & 0x7F) != 0)

putch(out);

if (kbhit())

{

if ((in = getch()) == '\x1B')

return(0);

bioscom(1,in,COM1)

}

}

}

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