BIOSDISK
Fyzický disk BIOS
Fyzický disk BIOS je:
floppy disk FD1: .. FD2: (číslo disku BIOS = 0..1),
hard disk HD1: .. HD4: (číslo disku BIOS = 80h .. 83h),
paměť RAM: (souvislý 640 KB blok paměti, pseudo číslo disku BIOS = 0A0h),
RAM disk RD1: (formátovaný FAT12, adresa od 0001:0000h, pseudo číslo disku BIOS = 0C0h).
Floppy disky podporují jen typické formáty, tj. např. v mechanice 1.44 MB je podporovaná pouze disketa o kapacitě 1.44 MB. Hard disky mohou být ovládány přes LBA rozhraní. Je tak přistupováno i k bootovacímu disku, systémová partition může proto být kdekoliv na disku.
BDiskGetNum - get number of BIOS disks
OUTPUT:
AL = number of disks
CL = number of floppy disks
CH = number of hard disks
BDiskGetDesc - get BIOS disk descriptor
INPUT:
AL = disk number (0...)
OUTPUT:
BX = pointer to BDD descriptor (or NULL on CY error)
CY = error, invalid disk number (returns BX = NULL)
BDiskGetDescBIOS - get BIOS disk descriptor by BIOS disk number
INPUT:
AL = BIOS disk number (0=fd1, ... 80h=hd1, ... 0C0h=rd1, ...)
OUTPUT:
BX = pointer to BDD descriptor (or NULL on CY error)
CY = error, invalid disk number (returns BX = NULL)
BDiskGetType - get BIOS disk type TEXT
INPUT:
BX = pointer to BDD descriptor
OUTPUT:
SI = pointer to CTEXT disk type name
BDiskGetInfo - get BIOS disk info TEXT
INPUT:
AL = disk number (0...)
OUTPUT:
BX = pointer to TEXT structure (NULL
on memory error)
CY = disk or memory error (BX = NULL)
NOTES: Returned text should be destroyed using TextFree.
BDiskGetAllInfo - get BIOS all disks info TEXT
OUTPUT:
BX = pointer to TEXT structure (NULL
on memory error)
CY = memory error (BX = NULL)
NOTES: Returned text should be destroyed using TextFree.
LBAToCHS - translate absolute sector to CHS
INPUT:
DX:AX = absolute sector (0...)
BX = pointer to BDD descriptor
OUTPUT:
CL = bit 0..5: sector number (1..63), bit 6..7: cylinder number
HIGH (bits 8..9)
CH = cylinder number LOW (bits 0..7)
DH = head number (0..255); or bit 0..5 head number (0..63), bit
6,7: cylinder bits 10..11
DESTROYS: DL
BDiskRead - read sectors
INPUT:
DX:AX = absolute sector (0..)
BX = pointer to BDD descriptor
CL = number of sectors (1..127)
DI = data buffer
OUTPUT:
CY = operation error
DX:AX = new sector
DI = new data buffer
BDiskWrite -
write sectors (without verify)
BDiskWriteV - write sectors with verify
INPUT:
DX:AX = absolute sector (0..)
BX = pointer to BDD descriptor
CL = number of sectors (1..127)
DI = data buffer
OUTPUT:
CY = operation error
DX:AX = new sector
DI = new data buffer
BDiskVerify - verify sectors
INPUT:
DX:AX = absolute sector (0..)
BX = pointer to BDD descriptor
CL = number of sectors (1..127)
OUTPUT:
CY = operation error
DX:AX = new sector
BDiskReadSect - read cached sector (into sector buffer)
INPUT:
DX:AX = absolute sector (0..)
BX = pointer to BDD descriptor
OUTPUT:
SI = sector buffer SectBuf
CY = operation error
BDiskWriteSect - write cached sector (from sector buffer)
OUTPUT:
CY = operation error
NOTES: Valid parameters must be set in OldSectBDD and OldSect by function BDiskReadSect.
HDDCheck - check hard disk
INPUT:
BL = hard disk index (0..)
OUTPUT:
CY = invalid hard disk
FDDCheck - check floppy disk
INPUT:
BL = floppy disk index (0..)
OUTPUT:
CY = invalid floppy disk
BDD - BIOS disk descriptor (physical disk)
BDD_Disk: (byte) disk BIOS number
(0=fd0,...)
BDD_Flags: (byte) flags and media type (see below), bit 0..3:
media type
BDD_SectTrack: (word) S sectors per track (1..63)
BDD_Heads: (word) H number of heads (1..256)
BDD_Cylinders: (word) C number of cylinders (1..1024)
BDD_SectCyl: (word) sectors per cylinder (1..16128)
BDD_DevName: (word) CTEXT device name
BDD_SectNum: (dword) total number of sectors
BIOS disk flags and media type:
BDDF_Floppy288: (=0) floppy disk 2.88 MB
(3.5")
BDDF_Floppy360: (=1) floppy disk 360 KB (5.25")
BDDF_Floppy12: (=2) floppy disk 1.2 MB (5.25")
BDDF_Floppy720: (=3) floppy disk 720 KB (3.5")
BDDF_Floppy144: (=4) floppy disk 1.44 MB (3.5")
BDDF_FloppyLast: (=BDDF_Floppy144) last floppy disk
BDDF_HardDisk: (=5) hard disk
BDDF_MEMDisk: (=6) memory disk (RAW memory)
BDDF_RAMDisk: (=7) RAM disk (FAT file system)
BDDF_TypeMask: (=0Fh) media type mask
BDDF_UseLBA: (=B6) bit flag, use LBA extension (CHS invalid)
BDDF_Removable: (=B7) bit flag, removable media