HelpPC 2.10 Quick Reference Utility Copyright 1991 David Jurgens

                       INT 24 - Critical Error Handler

       no input data

       on entry to INT 24:
       AH = bit 7 of register AH is set to one if other than disk error
          = bit 7 of register AH is set to zero if disk error
            AL = failing drive number
            AH = bits 0-2 indicate affected disk area and read/write status

                 │5│4│3│2│1│0│  AH
                  │ │ │ │ │ └──── read = 0, write = 1
                  │ │ │ └─┴───── 00=DOS, 01=FAT, 10=DIR, 11=data area
                  │ │ └──────── 0=FAIL not allowed, 1=FAIL allowed
                  │ └───────── 0=RETRY not allowed, 1=RETRY allowed
                  └────────── 0=IGNORE not allowed, 1=IGNORE allowed

       DI = error code in lower byte
       BP:SI = pointer to device header control block where additional
               information about the error can be found

       on exit:
       AL = action code determining exit behavior
          = 00  ignore error
          = 01  retry
          = 02  terminate through INT 23
          = 03  fail system call (DOS 3.x+)

       Error Codes in low order byte of DI:

         00  write protect error
         01  unknown unit
         02  drive not ready
         03  unknown command
         04  data error (bad CRC)
         05  bad request structure length
         06  seek error
         07  unknown media type
         08  sector not found
         09  printer out of paper
         0A  write fault
         0B  read fault
         0C  general failure

       Users Stack at Entry to Error Handler:

       (top of stack)
           IP         DOS code next instruction pointer
           FLAGS      DOS's flags
           AX -\
           BX   \
           CX    \
           DX     \
           SI      |- User's registers at entry to INT 21 function
           DI     /
           BP    /
           DS   /
           ES -/
           IP         User code next instruction pointer

       - on entry registers are setup for a retry operation
       - user routine must issue an IRET or simulate an IRET
       - INT 21,0 through INT 21,C and INT 21,59 can safely be invoked
         from the handler.  Other calls may destroy DOS's stack
       - handler must preserve register SS,SP,DS,ES,BX,CX,DX
       - choosing ignore can show side effects, since it causes DOS
         to continue as if it the call were successful
       - if an improper action code is specified in DOS 3.x it is changed:
         if IGNORE is invalidly specified, action is converted to FAIL
         if RETRY is invalidly specified, action is converted to FAIL
         if FAIL is invalidly specified, action is converted to ABORT
       - IGNORE requests are converted to FAIL for FAT and DIR disk
         errors and network critical errors
       - if the user routine wishes to handle the error instead of passing
         it to DOS, it must restore the user program registers from the
         stack and remove all but the last 3 words from the stack (FLAGS,
         CS, IP) and issue an IRET
       - do not execute this interrupt directly
       - INDOS flag is cleared on INT 24 (see INT 21,34)

Esc or Alt-X to exit int 24 Home/PgUp/PgDn/End ←↑↓→
Converted to HTML in 2006 by Timo Bingmann