ATA interrupt doesn't fire after sending READ_SECTORS command

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Octocontrabass
Member
Member
Posts: 6245
Joined: Mon Mar 25, 2013 7:01 pm

Re: ATA interrupt doesn't fire after sending READ_SECTORS command

Post by Octocontrabass »

yucarp wrote: Mon Jan 26, 2026 1:28 pmDoes READ_SECTORS always read 256 sectors?
No.
yucarp wrote: Mon Jan 26, 2026 1:28 pmThe specification says that the byte that's send to 0x1F2 is the reverse of the sector count that will be read
Reverse? No, it's just the sector count. Write 1 to read 1 sector, write 2 to read 2 sectors, and so on. The only exception is that if you write 0 you'll read 256 sectors.
yucarp wrote: Mon Jan 26, 2026 1:28 pmbut when I set the sector count to 0xFF it still reads 256 sectors.
Are you sure it isn't 255 sectors?
yucarp wrote: Mon Jan 26, 2026 1:28 pmThe difference is it reads once by once instead of directly reading all sectors
What are you talking about? When you're using READ SECTORS (0x20), it's always one by one. You must wait for an IRQ before each sector.
yucarp
Member
Member
Posts: 39
Joined: Fri Dec 05, 2025 5:19 pm
Libera.chat IRC: yucarp

Re: ATA interrupt doesn't fire after sending READ_SECTORS command

Post by yucarp »

Oh.. I understood wrongly then. I thought that it went reverse like 0 for 256, 1 for 255, 2 for 254 etc. I knew that for every sector that will be read there will be an interrupt but I didn't understand the sector count parameter...
Post Reply