diff options
Diffstat (limited to 'v4.0/src/DEV/SMARTDRV/INT13.DOC')
| -rw-r--r-- | v4.0/src/DEV/SMARTDRV/INT13.DOC | 369 |
1 files changed, 369 insertions, 0 deletions
diff --git a/v4.0/src/DEV/SMARTDRV/INT13.DOC b/v4.0/src/DEV/SMARTDRV/INT13.DOC new file mode 100644 index 0000000..3e1917b --- /dev/null +++ b/v4.0/src/DEV/SMARTDRV/INT13.DOC | |||
| @@ -0,0 +1,369 @@ | |||
| 1 | mINT13.SYS is an MS-DOS device driver which implements a memory cache | ||
| 2 | for data referenced on IBM-PC XT/AT Hard disks. It caches at the | ||
| 3 | "INT 13H" level and caches tracks. | ||
| 4 | |||
| 5 | NOTE WARNING: There is a "re-boot" bug in RAMDrive version 1.16. When | ||
| 6 | INT13 and RAMDrive are both installed, it is possible | ||
| 7 | that Ctrl-Alt-Del will not work. This problem is "fixed" | ||
| 8 | by updating your RAMDrive to version 1.17 or later. | ||
| 9 | |||
| 10 | IN CONFIG.SYS: | ||
| 11 | |||
| 12 | device = [d:][path]int13.sys [bbbb] [/e | /a] [/d] [/wt:on] [/wc:off] | ||
| 13 | [/t:nnnnn] [/r:on] [/c:on] | ||
| 14 | |||
| 15 | bbbb First numeric argument, if present, is cache size | ||
| 16 | in K bytes. Default value is 256. Min is 128. Max | ||
| 17 | is 4096 (4 Meg). | ||
| 18 | |||
| 19 | /e Specifies that PC AT Extended Memory is to be used. | ||
| 20 | It is an error if /E is specified on a machine other | ||
| 21 | than an IBM PC AT. /E is the default. | ||
| 22 | |||
| 23 | NOTE: There is 1k of INT13 overhead. That is to say, | ||
| 24 | if there are 512k bytes of extended memory, there | ||
| 25 | will be 511k bytes available for assignment to INT13. | ||
| 26 | |||
| 27 | /a Specifies that Above Board memory is to be used. It | ||
| 28 | is an error if the above board device driver is not | ||
| 29 | present. | ||
| 30 | |||
| 31 | Neither /A or /E Specifies /E | ||
| 32 | |||
| 33 | NOTE: THESE ARE THE ONLY CONFIGURATIONS. You must either have an | ||
| 34 | Above Board (or compatible), or you must have extended memory | ||
| 35 | on an IBM PC-AT (or compatible). | ||
| 36 | |||
| 37 | /d Disable caching. Causes INT13 to come up with caching | ||
| 38 | disabled (default is enabled). | ||
| 39 | |||
| 40 | /wt:on Enable write through. When INT13 is | ||
| 41 | caching write information, it is a good idea to imply | ||
| 42 | a flush of the cache on some operations so that in | ||
| 43 | case of a crash or power failure the information in | ||
| 44 | the cache which is not on the disk will not be lost. | ||
| 45 | /wt:on enables write through on full track INT 13s which | ||
| 46 | are to tracks not currently in the cache. /wt:off | ||
| 47 | disables it. INT13 is faster with write through | ||
| 48 | disabled, at the expense of there being a bigger risk of | ||
| 49 | loosing data. /wt:on IS NOT a substitute for flushing | ||
| 50 | before a re-boot!!!! The write through mechanism is far | ||
| 51 | from perfect, all it is is a risk REDUCER, not a risk | ||
| 52 | eliminator. Write through is off by default. | ||
| 53 | |||
| 54 | /wc:off - Disable write caching. There is risk when | ||
| 55 | caching "dirty" information that the system will crash, | ||
| 56 | or be re-booted, or be turned off before this | ||
| 57 | information can be written to the disk. This may | ||
| 58 | corrupt the disk. This risk can be ELIMINATED, at the | ||
| 59 | expense of cache performance, by NOT caching any dirty | ||
| 60 | information. /wc:off disables the caching of dirty | ||
| 61 | information, eliminating the risk. Write caching is | ||
| 62 | on by default. | ||
| 63 | |||
| 64 | /t:nnnnn - Set the auto flush interval. INT13 listens on the | ||
| 65 | system timer to note the passage of time and "age" the | ||
| 66 | dirty information in the cache. Every nnnnn ticks, | ||
| 67 | the cache is flushed. The timer ticks 18.2 times a | ||
| 68 | second. | ||
| 69 | |||
| 70 | nnnnn | | ||
| 71 | =========================================== | ||
| 72 | 18 | Flush every second | ||
| 73 | 1092 | Flush every minute | ||
| 74 | 5460 | Flush every 5 minutes | ||
| 75 | 10920 | Flush every 10 minutes | ||
| 76 | 21840 | Flush every 20 minutes | ||
| 77 | 32760 | Flush every 30 minutes | ||
| 78 | 65520 | Flush every hour | ||
| 79 | |||
| 80 | The default setting of nnnnn is 1092 or every minute. | ||
| 81 | nnnnn = 0 causes a wait for 65536 ticks which is a | ||
| 82 | little over an hour. The max value for nnnnn is 65535. | ||
| 83 | |||
| 84 | /r:on - Enable re-boot flush. | ||
| 85 | This enables the flush on re-boot logic. The default | ||
| 86 | is /r:off. This enables a flush in the Ctrl-Alt-Del | ||
| 87 | keyboard re-boot logic. NOTE WARNING DANGER!!!!!!!! | ||
| 88 | Enabling this feature can cause strange system behavior. | ||
| 89 | You will have to type Ctrl-Alt-Del twice at least. This | ||
| 90 | can adversly effect other software in the system. | ||
| 91 | The result of this can be very unpredictable. | ||
| 92 | |||
| 93 | /c:on - Enable all cache on reads. | ||
| 94 | Normally INT13 does not cache EVERY I/O. Whenever | ||
| 95 | it sees a full track I/O which is not currently in | ||
| 96 | the cache, it DOES NOT cache that track. This is | ||
| 97 | an optimization for "typical" operation, and actually | ||
| 98 | increases performance. This is the default setting | ||
| 99 | (/c:off). There may be some cases where it is desirable | ||
| 100 | that ALL reads be cached. One example is that you are | ||
| 101 | "loading" the cache prior to locking it with FLUSH13 /l. | ||
| 102 | With /c:off, some pieces of what you're trying to load | ||
| 103 | may not get into the cache. Another example is that | ||
| 104 | you continually access in a sequential manner (like | ||
| 105 | program load) some large file which happens to be | ||
| 106 | contiguous on the disk. Again, there may be some "piece" | ||
| 107 | of the file which does not get into the cache with | ||
| 108 | /c:off. /c:on enables the caching of ALL reads. | ||
| 109 | NOTE: The same "don't bother caching operations which | ||
| 110 | are full track and not in the cache" applies | ||
| 111 | to writes as well. /c has NO EFFECT on this | ||
| 112 | behavior however. /c only effects read operations. | ||
| 113 | |||
| 114 | |||
| 115 | |||
| 116 | MESSAGES: | ||
| 117 | |||
| 118 | |||
| 119 | INT13: Above Board Memory Manager not present | ||
| 120 | |||
| 121 | The /A switch was given but INT13 could not detect the presence of the | ||
| 122 | Above Board memory manager. You need to have a | ||
| 123 | |||
| 124 | device = EMM.SYS | ||
| 125 | |||
| 126 | line in your CONFIG.SYS file before you have any device = int13.sys | ||
| 127 | lines. INT13 will install a driver, but it will be non-functional. | ||
| 128 | |||
| 129 | |||
| 130 | INT13: Above Board Memory Status shows error | ||
| 131 | |||
| 132 | During the process of trying to set up the cache in Above Board memory | ||
| 133 | an error was detected. Run the Above Board Confidence test to test | ||
| 134 | your Above Board memory. INT13 will install a driver, but it will be | ||
| 135 | non-functional. | ||
| 136 | |||
| 137 | |||
| 138 | INT13: Computer must be PC-AT, or PC-AT compatible | ||
| 139 | |||
| 140 | The /E switch can only be given on an IBM PC AT or an IBM PC AT | ||
| 141 | compatible computer that has the FCH model byte (byte at FFFF:000E). | ||
| 142 | INT13 will install a driver, but it will be non-functional. | ||
| 143 | |||
| 144 | |||
| 145 | INT13: No extended memory available | ||
| 146 | |||
| 147 | Your system has NO memory for RAMDrive drives. | ||
| 148 | INT13 will install a driver, but it will be non-functional. | ||
| 149 | |||
| 150 | |||
| 151 | INT13: Insufficient memory | ||
| 152 | |||
| 153 | Your system has some memory available for INT13 cache, but not enough | ||
| 154 | to set up a driver. INT13 will install a driver, but it will be non-functional. | ||
| 155 | |||
| 156 | |||
| 157 | INT13: Invalid parameter | ||
| 158 | |||
| 159 | You specified too many parameters, your numeric parameter is not | ||
| 160 | valid, you specified conflicting or too many switches. Edit your CONFIG.SYS | ||
| 161 | file and fix the INT13 line. INT13 will install a driver, but it will | ||
| 162 | be non-functional. | ||
| 163 | |||
| 164 | |||
| 165 | INT13: Incorrect DOS version | ||
| 166 | |||
| 167 | INT13 only runs on 2.X and 3.X versions of DOS. | ||
| 168 | INT13 will install a driver, but it will be non-functional. | ||
| 169 | |||
| 170 | |||
| 171 | INT13: I/O error accessing cache memory | ||
| 172 | |||
| 173 | During the set up of the INT13 cache, an error was detected trying to | ||
| 174 | access the cache memory. Run any memory tests you have that will | ||
| 175 | exercise your extended or expanded memory. | ||
| 176 | INT13 will install a driver, but it will be non-functional. | ||
| 177 | |||
| 178 | |||
| 179 | INT13: No hardfiles on system | ||
| 180 | |||
| 181 | INT13 could not find any hardfiles on your system. Only hardfiles | ||
| 182 | which are compatible with IBM hardfiles at the ROM BIOS INT 13H | ||
| 183 | level can be supported. INT13 will install a driver, but it will | ||
| 184 | be non-functional. | ||
| 185 | |||
| 186 | |||
| 187 | INT13: Too many bytes per track on hardfile | ||
| 188 | |||
| 189 | One of the hardfiles on your system defined a very large track. | ||
| 190 | This track is too large for INT13 to be able to cache it. | ||
| 191 | INT13 will install a driver, but it will be non-functional. | ||
| 192 | |||
| 193 | |||
| 194 | Microsoft INT13 Cache version Y.YY | ||
| 195 | |||
| 196 | INT13 Header message, Y.YY is the version of INT13. | ||
| 197 | |||
| 198 | |||
| 199 | Cache size: nnnnk in UUUUUU Memory | ||
| 200 | Room for tttt tracks of ssss sectors each | ||
| 201 | |||
| 202 | This is an informational message from INT13 telling you how many Kilo Bytes | ||
| 203 | of memory were assigned to the cache and what type of memory it is, how many | ||
| 204 | tracks this allows to be buffered and how many sectors there are per track. | ||
| 205 | |||
| 206 | NOTE: There is nothing to "prevent" you from having two device = INT13.SYS | ||
| 207 | lines in your CONFIG.SYS file, but you should not do this. Very | ||
| 208 | unpredictable behavior will occur, and FLUSH13 will only "talk" to | ||
| 209 | one of them. | ||
| 210 | |||
| 211 | INT13 has several behavior aspects that can be changed. This is done | ||
| 212 | with the FLUSH13 utility. | ||
| 213 | |||
| 214 | FLUSH13 [/s|/sx|/sr] [/d|/e] [/l|/u] [/i] [/f] [/wt:on|/wt:off] | ||
| 215 | [/wc:on|/wc:off] [/t:nnnnn] [/r:on|/r:off] [/c:on|/c:off] | ||
| 216 | |||
| 217 | No arguments - This causes FLUSH13 to flush out any "dirty" | ||
| 218 | tracks in the INT13 cache. A "dirty" track is one | ||
| 219 | which has been written into the cache, but not yet | ||
| 220 | written to the disk. This invokation causes all dirty tracks | ||
| 221 | to be written out to the disk so that the system can | ||
| 222 | be re-booted or turned off. NOTE: FAILURE TO FLUSH | ||
| 223 | THE CACHE BEFORE A RE-BOOT OR POWER OFF CAN CAUSE THE | ||
| 224 | INFORMATION ON THE HARDFILE TO BE CORRUPTED. | ||
| 225 | |||
| 226 | /f - Flush. Same as the no arguments case, but allows you to | ||
| 227 | perform the flush and do something else (like /s). | ||
| 228 | |||
| 229 | /i - Flush and invalidate. This is the same as the no argument | ||
| 230 | case except that all of the information in the cache | ||
| 231 | is also discarded. This makes the cache EMPTY. | ||
| 232 | |||
| 233 | /d - Disable caching. This causes all dirty cache information | ||
| 234 | to be flushed and all caching to stop. | ||
| 235 | |||
| 236 | /e - Enable caching. This causes caching to be enabled after | ||
| 237 | a previous /d disable. When INT13 is started it is enabled. | ||
| 238 | |||
| 239 | /l - Lock the cache. This causes all dirty information to be | ||
| 240 | flushed, and the cache contents to be locked in the cache. | ||
| 241 | When in this mode the locked elements will not be discarded | ||
| 242 | to make room for new tracks. This can be used | ||
| 243 | to "load" the cache with desired things. For instance if | ||
| 244 | you use the "foobar" program a lot, you can run foobar, | ||
| 245 | causing it to be loaded into the cache, then lock the cache. | ||
| 246 | This causes the foobar program to always be in the cache. | ||
| 247 | You may lock the cache as many times as you want. Each lock | ||
| 248 | causes the current information (including any previously | ||
| 249 | locked information) to be locked. | ||
| 250 | NOTE: Information in a locked cache is READ ONLY!! Any write | ||
| 251 | operation on information in a locked cache causes the | ||
| 252 | information to be unlocked. | ||
| 253 | |||
| 254 | /u - Unlock the cache. This undoes a previous /l and returns | ||
| 255 | the cache to normal operation. | ||
| 256 | |||
| 257 | /s - Print status. This displays the settings of the setable | ||
| 258 | device parameters. | ||
| 259 | /sx - Print extended status. Same as /s, only additional | ||
| 260 | Statistical information is also given. | ||
| 261 | /sr - Reset statistics. Same as /sx, only the additional | ||
| 262 | Statistical information is reset to 0. | ||
| 263 | |||
| 264 | /wt:on off - Enable or Disable write through. When INT13 is caching | ||
| 265 | write information, it is a good idea to imply a flush of | ||
| 266 | the cache on some operations so that in case of a crash or | ||
| 267 | power failure the information in the cache which is not on | ||
| 268 | the disk will not be lost. /wt:on enables write through on full | ||
| 269 | track INT 13s which are to tracks not currently in the cache. | ||
| 270 | /wt:off disables it. INT13 is faster with write through | ||
| 271 | off, at the expense of there being a bigger risk of | ||
| 272 | loosing data. /wt:on IS NOT a substitute for flushing before | ||
| 273 | a re-boot!!!! This write through mechanism is far from perfect, | ||
| 274 | all it is is a risk REDUCER, not a risk eliminator. /wt:off | ||
| 275 | is the setting when INT13 is started. | ||
| 276 | |||
| 277 | /wc:on off - Enable or Disable write caching. There is risk when | ||
| 278 | caching "dirty" information that the system will crash, | ||
| 279 | or be re-booted, or be turned off before this information | ||
| 280 | can be written to the disk. This may corrupt the disk. | ||
| 281 | This risk can be ELIMINATED, at the expense of cache | ||
| 282 | performance, by NOT caching any dirty information. | ||
| 283 | /wc:off disables the caching of dirty information, | ||
| 284 | eliminating the risk. /wc:on enables the caching of dirty | ||
| 285 | information. /wc:on is the default when INT13 is started. | ||
| 286 | |||
| 287 | WARNING: You must be careful to flush the cache before | ||
| 288 | re-booting the system, or turning it off if /wc:on is selected. | ||
| 289 | You should also be careful to disable the cache (/d), or do | ||
| 290 | /wc:off before running any program under development which | ||
| 291 | has a chance of crashing due to bugs. | ||
| 292 | |||
| 293 | NOTE: When /wc:off is selected, write info CAN get into | ||
| 294 | the cache (when the write is to a track which is currently | ||
| 295 | in the cache). The difference is that this "dirty" information | ||
| 296 | is IMMEDIATELY written out to the disk instead of being | ||
| 297 | held in the cache in the "dirty" state. When the write is | ||
| 298 | to a track that is not in the cache, it will be passed | ||
| 299 | through to the disk without being cached. | ||
| 300 | |||
| 301 | /t:nnnnn - Set the auto flush interval. INT13 listens on the system | ||
| 302 | timer to note the passage of time and "age" the dirty | ||
| 303 | information in the cache. Every nnnnn ticks, the cache is | ||
| 304 | flushed. The timer ticks 18.2 times a second. | ||
| 305 | |||
| 306 | nnnnn | | ||
| 307 | =========================================== | ||
| 308 | 18 | Flush every second | ||
| 309 | 1092 | Flush every minute | ||
| 310 | 5460 | Flush every 5 minutes | ||
| 311 | 10920 | Flush every 10 minutes | ||
| 312 | 21840 | Flush every 20 minutes | ||
| 313 | 32760 | Flush every 30 minutes | ||
| 314 | 65520 | Flush every hour | ||
| 315 | |||
| 316 | The default setting of nnnnn is 1092 or every minute. | ||
| 317 | NOTE: There is no way to "disable" this tick aging. Setting | ||
| 318 | nnnnn = 0 causes a wait for 65536 ticks which is a | ||
| 319 | little over an hour. The max value for nnnnn is 65535. | ||
| 320 | Disabling the cache (/d), or turning write caching | ||
| 321 | off (/wc:off) effectively prevents the aging from | ||
| 322 | doing anything as there is never anything to flush | ||
| 323 | in these cases. Setting very low values of nnnnn | ||
| 324 | should be avoided as it places a lot of overhead into | ||
| 325 | the timer interrupt service. Rather than set low values, | ||
| 326 | it is better to just turn off write caching (/wc:off). | ||
| 327 | NOTE: As stated above, the max value for nnnnn is 65535. It | ||
| 328 | should be noted however that FLUSH13 DOES NOT object if | ||
| 329 | you specify a number larger than this! It will simply | ||
| 330 | use only the low 16 bits of the number. | ||
| 331 | |||
| 332 | /r:on off - En/Disable reboot flush. | ||
| 333 | INT13 has a provision for detecting Ctrl-Alt-Del user | ||
| 334 | reboots. /r:on enables a flush of the cache at this time | ||
| 335 | to prevent the disks from being corrupted. The default | ||
| 336 | setting is /r:off. NOTE WARNING DANGER!!!!! Enabling | ||
| 337 | this feature can prevent disks from being damaged BUT | ||
| 338 | the mechanism has flaws. For one, you will have to hit | ||
| 339 | Ctrl-Alt-Del a second time to get the system to reboot. | ||
| 340 | YOU MUST NOT POUND ON THE KEY. You will crash the system if | ||
| 341 | you do. Hit the key ONCE, if the system re-boots, fine. If | ||
| 342 | there is info to flush out of the cache, the drive light | ||
| 343 | will come on and the system will probably NOT reboot. WAIT | ||
| 344 | until the drive light is OFF before hitting Ctrl-Alt-Del | ||
| 345 | again. This feature of INT13 MAY NOT WORK with other | ||
| 346 | software in the system. USER BEWARE!!!!!!!!!!!!!!!!!!! | ||
| 347 | |||
| 348 | /c:on off - En/Disable all cache on reads. | ||
| 349 | Normally INT13 does not cache EVERY I/O. Whenever | ||
| 350 | it sees a full track I/O which is not currently in | ||
| 351 | the cache, it DOES NOT cache that track. This is | ||
| 352 | an optimization for "typical" operation, and actually | ||
| 353 | increases performance. This is the default setting | ||
| 354 | (/c:off). There may be some cases where it is desirable | ||
| 355 | that ALL reads be cached. One example is that you are | ||
| 356 | "loading" the cache prior to locking it with FLUSH13 /l. | ||
| 357 | With /c:off, some pieces of what you're trying to load | ||
| 358 | may not get into the cache. Another example is that | ||
| 359 | you continually access in a sequential manner (like | ||
| 360 | program load) some large file which happens to be | ||
| 361 | contiguous on the disk. Again, there may be some "piece" | ||
| 362 | of the file which does not get into the cache with | ||
| 363 | /c:off. /c:on enables the caching of ALL reads. | ||
| 364 | NOTE: The same "don't bother caching operations which | ||
| 365 | are full track and not in the cache" applies | ||
| 366 | to writes as well. /c has NO EFFECT on this | ||
| 367 | behavior however. /c only effects read operations. | ||
| 368 | |||
| 369 | If invalid or conflicting arguments are given, FLUSH13 prints a usage line. | ||