In a word:don't read more than 256 sectors using one 'DAP', set your 'si' point to another 'dap' to read more.
------------------------------------------------
this pitfall cost me about 3 hours tonight.
In fact, I ever heared about that some BIOS limits 'SECTOR COUNT' to 127. I just thougt that we can fill the 'SECTOR COUNT' field of 'DAP' with a digit smaller than 127 but can call int 13h with a same 'DAP' many times(increment the 'LBA' and 'BUF ADDR' field). However, my understanding is wrong. we have to switch 'si' to another 'DAP' if we want to read more.
share a pitfall on int13h extend
Re: share a pitfall on int13h extend
Don't assume the magical 256. Check the actual read count set by BIOS service (in the DAP).
Also, setting sector count more than 128 require crossing a segment boundary, which I believe some ancient BIOS may go crazy.
http://www.ctyme.com/intr/rb-0708.htm
Also, setting sector count more than 128 require crossing a segment boundary, which I believe some ancient BIOS may go crazy.
http://www.ctyme.com/intr/rb-0708.htm
Last edited by bluemoon on Sat Jun 06, 2015 11:36 am, edited 2 times in total.
Re: share a pitfall on int13h extend
One "DAP" should work fine for multiple BIOS function calls.miaowei wrote:In a word:don't read more than 256 sectors using one 'DAP', set your 'si' point to another 'dap' to read more.
this pitfall cost me about 3 hours tonight.
In fact, I ever heared about that some BIOS limits 'SECTOR COUNT' to 127. I just thougt that we can fill the 'SECTOR COUNT' field of
'DAP' with a digit smaller than 127 but can call int 13h with a same 'DAP' many times(increment the 'LBA' and 'BUF ADDR' field).
However, my understanding is wrong. we have to switch 'si' to another 'DAP' if we want to read more.
SudoBIOS uses one low memory global "DAP" (the users high memory "DAP" is copied to it and the input/output is re-buffered using a
low memory buffer).
There must be something else involved.
Re: share a pitfall on int13h extend
I am afraid so.There must be something else involved.
I gave another try when I got up from bed the next morning。I called int13h two times, and read 250 sectors each times, it worked fine.
Re: share a pitfall on int13h extend
Really.bluemoon wrote:Don't assume the magical 256. Check the actual read count set by BIOS service (in the DAP).
http://www.ctyme.com/intr/rb-0708.htm
It's not 256, and even not 255, about 252...~.~
Re: share a pitfall on int13h extend
if that number sounds odd to you, perhaps you missed that it is a multiple of 63