Professional Documents
Culture Documents
MPMC Dos Calls
MPMC Dos Calls
pend
DOS
DOS Function
Function Calls:
Calls: INT 21H **
INT 21H
Table B.1
Function Value Function Register I/P Return O/P
In AX/AH AL
1 . Function 00H (0) Restore termination handler vector from psp: 000AH AH = 00, CS = Segment Nothing
Program terminate Restore the ctrl C–vector from psp : 000EH address of program
segment prefix
2 . Function 01H (1) Inputs a character from keyboard, then echoes it to
Character I/P display, If no character is ready, waits until one AH = 01 AL = 8-bit character
with echo. is available.
3 . Function 02H(2) Output a character to the currently active AH = 02, DL = 8 bit char. Nothing
Character output video display. (ASCII code)
4 . Function 03H(3) Reads a character from the first serial port. AH = 03 AL = 8-bit char.
Auxiliary input
5 . Function 04H(4) Output a character to the first serial port. AH = 04 Nothing
Auxiliary output DL = 8-bit char.
6 . Function 05H(5) Sends a character to the first device (PRN or LPT 1). AH = 05
Printer output DL = 8-bit char.
Appendix B
default drive. identification byte, CX =
Size of physical sector
(in bytes), DX = number
of clusters for default drive.
29. Function 1CH(28) Obtains selected information about the specified AL = number of sector AH = 1CH
645
Get allocation disk drive and a pointer to the identification per cluster, DS:BX = DL = drive code (0 =
646 Advanced Microprocessors and Peripherals
information for byte from its file allocation table (FAT) segment: offset of FAT default, 1 = A, etc.)
specified drive. identification table,
CX = Size of physical
sector (in bytes), DX =
number of clusters for
default or specified drive.
30. Function 1DH (29) Reserved – –
31. Function 1EH (30) Reserved – –
32. Function 1FH (31) Reserved – –
33. Function 20H (32) Reserved – –
34. Function 21H (33) Read a selected record from a file into memory AH = 21H DS:DX AL = 00 if read
Random read = segment: offset successfully, 01 if
of previously opened end of file, 02
file control block. if segment wrap, 03
if partial record
read at end of file.
35. Function 22H (34) Writes data from memory into a selected record in a AH = 22H, DS:DX = AL = 00 if write
Random write file. segment : offset of successfully, 01 if
previously opened file disk full, 02 if
control block. segment wrap.
36. Function 23H (35) Searches for a matching file in the current AH = 23H, DS:DX = If matching file
Get file size in subdirectory, if one is found, fills a file control block segment: offset of found AL = 0, if not
records (FCB) with file size information in terms of record unopened file control then AL = 0FFH.
count. block.
37. Function 24H (36) Sets the random record field of a file control block AH = 24H, DS:DX = Register contents not
Set random record (FCB) to correspond to the current file position segment: offset of affected, Random–
number as recorded in the opened FCB. previously opened file record field is
control block. modified in file
control block.
38. Function 25H (37) Initialize a machine interrupt vector to point to an AH = 25H, AL = machine Nothing
Set interrupt interrupt handling routine. interrupt number,
vector DS:DX = segment:
offset of interrupt
handling routine.
39. Function 26H (38) Copies the program segment perfix (PSP) of the AH = 26H Nothing
Create program current executing program to a specified segment DX = segment of new
segment prefix address in free memory, then updates the new program segment prefix.
PSP to make it usable by another program.
40. Function 27H (39) Reads one or more sequential records from a file into AH = 27H AL = 00 if all
Random block memory, starting at a designated file location. CX = number of records requested records
read to be read, DS:DX = read, 01 if end of file,
segment:offset 02 if segment wrap,
of previously opened file 03 if partial record
control block. read at end of file,
CX = actual number
of records read.
41. Function 28H (40) Writes one or more sequential records from a AH = 28 H AL = 00 if all
Random block memory to a file, starting at a designated file CX = number of records r e q u e s t e d records
write location. to be written, DS:DX = are written, 01 if
segment: offset of disk full, 02 if
previously opened FCB segment wrap, CX =
actual number of
records written.
42. Function 29H (41) Parses a text string into the various fields of the AH = 29 H, AL = flags to AL = 00 if no global
Parse filename control block. control passing, DS:SI = c h a r a c t e r
seg.: offset of text string, encountered, 01 if
ES:DI = segment: string, parsed string contain
offset, of file control global character,
block. 0FFH if drive
specifier invalid,
DS:SI = seg.: offset
of 1st char. after
parsed filename,
ES:DI = seg.: offset
of formatted
unopened file block.
43. Function 2AH (42) Obtains the system day of month, day of the week, AH = 2AH CX = year (1980–
Get system date month, and year. 2099) DX = month
DL = day
44. Function 2BH (43) Initialises system–clock driver to a specified date. AH = 2BH AL = 00 if date set
Set system date The system time is not affected. CX = year successfully.
Appendix B
DH = month = 0FFH if date not
DL = day valid.
45. Function 2CH (44) Obtains time of day from system real time clock AH = 2CH CH–hour
Get system time driver, converted to hour, minutes, seconds and CL–minutes
647
hundredths of seconds. DH–seconds
DL–1/100th of secs.
648 Advanced Microprocessors and Peripherals
46. Function 2DH (45) Initialises system real–time clock to a specified hour, AH = 2DH AL = 00 if time set
Set system time min, sec. and hundredth of second. System date is CH = hours successfully
not affected. CL = minutes = 0FFH if not valid.
DH = seconds
DL = 1/100th of secs.
47. Function 2EH (46) turns off or turns on o.s. flag for automatic read–after AH = 2EH
Set verify flag write verification of data. AL = 00
48. Function 2FH (47) Obtains current address of DTA for FCB file AH = 2FH ES:BX = seg.:offset of
Get disk transfer read/write operation. DTA
are a addr.
49. Function 30H (48) Returns version no. of operating system. AH = 30H AL = major version
Get MS–DOS version no.
number AH = minor version
no.
(3.10 = 0AH(10), etc.)
50. Function 31H (49) Terminates a process without releasing its memory. AH = 31H –
Terminate & stay AL = return code = mem.
resident (KEEP size to reserve
process)
51. Function 32H (50) – – –
Reserved
52. Function 33H (51) Determines current status of os’s Ctrl–break or AH = 33H DL = 00 if C–B
Get/set Ctrl–Break Ctrl–C checking flag. if getting status of Ctrl– checking off, DL =
flag Break flag AL = 00, 01 if Ctrl –Break
if setting AL checking on.
= 01, DL = 00, DL = 01.
53. Function 34H (52) – – –
Reserved
54. Function 35H (53) Obtains address of current interrupt handler routine AH = 35H ES:BX = seg.: offset of
Get interrupt for specified M/C interrupt. AL = int. no. interrupt handle.
vector
55. Function 36H (54) Obtains selected info. about a disk drive from which AH = 36H If drive valid,
Get free disk space the drive’s capacity can be calculated. DL = drive code. AX–sectors/cluster
BX–no. of clusters
CX–bytes/sectors
DX–clusters/drive
If specified drive
invalid AX = FFFFH
56. Function 37H (55)
Reserved
57. Function 38H (56) Obtains current-country information. AH = 38H, AL = 00, If no error occurs,
Get/Set country DS:DX = seg:offset of BX = country code
buffer for returned DS:DX Bytes
information. 0-1 = date format
2 = currency symbol
3 = zero
4 = thousand, sep.
char.
5 = zero
6 = decimal sep. char.
7 = zero
8-31 = reserved.
If error occurs,
CY flag = set
AX = error code
If no error while
setting
current country code
CY = clear.
If error occurs CY =
set
AX = error code.
58. Function 39H (57) Creates sub-directory using specified drive and path. AH = 39H, DS:DX = seg.: If function successful,
Create sub-directory offset of ASCIIZ path CY = clear.
specification Function failed,
CY = set,
AX = error code.
59. Function 3AH (58) Removes sub-directory using specified disk and path. AH = 3AH, DS:DX = seg.: If function successful,
Delete sub-directory offset of ASCIIZ string. CY = clear.
Function failed,
CY = set,
Appendix B
AX = error code.
60. Function 3BH (59) Sets the current or default directory using specified AH = 3BH DS:DX = seg.: If function successful,
Set current drive and path. offset of ASCIIZ string. CY = clear.
directory Function failed,
CY = set,
649
Ax = error code.
650 Advanced Microprocessors and Peripherals
61. Function 3 CH (60) Creates a new file in the designated or default AH = 3CH If function successful,
Create or truncate directory on the designated or default disk drive. CX = file attribute, carry flag = clear,
file If specified file already exists it is truncated to 00H if normal, 01H if AX = file handle.
zero length. The file is opened and a 16-bit token, or read only, 02H if hidden, If not successful,
handle is returned, which is used by the program 04H if system. DS:DX = Carry flag = set,
for further access to the file. seg.: offset of ASCIIZ file.AX = error code,
3-if path not found
4-if no handle
5-if access denied.
62. Function 3DH (61) Given an ASCIIZ file specification opens the specified AH = 3DH If function successful,
Open file file in the designated or default directory on the AL = access mode Carry flag = clear,
designated or default disk drive. DS:DX = seg.:offset of AX = file handle.
ASCIIZ file specification. If not successful
CY flag = set,
AX = error code.
63. Function 3EH (62) Given a file token or handle that was returned by AH = 3EH If function successful,
Close file a previous successful open (function 3DH) or create BX = file handle. Carry flag = clear.
operation, flushes all internal buffer to disk, closes If not successful,
the file, and releases the handle for reuse. If file was Carry flag = set,
modified or extended, the time and date, stamp and AX = error code,
the file size are updated in directory entry. 6-if handle invalid or
not open.
64. Function 3FH (63) Given a valid file token or handle from a previous AH = 3FH If function successful,
Read file or device successful open or create operation, a buffer address BX = file handle, CX = no. CY flag = clear,
and a length in bytes, transfers data at the current of bytes to be read, AX = no. of bytes
file-pointer from the file into the buffer & then DS:DX = seg.:offset of read. If failed,
updates the file pointer position. buffer area. CY flag = set,
AX = error code.
65. Function 40H (64) Given a file token or handle from a previous AH = 40H If function successful,
Write to file or successful open or create operation, a buffer address BX = file handle, CX = no. CY flag = clear,
device and a length in bytes, transfers data from the buffer of bytes to be written, AX = no. of bytes
into the file and updates the file pointer positions. DS:DX = seg.:offset written. If fn failed,
CY flag = set,
AX = error code.
66. Function 41H (65) Deletes a file from the specified or default disk and AH = 41H If function successful,
Delete file directory. DS:DX = Seg.:offset CY flag = clear.
If function failed,
CY = set,
AX = error code.
67. Function 42H (66) Sets file pointer location relative to the start of the AH = 42H If function successful.
Move file pointer file, the end of file or current file position. AL = method code Carry flag = clear.
BX = file handle DX-most significant
CX = most significant part of new ptr.
half of offset location,
DX = least significant AX-least significant
half of offset part of new ptr.
location,
1-if function no. valid
6-if handle invalid.
68. Function 43H (67) Obtains or alters the attributes of a file. AH = 43H If function successful,
Get or set file AL = 00H if getting CY flag = clear.
attributes file attribute, If AL = 00 on call
01H if setting, CX-attribute.
CX = new attribute If function failed,
DS:DX = seg.:offset CY flag = set,
AX = error code.
69. Function 44H (68) Passes control information directly between an AH = 44H AL = 00H If function successful
Device driver application and a device driver. if getting device info. CY flag = clear.
control (IOCTL) 01H- if setting device AX = no of bytes
info 02H-if reading from transferred
device control channel to AX = value if function
buffer 03H-if writing code 08H
from buffer to device AL-status if function
control channel 04H-same 06H-07H
as 02H, but codes using DX-device into if
drive no. in BL 05H-same function code 00H.
as 03H, but using drive
no. in BL 06H-if getting
l/p status. 07H-if getting
O/p status 08H-if testing
whether block device
changeable 09H-if testing
Appendix B
block device local
0AH-if testing handle local
0BH-if changing sharing
retry count.
651
652 Advanced Microprocessors and Peripherals
70. Function 45H (69) Given a handle for a currently open device or file AH = 45H If function successful,
Duplicate handle returns a new handle that refers to the same device BX-file handle CY flag = clear,
or file. AX = new file handle.
If function failed,
CY flag = set,
AX = error code,
4-if no handle
6-if handle invalid.
71. Function 46H (70) Given two handles makes the second handle refer to AH = 46H If function successful,
Force duplicate the same opened file at the same location as first BX = first file handle CY flag = clear.
of handle handle. CX = second file handle If function failed,
CY flag = set,
AX = error code,
4-if no handle
6-if handle invalid.
72. Function 74H (71) Obtains an ASCIIZ string that describes the path AH = 47H If function successful,
Get current from the root to currently active directory and name DL = drive code CY flag = clear.
directory of directory. DS:SI = seg.:offset of If function failed,
64-byte scratch buffer CY flag = set,
AX = error code.
73. Function 48H (72) Allocates a block of memory and returns a pointer to AH = 48H If function successful,
Allocate memory the begining of the allocated area. BX = no. of paragraphs of CY flag = clear,
memory needed. AX-initial seg. of
allocation block. If
failed, CY flag = set,
AX = error code,
BX = size of largest
available block.
74. Function 49H (73) Release a memory block and makes it available for AH = 49H If function successful,
Release memory use by other programs. ES = seg. or block to be Carry flag = clear.
released. It not successful,
Carry flag = set,
AX = error code,
7-if MCB’s destroyed
9-if incorrect segment
in ES.
75. Function 4AH (74) Dynamically shrinks or extends a memory block AH = 4AH If function successful,
Modify memory according to the needs of an application program. BX = new requested block Carry flag = clear.
allocation size in paragraphs ES = If not successful,
seg. block to be modified. Carry flag = set,
AX = error code,
BX = max. block size
available.
76. Function 4BH (75) Allows an application program to run another AH = 4BH If function successful,
Execute program program, regaining control when it is finished and AL = 00 if loading + Carry flag = clear,
optionally examining the child program’s return code. executing program All registers except
Can also be used to load overlays, but this use is = 03 if loading overlay CS and IP are
uncommon. ES:BX = seg.:offset of destroyed including
parameter block. SP. If function failed,
DS:DX = seg.:offset of Carry flag = set,
prog. specification AX = error code,
(file name) 1-if function invalid
2-if file not found or
path invalid
3-if insufficient
memory to load the
program 5-if access
denied 0AH-if
environment invalid
0BH-if format invalid.
77. Function 4CH (76) Performs a final exit to MS-DOS or to a parent task, AH = 4CH
Terminate with passing back a return code. DOS then takes following AL = return code
return code actions:
1. Restores the termination handler vector from
PSP:000AH
2. Restores the Ctrl-Break vector from PSP:000EH
3. Restores critical error handler vector from
PSP:0012H
4. Flushes file buffers
Appendix B
5.Transfer to termination handler address.
78. Function 4DH Gets return code of child program after AH = 4DH AH = 00-normal
its termination. termination with
function 4CH 01-
termination via ^C,
653
INT23H
654 Advanced Microprocessors and Peripherals
02-termination due to
critical error
03-termination via
function 31H.
AL = Return code
specified while
terminating using
4CH or 31H
79. Function 4EH Search directory for first matching file and AH = 4EH, CX = Search If function succeeds,
report information about it attribute, CY = 0, i.e. matching
DS:DX = Segment: Offset filename is found
address of null and the following
terminated ASCII string information is
of the filename path or reported in DTA-
default directory. Before Bytes 00-14H-
this function user must reserved
set DTA (Disk transfer 15H-Attribute of the
area) using function 1AH. file
16H-17H-Time of
creation/update
18H-19H-Date of
creation/update
1A-1BH-Least
significant word of
file size
1C-1DH-Most
significant word
of file size
1E-2AH-Filename
and extension
of the matched file
if function fails, CY =
1 i.e. a matching
filename is not found
and AX = 02H-Invalid
path
12H-If no file with
the matching name is
found in the default
or specified directory.
80. Function 4FH Search the default or specified directory for AH = 4FH, Function 1 If function succeeds,
next matching file, following a successful call AH must be called to CY = 0 i.e. a matching
to function 4EH, and report various set DTA before filename is found and
information about it. executing this function. the following
information is
reported in DTA-
Bytes 00-14H-
reserved
15H-Attribute of the
file
16H-17H-Time of
creation/update
18H-19H-Date of
creation/updated
1A-1BH-Least
significant word of
file size
1C-1DH-Most
significant word of
file size
1E-2AH-Filename
and extension of the
matched file
If function fails, CY =
1 i.e. a matching
filename is not found
and AX = 12 H-If no
file with the matching
name is found in the
default or specified
directory
Appendix B
81. Function 50H-53H RESERVED
82. Function 54H Get verified state-Using this function every disk AH = 54 H AL = 00-If varify flag
write operation can be verified for correctness is off 01-If varify
of the written data by reading it after the write flag is on
operation.
655
656 Advanced Microprocessors and Peripherals
Appendix B
in ASCII string format. created already
exists.If succeeds CY
= 0, AX = file handle
of new file.
657
658 Advanced Microprocessors and Peripherals
90. Function 5CH-5FH These are intended for use of networking and
are not of interest as far as this text is
concerned.
91. Function 60H-61H RESERVED
92. Function 62H Get the address of the current program AH = 62H BX = Segment
PSP address of the
current program
PSP
93. Function 63H This function was used in DOS 2.25 only and
is not of interest here.
N.B.
1 . There are number of other DOS interrupt functions. This Appendix enlists only the functions under INT21H in brief.
For details of these functions users may refer ‘Microsoft DOS Encyclopedia or ‘Microsoft DOS Reference Manual’.
2 . Besides the DOS interrupts the personal computers also provide a separate family of BIOS interrupts. Their details
may be obtained from ‘IBMPC Reference Manual’.