home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Garbo
/
Garbo.cdr
/
pc
/
progrmng
/
dosfiles.lzh
/
dosfiles
/
io.asm
< prev
next >
Wrap
Assembly Source File
|
1990-11-29
|
986b
|
48 lines
include lmacros.h
public drive_number_,sectors_per_track_,number_of_heads_
drive_number_ db 0
sectors_per_track_ dw 9
number_of_heads_ dw 2
; sector = logical_sector_ % sectors_per_track_ + 1
; head = (logical_sector_ / sectors_per_track_) % number_of_heads_
; cylinder = logical_sector / (sectors_per_track * number_of_heads_)
procdef read_sector,<<logical_sector,word>,<buffer,ptr>>
mov ah,2
jmp short write1
entrdef write_sector,<<dummy1,word>,<dummy2,ptr>>
mov ah,3
write1: push ax
mov ax,number_of_heads_
mul sectors_per_track_
mov cx,ax
mov ax,logical_sector
div cx
mov ch,al ; Load cylinder
xor dx,dx
mov ax,logical_sector
div sectors_per_track_
add dx,1
mov cl,dl ; Load sector
xor dx,dx
div number_of_heads_
mov dh,dl ; Load head
mov dl,drive_number_; Load drive number
pop ax ; Get read/write function request
mov al,1 ; One sector
ldptr bx,buffer,es ; Load buffer offset
int 13h
mov al,ah
xor ah,ah
pret
pend read_sector
finish