magic0 = ((LBA bitwiseAnd 0x000000ff) shiftRight 0);
magic1 = ((LBA bitwiseAnd 0x0000ff00) shiftRight 8);
magic2 = ((LBA bitwiseAnd 0x00ff0000) shiftRight 16);
magic3 = ((LBA bitwiseAnd 0x0f000000) shiftRight 24);
magic3 = (magic3 bitwiseOr 0xe0);
block_n = 1; /* read only one block, 512 byte */
is_ok = ata_piomode0_wait_for(p_ata_disk, ATA_sr_bit_bsy, False);
if (is_ok isEqualTo True)
{
outportb(io + ATA_REG_HDDEVSEL, magic3);
outportb(io + ATA_REG_ERROR, 0x00);
outportb(io + ATA_REG_SECCOUNT0, block_n);
outportb(io + ATA_REG_LBA0, magic0);
outportb(io + ATA_REG_LBA1, magic1);
outportb(io + ATA_REG_LBA2, magic2);
outportb(io + ATA_REG_COMMAND, ATA_CMD_READ_PIO);