the new amount of data read returned by GET.
http://freefile.kristopherw.us/uploads/temp/fileio.zip
The good thing is, that it works as supposed. The less good but not
really new thing is how the file I/O performance degrades, see shot.

The GET of FB (block size <= 32 KiB) kills cca 12% of performance
compared to DGJPP's FREAD (block size <= 32 KiB).
The get the full truth, it should be noted that several other "layers"
exist having the same sort of problem, actually even more.
DGJPP (block size <= 32 KiB) kills cca 10% compared to real mode (block size = 60 KiB).
Running the Win32 version in DOS via HX is "noticably" faster than the "native" DOS
version ... the "translation" done by HDPMI in Ring0 causes a loss below 4% only.
FAT kills cca 20% compared to raw sector reading (block size = 64 KiB).
Reading raw sectors using INT $13 via XDMA driver didn't cause any
noticable slowdown compared to "direct" DMA usage.
And, last and worst, the mainboard + HD (IDE/ATA stuff) do kill cca 1/2 (!!!) of
theoretical performance, in this test even more, on other tests a bit less.
So finally the read performance degrades from 33 MiB/sec to 11 MiB/sec.
Writing is even worse, writing my 260'000'000 (248 MiB) file from real mode
(block size = 60 KiB) took 55 sec (4.5 MiB/sec, EDR-DOS)
or 58.5 sec (4.3 MiB/sec, FreeDOS).
Exact values depend much from hardware used (CPU, mainboard, HD), filesystem
(type, fragmentation), and software (DOS kernel, cache). In my tests, there was
no cache effect and no fragmentation. While little can be done with the
IDE/ATA stuff (except hardware upgrade, not sure how far fastest SATA addon cards can
be used in DOS efficiently or at all), the biggest flaw is the FAT filesystem.
While enabling an additional cache might help to some degree, the solution would
be a better filesystem for DOS. Let me know if you want to alpha-test my draft. ;-)