diff --git a/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.asm b/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.asm index 4694e005e..34137345f 100644 --- a/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.asm +++ b/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.asm @@ -170,9 +170,10 @@ read_sectors: do_read_sectors: push ax push cx - cmp cx, 0x7F +; read no more than 64kB at once, i.e. 0x20 sectors + cmp cx, 0x20 jbe @f - mov cx, 0x7F + mov cx, 0x20 @@: ; create disk address packet on the stack ; dq starting LBA @@ -182,7 +183,7 @@ do_read_sectors: ; dd buffer push es push bx -; dw number of blocks to transfer (no more than 0x7F) +; dw number of blocks to transfer (no more than 0x20) push cx ; dw packet size in bytes push 10h diff --git a/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.txt b/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.txt index 7fedad177..426c11d2a 100644 --- a/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.txt +++ b/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.txt @@ -156,10 +156,12 @@ es:bx указывает на конец буфера, в который были прочитаны данные если произошла ошибка чтения, флаг CF установлен 1. В цикле (шаги 2-4) читает секторы, следит за тем, чтобы на каждой итерации - число читаемых секторов не превосходило 7Fh (требование спецификации - EDD BIOS). -2. Если число секторов для чтения больше 7Fh, уменьшает его (для текущей - итерации) до 7Fh. + число читаемых секторов не превосходило 20h. Требование спецификации + EDD BIOS не более 7Fh секторов за раз, что почти 64кБ для 512-байтного + сектора. Однако при размере сектора 2048 байт размер буфера в 64кБ + достигается уже при 20h секторах. +2. Если число секторов для чтения больше 20h, уменьшает его (для текущей + итерации) до 20h. 3. Формирует в стеке пакет для int 13h (кладёт все нужные данные командами push, причём в обратном порядке: стек - структура LIFO, и данные в стеке хранятся в обратном порядке по отношению к тому, как их туда