diff --git a/LINES b/LINES index a69de4497d039289d6f6ef088dcc8da2cb0b9b15..b384f384bdc36acb63ff2b86f2fa3b37a6cb8d00 100644 --- a/LINES +++ b/LINES @@ -6,3 +6,5 @@ 2021-2-15 0.432: 432 lines, 4 files, rain +2021-2-15 0.451: 451 lines, 4 files, rain + diff --git a/README.md b/README.md index ad037e62b399abad5844a23f9f3c9487da1245ff..9dc49ef3d4e31075eca0d8eefcb3b85fd806cea9 100644 --- a/README.md +++ b/README.md @@ -19,4 +19,6 @@ Cunix kernel `0.432s-boot`: make directory `include/`, and add segment.inc, but it doesn't work. :-) +`0.451s-boot`: + `boot` can load 8 sectors (4KB) of loader (not 1 sector). diff --git a/boot/x86/boot.asm b/boot/x86/boot.asm index 8b09f3dad08f630b20f7f34b8136bc686b302a65..e32a117bcf37a127e174755bcd9932d3eb312431 100644 --- a/boot/x86/boot.asm +++ b/boot/x86/boot.asm @@ -71,21 +71,40 @@ load_loader: mov cl, 0x02 mov bx, 0x8000 +.read_loop: call read_sector_chs mov di, diskpanic_message jc .try_lba +; read 8 sectors + add cl, 0x02 + add bx, 0x0200 + + cmp cl, 0x0a + je .ret + + jmp .read_loop + +.ret: ret + .try_lba: - mov cl, 0x02 - mov bx, 0x8000 call read_sector_lba jc panic - ret + + add cl, 0x02 + add bx, 0x0200 + + cmp cl, 0x0a + je .ret + + jmp .read_loop + + read_sector_chs: mov ax, 0x0201