- •Содержание
- •Библиотеки
- •Подпрограммы классификации
- •Подпрограммы преобразования
- •Подпрограммы управления каталогом
- •Подпрограммы диагностики
- •Подпрограммы поддержки графики
- •Подпрограммы ввода/вывода
- •Интерфейсные подпрограммы (dos, 8086, bios)
- •Подпрограммы манипулирования (строками, памятью)
- •Математические подпрограммы
- •Подпрограммы распределения памяти
- •Прочие подпрограммы
- •Подпрограммы управления процессами
- •Cтандартные подпрограммы
- •Подпрограммы отображения текста в окнах
- •Подпрограммы работы со временем и датой
- •Подпрограммы с переменным списком аргументов
- •Environ
- •Errno, _doserrno, sys_errlist, sys_nerr
- •_Heaplen
- •_Osmajor, _osminor
- •_Stklen
- •Timezone
- •_Version
- •Absread
- •Abswrite
- •Allocmem
- •Asctime
- •Bdosptr
- •Bioscom
- •Biosdisk
- •Biosequip
- •Bioskey
- •Biosmemory
- •Biosprint
- •Biostime
- •Bsearch
- •_Clear87
- •Cleardevice
- •Clearerr
- •Closegraph
- •_Control87
- •Coreleft
- •Country
- •Сprintf
- •Creatnew
- •Creattemp
- •Ctrlbrk
- •Delline
- •Detectgraph
- •Difftime
- •Disable
- •Dosexterr
- •Dostounix
- •Drawpoly
- •Ellipse
- •Exec...
- •Farcalloc
- •Farcoreleft
- •Farfree
- •Farmalloc
- •Farrealloc
- •Fcloseall
- •Fgetchar
- •Fgetpos
- •Filelength
- •Fillellipse
- •Fillpoly
- •Findfirst
- •Findnext
- •Floodfill
- •Flushall
- •Fnmerge
- •Fnsplit
- •_Fpreset
- •Fprintf
- •Fputchar
- •Freemem
- •Freopen
- •Fsetpos
- •Geninterrupt
- •Getarccoords
- •Getaspectratio
- •Getbkcolor
- •Getcbrk
- •Getchar
- •Getcolor
- •Getcurdir
- •Getdate
- •Getdefaultpalette
- •Getdfree
- •Getdisk
- •Getdrivername
- •Getfatd
- •Getfillpattern
- •Getfillsettings
- •Getftime
- •Getgraphmode
- •Getimage
- •Getlinesettings
- •Getmaxcolor
- •Getmaxmode
- •Getmaxx
- •Getmaxy
- •Getmodename
- •Getmoderange
- •Getpallete
- •Getpalettesize
- •Getpass
- •Getpixel
- •Gettext
- •Gettextinfo
- •Gettextsettings
- •Gettime
- •Getvect
- •Getverify
- •Getviewsettings
- •Graphdefaults
- •Grapherrormsg
- •_Graphfreemem
- •_Graphgetmem
- •Graphresult
- •Harderr
- •Hardresume
- •Hardretn
- •Highvideo
- •Imagesize
- •Initgraph
- •Inportb
- •Insline
- •Installuserdriver
- •Installuserfont
- •Intdosx
- •Isalnum
- •Isalpha
- •Isascii
- •Iscntrl
- •Isdigit
- •Isgraph
- •Islower
- •Isprint
- •Ispunch
- •Isspace
- •Isupper
- •Isxdigit
- •Linerel
- •Loсaltime
- •Longjmp
- •Lowvideo
- •Lsearch
- •_Matherr
- •Matherr
- •Memccpy
- •Memicmp
- •Memmove
- •Movedata
- •Moverel
- •Movetext
- •Normvideo
- •Nosound
- •Outport
- •Outportb
- •Outtext
- •Outtextxy
- •Parsfnm
- •Pieslice
- •Putchar
- •Putimage
- •Putpixel
- •Puttext
- •Randbrd
- •Randbwr
- •Randomize
- •Realloc
- •Rectangle
- •Registerbgidriver
- •Registerbgifont
- •Restorecrtmode
- •Searchpath
- •Segread
- •Setactivepage
- •Setallpalette
- •Setaspectratio
- •Setbkcolor
- •Setblock
- •Setcbrk
- •Setcolor
- •Setdate
- •Setdisk
- •Setfillpattern
- •Setfillstyle
- •Setftime
- •Setgraphbufsize
- •Setgraphmode
- •Setlinestyle
- •Setmode
- •Setpalette
- •Setrgbpalette
- •Settextjustify
- •Settextstyle
- •Settime
- •Setusercharsize
- •Setvbuf
- •Setvect
- •Setverify
- •Setviewport
- •Setvisualpage
- •Setwritemode
- •Spawn...
- •Sprintf
- •_Status87
- •Strcmpi
- •Strcspn
- •_Strerror
- •Strerror
- •Stricmp
- •Strncat
- •Strncmp
- •Strncmpi
- •Strncpy
- •Strnicmp
- •Strnset
- •Strpbrk
- •Strrchr
- •Strtoul
- •Textattr
- •Textbackground
- •Textcolor
- •Textheight
- •Textmode
- •Textwidht
- •Tmpfile
- •Toascii
- •_Tolower
- •Tolower
- •_Toupper
- •Toupper
- •Ungetch
- •Unixtodos
- •Vfprintf
- •Vfscanf
- •Vprintf
- •Vsprintf
- •Vsscanf
Intdosx
-----------------------------------------------------------------
НазначениеОбщий интерфейс программных прерываний MS-DOS.
Синтаксис #include<dos.h>
int intdosx(union REGS *inregs,
union REGS *outregs,union SREGS *segregs);
Прототип вdos.h
Замечанияintdosx вызывает программное прерывание 0x21
для вызова специальной функции DOS. Значение
inregs->h.al определяет вызываемую функцию.
intdosx, кроме того, копирует segregs->x.ds и
segregs->x.es в соответствующие регистры перед
выполнением программного прерывания. Эта осо-
бенность позволяет программам, которые исполь-
зуют дальние (far) указатели или большую модель
памяти, определить сегмент, который будет ис-
пользован во время выполнения функции.
После завершения обработки прерывания 0x21
intdosx копирует текущее значение регистров в
outregs, а флаг состояния системы - в поле
outregs x.cflag. intdosx, кроме того, восста-
навливает DS.
Если установлен флаг состояния, это значит, что
возникла ошибка.
Отметим, что inregs может указывать на ту же
структуру, что и outregs.
Возвращаемоеintdosx возвращает значение AX после
значениезавершения функции DOS. Если флаг состояния ус-
тановлен (outregs->x.cflag != 0), указывая на
ошибку, функция присваивает _doserrno код ошиб-
ки.
ПереносимостьУникальна для MS-DOS.
Смотри также bdos, bdosptr, geninterrupt, intdos, int86,
int86x, intr
-----------------------------------------------------------------
intr
-----------------------------------------------------------------
НазначениеДополнительный интерфейс программных прерываний
процессора 8086.
Синтаксис#include<dos.h>
int intr(int intr_num,struct REGPACK *preg);
Прототип вdos.h
ЗамечанияФункция intr - это альтернативный интерфейс для
выполнения программных прерываний. Она вызывает
программное прерывание процессора 8086, указан-
ное в аргументе intr_num.
intr копирует значения регистров из стуктуры
REGPACK в регистры перед выполнением программ-
ного прерывания. После обработки программного
прерывания intr копирует текущие значения ре-
гистров в preg, включая флаги состояний.
Функции intr передаются следующие аргументы:
intr_num - номер прерывания;
preg - адрес структуры, содержащей:
(а) входные регистры перед пре-
рыванием;
(б) значения регистров после
прерывания.
Структура REGPACK (описанная в dos.h) имеет
следующий вид:
struct REGPACK {
unsigned r_ax, r_bx, r_cx, r_dx;
unsigned r_bp, r_si, r_di, r_ds, r_es,
r_flags;
};
ВозвращаемоеНикакого значения не возвращается. Структура
значениеpreg содержит значения регистров после выполне-
ния прерывания.
Переносимостьintr уникальна для процессоров семейства 8086.
Смотри также geninterrupt, int86, int86x, intdos, intdosx
-----------------------------------------------------------------
ioctl
-----------------------------------------------------------------
НазначениеУправляет устройствами ввода-вывода.
Синтаксис int ioctl(int handle, int cmd[, void *argdx,
int argcx]);
Прототип вio.h
ЗамечанияЭто прямой интерфейс к системному вызову 0х44
(IOCTL).
Выполняемая функция зависит от значения cmd
следующим образом:
0- Получить информацию об устройстве;
1- Установить информацию об устройстве (в
argdx);
2- Прочитать argcx байт и поместить их по ад-
ресу, на который указывает argdx;
3- Записать argcx байт, находящихся по адресу
argdx;
4- То же, что и 2, за исключением того, что
handle трактуется, как номер диска (0= те-
кущий, 1= А и т.д.);
5- То же, что и 3, за исключением того, что
handle трактуется, как номер диска (0= те-
кущий, 1= А и т.д.);
6- Получить состояние ввода;
7- Получить состояние вывода;
8- Проверить сменяемость (только для DOS 3.х)
11- Запустить счетчик попыток перезапуска при
конфликте (только для DOS 3.0).
ioctl может использоватся для получения инфор-
мации о каналах устройств. Кроме того, могут
использоваться регулярные файлы, но для них оп-
ределены только значения cmd 0, 6, и 7.
Все остальные вызовы возвращают ошибку EINVAL
для файлов.
Для получения более полной информации об аргу-
ментах и возвращаемых значениях необходимо об-
ратиться к документации по системному вызову
0х44 в Руководстве программиста MS-DOS.
Параметры argcx и argdx необязательны.
ioctl обеспечивает прямой интерфейс с драйвера-
ми устройств DOS для специальных функций. В ре-
зультате точное поведение этих функций будет
различаться в зависимости от оборудования. Кро-
ме того, некоторые устройства не следуют интер-
фейсу, описанному здесь. Для точного использо-
вания ioctl читайте документацию по BIOS.
ВозвращаемоеДля cmd 0 или 1 возвращаемым значением будет
значениеинформация об устройстве (DX в вызове IOCTL).
Для cmd, равного от 2-х до 5, возвращается чис-
ло переданных байт.
Для cmd 6 и 7 возвращается состояние устройс-
тва.
В любом случае, если обнаружена ошибка, возвра-
щается значение -1, и errno присваивается сле-
дующее значение:
EINVAL - неверный аргумент
EBADF - неверен номер файла
EINVDAT - ошибочные данные.
Переносимостьioctl доступен на системах UNIX, но не с этими
параметрами или возможностями. UNIX.7 и System
III отличаются по своему использованию ioctl.
Вызовы ioctl не переносимы для UNIX и редко
переносимы среди машин MS-DOS.
DOS 3.0 расширяет ioctl значениями входных па-
рамиетров 8 и 11.
Пример
#include<stdio.h>
#include<io.h>
#include<dir.h>
main()
{
int stat;
/* Используется функция 8 для определения,
сменяемо ли текущее устройство */
stat = ioctl(0, 8, 0, 0);
printf("Устройство %c изменяемо? %s \n",
getdisk() + 'A', (stat == 0) ? "ДА":"НЕТ");
}
Результат выполнения программы
Устройство C изменяемо? НЕТ
-----------------------------------------------------------------