From 9377924eab3c87c53b897aab104c7d2a83e00324 Mon Sep 17 00:00:00 2001 From: Nero <41307858+nero@users.noreply.github.com> Date: Mon, 4 May 2020 19:49:26 +0000 Subject: [PATCH] Implement reading geometry info from floppy BPB --- kernel/diskio.asm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/kernel/diskio.asm b/kernel/diskio.asm index 6e9440d..e3bab31 100644 --- a/kernel/diskio.asm +++ b/kernel/diskio.asm @@ -65,6 +65,10 @@ select_floppy: xor ax, ax call seek call read + mov ax, [disk_buffer+0x0B+bpb_spt] + mov [disk_spt], ax + mul word [disk_buffer+0x0B+bpb_nos] + mov [disk_tracks], ax ret ; Set absolute sector number @@ -84,14 +88,13 @@ seek: push ax ror dl, 1 ror dl, 1 or dl, ah - ;inc dx + inc dx ; dh bit 0-7: cylinder 0-7 ; dl bit 0-5: sector number 0-5 ; dl bit 6-7: cylinder 8-9 ; store mov byte [disk_chs+1], al mov word [disk_chs+2], dx - int 3 ret seek_zero: @@ -106,11 +109,9 @@ read: mov ax, 0x0201 lea bx, [disk_buffer] push cs pop es - int 3 int 0x13 - int 3 ret ; Write a sector into buffer -write: +write: stc ret