Data Structures | Defines | Functions | Variables
int13.h File Reference

INT 13 emulation. More...

#include <stdint.h>
#include <ipxe/list.h>
#include <ipxe/edd.h>
#include <realmode.h>

Go to the source code of this file.

Data Structures

struct  int13_disk_address
 An INT 13 disk address packet. More...
struct  int13_disk_parameters
 INT 13 disk parameters. More...
struct  int13_cdrom_specification
 Bootable CD-ROM specification packet. More...
struct  int13_cdrom_boot_catalog_command
 Bootable CD-ROM boot catalog command packet. More...
struct  partition_chs
 A C/H/S address within a partition table entry. More...
struct  partition_table_entry
 A partition table entry within the MBR. More...
struct  master_boot_record
 A Master Boot Record. More...
struct  int13_fdd_geometry
 A floppy disk geometry. More...
struct  int13_fdd_parameters
 A floppy drive parameter table. More...


#define INT13_RESET   0x00
 Reset disk system.
#define INT13_GET_LAST_STATUS   0x01
 Get status of last operation.
#define INT13_READ_SECTORS   0x02
 Read sectors.
#define INT13_WRITE_SECTORS   0x03
 Write sectors.
#define INT13_GET_PARAMETERS   0x08
 Get drive parameters.
#define INT13_GET_DISK_TYPE   0x15
 Get disk type.
#define INT13_EXTENSION_CHECK   0x41
 Extensions installation check.
#define INT13_EXTENDED_READ   0x42
 Extended read.
#define INT13_EXTENDED_WRITE   0x43
 Extended write.
#define INT13_EXTENDED_VERIFY   0x44
 Verify sectors.
#define INT13_EXTENDED_SEEK   0x47
 Extended seek.
 Get extended drive parameters.
 Get CD-ROM status / terminate emulation.
 Read CD-ROM boot catalog.
#define INT13_STATUS_SUCCESS   0x00
 Operation completed successfully.
#define INT13_STATUS_INVALID   0x01
 Invalid function or parameter.
#define INT13_STATUS_READ_ERROR   0x04
 Read error.
#define INT13_STATUS_RESET_FAILED   0x05
 Reset failed.
#define INT13_STATUS_WRITE_ERROR   0xcc
 Write error.
#define INT13_BLKSIZE   512
 Block size for non-extended INT 13 calls.
#define INT13_FDD_TYPE_360K   0x01
#define INT13_FDD_TYPE_1M2   0x02
#define INT13_FDD_TYPE_720K   0x03
#define INT13_FDD_TYPE_1M44   0x04
#define INT13_DISK_TYPE_NONE   0x00
 No such drive.
#define INT13_DISK_TYPE_FDD   0x01
 Floppy without change-line support.
#define INT13_DISK_TYPE_FDD_CL   0x02
 Floppy with change-line support.
#define INT13_DISK_TYPE_HDD   0x03
 Hard disk.
#define INT13_FL_DMA_TRANSPARENT   0x01
 DMA boundary errors handled transparently.
#define INT13_FL_CHS_VALID   0x02
 CHS information is valid.
#define INT13_FL_REMOVABLE   0x04
 Removable drive.
#define INT13_FL_VERIFIABLE   0x08
 Write with verify supported.
#define INT13_FL_CHANGE_LINE   0x10
 Has change-line supported (valid only for removable drives)
#define INT13_FL_LOCKABLE   0x20
 Drive can be locked (valid only for removable drives)
#define INT13_FL_CHS_MAX   0x40
 CHS is max possible, not current media (valid only for removable drives)
#define INT13_EXTENSION_LINEAR   0x01
 Extended disk access functions supported.
 Removable drive functions supported.
#define INT13_EXTENSION_EDD   0x04
 EDD functions supported.
#define INT13_EXTENSION_64BIT   0x08
 64-bit extensions are present
#define INT13_EXTENSION_VER_1_X   0x01
 INT13 extensions version 1.x.
#define INT13_EXTENSION_VER_2_0   0x20
 INT13 extensions version 2.0 (EDD-1.0)
#define INT13_EXTENSION_VER_2_1   0x21
 INT13 extensions version 2.1 (EDD-1.1)
#define INT13_EXTENSION_VER_3_0   0x30
 INT13 extensions version 3.0 (EDD-3.0)
#define INT13_MAX_CHS_SECTORS   15482880
 Maximum number of sectors for which CHS geometry is allowed to be valid.
#define PART_HEAD(chs)   ( (chs).head )
#define PART_SECTOR(chs)   ( (chs).cyl_sector & 0x3f )
#define PART_CYLINDER(chs)   ( (chs).cyl | ( ( (chs).cyl_sector & 0xc0 ) << 2 ) )
#define INT13_MBR_MAGIC   0xaa55
 MBR magic signature.
#define INT13_FDD_GEOMETRY(cylinders, heads, sectors)
 Define a floppy disk geometry.
#define INT13_FDD_CYLINDERS(geometry)   ( (geometry)->tracks )
 Get floppy disk number of cylinders.
#define INT13_FDD_HEADS(geometry)   ( (geometry)->heads_spt >> 6 )
 Get floppy disk number of heads.
#define INT13_FDD_SECTORS(geometry)   ( (geometry)->heads_spt & 0x3f )
 Get floppy disk number of sectors per track.


struct int13_disk_address __attribute__ ((packed))


uint8_t bufsize
 Size of the packet, in bytes.
uint8_t reserved_a
uint8_t count
 Block count.
uint8_t reserved_b
struct segoff buffer
 Data buffer.
uint64_t lba
 Starting block number.
uint64_t buffer_phys
 Data buffer (EDD 3.0+ only)
uint32_t long_count
 Block count (EDD 4.0+ only)
uint32_t reserved_c
uint16_t flags
uint32_t cylinders
 Number of cylinders.
uint32_t heads
 Number of heads.
uint32_t sectors_per_track
 Number of sectors per track.
uint64_t sectors
 Total number of sectors on drive.
uint16_t sector_size
 Bytes per sector.
struct segoff dpte
 Device parameter table extension.
struct edd_device_path_information dpi
 Device path information.
uint8_t size
 Size of packet in bytes.
uint8_t media_type
 Boot media type.
uint8_t drive
 Drive number.
uint8_t controller
 CD-ROM controller number.
uint16_t device
 Device specification.
uint16_t cache_segment
 Segment of 3K buffer for caching CD-ROM reads.
uint16_t load_segment
 Load segment for initial boot image.
uint16_t load_sectors
 Number of 512-byte sectors to load.
uint8_t cyl
 Low 8 bits of cylinder number.
uint8_t cyl_sector
 Sector number, plus high 2 bits of cylinder number.
uint8_t head
 Head number.
uint16_t start
 First sector in boot catalog to transfer.
uint8_t bootable
 Bootable flag.
struct partition_chs chs_start
 C/H/S start address.
uint8_t type
 System indicator (partition type)
struct partition_chs chs_end
 C/H/S end address.
uint32_t length
 Linear length.
uint8_t code [440]
 Code area.
uint32_t signature
 Disk signature.
uint8_t pad [2]
struct partition_table_entry partitions [4]
 Partition table.
uint16_t magic
 0x55aa MBR signature
struct int13_fdd_geometry __attribute__
uint8_t step_rate__head_unload
uint8_t head_load__ndma
uint8_t motor_off_delay
uint8_t bytes_per_sector
uint8_t gap_length
uint8_t data_length
uint8_t format_gap_length
uint8_t format_filler
uint8_t head_settle_time
uint8_t motor_start_time

Detailed Description

INT 13 emulation.

Definition in file int13.h.

Define Documentation

#define INT13_BLKSIZE   512

Block size for non-extended INT 13 calls.

Definition at line 72 of file int13.h.

Referenced by int13_get_parameters(), int13_hook(), int13_rw_sectors(), and int13con_putchar().

Function Documentation