Тогда мне этого будет достаточно и остаётся всего три вопроса.
1. Если первый сектор дискеты повреждён, то как я думаю, BIOS будет грузить следующий. Я прав? И до какого сектора он так может дойти, если ему будут попадаться одни с дефектами? То есть если какой-то параметр его попыток (точнее глубины поиска)?
2. Если представим что на диске на каждом цилиндре по 18 секторов, на каждой головке по 80 цилиндров и дискете 2 головке, то как правильно мне нужно будет считывать 20 секторов...
Код:
mov AH,0x02
mov AL,20 ; Количество читаемых секторов
mov CL,2 ; Сектор
mov CH,0 ; Цилиндр
mov DH,0 ; Головка
mov DL,0 ; Диск
mov BX,boot__font
int 0x13
В этом случае BIOS догадается сам что нужно переключить цилиндр (если нужно то и головку) и выдаст мне столько, сколько я запросил? Или же мне выдаст только то, что пойдёт до конца цилиндра и тогда мне нужно делать так:
Код:
mov AH,0x02
mov AL,19 ; Количество читаемых секторов
mov CL,2 ; Сектор
mov CH,0 ; Цилиндр
mov DH,0 ; Головка
mov DL,0 ; Диск
mov BX,boot__font
mov AH,0x02
mov AL,1 ; Количество читаемых секторов
mov CL,1 ; Сектор
mov CH,1 ; Цилиндр
mov DH,0 ; Головка
mov DL,0 ; Диск
mov BX,boot__font
int 0x13
Конечно второй вариант точно правильный, но будет ли так же работать и первый вариант? И как он вообще будет работать?
3. Если представим что на диске на каждом цилиндре по 18 секторов, на каждой головке по 80 цилиндров и дискете 2 головке, то как мне из LBA переводить в CHS?