INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
AX = 4A10h
BX = 0000h
CX = EBABh (v4.1+; see Note), and CX <> 0EDCh
Return: AX = BABEh if installed
DX:BX = cache hits
DI:SI = cache misses
CX = number of dirty cache elements
BP = version in BCD(Binary Coded Decimal) A method of data storage where two decimal digits are stored in each byte, one in the upper four bits and the other in the lower four bits. Since only the values 0 through 9 are used in each half of a byte, BCD values can be read as decimal numbers on a hexadecimal display of memory or a file. (4.10 = 0410h)
4.0 = 0400h (Windows 3.1)
4.01 = 0401h (MS-DOS 6.0, 1992/07/30)
4.10 = 0410h (1992/11/11)
4.20 = 0420h
5.0 = 0500h (MS-DOS 6.2)
Notes: most of the SMARTDRV API(Application Program[ming] Interface) The defined set of calls which a program may make to interact with or request services of the operating system or environment under which it is running. Because the inputs and outputs of the calls are well-defined, a program using the API can continue using the identical calls even if the internal organization of the program providing the API changes., including this call, is supported by
PC-Cache v8.0 and recent versions of the Norton Caches
the internal name for SMARTDRV is "BAMBI", hence the magic "BABE".
if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
then calls of this function with CX<>EBABh on entry cause
DBLSPACE.BIN to display the error message
"Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
with INT 21/AX=4C00h
Since the Novell DOS 7 - DR-DOS 7.03 NWCACHE supports a similar
install check at this function, but the returned registers
contain different data, the caller must take the returned AX value
into account to ensure proper interpretation of the returned info.
The caller should ensure CX <> 0EDCh to avoid any interaction
with the NWCACHE and COMMAND.COM special case of CX=0EDCh.
Although this is an install check, NWCACHE always flushes delayed
writes to disk, when calling this function with CX<>0EDCh or while
/FLUSH:ON is active, but this is nothing to rely upon. The reason
for this could be to get more accurate statistics, while SMARTDRV
just takes a on-the-fly snapshot of the statistic vars.
The private NWCACHE/NLCACHE install check INT2Fh/D8C0h does not flush
to disk, and therefore can be used by callers that must ensure
the buffers aren't flushed on this function (e.g. alternative
command shells may need this to make their "flush before prompt"
feature configurable).
The NWCACHE 0EDCh special case will most probably vanish with
future issues of NWCACHE (2.0+).
SMARTDRV v3.x had a completely different API(Application Program[ming] Interface) The defined set of calls which a program may make to interact with or request services of the operating system or environment under which it is running. Because the inputs and outputs of the calls are well-defined, a program using the API can continue using the identical calls even if the internal organization of the program providing the API changes. using IOCTL calls, which
was also supported by the Norton Caches
BUG: Although DS and ES registers are listed as unmodified, some
releases of SMARTDRV seem to trash the DS register, at least the
MS-DOS 6.2+ KEYB takes care to preserve the DS register when calling
this function.
SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"