/* ディスク住所包みのフォーマットの構造は、writeabsolutesectorsによって使用されるために作用する */
struct diskaddrpacket
{
char packetsize ; /* 包み、概要に10Hのサイズ */
char reserved ; /* 予約(0) */
int blockcount ; /* 移るべきブロックの数 */
char far *bufferaddress ; /* 緩衝を移す住所 */
unsigned long blocknumber[2] ; /* 絶対ブロック番号の開始 */
} ;
///// ドライブ変数を得る機能 \\\\\
unsigned long getdrivegeometry (int drive)
{
union REGS i, o ;
struct SREGS s ;
struct geometry g = { 26, 0, 0, 0, 0, 0, 0, 0 } ;
i.h.ah = 0x48 ; /* INT 13H延長の機能数0x48 */
i.h.dl = drive; /* ドライブ数 */
i.x.si = FP_OFF ( (void far*)&g ) ;
s.ds = FP_SEG ( (void far*)&g ) ;
/* 区分の記録の価値のINT 13H延長の指定機能数を実施しなさい */
int86x ( 0x13, &i, &o, &s ) ;
printf("\n Head = %lu, Sectors Per Track = %lu, Cylinder =
%lu\n",
g.heads,g.spt,g.cyl);
|