San Jose, Calif. 95116
CompuServe No. 72336,2257
May 17, 1989
The JPI Modula-2 assembly language module included in
this package, FioAsm.OBJ, provides much faster disk access
than JPI's FIO, which is written in Modula-2.
FioAsm also eliminates the need to check IOresult() all
the time -- although the function does exist -- or to set a
variable IOcheck off to keep the program from crashing.
That's because FioAsm was written so that all procedures
return some indicator of whether they were successful.
FioAsm also adds some procedures not found in FIO that
allow you to get and set the file date and time, find out
how much free space is on the disk and other fun things
BUT there are some "gotchas":
-- FioAsm only does low-level file input and output
procedures, those that require MS-DOS interrupt calls. A
higher-level module is also needed. (FIO tried to do both
high- and low-level routines, which, in my opinion, is a
mistake that resulted in it being slow and inefficient.)
-- Because FioAsm's procedures are deliberately written
differently than FIO's low-level procedures, you can't just
import them into FIO.MOD without modifying FIO.MOD.
-- Because FIO.MOD is copyrighted by JPI, I don't feel
that I can distribute the complete modified code for FIO
-- Finally, while I have tested FioAsm, it hasn't been
beta-tested and may very well have undiscovered bugs. In
fact, this revised version, updated May 11, corrects two
flaws in the original. One in FioAsm.A itself and the
second in the accompanying NFIO.MOD. They corrections are
Here's how to solve the "gotchas":
-- Along with the source and assembled versions of
FioAsm, this package includes part of a modified version of
FIO.DEF and FIO.MOD, dubbed NFIO. It includes the procedures
that are different from those in FIO plus some notes on what
procedures are not different or only slightly different.
It's up to you to merge NFIO with FIO to create a complete
module. The new module will be almost entirely compatible
with FIO except that, as an improvement, it replaces the
ambiguous variable EOF with a function that answers the
question, "End of what file?"
-- You get to find and report any bugs that you discover
while using FioAsm. I'd appreciate if you try to trace them
down as thoroughly as possible, but in any case let me know
by writing me at the address above or sending electronic mail
to me at the CompuServe account number above.
Changes added May 17, 1989:
Zero-terminated strings: While Modula-2, like MS-DOS, uses
ASCII zero or nul to terminate strings, it does not do so
for strings that are completely filled or constants.
FioAsm now copies strings to a buffer and adds a zero to
make sure that they are zero-terminated.
End of file: The EOF function in NFIO has been corrected
to only show an end of file if the ends of both the file and
any file buffer have been reached.
SeekRel and Flush: The SeekRel procedure in FioAsm was added
and Flush in NFIO revised to make them compatible with version
1.16 of JPI's FIO.