All CF cards are 512 byte/sector all I/O is 512 bytes. If you are getting 256 bytes only then you've not put it into 8bit mode, or it may not be an actual CF compliant card and support 8 bit mode, but if so then you'd get an error from the set features command.
There is no initialization as such for an IDE device. They power up with the registers set up so you can issue a normal read of CHS 0,0,1 without reloading them, so you can use them to bootstrap with a tiny ROM.
If you are not forcing a hardware reset and EDD sequence (which really isn't worth it and needs the ALT regs decoded anyway) then there is no set up. The drive is in a normal state from power up. It'll not show as ready for a moment (up to a minute or so on really ancient drives!).
The usual sequence for a simple 8bit micro is
Write AA 55 to the sector low 2 registers, check it reads back the same
Write 55 AA to the sector low 2 registers, ditto
(That checks a card is present)
Send a set features for 8bit, and check if it worked. If it errors you have a 16bit only device
Send an identify and check for LBA support if you don't also handle CHS
And that's basically it.
The history of the commands is something like this
Ancient ancient devices (MFM and RLL) support CHS and other sector sizes. They don't have anything but the basic I/O commands (WD1010) at 16bit width.
The earliest IDE is just WD1010 but with the controller equivalent logic on the drive and only 16bit wide 512 bytes/sector allowed. These are rare, if not pretty much non-existent.
By IDE 2 they started adding commands for modes, IDENTIFY and the like.
Later devices add LBA support.
Very large devices support LBA48 (needed for drives over 2TB) but support LBA as well for accessing blocks below 2TB
CHS v LBA is just a bit flag
LBA48 is a whole extra command mode
All the ATA draft specs (the last draft before ANSI standardisation) are on
t13.org. Everything you need is in ATA-3 or ATA-4 or so. The standard gets bigger, more verbose, more standards committee jargonspeak each release so the older ones are by far the best to look at unless you are using recent features like SATA.
It's all back compatible until the later SATA stuff. You can issue WD1010 commands to a last generation PATA drive and it'll just work !
Alan