home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-01-16 | 113.8 KB | 1,934 lines |
- |tMemory|t and Related Topics
-
- First of all, |nmemory|n has nothing to do with disk space. Some people
- might call disk space "memory" but that is misleading and very confusing.
- The two aren't related at all. Disk space is where the computer stores
- things that it's not using at the moment. Like a file cabinet. |nMemory|n
- is |TRAM|T (Random Access Memory) chips that plug into the motherboard, and
- this is where the computer keeps programs that are actually running at
- the moment, and the data those programs are using. Like your desktop.
- The size of your desk and the size of your filing cabinets are not at all
- related. If you get an "Out of memory" error, don't be thinking that
- deleting files from your hard drive is going to help that. What you need
- to do is remove some of the |sTSR|ss and |sdevice driver|ss that you're using.
- The way to do that is to edit your CONFIG.SYS and AUTOEXEC.BAT files, to
- remove the commands that start those |sTSR|ss and |sdevice driver|ss, and then
- reboot the computer. Or just reboot from a clean boo|1t disk.
-
- Besides whatever programs you're working on, and whatever |sdevice driver|ss
- and |sTSR|ss your CONFIG.SYS and AUTOEXEC.BAT files loaded for you, the com-
- <page down> for more Memory
- puter's |nmemory|n also contains the main parts of DOS, at all times. With-
- out DOS in |nmemory|n, the computer is every bit as stupid as your electric
- stapler. No, in fact, more stupid than that because the stapler knows
- how to staple. The computer doesn't know how to do anything unless DOS
- is there telling it. This part of DOS that stays in |nmemory|n all the time
- is called the DOS "|tkernel|t". Now all the software companies know that the
- DOS |nkernel|n has to be in |nmemory|n, and even a couple of |sdevice driver|ss and
- |sTSR|ss too. So when they write on the package that a certain program needs
- 512K or 640K in order to run, they mean you need to have that much |nmemory|n
- installed, not that you need to have that much available. By the way, to
- find out how much you have available at any particular time, look at the
- last line of the CHKDSK command's output, or if you have DOS version 4 or
- later, use the MEM command.
-
- |nMemory|n is volatile. That means it evaporates easily. Ok, it's not the
- |nmemory|n that's volatile, it's the stuff that's in |nmemory|n that's volatile.
- The second you turn off the computer, or reboot, or the power goes out,
- everything that was in |nmemory|n is gone. And you can't get it back. So
- save your work to disk often. For example, as I'm writing this with my
- <page down> for more Memory
- word processor, the only place my words exist is in the computer's |nmemory|n
- so if my electric company hiccupped, I'd have to start this chapter all
- over again. Well my word processor has this real handy F2 keystroke that
- means "save to disk under original filename". So I hit my F2 key every
- couple of sentences. That writes my work to disk where it won't get lost
- even if my electricity goes out altogether. Of course your word proces-
- sor doesn't necessarily use the F2 key for saving. Find out what key-
- stroke works to save data to disk in your word processor, and do it often
- while you're writing! The same goes for your spreadsheet, database,
- paint program, and whatever other programs you use.
-
- |tBytes|t are units of measurement for |nmemory|n. A byte is just basically one
- character of data. "A" is a byte, "b" is a byte, "7" is a byte, "+" is a
- byte, etc. A bit is one eighth of a byte, and a nybble is one half byte,
- but it's not too often that you'll need to know those. Mostly you only
- need to know multiples of |nbytes|n, not fractions of them. A Kilobyte, Kb,
- or K, is 1024 |nbytes|n. (The abbreviation Kilo usually means 1000, but com-
- puters use a binary numbering system so 1024 is what Kilo means when you
- talk computers.) A Megabyte, Meg, Mb, or M, is 1024 Kilobytes, or
- <page down> for more Memory
- 1,048,576 bytes. And a Gigabyte is 1024 Megabytes, or 1,073,741,824
- bytes.
-
- There are lots of different classifications of |nmemory|n. The most impor-
- tant is the lowest 640K, which is called |tConventional|t |nmemory|n. That's the
- kind that DOS knows how to run programs in, and that's right, 640K of it
- is all there is! Well the designers of the first PC thought that was a
- good idea at the time. See, back then 64K was a perfectly respectable
- amount of |nmemory|n for a computer to have. Honest, you could run a whole
- lot of programs in that little bit of |nmemory|n. (You still could, except
- that programmers are writing these big fat programs with fancy graphics
- and other |nmemory|n-wasting features.) All right, so we started out with
- the IBM-PC which didn't physically have the ability to address more than
- one meg of different |nmemory|n locations, and the designers had to set aside
- some portion of that |nmemory|n space to use for the |nmemory|n on the graphics
- card, and the BIOS, and all that. So they decided that 384K of the one
- meg had to be |treserved|t for those things, and the other 640K could be used
- as main program |nmemory|n. And there wasn't anything wrong with that, be-
- cause remember computers back then didn't need any more than one tenth of
- <page down> for more Memory
- that!
-
- Well nowadays we need more than that, but we don't get it. Because IBM
- and Microsoft are committed to continued support of the people who are
- still using those IBM-PCs, |sXT|ss, and other computers that use the 8088 CPU
- chip which can't address more than one meg of |nmemory|n locations. DOS is
- never going to lose the 640K barrier as long as there are 8088 machines
- still being used.
-
- So, what do we do about that if we want to keep using DOS? Well the
- first workaround was the |tExpanded|t |nMemory|n Specification, which is called
- |TEMS|T for short. This scheme was invented so that machines with the 8088
- CPU could use more than 640K of |nmemory|n. Well remember the 8088 can not
- talk to more than 1,048,576 different bytes of |nmemory|n. But that's ok,
- because remember that space between the 640K and 1024K addresses? You
- know, the part that's reserved for the video card, the BIOS, and all
- that? Not all of that gets used up by those things for which it is re-
- served. Some of it is left empty. So they invented |nexpanded|n |nmemory|n.
- There's a piece of hardware on an |nexpanded|n |nmemory|n board that knows how to
- <page down> for more Memory
- dynamically remap |nmemory|n locations into different |nmemory|n addresses. Well
- first it needs a certain piece of software loaded into |nmemory|n, called an
- Expanded |nMemory|n Manager (EMM), that controls a certain 64K chunk of that
- reserved |nmemory|n. This 64K chunk is called a Page Frame. Now the EMM can
- use that expanded |nmemory|n board's address remapping ability to switch
- different chunks of expanded |nmemory|n in and out of that page frame. See,
- DOS can access any |nmemory|n address below one meg. DOS normally ignores
- everything above 640K because the rest is reserved, but the EMM tells DOS
- that it's ok to look for data in the page frame. So the EMM keeps track
- of where the data is on the expanded |nmemory|n board, and when DOS asks for
- a certain piece of data, the EMM remaps that piece of |nmemory|n into the
- page frame where DOS can see it, and then the next time DOS asks for some
- other piece of data from the expanded |nmemory|n board, the EMM puts what's
- in the page frame back onto the expanded |nmemory|n board and gets the piece
- DOS wants and puts it in the page frame instead. It's just switching
- banks of |nmemory|n locations into and out of a small number of |nmemory|n add-
- resses (so EMS is also called "bank switching"). As you can imagine,
- this goes a lot slower than normal conventional |nmemory|n access, but it is
- better than not having any way at all to access more than 640K of |nmemory|n.
- <page down> for more Memory
- (|sEMS|s is also called |TLIM|T--Lotus-Intel-Microsoft--|nmemory|n, and if you want
- to buy an expanded |nmemory|n board, then make real sure that it's complete-
- ly hardware-compatible with version 4 of the |nLIM|n EMS specification since
- a lot of programs won't be able to use it if it's not.)
-
- But then came the 80286 processor. This one has the ability to access 16
- mega|sbytes|s worth of |nmemory|n addresses. So a new scheme had to be developed
- to access all those addresses! This one was called |teXtended|t |nMemory|n Spec-
- ification (|TXMS|T). (Who came up with these names, huh?) Now there is a
- problem with this. The 286 processor can run in two modes. One's called
- |tReal Mode|t and that's the only one DOS can run in. But in |nreal mode|n there
- is no way to access anything above the one meg address. The other mode
- is called |tProtected Mode|t, and in that mode the computer can address a
- virtually unlimited amount of |nmemory|n, but DOS can't run when the compu-
- ter is in |nprotected mode|n. So you've got to have a thing called an |nXMS|n
- manager, which is a device driver in the same way that the EMM is. This
- thing controls the processor's switching back and forth between |nreal mode|n
- and |nprotected mode|n, so that |nextended|n |nmemory|n can be accessed.
-
- <page down> for more Memory
- Well you can see that with all this switching of |nmemory|n locations and
- switching of processor modes, there's just about no way that a program
- can run in either expanded or extended |nmemory|n. But there are quite a few
- types of programs that can store and access the data they're working on,
- in those types of |nmemory|n. But these programs have to be specially de-
- signed to know how to do that. There's no way to get a program to use
- expanded or extended |nmemory|n for its data storage unless it was written
- specifically to be able to use it.
-
- Besides just applications like some spreadsheets and databases, there are
- other things that very commonly know how to use that additional |nmemory|n.
- DOS even comes with a couple of them. A RAMdisk can do it. So can a
- disk cache. DOS comes with |sRAMDRIVE.SYS|s/|sVDISK.SYS|s and SMARTDRV.SYS for
- those purposes. Print |sspooler|ss can also do it, but DOS doesn't come with
- one of those, except for the PRINT command which is a spooler that can
- only use conventional |nmemory|n. Most |sRAMdisk|ss, disk caches, and print
- |sspooler|ss can even use extended |nmemory|n without your loading any XMS mana-
- ger! They have their own built right in. Isn't that convenient?
-
- <page down> for more Memory
- DOS versions 4 and 5 also come with |tHIMEM.SYS|t, an XMS manager, and an EMM
- called |TEMM386|T. As its name implies, |nEMM386|n can only run on 386 or higher
- computers. You see, a 386 doesn't need an expanded |nmemory|n board in order
- to have expanded |nmemory|n. The 386 processor has |nmemory|n-address-remapping
- capabilities built right into it. So all it needs is the EMM (manager)
- in order to treat some of its extended |nmemory|n as expanded |nmemory|n. This
- is called EMS emulation. This is not to be confused with EMS simulation.
- Simulation is done on 286 machines that don't have expanded |nmemory|n boards
- but it doesn't work nearly as well as real expanded |nmemory|n does. The 286
- just doesn't have the ability to treat extended |nmemory|n as if it were ex-
- panded. An EMS simulator will try. It puts the page frame into conven-
- tional |nmemory|n instead of the reserved |nmemory|n area, and it's slow, and it
- can't even be used by some of the types of software that require expanded
- |nmemory|n. But if your application can use it, and if you have the conven-
- tional |nmemory|n to spare to use for the page frame, it's better than not
- having expanded |nmemory|n at all. Pretty much.
-
- So, how do you remember the difference between the words "|sexpanded|s" and
- "|sextended|s"? They're identical except for the middle syllable, but it's
- <page down> for more Memory
- not really so difficult. The word expanded conjures up the image of
- something that has gone from being narrow to being wide. Well, with
- expanded |nmemory|n, DOS is looking through a narrow page frame at a wide
- chunk of |nmemory|n. The word extended refers to something going from short
- to long. And with extended |nmemory|n, you take the short list of |nmemory|n
- addresses that the computer can access, just one meg, and you make it a
- long list of addresses, up to sixteen megs or even more. You could say
- that description of extended could also apply to expanded, but it doesn't
- because expanded |nmemory|n doesn't have any addresses. (Except the 64K bank
- of |nmemory|n that's currently sitting in the page frame. It has addresses
- for the moment, but only until DOS wants data from one of the other banks
- of expanded |nmemory|n and the EMM swaps it back out to the unaddressed ex-
- panded |nmemory|n to swap the requested bank into the page frame.)
-
- There are a lot more programs written to be able to access expanded mem-
- ory than there are of programs that can use extended. Because it's been
- around longer, so programmers have already learned real well how to write
- for it. And also because software companies like to be compatible with
- as many kinds of computers as possible to sell as many copies as possible
- <page down> for more Memory
- so they have to use expanded instead of extended so that their programs
- will run on machines that are still using the 8088 processor. But when-
- ever you have a choice of which kind to use, go with extended if at all
- possible because it's much more efficient!
-
- One thing that an awful lot of people don't understand, is that even
- though extended |nmemory|n can't exist at any address lower than 1024K, that
- does not mean that a computer with only one meg of |nmemory|n can't have any
- extended |nmemory|n. It doesn't mean that at all! Remember, the addresses
- between 640K and 1024K are reserved for all that BIOS and video and
- stuff. So motherboard |nmemory|n can't go there. If you have one meg of
- |nmemory|n on your motherboard, then the part above the first 640K has to go
- into addresses above 1024K since it can't go into the reserved area. If
- someone is trying to sell you a computer that allegedly has one meg of
- RAM, and it doesn't have either Shadow RAM or else 384K of extended mem-
- ory, then he's trying to rip you off. If you're getting one meg of mem-
- ory addresses, then you're only getting 640K of |nmemory|n, because all com-
- puters have the empty 640K-1024K addresses, even computers with only 32K
- of RAM. If you're getting one meg of |nmemory|n, then you're getting 1408K
- <page down> for more Memory
- of |nmemory|n addresses. The 640K-1024K addresses are reserved. They are
- empty. They don't have any |nmemory|n in them. So they don't count as far
- as "amount of |nmemory|n on the motherboard" is concerned.
-
- Well those are the main types of |nmemory|n but we're not done with this les-
- son yet. Not at all. For one thing, there are exceptions to some of the
- rules I've given so far. It actually is possible to get more than 640K
- of conventional |nmemory|n, even up to 736K. But only on some machines, and
- only if you give up your graphics capability. Remember how there is all
- that unused space in the reserved |nmemory|n area? The only reason it can't
- be used as conventional |nmemory|n is because it is not "contiguous", or in a
- row, with the conventional |nmemory|n. The lowest addresses in the reserved
- |nmemory|n area are used by the graphics parts of the |nmemory|n on your video
- card. So that is between the conventional |nmemory|n and the empty parts.
- Since the empty parts are separated from the conventional |nmemory|n, it
- can't be part of conventional |nmemory|n. But check this out! The graphics
- |nmemory|n is contiguous with the conventional |nmemory|n. If it weren't being
- used for graphics, it could be used for conventional memory! Well that's
- just the idea behind programs such as Quarterdeck's VIDRAM. It disables
- <page down> for more Memory
- the graphics and convinces DOS to use that portion of the reserved mem-
- ory. Absolutely amazing. But of course you can't run any graphics pro-
- grams while you're using VIDRAM. Only plain old text programs like word
- processors. But just imagine being able to have over 700K of convention-
- al memory! You could have lots of |sTSR|ss loaded and still be able to run
- some really large programs. Trouble with that is, most of the programs
- that want large amounts of |nmemory|n are the programs that need to use that
- graphics |nmemory|n for graphics.
-
- So, besides disabling graphics to add it to the conventional |nmemory|n, and
- using 64K of it for an expanded |nmemory|n page frame, how else can you take
- advantage of the fact that the reserved |nmemory|n area is not all used up by
- the things that are supposed to use it? Well if you have the right hard-
- ware and the right software, you can run your |sTSR|ss and |sdevice driver|ss up
- there which frees up all the space they would otherwise be using up in
- your precious conventional |nmemory|n. What's the right hardware? A 386, or
- a 286 with a LIM 4.0 expanded |nmemory|n board, or a 286 with a very special
- chipset such as the Chips & Technologies NEAT chipset or just about any
- one that has Shadow RAM capability. (We'll get to Shadow RAM in a bit.)
- <page down> for more Memory
- All of these pieces of hardware have the ability to remap |nmemory|n from one
- location to another. So they can take some expanded or extended |nmemory|n
- and convince the computer that it's actually located in those unused add-
- resses in the reserved |nmemory|n area. So now you have |nmemory|n that is not
- in conventional addresses, but is still in addresses that DOS knows how
- to communicate with. And you can load things into those addresses. What
- is the software that you need to make DOS use those addresses now that
- you have |nmemory|n in them? For a 286 there's Quarterdeck's QRAM, a couple
- of other commercial ones, and even two shareware ones that I know of,
- called The Last Byte and HRAM. For a 386 or higher computer, there's
- Quarterdeck's QEMM, Qualitas's 386Max, and even DOS 5.0's EMM386. DOS 5
- didn't include one for 286s because there are so few 286s that have the
- |nmemory|n-remapping ability, whereas all 386s have it.
-
- By the way, once there is some |nmemory|n remapped into those empty reserved
- |nmemory|n addresses, it's not called "|sreserved|s" anymore. Now it's known as
- |tUpper|t |nMemory|n Blocks. Some software companies even call it high |nmemory|n,
- but I don't like to do that, because it's too easy to confuse that term
- with the HMA. (|TUMB|T is the abbreviation for |nUpper|n |nMemory|n Blocks.)
- <page down> for more Memory
- What is this "|TBIOS|T" thing that part of the reserved |nmemory|n is reserved
- for? It stands for Basic Input/Output System. This is the instructions
- in the |nROM|n of the computer that tell it how to communicate with the peri-
- pherals such as the drives, the keyboard, the comm ports, etc. DOS talks
- to the |nBIOS|n real often, because each computer is a little different from
- every other computer, so DOS couldn't possibly know how to communicate
- with every type of hardware. So the |nBIOS|n is like the translator between
- DOS and the hardware. AMI and Phoenix are both very popular brands of
- |nBIOS|n, and every make and model of computer has its own version.
-
- Well, considering how often DOS has to access the |nBIOS|n, and considering
- that it's in |TROM|T (Read-Only Memory) which is non-volatile and is very
- slow, wouldn't it be nice to have it in fast RAM instead of slow ROM?
- Well, that's what |tShadow|t RAM is all about. Computers that can do |nShadow|n
- RAM remap some extended |nmemory|n into the reserved addresses through which
- the computer would normally be accessing the |nROM|n, and copy the data from
- the |nROM|n into that remapped RAM. So there you go, you have your |nROM|n |nBIOS|n
- routines in nice fast RAM instead. The problem is, this is eating up
- what would otherwise be extended |nmemory|n. Some computers only do it for
- <page down> for more Memory
- the addresses that are used by ROM chips, but others disable an entire
- 384K of extended |nmemory|n while they're at it. And some computers allow
- Shadow RAM to be disabled, so that your extended |nmemory|n becomes extended
- again, but others don't. So if you've only got one meg of RAM, then it's
- possible that Shadow RAM ability is depriving you of extended |nmemory|n al-
- together. Well, nothing in life is free. You want fast BIOS routines,
- but sometimes you have to give something up in order to get it.
-
- Ok, here comes another exception to the rules. I said that there's no
- way that DOS can access anything above the one meg address. Well that's
- true, DOS can't access any block of |nmemory|n whose starting location is
- above the one meg address. But that doesn't say anything about the end-
- ing location of a |nmemory|n block. On a 286 or higher computer that has ex-
- tended |nmemory|n, there's a little trick of the A20 address line that allows
- DOS to access a 64K chunk of |nmemory|n that begins 16 bytes below the one
- meg address. So that means that 65,520 bytes of that |nmemory|n block is
- above the one meg address, but DOS can access it because DOS names |nmemory|n
- blocks by their starting address, not their ending address. This little
- 64K chunk of space is called the |tHig|1h|t |nMemory|n Area, which is abbreviated
- <page down> for more Memory
- as |tHMA|t. It's not conventional |nmemory|n, because it's not contiguous with
- the bottom 640K of |nmemory|n. But some programs know how to use it almost
- as if it were conventional memory! This is one of the best things about
- DOS version 5. It actually knows how to run while part of it is in the
- HMA! You have to load the HIMEM.SYS device driver which is an XMS manag-
- er and |nHMA|n manager, and then give the command |sDO|1S|s=|sHIG|1H|s in your CONFIG.SYS
- file, and magically the DOS kernel and the BUFFERS will load into the |nHMA|n
- instead of into conventional memory! This frees up about 45K of your
- precious conventional |nmemory|n, or even 64K of it if you were using a lot
- of buffers. Also the latest version of Microsoft's mouse driver can go
- into the |nHMA|n. But when one program is using the |nHMA|n nothing else can use
- it. Even if there is room left up there. Nothing can go there except
- things that the controlling program allows. The DOS kernel allows the
- buffers and the mouse driver, but nothing else. Any leftover |nHMA|n space
- just goes to waste.
-
-
-
-
- <page down> for DOS 5.0's |nMemory|n Management
- DOS 5.0's Memory Management
-
- If you don't have a 286 or higher computer with some extended memory,
- then don't even read this chapter. It will only make you jealous of the
- people who do have the right hardware to be able to do this stuff.
-
- The first thing you want to do, is load the HIMEM.SYS device driver via
- your CONFIG.SYS file, by putting the line |sDEVIC|1E|s=C:\DOS\HIMEM.SYS at the
- beginning of that file. HIMEM.SYS is an XMS manager and HMA (|sHig|1h|s Memory
- Area) enabler. It gives you access to both of those types of memory.
-
- Then add the line |TDO|1S|T=|sHIG|1H|s anywhere in the CONFIG.SYS file, and DOS 5.0
- will load its kernel and the BUFFERS into the HMA instead of leaving them
- to take up your precious conventional memory space.
-
- Since the HIMEM.SYS device driver converts all of your extended memory to
- XMS memory (which just means extended memory that's being managed by an
- eXtended Memory Specification driver which is what HIMEM.SYS is), if you
- have any programs that can use extended memory but can't use the XMS
- <page down> for more DO|1S 5.0
- method of accessing it, then you need to tell HIMEM.SYS to leave you some
- plain old extended memory instead of managing all of it and turning it
- into XMS memory. That's easy to do. Just add the parameter /INT15=###
- to the end of your |sDEVIC|1E|s=|sHIMEM.SYS|s command. The symbol ### stands for
- however many Kilo|sbytes|s of extended memory you want to keep as extended
- instead of having it converted to XMS, plus 64K. For example if you want
- to keep 256K of extended memory, then you would use /INT15=320 because
- 256 + 64 = 320, so that will leave you with 256K of extended memory, and
- the rest will still be converted to XMS memory and HMA and all that.
-
- If you have a 286, that's it, you're done. If you have a 386, there's
- lots more, so read on!
-
- First, change DOS=|sHIG|1H|s to DOS=|sHIG|1H|s,UMB which tells DOS to use the Upper
- Memory Blocks that EMM386 is going to create. And right after the HIMEM
- .SYS line, you want to install EMM386. If you just want EMM386 to create
- some upper memory blocks in the empty reserved memory addresses between
- 640K and 1024K, then use this line:
- |sDEVIC|1E|s=C:\DOS\EMM386.EXE NOEMS
- <page down> for more DO|1S 5.0
- The NOEMS parameter tells EMM386 NOt to create any EMS (|sexpanded|s) memory.
- So it will just remap some extended memory into those empty reserved add-
- resses, so that it becomes upper memory.
-
- If you want EMM386 to create upper memory and also emulate some expanded
- memory, then you use this line instead:
- |sDEVIC|1E|s=C:\DOS\EMM386.EXE #### |nRAM|n
- The |nRAM|n parameter tells EMM386 to create upper memory and also emulate
- some expanded memory. That means, take some extended memory and convince
- the computer that it's really expanded memory instead. The #### symbol
- there is the spot where you tell it how much EMS to create. The default
- is 256 so if you want just 256K of expanded memory, then you can leave
- that out. If you want, say, a meg of EMS, then put 1024 there where I
- put ####. Now understand that emulating EMS is going to eat up 64K of
- that upper memory that EMM386 has created for you. Because that's where
- the expanded |smemory|s's page frame has to go. That gives you 64K less of
- upper memory that you can use, so don't use the |nRAM|n parameter unless you
- have an application that really does want some expanded memory.
-
- <page down> for more DO|1S 5.0
- (If for some reason you want to have emulated expanded memory without
- creating any upper memory, then load EMM386 without either of the NOEMS
- or |nRAM|n parameters. And if for some reason you want to have upper memory
- support without loading the DOS kernel hig|1h, then use DOS=|sUMB|s instead of
- DOS=|sHIG|1H|s,UMB.)
-
- All right, now you've got upper memory in what used to be empty reserved
- memory addresses. And you've used DOS=|sUMB|s to tell DOS to be prepared to
- use that upper memory. So what do you do with it? You load your |sTSR|ss
- and |sdevice driver|ss into it! So that they no longer take up any space in
- your conventional |smemory|s! For your |sdevice driver|ss, you just use the com-
- mand |tDEVICEHIGH|t instead of the DEVIC|1E command you would normally use, and
- make sure it comes after the commands that load HIMEM and EMM386 or else
- it won't work because there is not yet any upper memory to |nDEVICEHIGH|n in-
- to. For your |sTSR|ss, you insert the word |tLOADHIGH|t (or the abbreviation |tLH|t)
- at the front of the command that loads the TSR into memory. For example,
- if you usually load a screen saver with the command EXPLOSIV M2 then you
- would change that to |nLOADHIGH|n EXPLOSIV M2 or |nLH|n EXPLOSIV M2 so the screen
- saver will go into upper memory instead of conventional.
- <page down> for more DO|1S 5.0
- If you run out of upper memory so that DOS can't load the specified de-
- vice or TSR there, it will still load it, but into conventional memory,
- just as if you had used the DEVIC|1E command or left out the LH instead.
-
- Now there are |sTSR|ss and |sdevice driver|ss that just won't run from upper mem-
- ory at all. No matter what. And there are others that would run there
- if only you could get them up there. Some of them give a MEM command
- reading like as if they were small enough to fit into a free UMB, and yet
- they will load into conventional RAM instead of loading high, as if there
- was not enough memory free in the UMB. A lot of times, all this means is
- that there's not enough memory up there for it to load, not that there's
- not enough for it to run. What? Well you see, many drivers and |sTSR|ss re-
- quire a whole bunch of memory while they're loading, but then as soon as
- they're loaded, they settle down and only take up their normal amount of
- memory. If you've got one of these, all you have to do is put its com-
- mand earlier in the CONFIG.SYS or AUTOEXEC.BAT file, so that it loads be-
- fore something else, so that at that time, there is a larger UMB open.
- Then it can load, and it will settle down to its normal small size, so
- that there will still be room for the one that you put the misbehaving
- <page down> for more DO|1S 5.0
- one in front of. So with DEVICEHIGH and LOADHIGH, loading order of |sTSR|ss
- and |sdevice driver|ss matters even more than it used to before DOS 5.0.
-
- The EMM386 |sdevice driver|s/command has a lot of switches and parameters but
- you'll probably never need any of them, except the i switch. The "i" is
- for "include" and it lets you include extra upper memory addresses. You
- see, DOS only remaps extended memory to certain upper memory addresses it
- knows are available on just about every type of computer. Almost any
- computer has more available upper memory addresses than those, it's just
- that DOS has no way of knowing which ones are available, unless you tell
- it. So if you can decipher the output of the MEM /D command, or if you
- have a program such as Quarterdeck's Manifest that can tell you which
- addresses are not being used, you can use |sEMM386|s's i switch to tell it to
- create usable upper memory blocks in those addresses too! Then you can
- LOADHIGH a whole bunch more |sTSR|ss and |sdevice driver|ss! For example, here's
- the command I use in my CONFIG.SYS file:
- |sDEVIC|1E|s=C:\DOS\EMM386.EXE i=b000-b7ff i=c800-efff NOEMS
- Because Manifest tells me that the addresses B000-B7FF and C800-EFFF are
- unused on my computer. These addresses work for a lot of people. But if
- <page down> for more DO|1S 5.0
- you want to try those, you make real sure to have a good |sboot|sable DOS 5.0
- floppy disk handy before you add those i switches to your EMM386 command!
- Because if those memory addresses are not available on your computer then
- putting those switches in there could very well lock up your computer and
- you won't be able to reboot either, because every time you try, the com-
- puter will read the same line in the same CONFIG.SYS file and just lock
- up again! You'll need to be able to boot from a floppy disk and edit the
- CONFIG.SYS file to remove those i switches again.
-
- Now there's one problem with having all that free conventional memory
- that DOS 5.0 can give you when you load everything high. In the past,
- the lowest 64K of conventional memory was always taken up by the DOS
- kernel and stuff, so programs never needed to know how to run in such a
- low address. A lot of programs can't, but it never mattered before. It
- does now, though. Because with the DOS kernel and all your device dri-
- vers and |sTSR|ss loaded high, a lot of that lowest 64K of addresses is free
- for program use, and many programs just have a fit when they try to run
- there. Common responses to this are the "|tPacked file corrupt|t" or "CRC
- error" messages, or just not running at all. What should you do about
- <page down> for more DO|1S 5.0
- it? Either load a couple of |sTSR|ss low to fill up those lowest 64K of add-
- resses, or reboot the computer from a floppy disk that doesn't have DOS=
- |sHIG|1H|s in its CONFIG.SYS file, or use the new command that comes with DOS 5
- for just this purpose, whose name is |tLOADFIX|t.
-
- Say you have a program named HELLO.EXE that gives you that "Packed file
- corrupt" message when you try to run it. Well all you have to do is in-
- stead of typing HELLO to run that program, just type |nLOADFIX|n HELLO and
- |nLOADFIX|n will load the HELLO.EXE program into addresses above the bottom
- 64K, and run it there. Then it'll work just fine.
-
- Now if you have a 386 computer, with DOS 5.0, you should be able to get
- about 616K of free conventional memory. The only things that should be
- loaded low are parts of MSDOS, HIMEM, EMM386, and COMMAN|1D. Hopefully you
- will be able to get everything else into the upper memory blocks.
-
- If you have a TSR that allows you to use commands to modify its behavior
- after it's loaded, and you used LOADHIGH to load it, you may have to use
- LOADHIGH to get the modifying-commands to work also! For example, I have
- <page down> for more DO|1S 5.0
- a screen saver named EXPLOSIV and it allows commands such as EXPLOSIV OFF
- to temporarily disable it, EXPLOSIV ON to re-enable it, etc. Well when I
- have it |sLOADHIGH|sed, those commands don't work. Because, when I use the
- OFF parameter to try to disable it, EXPLOSIV loads into conventional mem-
- ory and looks around to find the copy of it that's already loaded to try
- to disable itself, and it finds that it's not already loaded, so how can
- it disable itself? It is already loaded, but it can't tell that, because
- it is only looking for itself in conventional, not upper, memory. So the
- command LOADHIGH EXPLOSIV OFF works, because with that command, EXPLOSIV
- loads into upper memory to look for the already-loaded copy of itself and
- turn it off. It works just fine that way. It seems strange to use the
- LOADHIGH command to disable a TSR, but in some cases that's what has to
- be done. So if you have a TSR that lets you disable it, or unload it, or
- modify it in some way, and it doesn't work when the TSR is |sLOADHIGH|sed,
- try using the LOADHIGH command like that, and it just might work for you.
-
- Be sure to use the versions of HIMEM.SYS and SMARTDRV.SYS that came with
- DOS 5 rather than the old outdated ones that came with Windows 3.0 if you
- use Windows!
- <page down> for What Is a TSR?
- What Is a |tTSR|t?
-
- |nTSR|n stands for Terminate-and-Stay-Resident. Another name for |nTSR|n is Mem-
- ory-Resident-Program. That means any program that you load into memory
- once, and it stays there, at your beck and call, or just hanging around
- in the background watching every move you make, until such time as you
- reboot the computer.
-
- DOS itself can be thought of as a |nTSR|n, except that TSRs are usually op-
- tional, and DOS is not. If you don't have DOS resident in memory then
- your computer ain't going nowhere! |sDevice driver|ss are also TSRs in a
- way, but just a special type of |nTSR|n.
-
- If you have a mouse or trackball, and you load its driver via AUTOEXEC-
- .BAT rather than CONFIG.SYS, then it is not a device driver exactly but
- it still is a |nTSR|n, most definitely. It hangs around in the background
- watching you, and whenever you move your mouse it springs into action and
- moves the mouse pointer around on your screen.
-
- <page down> for more TSR
- Automatic screen savers that blank your screen after a certain number of
- minutes of keyboard inactivity are TSRs. Anything you can "hotkey" into
- with a little keystroke combination like <Ctrl-Esc> or <Alt-F1> is also a
- |nTSR|n. There are lots of little phone book and appointment scheduler TSRs.
-
- And here are some of the TSRs that come free with DOS: APPEND, DOSKEY,
- DOSSHELL, FASTOPEN, GRAPHICS, MIRROR, MODE, PRINT, and SHARE. Except for
- DOSSHELL and MIRROR, once you execute those commands, the |nTSR|n stays in
- memory until you reboot. Some TSRs have commands that remove them from
- memory, but not most of the ones that come with DOS! Although there is a
- great public domain utility called Mark-and-Release (and some others that
- work in the same manner) that you can use to make it possible to remove
- just about any |nTSR|n from memory without |sreboot|sing.
-
- Of course it's not possible to remove one |nTSR|n if there has been any other
- |nTSR|n loaded into memory after it. The only thing you can remove from mem-
- ory is the most recent thing you put into memory. Strangely enough, this
- includes batch files. If you issue a command to remove a |nTSR|n from mem-
- ory from within a batch file, that |nTSR|n won't drop out of memory until the
- <page down> for more TSR
- batch file ends. Because although a batch file isn't actually loaded in-
- to memory while it is executed, there is some |sbatch|s-file-handling data,
- that does take up a speck of memory while the batch file is running. So
- the batch file that gives the command to unload the |nTSR|n might cause the
- |nTSR|n to be disabled and not work anymore, but the memory that the |nTSR|n was
- using won't be freed up for other uses until that batch file exits to the
- DOS prompt.
-
- You mustn't ever try to load or unload a |nTSR|n from within another program,
- such as when you're shelling out from your word processor or something.
- You have to exit to the primary command processor before you can do any
- messing around with memory allocations, or you'll probably lock up the
- whole computer and be forced to reboot, losing whatever data you had en-
- tered into your application since the last time you saved it to disk.
-
- TSRs eat memory. They eat it for breakfast, lunch, and dinner. If you
- have any "Out of |smemory|s" errors, the first thing you want to do is make
- sure you're not using any TSRs or |sdevice driver|ss in your CONFIG.SYS and
- AUTOEXEC.BAT files, except necessary ones. (See also LOADHIGH.) The DOS
- <page down> for more TSR
- version 4 installation program puts a whole bunch of worthless things
- like APPEND, FASTOPEN, GRAPHICS, and PRINT into those files. Get rid of
- them, unless you have read what they're about and still think you need
- them. (In fact, if you have DOS 4, check out every command in those
- files because there are other useless ones like |sLASTDRIVE|s=E and VERIFY
- OFF which are |sdefault|ss, and |sBREAK|s=ON which slows your computer down.
- These don't take up any memory, but they're still worthless and should be
- removed. I can't imagine who wrote that ridiculous DOS 4 installation
- program, but it sure wasn't anyone who knew anything about DOS commands.)
-
- If you have DOS version 4 or later, you can use the MEM command to find
- out what TSRs you have loaded. Otherwise, look and see what kinds of
- commands you have in your CONFIG.SYS and AUTOEXEC.BAT files. The DOS
- commands you can look up right here to see if they're TSRs, and the non-
- DOS commands you will have to check the documentation that came with each
- program. Now you know what TSRs get loaded from your AUTOEXEC.BAT file,
- and then there could also be others that you've loaded since your AUTO-
- EXEC.BAT file was run at |sboot|sup. For example, let's say you don't use
- the PRINT command in your AUTOEXEC.BAT file because you don't need it
- <page down> for more TSR
- that often. But the PRINT command is still a |nTSR|n every time you do use
- it, regardless of whether your AUTOEXEC.BAT or your fingers typed in the
- command.
-
- Another thing that a lot of new computer users don't realize, is that the
- DOSSHELL and most other menu programs are TSRs. There are some menus
- that drop most of the way out of memory when you launch a program through
- them, but most of them, including the DOSSHELL, stay right there in your
- memory, in the way of your programs that you're trying to run. Isn't
- that dumb? You have to exit out of the DOSSHELL or menu program in order
- to have enough memory to run a program, so what good does it do to have
- the menu, right? Just to remind you of what programs you could run? You
- can get that from the DIR command!
-
- Even worse than that, many menu programs allow shelling out to DOS, but
- they don't tell you that you're supposed to type EXIT to get back in, so
- instead, you type the command that starts the menu. Know what you just
- did? You just loaded a second copy of the menu program on top of the
- first copy that was already there! Now you're really wasting |smemory|s! Be
- <page down> for more TSR
- careful with menu programs. They can really cause all sorts of problems.
- But if you know what shelling out is about, you can avoid those problems.
-
- There are lots of occasions when you need to absolutely and without a
- doubt boot up without any TSRs whatsoever. For example, when you're in-
- stalling a new software package you just bought, or every time you are
- about to run a disk optimizer to take care of all your fragmented files.
- The easiest way to do that, is to reboot from a boo|1t disk that was for-
- matted with the /S switch, and that doesn't have any AUTOEXEC.BAT or |nCON|n-
- FIG.SYS files on it. You can put those files on your boo|1t disk, but only
- if the CONFIG.SYS file doesn't contain anything except your hard disk's
- device driver if your hard disk needs one, and only if the AUTOEXEC.BAT
- file doesn't contain anything but PATH and PROMPT and C|1:. Now you have a
- boo|1t disk that is safe to use whenever you're going to defragment your
- hard drive or install some new software. This is necessary because real-
- ly bad things can happen if you have any TSRs in memory while you perform
- such operations. Especially the disk optimizer. It's going to move all
- your files to different parts of the disk. Well if there's anything in
- memory like a disk cache, or FASTOPEN, or anything that keeps track of
- <page down> for more TSR
- where the data is at on the disk, well, when the optimizer moves every-
- thing around, then those TSRs are going to have the wrong info, and they
- are going to trash your entire FAT. Or if you have any |nTSR|n that gets ac-
- tivated at a certain time, or after a certain delay, and it comes to life
- just as the optimizer is writing to the FAT, whoa, look out! And then to
- really be on the safe side, reboot the computer again the very second the
- optimizer finishes! That will remove everything from memory and let the
- TSRs read the changed information from the disk again, in case you had
- forgotten to remove any of them.
-
- TSRs work by trapping a certain interrupt. For example, a pop-up sched-
- uler might sit there waiting for you to press the <Alt-S> keystroke. Now
- if you have another |nTSR|n that grabs the interrupt for that keystroke also,
- or if the application you're working on uses that keystroke, then you've
- got a |nTSR|n conflict. There are a whole lot of ways that one |nTSR|n can con-
- flict with another, or with a program. So whenever you start using a |nTSR|n
- that you've never used before, watch out for problems, and if any occur,
- it's probably the fault of your new |nTSR|n. There ain't no such thing as a
- free lunch, ya know, so along with the convenience of pop-up schedulers
- <page down> for more TSR
- and other highly useful TSRs, you've got to expect some problems too.
- Most TSRs work just fine all by themselves, but when you go using more
- than one at a time, there could be trouble. I've been lucky, and only
- had problems with two or three TSRs in my life, but I know people who've
- had major problems with lots of them. It just depends on what sort of
- system you have, what other TSRs you use, and what applications you run.
- It also depends a lot on what order you have the different TSRs installed
- in your AUTOEXEC.BAT file. If |nTSR|n-A doesn't work right when it's loaded
- before |nTSR|n-B, then switch those AUTOEXEC.BAT lines around to load |nTSR|n-A
- after |nTSR|n-B instead, and it might work just fine, believe it or not!
-
- Many TSRs (and a lot of games too) take over the system clock (|sCLOCK$|s) a
- bit more selfishly than they ought to, and end up ruining the time and/or
- date that DOS thinks it is. If you find that you have such a program,
- you want to remember to reset the TIME every now and then, so that the
- time in your directory listings stays close to correct. You can use a
- batch file to help you remember to do that.
-
- This looks like a good time to tell you the safe way to install a new
- <page down> for more TSR
- program, whether it be a |nTSR|n or not. First, never install more than one
- new program in a day. Because if you do, and problems occur, you have no
- idea which program went wrong. Install one, test it for a day or so,
- then install the next one. And never install a program without a BACKUP.
-
- Before you install anything, reboot the computer with no TSRs loaded.
- Using an |nINSTALL|n command with TSRs in memory can make the installation
- program screw everything up. Read the program's documentation, especial-
- ly the installation and troubleshooting chapters, and any README.TXT type
- files that came with the program. README.TXT files are generally full of
- information that the publishers didn't remember until after the manual
- was printed, so you don't want to miss it! Now run the program's |nINSTALL|n
- command and try out the new program. If it works ok, reboot your compu-
- ter with your normal CONFIG.SYS and AUTOEXEC.BAT files, and test it some
- more. If there are any problems, then "|sREM|s out" the |sdevice driver|ss and
- TSRs from those startup files, and try again. Remove the REM from one
- line at a time, reboot, test the program again, remove the REM from an-
- other line, reboot, test, etc., until you discover which device driver or
- |nTSR|n is conflicting with your new program. Try changing the order of the
- <page down> for more TSR
- command that loads that driver or |nTSR|n, try it again, etc. If your new
- program just absolutely will not run with that |nTSR|n or driver, then you
- have to make up your mind which one you'd rather give up.
-
- Now besides installing new software, and using a disk optimizer, other
- times when it's very important to remove all your TSRs and |sdevice driver|ss
- from memory, are when you're about to use any BACKUP or RESTORE program,
- or any sort of disk structure repair program like PC Tools's DISKFIX com-
- mand or CHKDSK with the /F switch.
-
-
-
-
-
-
-
-
-
-
- <page down> for The |nMEM|n Command
- The |TMEM|T Command
-
- Don't you hate the way you have to use the CHKDSK command and wait for it
- to finish looking at your disk, in order to find out how much free memory
- you have at the moment? Well if you have DOS version 4 or later, there's
- no need to use CHKDSK for that purpose anymore! That's what the |nMEM|n com-
- mand is for.
-
- Not only does it tell you how much memory is currently free, it can also
- tell you a whole bunch of other information if you ask it to real nicely.
-
- You can use |nMEM|n all by itself or with the /P, /D, or /C switches, and |nMEM|n
- will tell you a different amount of information depending on which switch
- you use. The /C switch is the one you want to use if you have DOS 5 and
- you want to see what's going on in the upper memory blocks.
-
- If the |nMEM|n command doesn't report anything about EMS memory, then that
- means that either you don't have any expanded memory, or else that your
- expanded memory is not LIM 4.0 compatible. |nMEM|n won't say anything about
- <page down> for more MEM
- extended memory either, if you don't have any of that.
-
- |nMEM|n is one command that you don't want to execute while shelling out from
- the DOSSHELL. It doesn't give you the correct results. For one thing,
- you have the DOSSHELL and a secondary COMMAND.COM shell in memory. For
- another thing, the |nMEM|n command is going to tell you that you don't have
- any available XMS memory even when you do, if you're inside the DOSSHELL
- at the time.
-
- If you have DOS 4 the /C switch doesn't exist, and the /P and /D switches
- can't be abbreviated. Their real names are /PROGRAM and /DEBUG.
-
-
-
-
-
-
-
-
- <page down> for What Is CMOS?
- What Is |TCMOS|T?
-
- If you have a 286 or newer computer, you probably have |nCMOS|n. What is it?
- Complementary Metal Oxide Semiconductor. Now please don't ask me what
- that is supposed to mean, I just thought you'd like to know what the in-
- itials stand for.
-
- What does it do? Well it's a little piece of memory that is backed up by
- a battery, that keeps track of the date and time, as well as what sort of
- hardware you have installed in your system. The amount of RAM, the num-
- ber and types of floppy drives, the number of hard drives and detailed
- information about each, the type of graphics adapter, the number of ser-
- ial and parallel ports, all this information is stored in |nCMOS|n. If your
- |nCMOS|n gets wiped out, your computer won't even know that you have a hard
- drive, but you might be able to boot from a floppy disk.
-
- So may I suggest that you quickly get into your CMOS's |tsetup|t and write
- down every detail of what it says, because some day your battery is going
- to run down and the |nCMOS|n information will all be lost, so you'd better
- <page down> for more CMOS
- know what information is supposed to be there so you can put it back!
-
- The way to get into the |nCMOS|n is a little different for each type of BIOS,
- but for mine, a little message comes up on the screen every time I turn
- on the power, which says something like, "Press |nDEL|n to enter |nCMOS|n |ssetup|s".
- If I press the <Delete> key while that message is on the screen, then af-
- ter a couple seconds I get the |nCMOS|n setup screen. I'm sure that if your
- screen doesn't give you any such message, then the manual that came with
- your computer will tell you what to do to get to your |nCMOS|n setup.
-
- Just write down whatever it says there, be sure not to change anything,
- and then exit. Keep that information that you wrote down in a very safe
- place, and whenever your battery dies, just get a new one, and you'll be
- able to put the correct information back into the |nCMOS|n.
-
- You also have to get into the |nCMOS|n each time you install a floppy drive,
- or more memory, so that you can tell your computer that its configuration
- has changed.
-
- <page down> for What Is the CPU?
- What Is the |TCPU|T?
-
- The |nCPU|n is the computer's brain. It stands for Central Processing Unit.
- It is just a little square chip about an inch and a half on each side, if
- you can believe that, and that's where all the computing takes place.
- The one for the first set of personal computers was the |T8088|T, which was
- put into an IBM computer model which was named the PC, and also the next
- model, which was called the |TXT|T. There is also an 8086 processor, which
- is very much like the |n8088|n but more expensive, so it was not widely used.
- Neither of those can in any way access memory above the one meg address,
- but it can use expanded memory. After that came the 80286 |nCPU|n, which is
- usually abbreviated as |T286|T. This was the first computer that could take
- advantage of extended RAM. It went into a model of computer called the
- |TAT|T. After that, the |T386|T and 486, now even 586, came along. Who knows,
- by the time you read this, there could be an 80686 processor being made!
-
- When someone talks about an |n8088|n, he could be just making a generaliza-
- tion, and he's really talking about an |n8088|n or 8086. Also, when a body
- talks about an |nAT|n, he could be talking about a |n386|n as well as a |n286|n.
- <page down> for more CPU
- Now when it comes to the 386 |nCPU|n, you'll often hear talk of an SX and a
- DX. Well a 386DX is just a normal 386. It processes data 32 bits at a
- time, and it talks to other parts of the computer 32 bits at a time also.
- A 386SX is just like a 386DX, but it can only talk to other parts of the
- computer 16 bits at a time. Because the SX's bus is only 16 bits wide.
- The bus is the data |npath|n from the |nCPU|n to other parts of the computer.
- The effect that the 16-bit bus of the SX has, is that it's just a little
- bit slower than the DX, and that it doesn't have enough address lines to
- be able to talk to as many memory locations. So an SX can only deal with
- 16 mega|sbytes|s of memory, just like the 286.
-
- A 486 can do everything a 386 can do, only lots faster. It has a built-
- in math coprocessor (unless it's a 486SX) and a built-in memory cache.
-
- How about a little chart?
-
-
-
-
- <page down> for more CPU
- |nCPU|n Processor Bus Maximum |nMemory|n
-
- |n8088|n 16-bit 8-bit 1 Megabyte
- 8086 16-bit 16-bit 1 Megabyte
- 80286 16-bit 16-bit 16 Megabytes
- 80386SX 32-bit 16-bit 16 Megabytes
- 80386 32-bit 32-bit 4 Gigabytes
-
-
-
-
-
-
-
-
-
-
-
-
- <page down> for What Is a Cache?
- What Is a |tCache|t?
-
- There are three different kinds of |ncache|n. The most common one is a hard
- drive |ncache|n, and that is a piece of software which, when you install it
- into memory, sets aside a large chunk of extended or expanded memory to
- do the caching. Now what it does, is every time you read something off
- the hard drive, it keeps it in this chunk of memory, and then when you
- need that piece of info again, you get it from the |ncache|n which, since it
- is in RAM, is a lot faster than going back to the hard drive to get that
- piece of data again. The |ncache|n that comes with recent versions of DOS
- is called SMARTDRV.SYS. And it's pronounced "CASH", not "cash-AY".
-
- Most caches also do what's called look-ahead, which means that every time
- you get some data from the hard drive, it also gets the next one or two
- |ssector|ss of data, and puts that in the |ncache|n also. So if you're running a
- type of program that does a lot of sequential disk access, then the next
- time the program needs more data, it's probably already in the |ncache|n be-
- cause the next data it needs is what came right after the last data it
- needed, which the |ncache|n already looked ahead to get.
- <page down> for more Cache
- Even though BUFFERS do the same thing a |ncache|n does, only not as well, you
- do need to have some buffers even if you have a |ncache|n because most caches
- don't pay any attention to floppy drives. They only work on hard drives.
- Well the buffers will do a little bit of caching with the floppy drive
- info. And one more reason for buffers even with a |ncache|n, is that some-
- times you need to disable the |ncache|n, like when you're about to optimize
- your hard drive (that means fix the fragmented files). If the |ncache|n is
- disabled for a while, you'll be glad that you have a few buffers loaded.
- But I do mean just a few, because with a |ncache|n, the memory that having a
- lot of buffers takes up, is not worth it. Unless you've never had a
- shortage of conventional memory in the first place, or if you have DOS
- version 5, where buffers go into the hig|1h memory area and don't take up
- any conventional RAM anyway.
-
- Now one thing you need to remember. You'd think that if a large |ncache|n
- is good, then a huge |ncache|n would be even better, right? Wrong. A |ncache|n
- that's too large slows things down instead of speeding them up, because
- looking through all that data that's stored in the |ncache|n can take longer
- than it would have taken to just get the data from the hard drive! So
- <page down> for more Cache
- pay attention to the manual for your |ncache|n program, and if it says a cer-
- tain size is recommended, then use that size until you know more about
- the subject and have some spare time to go testing things with a bench-
- mark program to find out the optimal |ncache|n size for your system.
-
- There is one thing to watch out for with a disk |ncache|n, though. Remember
- that the information in the |ncache|n is just a copy of what's on the disk.
- Just because the CHKDSK command tells you that your hard drive is trashed
- does not necessarily mean that it's true! Suppose you're playing around
- with trying to load a new TSR into upper memory. Something goes wrong
- and the |ncache|n in the extended memory gets trashed, and then for some rea-
- son you use the CHKDSK command and it says your hard drive has no files
- on it, only a million lost chains in a zillion lost |scluster|ss. Well don't
- panic! It's quite likely that when CHKDSK went to check your directory
- structure for you, it found the information that it thought it was look-
- ing for, in the |ncache|n so it didn't even look at the hard drive. The copy
- of the directory structure that was sitting in the |ncache|n has been corrup-
- ted so CHKDSK just thinks your disk is trashed, but there's really not
- a thing wrong with your hard drive at all.
- <page down> for more Cache
- So remember, if CHKDSK ever tells you that your whole disk is trashed
- while you have a disk |ncache|n active, flush or disable the |ncache|n and then
- try again to read your hard drive. I'll bet you'll find that it's just
- fine. Just get rid of whatever it was that you were trying to load into
- your extended or upper memory that trashed your |ncache|n information.
-
- The second type of |ncache|n is a hardware drive |ncache|n that's located on the
- hard drive controller. It does the same thing as the software one, only
- it doesn't take up any of your conventional, extended, or any other type
- of memory. The memory that it uses is built right in to the controller.
- It's usually pretty small though, so you probably want to use a small
- software |ncache|n along with it if you have the memory to spare. But then
- you probably won't have to worry about such things, because controllers
- that have built-in |ncache|n cost a fortune! You most likely don't have one.
-
- The other type of |ncache|n is a RAM |ncache|n, which is just a small chunk of
- super-fast memory. It performs the same function for the memory as what
- a hard drive |ncache|n does for the hard drive. It sure speeds things up!
-
- <page down> for The |nSMARTDRV.SYS|n |nDevice Driver|n
- The |tSMARTDRV.SYS|t Device Driver
-
- This is the disk cache that comes with DOS versions 4 and up. Ok, it's
- not the greatest disk cache in the world, at all, but if it's the only
- cache you've got, it's a good one. You install it, like all device dri-
- vers, with a DEVIC|1E or DEVICEHIGH command in your CONFIG.SYS file. You
- have to have a hard drive, and extended or expanded memory to use it. If
- you have both those types of memory, use extended (unless you have a lot
- more expanded memory to spare than you have of extended |smemory|s). Because
- it's more efficient.
-
- Here's the syntax for this device:
- |sDEVIC|1E|s=C:\DOS\SMARTDRV.SYS #### /A
- And that assumes, of course, that your |nSMARTDRV.SYS|n file is in the DOS
- directory on your C: drive. The /A switch means that the cache will go
- into expanded memory. Without the /A, it will go into extended memory.
- The #### parameter is the size of the cache in kilo|sbytes|s. Legal values
- are from 128 to 8192, with the default being 256, and that's about as low
- as you should go. If you don't have as much memory as you specified, the
- <page down> for more SMARTDRV.SYS
- cache will load anyway, and just use whatever memory you do have. Of
- course the DEVIC|1E command has to appear later in CONFIG.SYS than the
- extended (|sHIMEM.SYS|s) or expanded memory manager, or else the cache won't
- have any usable memory to go into!
-
- Do not ever, ever, ever use a disk optimizer (a program that fixes up
- fragmented files) with a cache active! That includes FASTOPEN, SMART-
- Drive, or any other sort of cache. If you do, you may as well get out
- your set of BACKUP disks because your FAT is going to get trashed.
-
- Keep your BUFFERS command at 20 or lower when you're using SMARTDrive,
- and definitely do not use any look-ahead |ssector|ss (that's the part you can
- use after a comma on the BUFFERS command).
-
-
-
-
-
-
- <page down> for What Is a RAMdisk?
- What Is a |tRAMdisk|t?
-
- The way to get one of these is just to load the |tRAMDRIVE.SYS|t (for MS-DOS)
- or |tVDISK.SYS|t (for PC-DOS) file as a device driver in your CONFIG.SYS file
- and then reboot. Well, now that you have a |nRAMdisk|n, what on earth is it?
-
- A |nRAMdisk|n is a chunk of memory that has been made to act like a floppy
- disk drive, only a really fast floppy disk drive! Because it's only a
- chunk of RAM instead of a mechanical disk drive, the access time is just
- the same incredibly low number as the access time for your RAM. Other
- than that, you can use it just exactly the way you'd use a disk. A |nRAM|n-
- disk is also known as a |tVirtual Disk|t.
-
- The only thing you have to remember, though, is that the |nRAMdisk|n still is
- made of RAM, even if it is acting like a disk drive, so if the power goes
- out, everything that was on the |nRAMdisk|n is gone forever! You've got to
- remember that anything that's on the |nRAMdisk|n that gets changed, edited,
- or updated, has to be saved to disk before the power is shut off, or be-
- fore some lightning shuts the power off for you, or before you |sreboot|s!
- <page down> for more RAMdisk
- It's best to use a |nRAMdisk|n only for files that don't get changed, such as
- your favorite utilities and DOS command files. If your hard drive does
- not have an access time under 20ms, then you'll be absolutely amazed at
- how much faster a batch file works if you run it from a |nRAMdisk|n instead
- of from the hard drive. Just put your |nRAMdisk|n at the very beginning of
- the PATH command in your AUTOEXEC.BAT, so that DOS will look there first
- for all your commands. If you don't do that, then DOS will find the com-
- mand file on your hard drive first, and run it from there, so it won't be
- doing you any good to put the files onto the |nRAMdisk|n.
-
- How do you get all your favorite command files, utilities, and batch
- files onto the RAMdisk? You just use COPY commands in your AUTOEXEC.BAT
- file, like this, assuming your |nRAMdisk|n is drive letter F:
- COPY C:\DOS\CHKDSK.COM F: > NUL
- COPY C:\DOS\FORMAT.COM F: > NUL
- COPY C:\DOS\FIND.EXE F: > NUL
- COPY C:\BELFRY\MENU.BAT F: > NUL
- The reason for the " > |sNUL|s" at the end of each line is because the output
- of each COPY command is going to be a "1 file(s) copied" message, and you
- <page down> for more RAMdisk
- don't want to be seeing that every time you boot your computer. NUL is a
- special imaginary device that DOS uses. It basically means, "nowhere".
- (See also Redirection.)
-
- A |nRAMdisk|n just gets the next higher letter, after all the drive letters
- your system already has. If you already have an E: drive, your |nRAMdisk|n
- will get the letter F:. Don't forget that the default LASTDRIVE is E:,
- so if your |nRAMdisk|n is going to give you a higher letter than that, you
- need to raise your LASTDRIVE by putting a statement like |sLASTDRIVE|s=F into
- your CONFIG.SYS file. Otherwise DOS won't be able to recognize what you
- mean when you type F: to refer to your |nRAMdisk|n.
-
- Another type of file that it's really good to put on a |nRAMdisk|n, is temp
- files. These are temporary files that get created by some applications
- and then deleted by the same application when the app no longer needs it.
- If the instruction manual for the app says that you can tell it where to
- put its temp files, then tell it to put them on a |nRAMdisk|n. That will
- make your app run a lot faster than it would if it were using the hard
- drive instead of the |nRAMdisk|n, for its temp files. Don't worry about the
- <page down> for more RAMdisk
- fact that the |nRAMdisk|n will lose all its data if you have a power failure.
- Because even if the temp files were on the hard drive, if the power went
- out, the application would have lost its place in the temp file anyway,
- and the temp file would now be useless to the app and you would just have
- to delete it to free up the space it was taking up on your disk. So you
- don't lose anything by having the temp files on the |nRAMdisk|n if the power
- goes out. You've just saved yourself from the trouble of finding those
- leftover temp files and deleting them.
-
- If you have any extended memory, then a |nRAMdisk|n is one of the best uses
- for it! The RAMDRIVE.SYS and VDISK.SYS |sdevice driver|ss contain their own
- extended memory managers, so you don't need any special software in order
- for your |nRAMdisk|n to be able to use your extended memory. Just add the /E
- switch to the end of that DEVIC|1E command in CONFIG.SYS, and your |nRAMdisk|n
- will be placed into extended memory instead of taking up space in your
- conventional memory. (With DOS 5 you do have to load HIMEM.SYS first.)
-
- If you have a recent DOS version, you can also place your |nRAMdisk|n into
- expanded memory, if you don't have any extended memory (|sextended|s is more
- <page down> for more RAMdisk
- efficient), by using the /X or /A switch. Which one is allowed, if ei-
- ther, depends on the DOS version that you have.
-
- Here is the complete syntax for the RAMDRIVE.SYS and VDISK.SYS drivers:
- |sDEVIC|1E|s=D:\DIR\FILENAME.SYS AAAA BBB CC /E:D /X:D /A:D
- where AAAA is the size of the |nRAMdisk|n in Kilo|sbytes|s, and the default is
- 64. The BBB parameter stands for the |ssector|s size you want the |nRAMdisk|n
- to have. The choices are 128, 256, and 512, with 128 being the default,
- except for DOS version 5 where the default is 512. Just use the default.
- The CC parameter means the number of root directory entries you'll need.
- The default is 64, so if you're hard up for space on your |nRAMdisk|n, and
- you're only going to need a few files at a time, give a smaller number so
- that less |nRAMdisk|n space will be occupied by the directory. Or if you use
- a small number, then use one of those directory entries for a subdirec-
- tory, and put all the files there. That way it doesn't matter how many
- files you have on the |nRAMdisk|n. The /E and /X and /A switches are used if
- you want the |nRAMdisk|n to be placed into extended or expanded memory. Of
- course you can only use one of them at a time. The :D parameter that is
- connected to the /E or /X or /A is optional, and it tells DOS how many
- <page down> for more RAMdisk
- |ssector|ss of data to transfer to and from the |nRAMdisk|n at a time. The D can
- be from 1 to 8, with 8 as the default, and you can pretty much ignore
- that |sparameter|s; just leave it at the default, unless the manual for one
- of your applications tells you otherwise.
-
- Just don't forget if you ever decide to remove the |nRAMdisk|n line from your
- CONFIG.SYS file, that all of the applications you may have configured to
- use the |nRAMdisk|n for their temporary files, will still be looking for the
- |nRAMdisk|n, and that could cause you big problems. So remember everything
- that you've told to use the |nRAMdisk|n, including batch files, so in case
- you stop using the |nRAMdisk|n you can direct everything back to your hard
- drive again.
-
- You can use as many RAMdisks as you want at the same time, if you have
- enough memory, by repeating the DEVIC|1E command that creates the RAMdisks.
- Each |nRAMdisk|n will get the next higher drive letter than the previous one.
-
-
-
- <page down> for The |nMODE|n Command
- The |TMODE|T Command
-
- This command has about a million uses. This is going to be a long sec-
- tion. I think that the most common use for it is to change the video
- mode after some program (usually a game) has messed it up. If you exit
- a program and your screen has letters that are twice their normal size,
- or your screen is so messed up that you can't even tell you have a prompt
- or cursor, try typing |nMODE|n CO80 (that's C-Oh-Eight-Zero) and hit <Enter>.
- There, is that better? That stands for COlor and eighty columns, so if
- you don't have a color monitor, use BW80 instead, because that stands for
- Black and White and eighty columns.
-
- If you have trouble seeing the little letters on the screen, try |nMODE|n
- CO40 and see if that helps. Of course most applications that you run
- are going to set it back to CO80, so you'll have to keep setting it back
- to CO40 every time you exit back to DOS. But a batch file can make that
- easy on you.
-
- If you have DOS version 4 or 5, you can use the |nMODE|n command to change
- <page down> for more MODE
- your keyboard repeat rate. You know when you hold a key down it is sup-
- posed to zoom across the screen typing that same letter or function over
- and over again? Well it doesn't "zoom" very well until you do something
- to raise the repeat rate. The version 4 |nMODE|n command can do that. |nMODE|n
- CON: RATE=## DELAY=# is what the command would look like to perform that
- function, and you just need to figure out what you want to use in place
- of ##. The DELAY= number means how long you want to have to hold down
- the key before it starts repeating. You can use the numbers 1 through
- 4, and they represent quarter-seconds. If you use DELAY=1, then if your
- finger accidentally holds the key down for one quarter of a second, what-
- ever letter you're holding down will start zooming across the screen. If
- you use DELAY=4 you'll have to hold the key down for a full second before
- it will start repeating. The RATE= parameter specifies approximately how
- many times per second the key should repeat. You can use any number from
- 1 to 32. I use |nMODE|n CON: RATE=32 DELAY=2 in my AUTOEXEC.BAT file. And
- while this command is not a TSR, it does actually change one of the |sCPU|s's
- registers, so this change you make with the |nMODE|n command will be effec-
- tive in most of your applications, not just at the DOS command line. Of
- course some applications might reset it, so you would need to reset it
- <page down> for more MODE
- again. A batch file will make that easy for you. If you find an applic-
- ation that resets the keyboard repeat rate (also called typematic rate),
- then start that app from a batch file, and have the |nMODE|n CON: command as
- the last line of that batch file, so that your repeat rate always gets
- reset between the time you exit the app and the time you see your prompt.
- Of course it's possible that this command won't affect your keyboard at
- all. It works on most systems, but not all. Can't hurt to try, though.
- The default values are RATE=20 and DELAY=2. But if you change one, you
- have to specify both in the command.
-
- You can use the |nMODE|n command to tell your printer how many characters per
- line and how many lines per inch to print. Of course most applications
- that are designed to do any printing will reset the printer, but what you
- set with the |nMODE|n command will work when you're in DOS, with the PRINT,
- COPY FILE PRN, or TYPE FILE > PRN commands. |nMODE|n LPT#:N,M,P is the for-
- mat for this function of the |nMODE|n command. LPT# means which port your
- printer is attached to. N means how many characters per line, 80 or 132.
- M means how many lines per inch, 6 or 8. The P you will probably want to
- leave out. It means that if the printer tells the CPU it's busy, the CPU
- <page down> for more MODE
- will keep trying to send more data anyway. This is called continuous re-
- try. If you do use the P and your system seems to hang up, you can BREAK
- out of it with <Ctrl-C> or <Ctrl-Break>. (The system will not respond
- right away, though, it will take maybe half a minute.) This form of the
- |nMODE|n command should only be used with Epson-compatible printers. If you
- have DOS version 4 or later, this form of the command has changed. |nMODE|n
- LPT#: COLS=N LINES=M RETRY=P is what it's like now. The old form will
- still work just fine, but if this form is easier for you, then use it in-
- stead.
-
- If you have DOS version 4.0 or later, and you have ANSI.SYS installed in
- your CONFIG.SYS file, and you have an EGA or VGA display, then you might
- use the |nMODE|n command to set your screen to 43 or 50 lines instead of just
- 25. |nMODE|n CON: COLS=M LINES=N would do it, where M can be 40 or 80, and N
- can be 25 or 43, or if you have a VGA, then N could also be 50. And if
- you install ANSI.SYS with an /L switch, it will even try to force your
- applications to display in this higher number of lines per screen, and
- leave the display in this mode when you exit back to DOS, although it
- won't work for all applications.
- <page down> for more MODE
- You can also use |nMODE|n to set the parameters for your COM1 or other serial
- port. Here's an example of the most common setting for this function of
- the |nMODE|n command: |nMODE|n COM1:2400,N,8,1,P where COM1 refers to the comm
- port you're trying to set parameters for. 2400 is the baud rate, N means
- no parity, 8 means 8 data bits per byte, 1 means 1 stop bit, and P means
- continuous retry for when you're using a serial printer. The choices for
- port number are 1 or 2 for DOS 3.2 or earlier, or 1 through 4 for DOS 3.3
- or later. Baud can be 110, 150, 300, 600, 1200, 2400, 4800, or 9600, de-
- pending on the rate supported by your modem and the modem you'll be call-
- ing, and the conditions of the phone lines from here to there. DOS ver-
- sion 3.3 adds a rate of 19200 to those choices. Parity can be None, Odd,
- or Even. Data bits can be 7 or 8, stop bits can be 1 or 2, and the P can
- be there or not. For DOS version 4, of course this form of the |nMODE|n com-
- mand changed too. |nMODE|n COM#: BAUD=B PARITY=Y DATA=D STOP=S RETRY=P. Now
- you're probably thinking that this form of the command is only for modems
- but that's not the case! In fact, it is rarely used for modems, because
- most people use specialized communications software to work with the mo-
- dem, and it sets the parameters for them. This form of the |nMODE|n command
- is more often used for serial printers and mice and such things.
- <page down> for more MODE
- If you have a serial printer instead of a parallel printer, you need to
- use the |nMODE|n command to tell DOS to send whatever data it would normally
- send to LPT1, to your serial port instead. This command's syntax is a
- lot easier than some of the other forms of the |nMODE|n command. It's like
- this: |nMODE|n LPT1:=COM#: where # is the number of the serial port your
- printer is connected to. But first you have to use the other |nMODE|n com-
- mand above to tell your serial port what parameters to use. Yes, that's
- right, the difficult one with the baud rate, parity, stopbits, and all
- that. But your printer manual should tell you exactly which parameters
- to use so you shouldn't have to figure it out by yourself. If you want
- to put the printer output back to LPT1, then |nMODE|n LPT1: will do that. If
- you want to redirect |sLPT1|s's output to another parallel port, like LPT3 or
- something, sorry but |nMODE|n can't do that. You'll need a shareware or pub-
- lic domain program from your local BBS.
-
- While most functions of the |nMODE|n command do not involve loading a TSR,
- some do. If you see the message "Resident portion of |nMODE|n loaded", it
- means that you did use one of the functions of the |nMODE|n command that
- loads |nMODE|n as a TSR.
- <page down> for The |nPRINT|n Command
- The |TPRINT|T Command
-
- This command is used to send a copy of a file to your printer. It's the
- very oldest example of a multitasker under DOS, because it works in the
- background to keep on printing your file, even after it has given you
- back your DOS prompt and you have begun working on something else!
-
- Bear in mind though, that this is not the only way to print a file! You
- can use the COPY FILENAME PRN command or the TYPE FILENAME > PRN command
- just as well. They don't take up any memory. Of course they don't give
- you back the DOS prompt either, until they've sent the whole file to the
- printer's buffer. So for short files, use one of those. But for a long
- file that you want to print without waiting for it to finish, use the
- |nPRINT|n command.
-
- The DOS version 4 installation program puts this command right into your
- AUTOEXEC.BAT file. If you don't use it very often, and if you don't use
- the Print option within the DOSSHELL, then you want to remove |nPRINT|n from
- your AUTOEXEC.BAT because it's taking up a lot of memory for nothing.
- <page down> for more PRINT
- The same thing goes for the GRAPHICS command.
-
- This is not the complete syntax of the |nPRINT|n command, but it's about the
- only important parts. Hardly anybody ever uses the other parts so I'm
- not going to confuse you with them:
- |nPRINT|n /D:PORT /Q:## /C /T D:\DIR\FILENAME.EXT
-
- The first time you use this command after the last time you |sreboot|sed, it
- loads itself into memory as a TSR. It also wants to know what port you
- intend for it to print to. It will ask you, and it will fill in the
- blank with PRN. If PRN is the port you want to use, then you just hit
- <Enter>. Otherwise, you type the name of port you do want to use, and
- hit <Enter>. If you want to avoid having |nPRINT|n ask you that question,
- then you include the /D:PORT switch right on the command line with the
- |nPRINT|n command, as in |nPRINT|n /D:LPT1 or |nPRINT|n /D:COM2, or wherever your
- printer is attached. Now that's the port that the |nPRINT|n command is going
- to use from then on, until you reboot the computer. You can't use the
- /D:PORT switch again to change it to something else. If you want to
- change it, you have to reboot and start the |nPRINT|n TSR all over again.
- <page down> for more PRINT
- Now the |nPRINT|n TSR is installed into memory, and the print |nqueue|n is empty.
- (The print |tqueue|t is the internal list where the |nPRINT|n command stores the
- names of the files that you've told it to print, that haven't been print-
- ed yet.) Or if you did put the filename on the command line when you
- loaded the TSR into memory, then that file goes right into the |nqueue|n and
- starts printing. Now if you think of another file you'd like to print,
- you just give another |nPRINT|n command with that second filename on the com-
- mand line, and that file will be added to the |nqueue|n (that's pronounced
- just like the letter Q, by the way), and when the first file is done
- printing, |nPRINT|n will look at the |nqueue|n and print any files that are there
- waiting to be printed. The |nqueue|n can hold up to ten filenames at a time.
- If you need to be able to |nqueue|n up more files than that at a time, you
- can use the /Q:## switch on the command line, but only the first time you
- issue the command. If you've already loaded the |nPRINT|n TSR into memory,
- then you have to reboot before you can issue a command like |nPRINT|n /Q:20
- to enlarge the |nqueue|n. Any number up to 32 is allowed there.
-
- If your printer dies or if the paper gets all jammed up, you can just say
- |nPRINT|n /T and that terminates the printing and removes all the files from
- <page down> for more PRINT
- the queue. (However, it doesn't remove the |nPRINT|n TSR from memory.) Now
- you can fix the printer or the paper, and start over. Remember that your
- printer contains a small buffer of memory where it stores data that it's
- about to print. When you use |nPRINT|n /T to terminate printing, the printer
- won't stop until it prints what's already in its own buffer, even though
- |nPRINT|n immediately stops sending new data to the printer.
-
- If you just decide there's one file that you had already put into the
- print queue, that you don't want to print after all, you can remove it
- from the print queue with the command |nPRINT|n /C D:\DIR\FILENAME.EXT which
- will cancel that file from the queue.
-
- You can also use wildcards with this command. That means you could put
- all the files that start with PB and have the extension .TXT into the
- queue with just one |nPRINT|n PB*.TXT command. The names of the files that
- match that wildcard specification will be displayed on the screen, and if
- you realize that you didn't mean to include a couple of those, you can
- remove those from the queue with the /C switch.
-
- <page down> for more PRINT
- And you can put more than one file into the queue at a time by typing
- each filename on the command line, for example just one command: |nPRINT|n
- C:\DOS\README.TXT C:\DOS\APPNOTES.TXT would print those two files.
-
- If you have DOS version 2, then you can only print files from the current
- directory of any drive. If you want to print a file from some other dir-
- ectory, you have to use the CHDIR command to make that directory current,
- and then you can use the |nPRINT|n command to add that file to the queue.
-
- If you want to see what files are left in the queue at any time, just
- issue the |nPRINT|n command with no parameters.
-
- If you've ever heard the term "print |tspooler|t" and wondered what it meant,
- the |nPRINT|n command is just a primitive example of a print |nspooler|n. It
- means a little TSR utility that keeps sending data to the printer while
- you go ahead and use the computer for something else.
-
- Just like the TYPE command, |nPRINT|n will ignore any data in a file that
- occurs after the first ^Z character.
- <page down> for The |nRECOVER|n Command
- The |TRECOVER|T Command
-
- This is a command you want to be very careful with. In fact you might
- want to remove it from your disk, or RENAME it to DESTROY or something,
- so that you don't ever forget how dangerous it is and use it by accident.
-
- What it's supposed to be used for, is to retrieve one file at a time, no
- more than one at a time, from a disk that has been damaged. You see,
- when part of a file is sitting in a disk |ssector|s that's gone bad, DOS just
- won't do anything with any part of that file. Well, the way to get back
- all the readable parts is with the |nRECOVER|n command. The syntax is:
- |nRECOVER|n D:\DIR\FILENAME.EXT
- and as usual, if the file in question is in the current directory of the
- current drive, you can leave that part out and say |nRECOVER|n FILENAME.EXT.
- This will cause DOS to take the readable parts of the file and stick them
- into a file (either with the same name, or with the name FILE0000.REC,
- depending on your DOS version) in the root directory of the disk in ques-
- tion. It will also mark the |sbad sector|ss as "unusable" in the FAT so that
- DOS never tries to stick any more data in that spot. So, now what do you
- <page down> for more RECOVER
- do with it? Well, if it used to be a .COM or .EXE file, you're going to
- delete it. It's got a chunk missing out of the middle, where the bad
- |ssector|s was, so there's no telling what it might do to your computer if
- you try to run it. (But don't just delete it instead of RECOVERing it!
- Because if you |nRECOVER|n it first, then the bad sector will be marked as
- bad in the FAT so DOS will never try to put a file into that spot again.)
- If it was a word processor or spreadsheet file, on the other hand, well,
- at least you got most of it back, right? It's better than losing the
- whole file. You just have some work to do, to put it back to its prev-
- ious shape. (If you kept a BACKUP like you're supposed to, you wouldn't
- have such problems.)
-
- All right, that's fine, it sounds like it will work for just one file at
- a time. But if you have a floppy disk that's a total wreck and a whole
- bunch of files are giving "Data error reading drive A:" messages and you
- are sure that the problem is not just a drive that needs cleaning, do you
- have to use the |nRECOVER|n command on every file separately? Well, it's not
- a bad idea. It's a heck of a lot more sensible than RECOVERing the whole
- disk. You can't use wildcards with this command. Your only choices are
- <page down> for more RECOVER
- one file at a time, or the whole disk at a time. And RECOVERing a whole
- disk at a time is just about the silliest thing you could possibly do,
- unless the directory itself is what has the |sbad sector|ss.
-
- If you really have a disk with hardly anything but |sbad sector|ss, the first
- thing you should do is make a DISKCOPY of it and try to |nRECOVER|n the copy,
- not the original. That way, if the recovery operation is a big flop, you
- can take the original and start over, only this time take it to a friend
- who has PC Tools or the Norton Utilities running.
-
- Next, use XCOPY with the /S switch to get all the data you can from that
- disk, onto some other disk, then whichever files get copied successfully,
- delete those from the damaged disk. And if the copying and deleting emp-
- tied any subdirectories on the disk, then RMDIR them. That way, there
- won't be so many files left on the disk to get mixed up. Now, the only
- files left on the disk are the damaged ones, so |nRECOVER|n and then delete
- each of the .COM and .EXE files too, because even if you |nRECOVER|n them you
- won't be able to use them, for the reason stated above. Now all that's
- left is the data files that need to be recovered.
- <page down> for more RECOVER
- If you have a disk where the directory structure itself is what has the
- |sbad sector|ss, you won't be able to access any files on the disk at all.
- First, make a DISKCOPY of it, and then use the |nRECOVER|n command on the
- copy. Or if you have a backup copy of the disk, just trash the damaged
- one and forget about the |nRECOVER|n command.
-
- To |nRECOVER|n a whole disk, the syntax is |nRECOVER|n D: and that's all there is
- to it. All the files on the whole disk, including the subdirectories
- themselves, will be RECOVERed and you'll end up with a root directory
- full of nothing but FILE####.REC files, because that's what the |nRECOVER|n
- command will name them. FILE0001.REC, FILE0002.REC, etc. If there are
- too many files to fit in the root directory (remember that there is a
- limit to the number of entries allowed in any root |sdirectory|s), the com-
- mand will stop, and you should COPY the .REC files to another disk and
- delete them from the damaged disk, and enter the |nRECOVER|n command again so
- it can finish the rest of the disk. Then comes the hard part, figuring
- out which FILE####.REC file is supposed to have what name.
-
- If you ever accidentally use the |nRECOVER|n command on a disk when you meant
- <page down> for more RECOVER
- to use RESTORE instead, or if you just didn't know what horrible things
- |nRECOVER|n would do to your files, then do not pass GO, do not collect $200,
- just go straight to PC Tools or the Norton Utilities or if you have DOS
- version 5, the UNFORMAT command. If it's a floppy disk, make a DISKCOPY
- of it first though, in case the Utilities don't work the first time, you
- can start over on the copy.
-
- There's one other thing the |nRECOVER|n command is useful for, though. If
- you have a floppy disk from which you want to ERASE all the files, but
- the disk has subdirectories on it, you would have to delete all of the
- files from one subdirectory, RMDIR the directory, delete the files from
- the next subdirectory, remove it, etc, and then delete all the files in
- the root directory. Well there is an easier way, if you're absolutely
- positive that you want that whole disk erased. |nRECOVER|n A: will put all
- the files into the root directory, and convert the subdirectories to
- files, and put them in the root directory too, so that DEL A:\*.* will
- remove everything from the whole disk (except the volume label).
-
- If you ever see the error message "|tSector not found|t", a bad sector is
- <page down> for more RECOVER
- probably the cause of it and |nRECOVER|n is the cure if you don't have the
- Norton Utilities or PC Tools. See the section about the NUL device for a
- method of finding out which file is the culprit if your program doesn't
- tell you which one it is.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <page down> for The |nREPLACE|n Command
- The |TREPLACE|T Command
-
- This command is good especially for updating to a new version of a soft-
- ware package. With the /U switch, it will take all the files from the
- source disk that have the same names, but later dates, than the files on
- the target disk. Then you can use it one more time with the /A switch
- instead of the /U, to add all the files that are on the source disk that
- don't exist on the target disk. Pretty easy, huh?
-
- Here's the complete syntax:
- |nREPLACE|n D:\DIR\FILENAME.EXT D:\DIR\ /A /P /R /S /U /W
- where the first D:\DIR\ is where the source files are, and the second D:\
- DIR\ is where you want the files to go. Here are the switches:
-
- The /A switch makes |nREPLACE|n add the files that exist on the source disk,
- that do not exist on the target disk. This is the switch you want to use
- after you've already run the |nREPLACE|n command with the /U switch. This is
- also the switch you want to use if all you want to do is copy files that
- do not exist already on the target disk. Very handy! But it only works
- <page down> for more REPLACE
- in the specified target directory. In other words, you can't use the /S
- switch with the /A switch.
-
- The /P switch makes |nREPLACE|n pause and ask for permission before each file
- it copies.
-
- The /R switch makes |nREPLACE|n update even the files that have their Read-
- only attributes turned on. Only it doesn't set the R attribute for the
- file after it writes it, you have to do that yourself if you want the new
- version of the file to have its R attribute set.
-
- The /S switch causes |nREPLACE|n to search subdirectories of the specified
- target directory, for files that need to be updated. It doesn't search
- subdirectories of the source directory, though, just the target. Now you
- want to be careful with this switch, because there might be a file in one
- of the subdirectories, that has the same name as one of the files on the
- source disk, but that has no relation to the program you're updating. If
- so, that file will be overwritten by the file on the source disk that has
- the same name. It's also useful if you have more than one copy of a cer-
- <page down> for more REPLACE
- tain file on your disk, in different subdirectories, and you receive a
- newer copy of that file. If you're sure that all the files on the disk
- that have that name, are the same file and you want them all replaced
- with the new version, use the root directory as the target and use /S.
-
- The /U switch makes |nREPLACE|n work only with files that have a later date
- and time on the source disk than the date on the target disk. That means
- you won't replace a newer file with an older file. This switch did not
- exist until DOS version 4, though.
-
- The /W switch makes |nREPLACE|n stop for a second and let you change disks,
- between the time you enter the command and the time it will start looking
- for files to copy. That's for if you have the |nREPLACE|n.EXE file on one
- disk, and the source files on some other disk of the same size, you put
- the disk that contains |nREPLACE|n.EXE into the drive, enter the command with
- the /W switch, and it will let you take out the |nREPLACE|n.EXE disk and put
- in the source disk instead, and then it will start copying.
-
- So what you usually want to do is run the |nREPLACE|n command once with the
- <page down> for more REPLACE
- /A switch and once with the /S and /U switches, for each directory on the
- source disk that contains files you want to have updated. If the source
- files are all in just one directory, then you only need to use those two
- commands one time each, to update the whole program.
-
- You're probably wondering what use this command is, when you could just
- use the XCOPY command to copy them all with just one command? Well if
- the target files are in different directories, like maybe C:\WORD and
- C:\WORD\DOCS and C:\WORD\LTRS and C:\WORD\NOTES, and all the source files
- are in one directory on the A: drive, for example, then a command like
- XCOPY A:*.* C:\WORD would put all the files into the C:\WORD directory,
- even if some of them belong in some of those subdirectories of the C:\
- WORD directory. The |nREPLACE|n command will look to see where you already
- have each file, and put the later copy of each file into the right sub-
- directory. The only problem is, files that exist on the source disk that
- didn't exist on the target disk, will all be put into the same directory
- on the target disk, unless you fiddle with the /P switch a lot.
-
- Ok, that's not exactly the only problem. The |nREPLACE|n command, like most
- <page down> for more REPLACE
- commands, will not copy Hidden files, nor those that have their System
- attributes set. But for programs that don't use any of those types of
- files, and that don't have their own installation routines, this can be
- a very helpful command.
-
- There's one thing you need to be careful of though, when using REPLACE's
- /U switch! Since it works according to the date and time stamps in the
- directory entries, then if your clock, or the clock in the system that
- created the files you're installing, is wrong or has been wrong, then you
- could end up overwriting new files with older files, or not replacing old
- files that should have been replaced! The |nREPLACE|n command can only as-
- sume that the date and time stamps are correct, and so it acts according-
- ly. It doesn't know any better. Keep your system clock set right, and
- take a look at the dates of the source files before you use the |nREPLACE|n
- command, and make sure they look kosher.
-
-
-
-
- <page down> for The |nRESTORE|n Command
- The |TRESTORE|T Command
-
- This is the command that you must use in order to get your files back
- from your floppy disks after you've backed them up. The BACKUP command
- puts all the files it backs up into one great big file, so |nRESTORE|n is the
- only way you'll ever see those files again, if your hard drive dies.
-
- The syntax of the |nRESTORE|n command is like this:
- COMMAND SOURCE TARGET SWITCHES
- just like most DOS commands. So let's discuss those parts one at a time.
-
- The command is |nRESTORE|n, but like any external command, if the |nRESTORE|n.COM
- file is neither in the current directory nor in a directory on your PATH,
- then you'll have to specify the entire |spath|sname to the command as part of
- the command. That means you might say C:\DOS\RESTORE instead of |nRESTORE|n.
-
- The source is the drive where the files are, that you want to have res-
- tored to the hard drive. Usually just A: or B:.
-
- <page down> for more RESTORE
- The target is where you want the files to end up. If you want to restore
- the entire hard drive, then the target would be C:\*.*. If you want to
- restore only the files that start with BR in the \BROWN subdirectory, the
- target would be C:\BROWN\BR*.*. (See also Wildcards.) Or if you want to
- restore just the AUTOEXEC.BAT file, the target would be C:\AUTOEXEC.BAT.
-
- The hardest part to figure out, about the |nRESTORE|n command, is that the
- filenames and the directory structure are stored as part of the backup
- disks, and that's the way they get restored. If you used to keep your
- word processing program in a directory named \WORD, back when you made
- the backup disks, and nowadays you keep it in a directory named \WP, then
- if you use the command |nRESTORE|n A: C:\WP\*.* then the |nRESTORE|n command is
- going to give you a nasty error message like "No files found to restore",
- because you didn't have any files named \WP\*.* at the time you made the
- backup disks. Those files used to be called \WORD\*.* instead. So in
- order to restore them, you'll have to use |nRESTORE|n A: C:\WORD\*.* and the
- |nRESTORE|n command will create a directory called C:\WORD and put the files
- there, and then you'll have to use the COPY command to put them into the
- \WP directory, then delete the files from the \WORD directory and RMDIR
- <page down> for more RESTORE
- the \WORD directory. Restoring those files to D:\WORD wouldn't have been
- a bit of a problem though. Different drive but same directory, is ok.
-
- So, what switches are available with the |nRESTORE|n command? Quite a few:
- /S /P /N /M /A:date /B:date /L:time /E:time
- The /S switch tells DOS to also restore the files in the subdirectories
- of the target directory. If you had a directory named C:\WORD\LETTERS
- below your C:\WORD directory, and you used C:\WORD\*.* as the target of
- the |nRESTORE|n command, then if you leave out the /S switch, the files in
- C:\WORD\LETTERS will not be restored, or if you include the /S switch,
- then they will be restored. If you want to restore all the files on your
- entire hard drive, then you always have to specify the /S switch, as well
- as using C:\*.* as your target.
-
- The /P switch tells DOS to pause and ask you for confirmation every time
- it encounters any files that either have their Read-only attributes set
- on the target drive, or that have a more recent copy on the target drive
- than the copy on the backup disk. In most cases, if the copy on the tar-
- get drive is newer than the copy on the backup disk, then you probably do
- <page down> for more RESTORE
- not want |nRESTORE|n to overwrite the newer copy with the older copy. How-
- ever, if you know that the newer copy on the target drive has been ruined
- in some way, then yes, you do want to restore the older copy.
-
- The /N switch only came into existence with version 3.3 of DOS, and it's
- about time! This switch will find all the files that exist on the backup
- disks, that no longer exist on the target disk. That means if you delete
- a bunch of files accidentally, you can just restore them from the backup
- disks without going through a complete restore! There is one very small
- problem with this, however. If you have |sRENAME|sd a file since you made
- the backup, the /N switch of |nRESTORE|n will find that the file (under its
- old name) no longer exists on the target disk (because it now has some
- other name) so it will restore that file. So now you have the old copy
- of the file, under its old name, as well as the |ncurrent|n copy of the file,
- under its new name. That's a waste of hard disk space! So be sure and
- check for this sort of thing whenever you use the /N switch with |nRESTORE|n,
- and delete the old copies of |sRENAME|sd files.
-
- The /M switch does the same thing as the /N switch, and more! It also
- <page down> for more RESTORE
- restores any files that have been changed since the backup was made. It
- will replace the more recent copy of the file, with the old out-of-date
- copy. This is useful for when you've made some sort of a big goof and
- messed up all your hard drive's data files, and you need to get back the
- old copies from before you did that.
-
- The next four switches are all new with version 3.3 of DOS, and they all
- have to do with time. The /A switch will restore all the files from the
- backup disks that have a date that's the same or later than the date you
- specify with the /A:date switch. The /B switch will restore all of the
- files whose date is the same or earlier than the date you specified. The
- /L:time and /E:time switches must only be used with the /A or /B switch.
- /L means files that have the same time or a later time than the one you
- specify, and /E means files whose time is the same or earlier than the
- one you specified.
-
- Before version 3.3 of DOS, the BACKUP command backed up the Hidden Files,
- which are IO.SYS and MSDOS.SYS for MS-DOS, or IBMBIO.COM and IBMDOS.COM
- for PC-DOS, so that if you upgraded to a new DOS version, and then you
- <page down> for more RESTORE
- needed to restore some files from your old backup disks, you would have
- to be very careful to see that |nRESTORE|n didn't try to put your old Hidden
- files back on the disk, right over top of the ones from your new DOS ver-
- sion! If you still have version 3.2 or an earlier version, then watch
- out for this. But of course now that Microsoft is selling DOS version
- 5.0 right to the public, instead of only to computer dealers, there's no
- reason for you to stick with an old version. DOS 5 is fantastic!
-
- Many previous versions of the DOS |nRESTORE|n command could only restore
- files that were made by the BACKUP command from that same DOS version.
- But not DOS 5.0! It can restore backup files from DOS 2.11 or later.
-
- There is also a new switch for the DOS 5 |nRESTORE|n command. The /D switch
- will show you what files will be restored by the command you are entering
- but it will not restore any files. Use the command with the /D switch
- first, as a test, and if it shows you the right filenames, you enter the
- same command again, only without the /D switch, to restore them.
-
-
- <page down> for The |nSELECT|n Command
- The |TSELECT|T Command
-
- In version 3 of DOS, this command has to do with code page switching.
- The DOS version 4 |nSELECT|n command is the installation program which puts
- DOS 4 onto your hard drive, and since DOS 5 was released three weeks ago
- I'm sure no one is going to buy a new copy of the old version 4, so I
- won't waste your time on this one.
-
-
-
-
-
-
-
-
-
-
-
-
- <page down> for The |nSHARE|n Command
- The |TSHARE|T Command
-
- This is a TSR that you need to load every time you boot up, if you are on
- a Network or if you are using DOS version 4 and you have one or more hard
- drive |spartition|ss of a size over 32 mega|sbytes|s. I mean it, if you have any
- logical drives that are larger than 32 megs and you are using DOS version
- 4.0 then you have got to load |nSHARE|n or really terrible things will happen
- to your data. This is not an idle threat. DOS didn't really and truly
- learn how to deal with these large drives until version 5, although in
- version 4 it became possible to have them that big. |nSHARE|n is the only
- thing that makes it safe to have those large |spartition|ss under version 4.
-
- It's easy to make |nSHARE|n load itself every time you boot up. Just make
- sure the |nSHARE|n.EXE file is located in the same directory that contains
- your COMMAND.COM file, and DOS will load it automatically. Or, if for
- some reason that's not working, then put |sINSTALL|s=C:\DOS\SHARE.EXE into
- your CONFIG.SYS file and that will definitely load it. Of course, then
- make sure the |nSHARE|n.EXE file is in the C:\DOS directory where you told
- CONFIG.SYS it was at.
- <page down> for more SHARE
- Now if you have DOS version 4 and a large hard drive partition, and DOS
- doesn't find the |nSHARE|n.EXE file in order to load it, it'll give you this
- error message: "Warning! |nSHARE|n must be loaded for large media". (The
- type of disk you're using is what |tmedia|t means.) You can also use |nSHARE|n
- from the AUTOEXEC.BAT file, but if you do, you will still receive that
- error message, because that message comes up before the AUTOEXEC.BAT file
- gets read, so DOS will just think that you were planning to skip loading
- |nSHARE|n. Besides, if something that comes earlier in AUTOEXEC.BAT than the
- |nSHARE|n command, is something that writes to the disk, then you're in trou-
- ble since |nSHARE|n has not been loaded yet. So it's really best to use one
- of the other methods to load |nSHARE|n.
-
- Another thing that |nSHARE|n does in version 4, is it checks the serial num-
- ber on your floppy disk before it allows anything to be written to it, to
- make sure you didn't change disks. That way, DOS won't trash the flop-
- py's FAT by writing info that was supposed to go on one disk, to another
- disk, after you changed disks without DOS realizing it.
-
- But on the other hand, another thing that |nSHARE|n does is to refuse to let
- <page down> for more SHARE
- you do a bunch of things you might want to do. It thinks it's protecting
- your hard drive, but sometimes it just gets a little carried away. So
- when I first got DOS 4 and an 85 meg hard drive, I only used |nSHARE|n for
- about three days before I got fed up and decided to use FDISK to repar-
- tition my drive into smaller logical drives, so that I didn't need to use
- |nSHARE|n anymore. You might end up doing the same thing. Then again, if
- you just get DOS version 5, you can have a partition as large as you want
- without needing |nSHARE|n.
-
- Now one thing that hardly anybody ever remembers. If you need to load
- |nSHARE|n every time you boot, then the |nSHARE|n.EXE file also has to be located
- on every copy of every floppy disk you ever boot from. Having |nSHARE|n in
- the right directory on your hard drive to make DOS load it automatically
- during |sboot|sup, doesn't do a bit of good when you're |sboot|sing from floppy
- disk. Put |nSHARE|n.EXE into the same directory with COMMAND.COM, on every
- disk you ever boot from.
-
-
-
- <page down> for The |nSUBST|n Command
- The |TSUBST|T Command
-
- This is a command that's kind of dangerous (although it's certainly safer
- than |sASSIGN|s), but it does have its uses if you follow the rules.
-
- It is used to make a directory pretend like it is a drive. For example:
- |nSUBST|n G: C:\WORD\DOCS\LTRS\JOHN
- After you enter that command you can reference the C:\WORD\DOCS\LTRS\JOHN
- directory by simply typing G:.
-
- Of course for that command to work you have to use the LASTDRIVE command
- in your CONFIG.SYS file to tell DOS you'll be needing a G: drive. If the
- highest drive letter you already have is D:, then you want to say some-
- thing like |nSUBST|n E: C:\WORD\DOCS\LTRS\JOHN instead of using G:, and then
- you'll only need to say |sLASTDRIVE|s=E, instead of G, in CONFIG.SYS.
-
- To cancel a SUBSTitution and put things back to normal, |nSUBST|n G: /D or
- |nSUBST|n E: /D will do it. To display a list of SUBSTitutions you have in
- effect, type |nSUBST|n all by itself, with no parameters.
- <page down> for more SUBST
- There are a bunch of commands that are unsafe for use with any |nSUBST|n in
- effect: ASSIGN, BACKUP, CHKDSK, DEL, DISKCOMP, DISKCOPY, ERASE, FDISK,
- FORMAT, LABEL, JOIN, MIRROR, RECOVER, RESTORE, and SY|1S.
-
- So why would anybody want to use a command that gives problems with so
- many other DOS commands? Well there are quite a few times when this is
- useful. For one thing, if you find that your PATH environment variable
- is too long, and you don't have time right now to reorganize your entire
- hard drive or write batch files so you can shorten it, you can do |nSUBST|n
- E: C:\WORD and |nSUBST|n F: C:\UTIL and replace C:\WORD with E:\ and C:\UTIL
- with F:\ on your PATH command in your AUTOEXEC.BAT file, and that saves
- you 8 characters. But that is not a permanent solution to the 127-char-
- acter limit for the PATH variable! Use batch files or DOSKEY macros in-
- stead of a long PATH.
-
- What if you have an application such as an old version of WordStar, that
- doesn't know anything about |spath|snames and stuff? You can trick WordStar
- into using subdirectories by saying |nSUBST|n E: C:\WORD\DOCS and then tell-
- ing WordStar to pull up a file from your E: drive.
- <page down> for more SUBST
- And then there's always the reason of just plain laziness. It's a lot
- easier to type E: than it is to type C:\WORD\DOCS\LTRS\JOHN. But in my
- opinion that is nowhere near a good enough reason to use such a danger-
- ous command!
-
- You can also do something like this:
- |nSUBST|n A: C:\TEMP
- for programs that insist on using drive A: when you want them to use your
- hard drive. After you issue that command, whenever the program requests
- something from drive A:, DOS will give it something from the TEMP direc-
- tory of drive C: instead.
-
- Or for programs that want drive A:, and you made the mistake of buying
- the program on the wrong size disks, and you can only use them in your
- B: drive, and the program won't work because it wants drive A:, and oh
- my, what are you going to do? Try |nSUBST|n A: B:\ and see if it works. It
- has the same effect as ASSIGN A=B but it's much safer.
-
- Of course, you can't use your A: drive while one of these commands is in
- <page down> for more SUBST
- effect, because whenever you tell DOS something about A:, it will think
- you're talking about C:\TEMP or B:\ or whatever is SUBSTituted for A:.
-
- Now if you have some application that requires you to use the |nSUBST|n com-
- mand because that app doesn't understand about subdirectories, then you
- want to only run that app from a batch file that makes the SUBSTitution,
- runs the program, and then cancels the SUBSTitution between the time you
- exit the app and the time you get your DOS prompt back. That way, you
- don't have to worry about those commands that |nSUBST|n is not compatible
- with, because the only time |nSUBST|n will be active is while you're running
- that application that needs it. But if shelling out to DOS is something
- that program allows, then if you do so, don't forget to stay away from
- those commands that |nSUBST|n doesn't like!
-
-
-
-
-
-
- <page down> for The |nTREE|n Command
- The |TTREE|T Command
-
- This command just shows you a sort of a list of all the directories and
- subdirectories you have on your disk. Here's the syntax:
- |nTREE|n D:\DIR /F /A
- where D:\DIR is the drive and part of the directory tree where you want
- to start the listing. Before version 4, you couldn't say the directory,
- just the drive, for which you want the tree display. In version 4 if you
- don't specify any |spath|sname, it will start the display with the current
- directory instead of the root the way older versions did. The /F switch
- says you want to see the names of all the files under each directory.
- And the /A switch, starting with version 4, lets you use a slightly diff-
- erent character set for the display, in case your printer doesn't like
- the normal one. That will make it use things like + and -- and || to draw
- the lines with. Of course, to get the display to your printer, you use
- output redirection, as in:
- |nTREE|n C:\ /F > PRN
-
-
- For beginning of File 4, see CONFIG.SYS
- |tAUTOEXEC.BAT|t|fSIMPLY1|f
- |TFASTOPEN|T|fSIMPLY1|f
- |TFAT|T|fSIMPLY1|f
- |tUNFORMAT|t|fSIMPLY1|f
- |tXCOPY|t|fSIMPLY1|f
- |tBatch|t|fSIMPLY2|f
- |tRedirection|t|fSIMPLY2|f
- |TREM|T|fSIMPLY2|f
- |tANSI.SYS|t|fSIMPLY4|f
- |tbad sector|t|fSIMPLY4|f
- |TBREAK|T|fSIMPLY4|f
- |TBUFFERS|T|fSIMPLY4|f
- |tCONFIG.SYS|t|fSIMPLY4|f
- |tDevice Driver|t|fSIMPLY4|f
- |TDEVIC|1E|T|fSIMPLY4|f
- |tEnvironment|t|fSIMPLY4|f
- |TFDISK|T|fSIMPLY4|f
- |tfloppy|t|fSIMPLY4|f
- |TFORMAT|T|fSIMPLY4|f
- |TGRAPHICS|T|fSIMPLY4|f
- |tIBMBIO.COM|t|fSIMPLY4|f
- |tIBMDOS.COM|t|fSIMPLY4|f
- |TINSTALL|T|fSIMPLY4|f
- |tinterrupt|t|fSIMPLY4|f
- |tIO.SYS|t|fSIMPLY4|f
- |TJOIN|T|fSIMPLY4|f
- |TLABEL|T|fSIMPLY4|f
- |TLASTDRIVE|T|fSIMPLY4|f
- |tLogical Drives|t|fSIMPLY4|f
- |tmacros|t|fSIMPLY4|f
- |TMIRROR|T|fSIMPLY4|f
- |tMSDOS.SYS|t|fSIMPLY4|f
- |tpartition|t|fSIMPLY4|f
- |tPATH|t|fSIMPLY4|f
- |tPROMPT|t|fSIMPLY4|f
- |tvolume|t|fSIMPLY4|f
- |TC|1:|T|fSIMPLY5|f
- |TCHDIR|T|fSIMPLY5|f
- |TCLOCK$|T|fSIMPLY5|f
- |tCode Page|t|fSIMPLY5|f
- |TCOM1|T|fSIMPLY5|f
- |tCOMMAND.COM|t|fSIMPLY5|f
- |TCOMMAN|1D|T|fSIMPLY5|f
- |TCON|T|fSIMPLY5|f
- |TCOPY|T|fSIMPLY5|f
- |tcurrent|t|fSIMPLY5|f
- |tdefault|t|fSIMPLY5|f
- |TDEL|T|fSIMPLY5|f
- |tDevice|1s|t|fSIMPLY5|f
- |tDirectory|t|fSIMPLY5|f
- |TDIR|T|fSIMPLY5|f
- |TERASE|T|fSIMPLY5|f
- |TEXIT|T|fSIMPLY5|f
- |texternal|t|fSIMPLY5|f
- |TLPT1|T|fSIMPLY5|f
- |TNUL|T|fSIMPLY5|f
- |TPRN|T|fSIMPLY5|f
- |TRENAME|T|fSIMPLY5|f
- |TRMDIR|T|fSIMPLY5|f
- |troot|t|fSIMPLY5|f
- |tShelling Out|t|fSIMPLY5|f
- |TTIME|T|fSIMPLY5|f
- |TTYPE|T|fSIMPLY5|f
- |TVERIFY|T|fSIMPLY5|f
- |TBBS|T|fSIMPLY6|f
- |tbinary|t|fSIMPLY6|f
- |tBoot|t|fSIMPLY6|f
- |tBoo|1t Disk|t|fSIMPLY6|f
- |tCleaning|t|fSIMPLY6|f
- |tcluster|t|fSIMPLY6|f
- |tcommercial|t|fSIMPLY6|f
- |tDisks|t|fSIMPLY6|f
- |tKeyboard|t|fSIMPLY6|f
- |tParameters|t|fSIMPLY6|f
- |tPower|t|fSIMPLY6|f
- |tpublic domain|t|fSIMPLY6|f
- |tReboot|t|fSIMPLY6|f
- |tsector|t|fSIMPLY6|f
- |tShareware|t|fSIMPLY6|f
- |TSY|1S|T|fSIMPLY6|f
- |tWildcards|t|fSIMPLY6|f
- |TAPPEND|T|fSIMPLY7|f
- |TASSIGN|T|fSIMPLY7|f
- |tAttributes|t|fSIMPLY7|f
- |TBACKUP|T|fSIMPLY7|f
- |TCHKDSK|T|fSIMPLY7|f
- |TDISKCOMP|T|fSIMPLY7|f
- |TDISKCOPY|T|fSIMPLY7|f
- |TDOSKEY|T|fSIMPLY7|f
- |TDOSSHELL|T|fSIMPLY7|f
- |tfragmented|t|fSIMPLY7|f
- |tHidden|t|fSIMPLY7|f
- |toptimizer|t|fSIMPLY7|f
-