43 lines
1.1 KiB
NASM
43 lines
1.1 KiB
NASM
; disk routines
|
|
|
|
; read a sector into the specified memory buffer
|
|
; inputs:
|
|
; r0: sector number
|
|
; r1: disk ID
|
|
; r2: sector buffer (512 bytes)
|
|
; outputs:
|
|
; none
|
|
read_sector:
|
|
push r3
|
|
push r4
|
|
|
|
mov r3, 0x80002000 ; command to set the location of the buffer
|
|
mov r4, 0x80003000 ; command to read a sector from a disk into the buffer
|
|
or.8 r4, r1 ; set the disk ID
|
|
out r3, r2 ; set the memory buffer location
|
|
out r4, r0 ; read the sector into memory
|
|
|
|
pop r4
|
|
pop r3
|
|
ret
|
|
|
|
; wrtie a sector from the specified memory buffer
|
|
; inputs:
|
|
; r0: sector number
|
|
; r1: disk ID
|
|
; r2: sector buffer (512 bytes)
|
|
; outputs:
|
|
; none
|
|
write_sector:
|
|
push r3
|
|
push r4
|
|
|
|
mov r3, 0x80002000 ; command to set the location of the buffer
|
|
mov r4, 0x80004000 ; command to write a sector to a disk from the buffer
|
|
or.8 r4, r1 ; set the disk ID
|
|
out r3, r2 ; set the memory buffer location
|
|
out r4, r0 ; write the sector from memory
|
|
|
|
pop r4
|
|
pop r3
|
|
ret |