|
|
- int data_from_disk(index, number_sectors, data_buffer, data_buffer_segment);
- int sec_stub();
- int stub(index, number_sectors, data_buffer, data_buffer_segment);
-
- int stub(index, number_sectors, data_buffer, data_buffer_segment)
- long* index;
- long number_sectors;
- void* data_buffer;
- int data_buffer_segment;
- {
-
- #asm
- #define index 4[bp];
- #define number_sectors 6[bp];
- #define data_buffer 8[bp];
- #define data_buffer_segment 10[bp];
-
- push bp
- mov bp,sp
- pusha
- //mov ax, ds
- //call 0x0000:0x7C2A
- //mov ax, DAPACK
- //call 0x0000:0x7C2A
- mov ax, #DAPACK
- call 0x0000:0x7C2A
-
- 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
- call 0x0000:0x7C2A
- 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
- }
-
- int sec_stub()
- {
- return 42;
- }
|