Почему после выполнения 41h функции, флаг С всегда установлен? Тогда как чтение проходит успешно. Вот код: Code (Text): int InitDiskSystem(PDISK disks,u8 Count){ u16 i,ret0,f; for (i=ret0=0; (i<0xff) && Count; ++i) { f = -1; __asm{ pusha mov ax,4100h mov bx,55AAh mov WORD PTR dx,[i] int 13h mov WORD PTR [f],cx jc next xchg bx,bx and cl,00000101b jz next mov WORD PTR bp,[disks] mov WORD PTR di,[ret0] lea WORD PTR di,[bp+di*4] mov WORD PTR ax,[i] mov BYTE PTR [di + 0],al mov BYTE PTR [di + 1],cl mov WORD PTR [di + 2],200h inc WORD PTR [ret0] jmp exit next: jmp exit; exit: popa }; SetXY(0x0400); DebugStr("["); DebugHexInt(i); DebugStr("] CX: "); DebugHexInt(f); DebugStr("\r\n"); GetCh(); }; DebugStr("\r\n"); DebugHexInt(ret0); return ret0; };
А ты случаем не с CD диска грузишься? Причем это "dl = 0x80 -> ah = 30h cl = 07h " при эмуляции HDD А это "dl = 0xE0 -> ah = 30h cl = 07h" без эмуляции?
Тогда ковырять в сторону бош С начало попробовав на реальном железе. А вообще, 30 ошибка, это ошибка формата носителя. Причем судя по отзывам, специфичная только для боша.
1.9.2. How do you pronounce "Bochs"? Phonetically the same as the English word "box". It's just a play on the word "box", since techies like to call their machines a "Linux box", "Windows box", ... Bochs emulates a box inside a box.
XshStasX Вот, что еще подумалось. По CF-UP попробуй 13/01 и 13/48, может натолкнет на причину. И для верности, посмотри, как и что BS от MS DOS получит от 13/41