|
|
- int data_from_disk(index, number_sectors, data_buffer, data_buffer_segment);
- int disk_service_read_data_from_disk(index, number_sectors, data_buffer, data_buffer_segment);
-
- int disk_service_read_data_from_disk(index, number_sectors, data_buffer, data_buffer_segment)
- long index;
- long number_sectors;
- void* data_buffer;
- unsigned int data_buffer_segment;
- {
-
- #asm
- #define index 4[bp]; /* Note that this is a 32-bit argument. */
- #define number_sectors 8[bp];
- #define data_buffer 12[bp];
- #define data_buffer_segment 14[bp];
-
- push bp
- mov bp,sp
- pusha
- lsfs_load_data:
- mov ax, index
- mov WORD [DAPACK.lba_addr_dw_low], ax
- mov bx, number_sectors
- mov WORD [DAPACK.blkcnt], bx
- mov cx, data_buffer_segment
- mov WORD [DAPACK.db_addr_segment], cx
- mov dx, data_buffer;
- mov WORD [DAPACK.db_addr_offset], dx
- mov si, #DAPACK ; address of
- mov ah, #0x42 ; READ
- mov dl, [global_disk_identifier]
- int #0x13
- popa
- pop bp
- ret
-
-
- DAPACK:
- DAPACK.dap_Size: db 0x10
- DAPACK.rev_byte: db 0x0
- DAPACK.blkcnt: dw 0x0
- DAPACK.db_addr_offset: dw 0x0
- DAPACK.db_addr_segment: dw 0x0
- DAPACK.lba_addr_dw_low: dd 0x0
- DAPACK.lba_addr_dw_high: dd 0x0
-
- global_disk_identifier: db 0x80
-
- #endasm
- }
|