rdos/kernel/drive.asm

41 lines
518 B
NASM
Raw Normal View History

2020-08-15 23:15:31 +02:00
section .bss
2020-10-13 22:10:23 +02:00
; drive actually selected for I/O
2020-10-11 23:33:01 +02:00
dsknum: resb 1
; current sector number
dskseek: resd 1
; disk buffer for I/O operations
2020-10-11 23:33:01 +02:00
dskbuf: resb 512
2020-08-15 23:15:31 +02:00
section .text
2020-10-11 23:33:01 +02:00
ret: ret
; select drive
; IN dl drive number
2020-10-11 23:33:01 +02:00
dsksel: cmp dl, 1
jnc ret
mov al, dl
and al, 0x02
ror dl, 1
ror dl, 1
cmp dl, byte [dsknum]
je ret
2020-10-11 23:33:01 +02:00
call dskrst
2020-10-11 23:33:01 +02:00
int 3
ret
2020-10-11 23:33:01 +02:00
dskrst: call flush
mov ax, 0xFFFF
mov [dsknum], al
mov [dskseek], ax
mov [dskseek+2], ax
ret
2020-10-11 23:33:01 +02:00
; flush buffer if dirty
flush: ret