CHP_WRITE_REG
CHP_WRITE_REG(chp, wdr_ctlr, WDCTL_4BIT | WDCTL_RST);
CHP_WRITE_REG(chp, wdr_ctlr, WDCTL_4BIT);
CHP_WRITE_REG(chp, wdr_sdh, WDSD_IBM | (drive << 4) | head);
CHP_WRITE_REG(chp, wdr_features, features);
CHP_WRITE_REG(chp, wdr_cyl_lo, cylin);
CHP_WRITE_REG(chp, wdr_cyl_hi, cylin >> 8);
CHP_WRITE_REG(chp, wdr_sector, sector);
CHP_WRITE_REG(chp, wdr_seccnt, count);
CHP_WRITE_REG(chp, wdr_command, command);
CHP_WRITE_REG(chp, wdr_sdh, (drive << 4) | WDSD_LBA);
CHP_WRITE_REG(chp, wdr_command, command);
CHP_WRITE_REG(chp, wdr_sdh, WDSD_IBM | (drive << 4));
CHP_WRITE_REG(chp, wdr_command, command);
CHP_WRITE_REG(chp, reg, val >> 8);
CHP_WRITE_REG(chp, reg, val);
CHP_WRITE_REG(chp, wdr_ctlr, WDCTL_IDS);
CHP_WRITE_REG(chp, wdr_ctlr, WDCTL_4BIT);
CHP_WRITE_REG(chp, wdr_sdh, (drive << 4) | WDSD_IBM);
CHP_WRITE_REG(chp, wdr_seccnt, 0x7f);
CHP_WRITE_REG(chp, wdr_command, WDCC_RECAL);
CHP_WRITE_REG(chp, wdr_cyl_lo, 0xaa);
CHP_WRITE_REG(chp, wdr_cyl_hi, 0x55);
CHP_WRITE_REG(chp, wdr_seccnt, 0xff);
CHP_WRITE_REG(chp, wdr_sdh, WDSD_IBM | (0 << 4));
CHP_WRITE_REG(chp, wdr_sdh, WDSD_IBM | (0 << 4));