INT 21,44,C / IOCTL,C - Generic I/O for Handles
AH = 44h AL = 0C BX = handle CH = device type = 00 unknown device type (DOS 3.3+) = 01 COMx (DOS 3.3+) = 03 CON (DOS 3.3+) = 05 LPTx (DOS 3.3+), printer (DOS 3.2) CL = minor function code (when CH = 3 or CH = 5) = 45 set iteration count (DOS 3.2 only) = 4A select code page (DOS 3.3+); parameter format: 00 word length of data 02 word code page ID 04 nwords character set data array (see offset 00) = 4C code page prepare start (DOS 3.3+); parameter format: 00 word flags 02 word length of remainder of parameter block 04 word number of code pages following 06 nwords code page 1,...,N = 4D code page prepare end (DOS 3.3+); parameter format: 00 word length of data 02 word code page ID = 5F set display info (DOS 4.x, when CH=3); parameter format: 00 byte level (0 for DOS 4.0) 01 byte reserved 02 word length of following data 04 word control flags bit 0 set for blink, clear for intensity bits 1 to 15 reserved 06 byte mode type (1=text, 2=graphics) 07 byte reserved 08 word colors; 0=monochrome, n=bits per pixel 0A word pixel columns 0C word pixel rows 0E word character columns 10 word character rows = 65 get iteration count (DOS 3.2 only) = 6A query selected code page (DOS 3.3+); parameter format: 00 word length of data 02 word code page ID 04 nwords character set data array (see offset 00) = 6B query prepare list (DOS 3.3+); Parameter format: 00 word length of following data 02 word number of hardware code pages 04 nwords hardware code page array xx word number of prepared code pages xx nwords prepared code page array = 7F get display info (DOS 4.x, CH = 3) 00 byte level (0 for DOS 4.0) 01 byte reserved 02 word length of following data 04 word control flags bit 0 set for blink, clear for intensity bits 1 to 15 reserved 06 byte mode type (1=text, 2=graphics) 07 byte reserved 08 word colors; 0=monochrome, n=bits per pixel 0A word pixel columns 0C word pixel rows 0E word character columns 10 word character rows DS:DX = pointer to iteration count word (DOS 3.2) = pointer to parameter block (DOS 3.3) on return AX = error code if CF set (see DOS ERROR CODES) - iteration count word specifies the number of times to retry an operation before aborting - DOS 3.3 changed this function to handle code page switching - implemented from DOS 3.2 - DOS 4.x adds support for double byte characters - see IBM DOS Technical Reference Manual for more details