<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://wiki.nox-rhea.org/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Nox-Rhea WiKi - back2root:ibm-pc-ms-dos:interrupts:int_21</title>
        <description></description>
        <link>http://wiki.nox-rhea.org/</link>
        <lastBuildDate>Mon, 27 Apr 2026 17:26:28 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://wiki.nox-rhea.org/_media/wiki/dokuwiki.svg</url>
            <title>Nox-Rhea WiKi</title>
            <link>http://wiki.nox-rhea.org/</link>
        </image>
        <item>
            <title>int_21_00</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_00?rev=1673888074&amp;do=diff</link>
            <description>INT 0x21 - 0x00 - Program Terminate

This function is no longer recommended, but can be used by version of DOS before 2.0, see  Int 0x21,0x4C and Int 0x21,0x00

Request/Call:
  reg    value    descr                                                                   AH     0x00</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 16 Jan 2023 16:54:34 +0000</pubDate>
        </item>
        <item>
            <title>int_21_02</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_02?rev=1729859131&amp;do=diff</link>
            <description>INT 0x21 - 0x02 - Write character to standard output

Request/Call:
  reg    value    descr                 AH     0x02                           DL             Character to output  
Return:
  reg   descr</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 25 Oct 2024 12:25:31 +0000</pubDate>
        </item>
        <item>
            <title>int_21_3d</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_3d?rev=1705261071&amp;do=diff</link>
            <description>INT 0x21 - 0x3d - Open File or Device Using Handle

Request/Call:
  reg    value    descr    AH     0x3d              AL         open mode (see below)         DS:DX         pointer to ASCIIZ file name 
open mode
  Bit   Descr</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 14 Jan 2024 19:37:51 +0000</pubDate>
        </item>
        <item>
            <title>int_21_3e</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_3e?rev=1705252278&amp;do=diff</link>
            <description>INT 0x21 - 0x3e - Read Close File or Device Using Handle

Request/Call:
  reg    value    descr    AH     0x3e              BX         file handle 
Return:

CF is cleared : success 
  reg     descr    AX    number of bytes readed 
CF is set: error 
  reg</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 14 Jan 2024 17:11:18 +0000</pubDate>
        </item>
        <item>
            <title>int_21_3f</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_3f?rev=1673888074&amp;do=diff</link>
            <description>INT 0x21 - 0x3f - Read From File or Device Using Handle

Request/Call:
  reg    value    descr    AH     0x3f              BX         file handle   CX         number of bytes to read   DS:DX      pointer to read buffer  
Return:

CF is cleared : success</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 16 Jan 2023 16:54:34 +0000</pubDate>
        </item>
        <item>
            <title>int_21_4a</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_4a?rev=1723540650&amp;do=diff</link>
            <description>INT 0x21 - 0x4a - Resize Memory Block (DOS 2+)

This function :

	*  modifies memory block allocated by int 0x21 - 0x48.
	*  can be used by program to shrink or increase the size of allocated memory

Request/Call:
  reg    value    descr                          AH</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 13 Aug 2024 09:17:30 +0000</pubDate>
        </item>
        <item>
            <title>int_21_4b</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_4b?rev=1723540666&amp;do=diff</link>
            <description>INT 0x21 - 0x4b - &quot;EXEC&quot; - Load and/or Execute Program (DOS 2+)

Request/Call:
  reg    value    descr    AH     0x4b              AL         type of load  DS:DX      ASCIIz program name (must include extentsion)    ES:BX      parameter block (see below)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 13 Aug 2024 09:17:46 +0000</pubDate>
        </item>
        <item>
            <title>int_21_4c</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_4c?rev=1723540683&amp;do=diff</link>
            <description>INT 0x21 - 0x4c - &quot;EXIT&quot; - Terminate with return Code (DOS 2+)

Request/Call:
  reg    value    descr    AH     0x4c              AL     value    return code 
Return:

Nothing

Notes &amp; Comments

	*  unless the process is its own parent (see AH=26h, offset 16h in PSP), all open files are closed and all memory belonging to the process is freed</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 13 Aug 2024 09:18:03 +0000</pubDate>
        </item>
        <item>
            <title>int_21_06_ff</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_06_ff?rev=1729859456&amp;do=diff</link>
            <description>INT 0x21 - 0x06 - Direct console input (Sub Function FFh)

Request/Call:
  reg    value    descr                    AH     0x06         DL     0xFF     
Return:

if ZF=1 : no character is available

if ZF=0 : character is available in AL
  reg   descr</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 25 Oct 2024 12:30:56 +0000</pubDate>
        </item>
        <item>
            <title>int_21_06</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_06?rev=1729859394&amp;do=diff</link>
            <description>INT 0x21 - 0x06 - Direct console output

Request/Call:
  reg    value    descr                                                                   AH     0x06                                                                             DL             Character to output (except FFh, see</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 25 Oct 2024 12:29:54 +0000</pubDate>
        </item>
        <item>
            <title>int_21_09</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_09?rev=1705253513&amp;do=diff</link>
            <description>INT 0x21 - 0x09 - print String

This function :

	*  print string ending by &#039;$&#039;

Request/Call:
  reg      value    descr                               AH       0x9                                          DS:DX            pointer to string ending with &#039;$&#039;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 14 Jan 2024 17:31:53 +0000</pubDate>
        </item>
        <item>
            <title>int_21_25</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_25?rev=1705255467&amp;do=diff</link>
            <description>INT 0x21 - 0x25 - Set Interrupt Vector

Request/Call:
  reg    value    descr    AH     0x25              AL             Interrupt vector number    DS:DX           Pointer to Interrupt handler  
Return:

nothing

Notes &amp; Comments

	*  Provides a safe method for changing interrupt vectors</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 14 Jan 2024 18:04:27 +0000</pubDate>
        </item>
        <item>
            <title>int_21_30</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_30?rev=1705703036&amp;do=diff</link>
            <description>INT 0x21 - 0x30 - Get DOS version (DOS 2+)

Request/Call:
  reg    value    descr    AH     0x30            
Return:
  reg     descr    AL   Major version (2 -&gt; x)   AL   Minor version (in hundredth decimal)   BH   0xFF: indicates MS-DOS, only if OEM vendor chooses to identify</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 19 Jan 2024 22:23:56 +0000</pubDate>
        </item>
        <item>
            <title>int_21_31</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_31?rev=1723368228&amp;do=diff</link>
            <description>INT 0x21 - 0x31 - Terminate Process and Remain Resident

Request/Call:
  reg    value    descr    AH     0x31              AL     0x??    Exit Code    DX     0x??    Memory size in paragraphs to reserve 
Return:

Nothing

Notes &amp; Comments

	*  preferred method for Terminate and Stay Resident programs</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 11 Aug 2024 09:23:48 +0000</pubDate>
        </item>
        <item>
            <title>int_21_34</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_34?rev=1723541249&amp;do=diff</link>
            <description>INT 0x21 - 0x34 - Get Address to DOS Critical Flag

INDOS (Undocumented DOS 2.0+)

Request/Call:
  reg    value    descr    AH     0x34            
Return:
  reg     descr    ES:BX   address of a byte indicating whether a DOS call is in progress. No DOS calls should be made if set.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 13 Aug 2024 09:27:29 +0000</pubDate>
        </item>
        <item>
            <title>int_21_35</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_35?rev=1705255382&amp;do=diff</link>
            <description>INT 0x21 - 0x35 - Get Interrupt Vector

Request/Call:
  reg    value    descr    AH     0x35              AL             Interrupt vector number   
Return:
  reg     descr    ES:BX   pointer to interrupt vector  
Notes &amp; Comments

	*  Standard method for retrieving interrupt vectors</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 14 Jan 2024 18:03:02 +0000</pubDate>
        </item>
        <item>
            <title>int_21_40</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_40?rev=1673888074&amp;do=diff</link>
            <description>INT 0x21 - 0x40 - Write To File or Device Using Handle

Request/Call:
  reg    value    descr    AH     0x40              BX         File Handle   CX         number of bytes to write, a zero value truncates/extends the file to the current file position</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 16 Jan 2023 16:54:34 +0000</pubDate>
        </item>
        <item>
            <title>int_21_48</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_48?rev=1673888074&amp;do=diff</link>
            <description>INT 0x21 - 0x48 - Allocate Memory

Request/Call:
  reg    value    descr    AH     0x48              BX         number of memory paragraph requested 
Return:

	*  CF set if error
	*  CF cleared if successful
  reg     descr    AX    Segment address of allocated memory block (MCB + 1para)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 16 Jan 2023 16:54:34 +0000</pubDate>
        </item>
        <item>
            <title>int_21_50</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_50?rev=1712557390&amp;do=diff</link>
            <description>INT 0x21 - 0x50 - Set Current Process ID

Undocumented DOS 2.x

Request/Call:
  reg    value    descr    AH     0x50              BX         process ID number (process PSP segment Address)  
Return:

Nothing

Notes &amp; Comments

	*  the process ID number is actually the segment address of a program&#039;s PSP. This is useful for TSR&#039;s to access their own file handle table inside their PSP.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 08 Apr 2024 06:23:10 +0000</pubDate>
        </item>
        <item>
            <title>int_21_51</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_51?rev=1712530982&amp;do=diff</link>
            <description>INT 0x21 - 0x51 - Get Current Process ID

Undocumented DOS 2.x

Request/Call:
  reg    value    descr    AH     0x51            
Return:
  reg     descr     BX   process ID 
Notes &amp; Comments

	*  The process ID number is actually the segment address of program&#039;s PSP. This in conjunction with</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 07 Apr 2024 23:03:02 +0000</pubDate>
        </item>
        <item>
            <title>int_21_58</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_58?rev=1705703542&amp;do=diff</link>
            <description>INT 0x21 - 0x58 - Get/Set Memory Allocation Strategy

Undocumented, DOS 3.0

Request/Call:
  reg    value    descr    AH     0x30             AL     var   00: get strategy code
01: set strategy code   BX     var   strategy code (when AL = 01)
00: first fit  (default)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 19 Jan 2024 22:32:22 +0000</pubDate>
        </item>
        <item>
            <title>int_21_59</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_59?rev=1723540753&amp;do=diff</link>
            <description>INT 0x21 - 0x59 - Get Extended Error Information (DOS 3+)

Request/Call:
  reg    value    descr    AH     0x59              BX     0x00   00 for version 3.0, 3.1, 3.2           0x_      
Return:
  reg     descr    AX    extended error code (see below)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 13 Aug 2024 09:19:13 +0000</pubDate>
        </item>
        <item>
            <title>int_21_62</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/int_21_62?rev=1723540739&amp;do=diff</link>
            <description>INT 0x21 - 0x62 - Get PSP address (DOS 3+)

Request/Call:
  reg    value    descr    AH     0x62            
Return:
  reg     descr    BX    Segment address of current process 
Notes &amp; Comments

	*  this is useful for TSR&#039;s to access their own file handles</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 13 Aug 2024 09:18:59 +0000</pubDate>
        </item>
        <item>
            <title>start</title>
            <link>http://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/interrupts/int_21/start?rev=1723529687&amp;do=diff</link>
            <description>Int 21h - Generic DOS - WIP


	* INT 0x21 - 0x00 - Program Terminate
	* INT 0x21 - 0x02 - Write character to standard output
	* INT 0x21 - 0x06 - Direct console input (Sub Function FFh)
	* INT 0x21 - 0x06 - Direct console output
	* INT 0x21 - 0x09 - print String
	* INT 0x21 - 0x25 - Set Interrupt Vector
	* INT 0x21 - 0x30 - Get DOS version (DOS 2+)
	* INT 0x21 - 0x31 - Terminate Process and Remain Resident
	* INT 0x21 - 0x34 - Get Address to DOS Critical Flag
	* INT 0x21 - 0x35 - Get Interrupt V…</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 13 Aug 2024 06:14:47 +0000</pubDate>
        </item>
    </channel>
</rss>
