Hi! As you wondered about int 21.40, 25/26 and 13:
Check out int2526_handler in inthndlr.c ;-)

The actual work is done when dskxfer in blockio.c
calls the block device driver, see blockio in dsk.c
and LBA_transfer which calls fl_read, fl_write or
fl_lba_ReadWrite either of which do call int 13 :-)

You already looked at the right place if LBA is your
thing: fl_lba_readwrite. However, LBA_transfer has
the call to DMA_max_transfer and that check which
avoids (multi-sector) I/O to/from buffers in UMB/HMA,
which might be interesting for you.

You could also investigate topics like EMM386 VDS,
caches, badly written BIOS int 13 and TSR which
provide workarounds for the latter or for general
problems with DMA with UMB, floppies, SCSI, etc.

Cheers, Eric
"Yes, I think that best approach is to write TSR which hooks INT 13h and
splits large writes into smaller chunks.
I only do not understand why there is no problem with reading but only with
writting.

By the way, I looked into FreeDOS sources because I wanted to know whether
is between INT 21h/40h and INT 13h a medium level INT 26h.
It seems that not.




_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to