Specifications

MICROPROCESSADORES
INTERRUPÇÕES
5
Luís Miguel Charrua Figueiredo 5 - 9 E.N.I.D.H.
AH = type code
00h no such drive
(SpeedStor) AL = 03h hard disk
CX:DX = number of 512-byte
sectors
01h floppy without change-line support
02h floppy (or other removable drive) with change-line
support
03h hard disk
CX:DX = number of 512-byte sectors
CF set on error
AH = status (see #00234 at AH=01h)
Note
: SyQuest can report type 01h or 02h for 'hard disks', since its media is
removable
BUGS
: many versions of the Award 486 BIOS do not return the sector count
because the BIOS exit code restores CX and DX to their original values after the
function had already set them to correct values Some releases of PC Tools
REBUILD preset CX=FFFFh and only trust the results if CH <= 2 on return (which
would cut off drives > 16 Gb). Several different Compaq BIOSes incorrectly report
high-numbered drives (such as 90h, B0h, D0h, and F0h) as present, giving them
the same geometry as drive 80h; as a workaround, scan through disk numbers,
stopping as soon as the number of valid drives encountered equals the value in
0040h:0075h the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and
INT 13/AH=15h. A workaround is to monitor for these functions and perform a
transparent INT 13/AH=01h status read afterwards. This will reset the bus. The
MS-DOS 6.0 IO.SYS takes care of this by installing a special INT 13h interceptor
for this purpose. Some releases of SpeedStor have a bug where it reports
AX=0003h instead of correctly reporting AH=03h for hard disks. A possible
workaround when testing for hard disks is to check for AH=03h and AX=0003h. In
this case this function should be invoked with a bogus fixed value in AL, e.g.
AL=FFh.
SeeAlso
: AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM 0040h:0075h
INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1986/1/10 or
later,XT286,AT,PS)
AH = 16h
DL = drive number (00h-7Fh)
SI = 0000h (to avoid crash on AT&T 6300)
Return
: CF clear if change line inactive
AH = 00h (disk not changed)
CF set if change line active
AH = status
01h invalid command (SyQuest)
06h change line active or not supported
80h drive not ready or not present
Notes
: call AH=15h first to determine whether the drive supports a change
line this call also clears the media-change status, so that a disk change is only
reported once
BUGS
: some versions of Award 386 Modular BIOS and AMI BIOS fail to clear
the media-change status AT&T 6300 WGS systems crash if SI <> 0 on entry.
some pre 1986/08/04 Compaq ROM BIOS have a serious bug where this function
may re-configure a hard disk depending on what is located at ES:[BX] and data
indexed to by it. MS-DOS/PC DOS IO.SYS/IBMBIO.COM install a special filter
when they detect Compaq ROM BIOSes with earlier dates. Some Compaq 286
systems have a bug in all INT 13h functions >= 16h, which causes the byte at
DS:0074h to be destroyed when called for hard disks (DL >= 80h). MS-DOS/PC
DOS IO.SYS/IBMBIO.COM performs a test on this bug using this sub-function,
and if found installs a special filter which points DS into ROM, so that it cannot
cause any harm. some drives (or controllers???) forget the change line status if
another drive is accessed afterwards. The DOS BIOS takes care of this by not
relying on the reported change line status when the change line is not active and a
different drive is accessed, instead it reports "don't know" to the DOS kernel.
SeeAlso
: AH=15h,AH=49h
INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
AH = 17h
AL = format type
01h = 320/360K disk in 360K drive
02h = 320/360K disk in 1.2M drive
03h = 1.2M disk in 1.2M drive
04h = 720K disk in 720K or 1.44M drive
DL = drive number
Return
: CF set on error
CF clear if successful
AH = status (see #00234 at AH=01h)
Note
: this function does not handle 1.44M drives; use AH=18h instead
SeeAlso
: AH=15h,AH=18h
INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model
3x9,XT2,XT286,PS)
AH = 18h
DL = drive number
CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
CL = sectors per track (bits 0-5)
top 2 bits of highest cylinder number (bits 6,7)
Return
: AH = status
00h requested combination supported
01h function not available
0Ch not supported or drive type unknown
80h there is no disk in the drive
ES:DI -> 11-byte parameter table (see #01264 at INT 1E)
Note
: this function does not set the INT 1E vector to point at the returned
parameter table; it is the caller's responsibility to do so
SeeAlso
: AH=05h,AH=07h,AH=17h,INT 1E
INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
AH = 19h
DL = drive
Return
: CF set on error
CF clear if successful
AH = status (see #00234 at AH=01h)
SeeAlso
: AH=11h
INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
AH = 1Ah
AL = defect table entry count
CL = format modifiers (see #00250)
DL = drive (80h,81h)
ES:BX -> defect table (see #00251), ignored if AL=00h
Return
: CF set on error
CF clear if successful
AH = status (see #00234 at AH=01h)
Note
: if periodic interrupt selected, INT 15/AH=0Fh is called after each
cylinder is formatted
SeeAlso
: AH=07h,INT 15/AH=0Fh
Bitfields for ESDI format modifiers:
Bit(s) Description (Table 00250)
4 generate periodic interrupt
3 perform surface analysis
2 update secondary defect map
1 ignore secondary defect map
0 ignore primary defect map
Format of defect table entry [array]:
Offset Size Description (Table 00251)
00h 3 BYTEs relative sector address (little-endian)
03h BYTE flags and defect count
bit 7: last logical sector on track
bit 6: first logical sector on track
bit 5: last logical sector on cylinder
bit 4: logical sectors are pushed onto next track
bits 3-0: number of defects pushed from previous cylinder
INT 14 - SERIAL - INITIALIZE PORT
AH = 00h
AL = port parameters (see #00300)
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return
: AH = line status (see #00304)
FFh if error on Digiboard XAPCM232.SYS