Date : Mon, 16 Jan 1984 2052-:00EST
From : "Ted Hess" <THESS@dec-marlboro>
Subject: Re: Function 37
Folks - CP/M-80 & CP/M-86 will read a directory whenever:
1) You open a file
2) Close a file
3) Do a directory operation like delete, rename etc...
4) The first disk i/o performed (on each drive) after "warm boot","disk reset",
or ^C (which causes warm boot).
5) Every time you do I/O to a file across a 16K boundary (ie 16K := 1 extent).
NOTE: No matter what block size or disk organization you use, this is one of
CP/M's natural (and most inefficient) constants.
Oh yes, CCP/M gets around this by using an LRU disk cache and expecting
the BIOS to inform it that a drive door changed state. The unfortunate
fact about this feature is that it is very difficult to flush these
buffers from inside an application. It seems that CCP/M won't flush the
buffers and mark them invalid if there are any files open on that drive.
The problem, I suppose is to prevent a disk change while a file is open,
however, I don't think anything is being gained by preventing an
application from trying to guarantee all the data it has modified
(including the directory itself), be up to date!
Sorry, didn't mean to flame CCP/M - It's really quite nice.
/ted
--------