Handle name | Handle value |
STDIN (Standard Input) | 0 |
STDOUT (Standard Output) | 1 |
STDERR (Error output) | 2 |
AUX (Auxillary, usually COM1) | 3 |
PRN (Printer, usually LPT1) | 4 |
Intel is a registered trademark of Intel Corporation.
IBM and PC-DOS are registered trademarks of International Business Machines.
CP/M is a registered trademark of Digital Research
There are some rumours that there was a communication breakdown between IBM and IDR (Intergalactic Digital Research, the company who owned the rights for CP/M, now known by the less austentatious name of Digital Research), but whatever the reason, the system finally licensed was the then-small Microsoft's 'MS-DOS', which was itself adapted from 86-DOS, also known as 'QDOS' - for 'Quick and Dirty Operating System'.
Because of bugs found in the early MSDOS, IBM wrote their own version of DOS, designed to be compatible with Microsoft's specification, which they called PCDOS (presumably standing for Personal Computer Disk Operating System). To this day the two DOS's are marketed seperately by their respective companies, though the Microsoft product is by far the most popular.
Since those early times DOS has developed rather significantly. Other companies including Digital Research began to market different versions of DOS; DOS version numbers increased and DOS became more complex and powerful. The most significant advancement was version 2.0 which was designed to allow the used of hard drives, and then DOS 3.0 (3.3 by the time the bugs were removed) which had built-in support for networking. Further enhancements were also made but more and more rarely were they an internal part of DOS.
Further reference: 'DOSREF 3.3' by Dave Williams (disk based text)
However, in a sense, a fourth layer exists between the BIOS and DOS level (or in some cases directly between DOS and the hardware). This layer is comprised of device drivers. Device drivers are special programs which interface DOS to a hardware device (either directly or through the device).
Device drivers can be classified in various ways. The biggest distinction is between 'block devices' and 'character devices'. Block devices are devices which operate on blocks of data and are represented in DOS as disk drives, accessible through a drive letter. Character devices on the other hand will accept as little as a single byte at a time to operate on; character devices include the video screen and printers.
Some hardware devices can not be classified as either, however; an example is the mouse. Although the mouse driver could be implemented as a character device driver, this would prove inefficient and cumbersome, and mouse drivers generally do not adhere to the DOS device driver standard but rather provide functions to programs through a seperate interface.
Also, be aware that some devices which appear as block devices (in the sense that they are accessed through a drive letter) are actually using a special network interface that DOS provides (the 'redirector interface'). The allocation of physical space on such devices is allocated not by DOS but by the device driver itself, or by the hardware or network which the driver interfaces with. Such devices include network drives and CD-ROM drives. As a matter of fact, CD-ROMS are seperated even by a further layer - the MSCDEX program (Microsoft CD extensions). The redirector interface is not well documented; many references neglect to even mention it.
Note as well that a single block device driver can control more than one block device, and a single device driver file can contain more than one driver. This effectively allows one device driver to be responsible for a number of devices.
In summary, there are three types of drive devices: 'local' block devices, 'remote' network drives, and local drives using the network interface. There are also two other types of drivers: character devices and 'alternate' devices such as the mouse.
The internal block devices are A: and B: - the floppy drives; if no B: exists, then B: becomes a second way of referencing the first floppy. Normally, when B: is accessed after A:, the DOS internal driver displays a message 'to insert a diskette for drive B:', and when when A: is accessed after that, the same occurs 'for drive A:'. This can be used to emulate the presence of two floppy drives. C: and D: refer to the first and second hard disk drive respectively. If no hard drives exist, C: and D: will not be automatically created; if a second HD does not exist, C: but not D: will be created. No emulation of a second HD is performed.
Standard character drivers (except for NUL) can easily be replaced by installing a new driver with the same name. The character devices are:
NUL: This device simply ignores all output and gives no input. It is mainly used with re-direction on the DOS command line to suppress a program's output. NUL is the only character device driver which cannot be replaced.
COM1 - 4 (eg COM1, COM2...): The computer's serial ports. Interestingly enough, if there are less than four devices, four driver interfaces are still supported. The extras act just like the NUL driver.
LPT1 - 3 (eg LPT1, LPT2...): The computer's parallel ports. The behaviour here is the same as for the COMx devices.
PRN: An alias for LPT1
AUX: An alias for COM1
CON: Any output sent to CON will (usually) go to the screen; any input will come from the keyboard (the keys the user has pressed). This device works by calling the BIOS keyboard and video functions. DOS checks the character in the devices (keyboard's) input buffer on many function calls (depending on the value of BREAK, see the discussion of control variables in Programs Under DOS) and takes action on certain combinations (see below). Also, this device intercepts INT 1Bh calls (made by BIOS when the CTRL-BREAK key combination is pressed) and returns CTRL-C as the next character if a CTRL-BREAK has been detected.
CTRL-S | Pauses until another character recieved available in CON. |
CTRL-P or CTRL-PrintScreen | Toggles transmittal of everything going to a STDOUT device, and every input that is echoed back to a STDIN device (from within a DOS function), to also go to the PRN device. |
CTRL-C | Clears CONs input buffer, displays ^C to CON and then calls INT 23h, which by default terminates the program. |
$CLOCK: The clock device is used to control the time-keeping clock on systems equipped with such a device. The $CLOCK device uses a special format for input and output, as shown below:
WORD | Number of days since 1-Jan-1980 |
BYTE | Number of minutes since the beginning of the hour |
BYTE | Number of hours since the beginning of the day |
BYTE | Hundredths of seconds (...) |
BYTE | Number of seconds (...) |
In essence, all a block device needs to be able to do is to follow instructions from DOS to read from and write to certain sectors (or clusters as they are called, as a device may use a block size of several physical sectors).
Each block device may have a certain number of 'reserved sectors' which DOS does not use. For a floppy drive, this contains the boot sector (which contains code executed if the computer is 'booted from the floppy' - usually this is done by simply resetting the computer with the floppy in the drive). Hard drives also have a 'master partition table' although this is usually made completely invisible to DOS (it is not one of the reserved sectors).
There are also a number of FATs (usually 2). a FAT is a 'file allocation table' and contains information about which clusters are being used by which files. All FATs are modified one after the other so all should be identical. If one FAT is inadvertantly destroyed, another can be used to replace it, with minimal loss of information.
Following the FATs is the root directory space. Because this space is a fixed size, there is a practical limit to the number of root directory entries. The volume label of a drive is also stored as a root directory entry. Each entry contains a file name (or volume name), date and time which the file was last altered, file attributes (volume label, directory, hidden, read-only, system and archive), size, and first cluster occupied by the file- subsequent clusters can be found by examining the FAT.
The volume label attribute describes the entry as being a volume label rather than a file. The directory attribute specifies the entry is for a directory rather than a file (though a directory is stored in the same way as a file; the format is similar to that of the root directory itself). The hidden attribute is used to signal to programs that the file should not be listed in a normal directory listing, and not interpreted as being part of a file specification that uses wild cards. The read-only attribute causes DOS to give error messages to programs attempting to write to, destroy or alter the file (although the attributes may still be altered, in order to be able to remove the read-only attribute if alteration is necessary). The system attribute has in essence the same meaning as the 'hidden' attribute; system files are considered crucial in the operation of the system, and should generally not be moved from their location on disk. The archive attribute is set by DOS whenever a file is changed, as is the file date and time (accurate to two seconds).
Cooked mode means that on any 'input with echo' performed on the device, if a control character is input, it is echoed as double character, the first being a caret (^) and the second being the appropriate alphabetical character. Also, any output is scanned for CTRL-Z and if a CTRL-Z is found, the output block is terminated (that is, output only continues up until the CTRL-Z is reached, the rest of the output block is discarded; further output continues when the next output block is sent). Input from the device is also scanned: If the first character of a buffered read is CTRL-Z, no input is returned until the next read is made. However a CTRL-Z embedded within a block of input is not treated specially (tests made in DOS version 6.22)
All character devices may be flagged as being STDIN and/or STDOUT devices. Standard input devices are treated specially by DOS, in that when a buffered input occurs, the user has a chance to edit the line of input using the backspace key to delete the previous character. All characters input in this way are echoed as output to the device (so that the user can see what they are typing or inputting), the backspace key is converted to 'backspace-space-backspace' (so that it overwrites the character which would otherwise be left visible for this purpose). STDOUT only has special purpose when printer echo is turned on (see DOS interface to programs).
Most input/output is performed using a 'handle' which is a numerical value indicating to DOS upon what the operation in question is to be performed. The five standard devices are 'open' and assigned a handle automatically; these are STDIN: 0, STDOUT: 1, STDERR: 2, STDAUX: 3, STPRN: 4. Interestingly enough any device can be assigned as a STDIN or STDOUT device, though the STDIN and STDOUT of a program by default refers to the CON device. STDIN (standard input) is usually assigned to the CON device and thus the computer's keyboard, STDOUT is usually also assigned to the CON device and so the video screen (both STDOUT and STDIN can be redirected on the DOS command line using the COMMAND.COM interpreter), STDAUX is usually AUX, STDPRN is usually PRN, and STDERR is also a reference to CON (for the purpose of displaying messages that must be seen even if output has been redirected). Note that a program refers to a standard device by number and not by name.
Any other I/O requires that the file or device be 'opened' first. The open request is made by the application using the Int 21h interface, and DOS returns (assuming no error occurs) a handle that the application can use in subsequent requests (known as 'calls'). When the application is finished with the file or device, the handle is 'closed' using another DOS call.
* DOS will only directly access the first 640 kilobytes of memory. Enhancements which allow the use of UMBs (upper memory blocks) allow access to a full megabyte of memory. Further memory is considered 'expanded' or 'extended' according to the way in which it is accessed, and can be allocated or deallocated using the appropriate interface for the type. This is beyond the scope of this document.
The 'System File Tables' (SFTs) contain information about all the presently open files. The SFTs are stored in a chain so that in knowing the address of the first, the address of subsequent tables can be found.
The 'Current Directory Structures' maintain information about the current directory of each logical drive. These structures can be manipulated to create redirection (whereby one drive unit actually references a different drive, or even a subdirectory of another drive), including network redirection. This is how the DOS SUBST command works.
'File Control Blocks' (FCBs) are an obselete method of file access, now replaced with the file handle functions. DOS still supports the FCB functions to maintain compatibility with previous versions, but now all FCB files also have an entry in the SFTs. The FCB functions are really just 'layered over' the handle functions.
'Memory Control Blocks' (MCBs) are headers at the start of each allocated and free memory block, giving information about the size of the block as well as information such as what program 'owns' the block (that is, what application requested the allocation of the block). For Upper Memory Blocks (those beyond the 640KB barrier), the corresponding control blocks are known as 'UMCBs'.
'Program Segment Prefixes' or PSPs are structures containing information local to specific programs. Every running program should have a PSP. When a program exits, the PSP is destroyed and the memory it occupies is freed. The main use of PSPs is to hold a 'local file table' which actually contains indexes into the SFTs.
In most applications, there will be no need to manipulate these structures directly; DOS does everything necessary when requested to do so (for instance, when a file is opened by an application, the application's PSP file table is updated and a new entry (if necessary) is created in the SFTs.
Then there are application programs (which can also take the form of utilities, games etc). These programs are stored in 'executable files' on a DOS drive. Programs can be loaded in one of two ways: By DOS at boot time (if the program is the 'shell'; the default shell is of course 'COMMAND.COM', the command-line interpreter), or by starting them from within another program (for instance, starting a program by typing its name on the command line).
All DOS programs have their own data information block called a 'Program Segment Prefix' (PSP). The PSP contains information about the currently running program, including the return address to the parent program (or 'parent process': The process which caused the 'child' process to execute), and information about what files the program has opened (in the form of indexes into the system file table). The program references files through an index into its own internal table; these local indexes are also known as 'file handles'.
DOS programs also have an 'environment' (or 'environment table', or 'environment string table') which is a number of named strings of text of any value. Any program inherits an exacr copy of its parent's environment (except of course the shell, which has no parent). The environment variables as they are called are used to keep track of information and provide information that is easily accessible to all programs. Environment variables and their values have no direct meaning to the DOS kernel, but many DOS utilities and programs make use of them - for example, the command interpreter:
Programs also have access to certain global DOS variables. These are the 'Verify' switch (which when 'on' causes DOS to verify any write operation is performed correctly, by reading the information back from the device and comparing it with what was supposed to be written) and the 'Break' switch (which controls how often checking for Control-C from standard input is performed). DOS also keeps a 'machine name' which is generally used only in networking systems to identify a node of the network.
DOS allows its programs a great deal of freedom. As DOS is a real mode operating system, direct hardware manipulation (using IO ports or BIOS) is possible, though wherever possible, the use of DOS functions is recommended. The use of direct hardware programming and BIOS gives much flexibility to DOS programs.
Some .COM and .EXE files are simply 'memory images'. That is, the file is simply a sequence of bytes to be loaded at any segment address at offset 100h (to allow for the PSP), with execution beginning at (segment):0100h. These programs may never exceed 64KB in size, and are always allocated at least 64KB of memory (they are, in fact, allocated all of the memory block into which they are loaded).
Device driver (.SYS) files are also (generally) memory images, but follow a special format reserved for device drivers. Device driver files may also take the .EXE format, in which case they can be loaded as a normal DOS program as well as a driver (in which case the EXE header is ignored; the driver header should immediately follow it). The device-driver format is beyond the scope of this text.
Program files may take another format which allows programs to have several logical segments (and thus exceed 64KB in size). All such executable files (and I stress that both .COM and .EXE files may take this format) begin with a double byte 'signature' within a variable-size header to indicate that they are in fact segmented. This is the ascii equivalent of 'MZ', the initals of Mark Zbikowski, one of the principal designers of DOS. The header (which must be a multiple of 16 byes in length, and is nearly always set at 512 bytes length - for no real reason) contains a 'relocation table' which is a table of segment pointers within the program which must be 'fixed' at load time to point to the correct physical segment, by adding the actual physical segment at which the program was loaded (the segment immediately after the PSP).
Files in this format may also specify a 'minimum' and 'maximum' amounts of memory to allocate. If 'maximum' is greater than the memory available in the block into which the program is being loaded, all the memory in the block will be allocated. If the minimum required memory cannot be allocated, the program will not be executed. If the maximum is less than the amount available, the program will be loaded so that is at the high end of the memory block.
Offset | Contents |
0000h | Segmented EXE header |
0002h | File length remainder |
0004h | File length (512 byte pages) |
0006h | Count of relocation table items |
0008h | Header size in paragraphs |
000Ah | Minimum extra memory (paragraphs) to allocate |
000Ch | Maximum extra memory (paragraphs) to allocate |
000Eh | Initial SS (before fixup) |
0010h | Initial SP |
0012h | Checksum |
0014h | Initial IP |
0016h | Initial CS (before fixup) |
0018h | Relocation table offset |
DOS hard drives may be 'partitioned' to form several 'logical drives' (which are normally each assigned their own drive letter by DOS). Only one partition at a time can be marked 'bootable'. The partition table information is contained in the master boot record (the true boot record, "MBR") of the drive, which resides on the first logical sector (of the first track or cylinder on the first head). That first sector also contains the MBR code, which determines the bootable partition and loads the boot sector (first logical sector) of that partition, executing it as if it was itself a boot record (loaded at the same location, registers contain the same values). It is possible to install several different operating systems on one computer in this way, especially if the standard MBR code is replaced in order to allow the bootable partition to be seleced at boot time.
There is a limit of four entries in the master partition table. DOS allows these entries to contain pointers to 'extended partition tables', whose format is exactly the same as for the main partition table except there is no boot code (the space normally reserved for the boot code is empty). All the extended partitions should exist within the space reserved by the extended partition entry - only two of the extended partitions are meant to be used, the first as a normal partition, the second as another extended partition (optional).
The DOS boot sector contains as a first instruction a 'jmp' (code 0EBh for DOS 3.x+) to the real code. The boot sector contains various information about the disk, including a BIOS parameter block, as well as some DOS startup code, which loads (part of) IO.SYS or the equivalent and passes control to it. The exact workings may be DOS specific and version specific.
Any sectors before the boot sector of a logical DOS drive are considered to be 'hidden' sectors. The DOS kernel does not interpret hidden sectors (it is up to the disk device drivers, which are usually internal to DOS anyway, to skip 'hidden' sectors). Normal floppy drives have 0 hidden sectors. Hard drive partitions will have a number reflecting their location on the drive. Note that the whole first head of the first cylinder is (usually) reserved for the partition table, even though it is only the first sector which is actually used.
Following the hidden sectors are 'reserved' sectors usually used only for the boot sector. Following this are the File Allocation Tables (FATs). The FATs should all be identical (there are normally two). They contain a map of cluster usage (the data area sectors are grouped into 'clusters'. The number of sectors per cluster does not vary for any particular disk, and depends on the number of sectors - DOS can only map a certain number of clusters; if there are more sectors than the maximum number of clusters, then more than one sector is assigned to each cluster). The FATs also mark bad clusters, and give the order of clusters for a file.
Following the last FAT is the root directory. The root directory is variable size but must be contiguos (and under DOS cannot normally change size once initiated). The root directory contains information about the files and directories branching from the root directory. All further directories are themselves stored as files, in the same format as the root directory.
Interestingly enough, the volume label for a floppy is usually stored within the boot sector, but the volume label for a hard drive is stored as a root directory entry and the space reserved in the boot sector is left blank with spaces. The DOS 'DIR' command returns the one in the directory if present, or the one in the boot sector if not.
Offset | Description |
0000h | Code to load and execute currently bootable partition. |
01BEh | Partition table entry #1 |
01CEh | Partition table entry #2 |
01DEh | Partition table entry #3 |
01EEh | Partition table entry #4 |
01FEh | Bootable sector signature 55h, AAh (55h low) |
Offset | Description |
0000h | Boot indicator. 0 - inactive, 80h - bootable |
0001h | Beginning head |
0002h | Beginning sector, and 2 msbits of cylinder |
0003h | Beginning cylinder (8 lsbits) |
0004h | System indicator |
0005h | End head |
0006h | End sector |
0007h | End track |
0008h | DWORD absolute starting sector |
000Ch | DWORD absolute ending sector |
Beginning/ending head/sector/cyinder: In determining the sector/head/track from an absolute sector number, the sector is incremented first (is the least significant portion), then the head, then the track/cylinder (most significant portion). Sector numbers start at 1, head/cylinder numbers start at 0.
Also, the 2 most significant bits of the (10 bit) cylinder number are stored in the 2 most significant bits of the byte at offset 02h/06h. The other bits in this byte form a 6 bit sector number. Thanks to Rick Ondrejicka for pointing out that I had originally missed this :-)
System indicator: 0 = not defined/unknown, 1 = DOS 12-bit FAT, 2-3 = XENIX, 4 = DOS 16 bit FAT with 512 or less bytes/cluster (<32 MB), 5 = Extended DOS partition, 6 = large (bigger than 32MB) DOS partition with 16 bit FAT, >512 bytes/cluster.
Offset | Description |
0000h | JMP instruction, code 0EBh for DOS 3.x+ |
0003h | (8 bytes) OEM name. Identifier of creator of boot record |
000Bh | WORD bytes per sector |
BIOS PARAMETER BLOCK | |
000Dh | BYTE Sectors per cluster |
000Eh | WORD Reserved sectors |
0010h | BYTE Number of FATs |
0011h | WORD Maximum number of root directory entries |
0013h | WORD Total number of sectors |
0015h | BYTE media descriptor |
0016h | WORD sectors per FAT |
(BPB ends) | |
0018h | WORD sectors per track |
001Ah | WORD number of heads |
001Ch | WORD number of hidden sectors (see also next) |
EXTENDED BOOT RECORD INFO (DOS 4.0+) | |
001Eh | WORD number of hidden sectors (high WORD) |
0020h | DWORD Total number of sectors |
0024h | WORD Physical drive number (as passed to BIOS) |
0026h | BYTE Extended information signature (29h) |
0027h | DWORD disk serial number |
002Bh | 11 BYTEs volume label (floppys only, see main text) |
0036h | 8 BYTEs file system. FAT12 or FAT16 (padded with spaces) |
Bytes per sector: Must be an integer power of 2 (eg, 64, 128, 256). Floppy disks are normally 512 bytes/sector; most fixed disks are also 512 bytes/sector.
Total number of sectors: Excludes hidden sectors. If zero in the BPB, the field in the extended boot record information is used and vice versa.
Media descriptor: Used to give an indication of the media (disk) type. Normal values are 0 for an extended DOS partition, 0F0h for a (18 sector/80 track) 1.44MB 3 1/2 inch floppy, 0F8h for a hard drive, 0FDh for a (9 sector/40 track) 360KB 5 1/4 inch floppy (unverified) or a (9 sector/80 track) 720KB 3 1/2 inch (verified) , 0F9h for a (80 track 15 sector) 1.2MB 5 1/4 inch floppy. '0' seems to be the best way to go for anything else. The media descriptor byte doesn't appear to actually mean very much.
First two entries: Reserved. The first byte of the first entry is also the media descriptor byte.
Further entries: (MAX is 0xffff for 16 bit fats, 0xfff for 12 bit fats)
0 | if the cluster is unused (free, available) |
(MAX-7) to MAX | Last cluster in file |
(MAX-8) | bad cluster |
(MAX-15) to (MAX-8) | reserved cluster |
Anything else: | Next cluster in file chain (this is the number of the appropriate entry in the FAT table, so #2 is the first non-reserved cluster) |
Note also that all subdirectories (but not the root directory) contain entries for the '.' (this subdirectory) and '..' (parent directory) directories, as displayed in a normal directory listing.
Offset | Description |
0 | (11 bytes) file name or (on hard disks) volume label. For file names, the first 8 bytes are the name before the extension (left justified, padded with spaces) and the final 3 bytes are the extension. If the first byte is 0, this entry is invalid and is the last entry. If it is E5h**, the file has been deleted. If it is 5, the first character is actually an 0E5h (but the file has not been deleted). |
0Bh | File attributes: bit 0 - read only flag bit 1 - hidden file flag bit 2 - system file flag bit 3 - volume label flag (indicates entry is a volume label) bit 4 - file is a subdirectory (in same format as directory) bit 5 - archive bit (file modified since last backup), set by DOS bit 6 & 7 - reserved |
0Ch | (10 bytes) reserved |
Time and date stamp give time of last file modification | |
16h | (2 bytes) timestamp (bits 0-4 : seconds in two second increments, bits 5-10 : minutes, bits 11-15 : hours [from 0-23]) |
18h | (2 bytes) datestamp (bits 0-4 : day of month, 5-8 : month, 9-15 : years since 1980) |
1Ah | (2 bytes) First cluster of file (2 = first cluster after root dir). A value of 0 is used in 'parent directory' ('..') entries to indicate that the parent is the root directory. |
1Ch | (4 bytes) File size in bytes. |
During time I have assisted quite a lot of PC owners with the setup
of their two system files CONFIG.SYS and AUTOEXEC.BAT. Often when
I stand in line in a computer store (I have seldom seen that there isn't
a waiting line), I have experienced that a great many of the problems,
the customers complains about, are due to improper setup of these two files.
Therefore I hereby pass on some advice about that subject.
Some of the following is very basic, while some of it is addressed to the experienced PC user.
Before you begin to change the CONFIG.SYS and AUTOEXEC.BAT files, you should do the following:
Format a floppy diskette with the command: FORMAT A: /U /S Save copies of the original CONFIG.SYS and AUTOEXEC.BAT files in a separate directory AND on the floppy diskette mentioned above. |
This will always give you the possibility of starting the computer by inserting the floppy diskette in drive A:, then rebooting the computer.
If there are problems starting the computer, then as from DOS version 6.00 you can press the F5 key, when the screen displays: Starting "Windows 9x..." ("Starting MS-DOS..."). This skips the executing of the CONFIG.SYS and AUTOEXEC.BAT files. Thereafter you can edit the line in one of these two files where the problem occurred. If instead the F8 key (plus 4 in Windows 9x) is pressed, then the lines in CONFIG.SYS and AUTOEXEC.BAT will be executed one line at a time. This helps determining where the problems occurs.
Under Windows 9x the following setup of CONFIG.SYS and AUTOEXEC.BAT will be suitable. This setup also ensures access to CD-ROM drive and soundcard in MS-DOS mode.
Before you begin to make alterations of CONFIG.SYS and AUTOEXEC.BAT, it will be suitable to change the setup, so that Windows 9x will not start automatically, but there instead is started directly in DOS mode.
This is done by making the following changes under [Options] in the file C:\MSDOS.SYS:
to: | BootGUI=1 Logo=1 |
BootGUI=0 Logo=0 |
Tip (by Tom...): Add (or change) this to file C:\MSDOS.SYS in order to skip the logo and speed up you boot. Instead you'll see the dos commands executed during startup:
to: |
[Options] Logo=0 Bootdelay=0 |
MSDOS.SYS is a hidden read-only system file, why it is necessary to execute the command: ATTRIB -H -R -S C:\MSDOS.SYS before the file can be edited (some editors allows editing without doing this in advance).
NOTE! | |
It is important to use a texteditor (NOTEPAD.EXE or EDIT.COM) and
NOT a wordprocessor (Word or WordPerfect) to edit the file, because a
wordprocessor spoils the file with unwanted code! |
After this change the computer will start in MS-DOS 7.x, and the Windows 9x Logo (the one with the running colours beneath the picture) will not be shown during startup, making it possible to see how CONFIG.SYS and AUTOEXEC.BAT are executed.
Windows 9x can subsequently be started manually with the command: WIN
If for instance a DOS game will not run under a standard installation of Windows 9x, this can often be solved by disabling the automatic start of Windows 9x in this way, and then starting the program before loading Windows 9x.
Once CONFIG.SYS and AUTOEXEC.BAT are optimized, the changes in MSDOS.SYS can be reversed, to reestablish the automatic start of Windows 9x and the Logo, if so wanted. Alternatively the command: WIN could just be inserted as the last line in AUTOEXEC.BAT.
The following example applies to a PC with:
MS-DOS 7.00 / 7.10 Windows 4.00.x (95 / 98) Soundblaster soundcard CD-ROM drive Mouse |
(installed in C:\WINDOWS & C:\WINDOWS\COMMAND) (installed in C:\WINDOWS) (installed in C:\CTSND) (installed in C:\CDROM) (installed in C:\MOUSE) |
The example are generally applicable, but line 13 and line 24 must be edited, as the drivers for CD-ROM drive and Mouse depends on the manufacturer.
The Lines with * can be omitted.
CONFIG.SYS |
|
* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
NUMLOCK=OFF BREAK=ON DOS=HIGH,UMB,NOAUTO FILESHIGH=40 FCBSHIGH=1,0 BUFFERSHIGH=30,0 LASTDRIVEHIGH=J STACKSHIGH=9,256 COUNTRY=045,865,C:\WINDOWS\COMMAND\COUNTRY.SYS DEVICE=C:\WINDOWS\HIMEM.SYS /V DEVICE=C:\WINDOWS\EMM386.EXE RAM /MIN=0 I=B000-B7FF /V DEVICEHIGH /L:2 =C:\WINDOWS\COMMAND\DISPLAY.SYS CON=(EGA,,1) DEVICEHIGH /L:2 =C:\CDROM\CDROM.SYS /D:MSCD000 DEVICEHIGH /L:2 =C:\WINDOWS\SETVER.EXE DEVICEHIGH /L:1 =C:\WINDOWS\IFSHLP.SYS SHELL=C:\WINDOWS\COMMAND.COM C:\WINDOWS\ /E:1024 /P |
AUTOEXEC.BAT |
|
* 17 18 19 20 21 22 23 24 * 25 26 27 * 28 29 30 31 32 33 34 * 35 |
@ECHO OFF LH /L:2 C:\WINDOWS\COMMAND\MSCDEX /D:MSCD000 /M:15 /E /S /L:D /V LH /L:0;2 /S C:\WINDOWS\COMMAND\SMARTDRV 2048 16 /V C:\WINDOWS\COMMAND\MODE CON RATE=32 DELAY=2 C:\WINDOWS\COMMAND\MODE CON CP PREP=((865) C:\WINDOWS\COMMAND\EGA.CPI) C:\WINDOWS\COMMAND\MODE CON CP SEL=865 LH /L:2 C:\WINDOWS\COMMAND\KEYB DK,865,C:\WINDOWS\COMMAND\KEYBOARD.SYS LH /L:2 C:\MOUSE\MOUSE LH /L:2 C:\WINDOWS\COMMAND\DOSKEY /INSERT PROMPT $p$g PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\CTSND SET DIRCMD=/P /A SET TEMP=C:\WINDOWS\TEMP SET TMP=C:\WINDOWS\TEMP SET SOUND=C:\CTSND SET BLASTER=A220 I5 D1 H5 P330 T6 SET MIDI=SYNTH:1 MAP:G C:\CTSND\DIAGNOSE /S C:\CTSND\SB16SET /P |
/L: indicates in which UMB block the driver/program shall be loaded.
/V indicates that the driver/program shall display extended information on the screen when loading.
If the Upper Memory in the address interval C800 to EFFF is unbroken, it should now, depending on the memory requirements for the CD-ROM and Mouse drivers, be possible to load all drivers and resident programs in Upper Memory, giving approximately 625 Kb free memory (can be checked with the command: MEM /C).
An unbroken Upper Memory area is among other depending on the computers BIOS, the installed videocard and other plug-in cards installed in the computer.
NOTE! | |
The order of the lines should not be altered. The order above
provides the best utilization of the Upper Memory. When DOS is finished loading the drivers stated in CONFIG.SYS, it loads the FILES, FCBS, BUFFERS, LASTDRIVE and STACKS. DOS continues to load these into the same UMB as the last device was loaded into. This gives a way of controlling where the FILES etc. are loaded. In the example above, the last device: IFSHLP.SYS is loaded into UMB 1, and therefore FILES etc. are also loaded into UMB 1. If the values for FILES etc. are set as in the example above, then the available memory in UMB 1 will just barely be used (at least with the Danish versions of Windows 9x). Thereafter COMMAND.COM will be loaded where there is free memory - in this instance into UMB 2. |
If there is not 625 Kb of free memory, the MEMMAKER program can be tried, but this program cannot always improve the memory utilization, and some times it becomes worse.
Also look at the chapter: More Upper Memory with EMM386.
More commands for use in CONFIG.SYS and AUTOEXEC.BAT can be seen in the chapter: MS-DOS 6.22 (Windows 3.11).
If you are using one of the FIRST German or Danish (and probably some other non-US versions) of the OEM Service Release 2 (OSR2) version of Windows 95, there is an ERROR in the IO.SYS system file, which prevents HIMEM.SYS from loading in the HMA area, leading HIMEM.SYS to use 45 Kb of conventional memory instead of 1 Kb.
You can download the IO2PATCH.EXE program here. This program fixes the problem. Just put the IO2PATCH.EXE file in the root of your bootup drive (usually C:\), where the IO.SYS system file is placed, execute the IO2PATCH program, and then the problem should be fixed.
Whenever it is chosen to "Restart the computer in MS-DOS mode" when closing Windows 9x, the file C:\WINDOWS\DOSSTART.BAT is searched for, and the lines herein are executed, if this file exists.
During installation of Windows 9x some lines are often moved from AUTOEXEC.BAT to DOSSTART.BAT, so it is essential to check that none of the drivers and TSR programs loaded from AUTOEXEC.BAT are loaded by DOSSTART.BAT as well.
The CD-ROM extension MSCDEX is one of the programs that Windows 9x often moves to DOSSTART.BAT. This is done in order for Windows 9x to use its 32-bit driver for the CD-ROM drive, but if access to the CD-ROM drive is wanted before starting Windows 9x (e.g. if automatic start of Windows 9x is disabled, as earlier described), then MSCDEX HAS to be loaded from AUTOEXEC.BAT and therefore should be deleted from the DOSSTART.BAT file. Windows 9x's 32-bit CD-ROM driver should be a little faster than a 16-bit DOS driver, but some programs cannot run with the 32-bit driver.
However, if it is chosen to load MSCDEX from DOSSTART.BAT, then SMARTDRV should be moved hereto as well, in order to obtain caching of the CD-ROM drive. Otherwise SMARTDRV would be loaded before MSCDEX, causing the CD-ROM drive not to be cached. The DOSSTART.BAT file should then look like this:
DOSSTART.BAT |
|
1 2 3 |
@ECHO OFF LH /L:2 C:\WINDOWS\COMMAND\MSCDEX /D:MSCD000 /M:15 /E /S /L:D /V LH /L:0;2 /S C:\WINDOWS\COMMAND\SMARTDRV 2048 16 /V |
and line 18 and line 19 should be deleted from AUTOEXEC.BAT.
Windows looks for the file C:\WINDOWS\WINSTART.BAT before starting. So, if you for any reason want to run any programs or commands before starting Windows, you can put them into this file. Unlike DOSSTART.BAT, WINSTART.BAT is also executed by Windows 3.11.
The following example applies to a PC with:
MS-DOS 6.22 Windows 3.11 Soundblaster soundcard CD-ROM drive Mouse |
(installed in C:\DOS) (installed in C:\WINDOWS) (installed in C:\SB16) (installed in C:\CDROM) (installed in C:\MOUSE) |
but will also work with MS-DOS 6.00 / 6.20 or PC DOS 6.30 / 7.00.
The example are generally applicable, but line 15 and line 26 must be edited, as the drivers for CD-ROM drive and Mouse depends on the manufacturer.
The Lines with * can be omitted.
CONFIG.SYS |
|
* 1 2 3 4 5 6 7 8 9 10 11 * 12 13 14 15 16 |
NUMLOCK=OFF BREAK=ON DOS=HIGH,UMB FILES=40 FCBS=1,0 BUFFERS=10,0 LASTDRIVE=J STACKS=9,256 COUNTRY=045,865,C:\DOS\COUNTRY.SYS DEVICE=C:\DOS\HIMEM.SYS /V DEVICE=C:\DOS\EMM386.EXE RAM /MIN=0 I=B000-B7FF /V DEVICEHIGH /L:1 =C:\DOS\ANSI.SYS DEVICEHIGH /L:1 =C:\DOS\DISPLAY.SYS CON=(EGA,,2) DEVICEHIGH /L:1 =C:\WINDOWS\IFSHLP.SYS DEVICEHIGH /L:2 =C:\CDROM\CDROM.SYS /D:MSCD000 SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /P |
AUTOEXEC.BAT |
|
* 17 18 * 19 20 21 22 23 24 * 25 26 * 27 * 28 * 29 30 31 * 32 33 34 35 36 37 38 39 * 40 |
@ECHO OFF LH /L:2 C:\DOS\MSCDEX /D:MSCD000 /M:15 /E /S /L:D /V ECHO. LH /L:0;2 /S C:\DOS\SMARTDRV 2048 128 /V C:\DOS\MODE CON RATE=32 DELAY=2 C:\DOS\MODE CON CP PREP=((865 850) C:\DOS\EGA.CPI) C:\DOS\MODE CON CP SEL=865 LH /L:2 C:\DOS\KEYB DK,865,C:\DOS\KEYBOARD.SYS ECHO. LH /L:2 C:\MOUSE\MOUSE LH /L:1 C:\DOS\DOSKEY /INSERT ECHO. LH /L:2 C:\DOS\NLSFUNC C:\DOS\COUNTRY.SYS PROMPT $_ $e[1;37;41m-|--$e[33;40m $p$g PATH C:\DOS;C:\WINDOWS;C:\SB16 SET DIRCMD=/P /A SET TEMP=C:\TEMP SET TMP=C:\TEMP SET TZ=CET-1CDT,3,-1,0,7200,10,-1,0,10800,3600 SET SOUND=C:\SB16 SET BLASTER=A220 I5 D1 H5 P330 T6 SET MIDI=SYNTH:1 MAP:G C:\SB16\DIAGNOSE /S C:\SB16\SB16SET /P |
/L: indicates in which UMB block the driver/program shall be loaded.
/V indicates that the driver/program shall display extended information on the screen when loading.
If the Upper Memory in the address interval C800 to EFFF is unbroken, it should now, depending on the memory requirements for the CD-ROM and Mouse drivers, be possible to load all drivers and resident programs in Upper Memory, giving approximately 611 Kb free memory (can be checked with the command: MEM /C).
An unbroken Upper Memory area is among other depending on the computers BIOS, the installed videocard and other plug-in cards installed in the computer.
NOTE! | |
The order of the lines should not be altered. The order above
provides the best utilization of the Upper Memory. |
If there is not 611 Kb of free memory, the MEMMAKER program can be tried, but this program cannot always improve the memory utilization, and some times it becomes worse. Especially KEYB.COM can cause problems.
Also look at the chapter: More Upper Memory with EMM386.
The setup above will work with IBM's DOS as well. The resident programs in version 7.00 typically uses a little lesser memory than the ones of MS-DOS 6.22, and IBM's DOS versions are translated to Danish. The translation is awful in places and even more difficult to understand than the original English, but that goes for the Danish Microsoft MS-DOS version 7.x (Windows 9x) too.
Under PC DOS, the program RAMBOOST can be used for memory optimization, but this program isn't flawless either, and it is furthermore a resident program consuming memory itself.
Note that PC DOS's Smartdrive 5.00 not as standard uses write cache as MS-DOS's Smartdrive does. To obtain write caching, the drives to be cached has to be stated succeeded by a + (SMARTDRV C+ D+ E+ etc.).
PC DOS's Smartdrive 5.00 indicates that CD-ROM drives are cached. Tests with CD-Bench 1.07 states that this is not the fact when using PC DOS's MSCDEX.EXE 2.25, whereas CD-ROM drives are cached under PC DOS if MS-DOS's MSCDEX.EXE is used.
If a DOS version above DOS 5.00 is used, then the versions of HIMEM.SYS, EMM386.EXE and SMARTDRV.EXE installed by Windows in C:\ should NOT be used. Use the corresponding files in the DOS directory instead.
It can be suitable or necessary to add the following lines to the SYSTEM.INI file in the Windows directory:
SYSTEM.INI |
|
1 2 3 |
[386Enh] device=monoumb.386 SystemROMBreakPoint=FALSE MaxBPs=768 |
If there is not enough Upper Memory for all drivers and TSR programs, then line 11 can be extended to:
DEVICE=C:\DOS\EMM386.EXE RAM I=B000-B7FF HIGHSCAN FRAME=C800 /MIN=0 /V
HIGHSCAN tells the Memory Manger to search the system area (F000-FFFF) for unused memory, and FRAME=C800 places the page frame in the start of Upper Upper Memory Block number 2 (UMB 2), and thereby increases the probability for an unbroken UMB 2 from D000 and up.
Depending on the BIOS this might cause the computer to hang during bootup! First try removing the FRAME=C800 statement. This might lead to a third UMB block placed after the page frame. If this is the case, some of the drivers and/or TSR programs must be loaded into UMB 3 using a DEVICEHIGH /L:3 = or a LH /L:3 statement. If removing the FRAME=C800 statement still causes the computer to hang, then the HIGHSCAN statement must be removed as well. Then it is not likely that any more Upper Memory can be gained using EMM386
It is possible that the computer works alright in DOS, but that Windows 9x cannot start when HIGHSCAN is used.
If HIGHSCAN cannot be used, then perhaps an alternative Memory Manager can be used instead to obtain more Upper Memory.
If there is a demand for more Upper Memory, an investment can be made in an alternative Memory Manager, as for instance Quarterdecks QEMM386. This manager can typically give 32 Kb or more extra Upper Memory, an DOS will typically run 20% faster than with the Memory Manager provided by MS-DOS or PC DOS!!!
I use QEMM386 v. 8.03 with MS-DOS 6.22 myself, and my CONFIG.SYS, AUTOEXEC.BAT and DOS-UP.DAT files looks like the following. Here might be something to obtain for other QEMM386 users. The setup also shows how to make a startup menu with two configurations - one for running with QEMM386, which starts by default after 2 seconds, and one for running with EMM386:
CONFIG.SYS |
[menu] MENUITEM=qemm,Start med Quarterdeck Memory Manager MENUITEM=emm,Start med Microsoft Memory Manager MENUDEFAULT=qemm,2 MENUCOLOR=7,0 [common] NUMLOCK=OFF BREAK=ON DOS=HIGH,UMB FILES=90 FCBS=1,0 BUFFERS=10,0 LASTDRIVE=J STACKS=9,256 COUNTRY=045,865,C:\DOS\COUNTRY.SYS [qemm] DEVICE=C:\QEMM\DOSDATA.SYS DEVICE=C:\QEMM\QEMM386.SYS R:1 RAM DEVICE=C:\QEMM\DOS-UP.SYS @C:\DOS-UP.DAT DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\QEMM\QDPMI.SYS SWAPFILE=DPMI.SWP SWAPSIZE=1024 DEVICE=C:\QEMM\LOADHI.SYS /R:1 C:\VIDEO\EANSI.SYS DEVICE=C:\QEMM\LOADHI.SYS /R:1 C:\DOS\DISPLAY.SYS CON=(EGA,,2) DEVICE=C:\QEMM\LOADHI.SYS /R:1 C:\WINDOWS\IFSHLP.SYS DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\CDROM\TEAC_CDI.SYS /D:MSCD000 DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\SB16\DRV\CTSB16.SYS /UNIT=0 /BLASTER=A:220 I:5 D:1 H:5 DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\SB16\DRV\CTMMSYS.SYS DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\DOS\INTERLNK.EXE /AUTO /LPT1 /NOPRINTER rem DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\DOS\RAMDRIVE.SYS 32767 /E SHELL=C:\QEMM\LOADHI.COM /R:2 C:\DOS\COMMAND.COM C:\DOS\ /E:2048 /P [emm] DEVICE=C:\DOS\HIMEM.SYS /TESTMEM:OFF /V DEVICE=C:\DOS\EMM386.EXE RAM I=B000-B7FF I=C800-EFFF HIGHSCAN FRAME=C800 /MIN=0 /V DEVICEHIGH /L:1 =C:\VIDEO\EANSI.SYS DEVICEHIGH /L:1 =C:\DOS\DISPLAY.SYS CON=(EGA,,2) DEVICEHIGH /L:1 =C:\WINDOWS\IFSHLP.SYS DEVICEHIGH /L:1 =C:\CDROM\TEAC_CDI.SYS /D:MSCD000 DEVICEHIGH /L:2 =C:\SB16\DRV\CTSB16.SYS /UNIT=0 /BLASTER=A:220 I:5 D:1 H:5 DEVICEHIGH /L:2 =C:\SB16\DRV\CTMMSYS.SYS DEVICEHIGH /L:2 =C:\DOS\INTERLNK.EXE /AUTO /LPT1 /NOPRINTER SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:2048 /P |
AUTOEXEC.BAT |
@ECHO OFF ECHO. C:\DOS\MODE CON RATE=32 DELAY=2 C:\DOS\MODE CON CP PREP=((865 850) C:\DOS\DK.CPI) C:\DOS\MODE CON CP SEL=865 ECHO. GOTO %CONFIG% :qemm C:\QEMM\LOADHI /R:2 C:\DOS\MSCDEX /D:MSCD000 /M:18 /E /S /L:G /V ECHO. C:\QEMM\LOADHI /R:2 /LO C:\DOS\SMARTDRV 2048 128 /V C:\QEMM\LOADHI /R:2 C:\DOS\KEYB DK,865,C:\DOS\KEYBOARD.SYS ECHO. C:\QEMM\LOADHI /R:2 C:\MOUSE\MSCMOUSE /1 /A3 C:\QEMM\LOADHI /R:2 C:\DOS\DOSKEY /INSERT C:\QEMM\LOADHI /R:2 C:\DOS\NLSFUNC C:\DOS\COUNTRY.SYS ECHO. GOTO common :emm LH /L:2 C:\DOS\MSCDEX /D:MSCD000 /M:18 /E /S /L:G /V ECHO. LH /L:0;2 /S C:\DOS\SMARTDRV 2048 128 /V ECHO. LH /L:2 C:\MOUSE\MSCMOUSE /1 /A3 LH /L:2 C:\DOS\KEYB DK,865,C:\DOS\KEYBOARD.SYS LH /L:2 C:\DOS\DOSKEY /INSERT LH /L:2 C:\DOS\NLSFUNC C:\DOS\COUNTRY.SYS ECHO. :common PROMPT $_ $e[1;37;41m-|--$e[33;40m $p$g PATH C:\DOS;C:\QEMM;D:\WINDOWS;C:\BAT;C:\NORTON;C:\TOOLS;C:\PCTOOLS SET DIRCMD=/P /A SET TEMP=E:\TEMP SET TMP=E:\TEMP SET SVGA=/g SET AUTOBASE=/LYD18 /COM2 SET SOUND=C:\SB16 SET BLASTER=A220 I5 D1 H5 P330 T6 SET MIDI=SYNTH:1 MAP:G SET PCTOOLS=C:\PCTOOLS\DATA SET TZ=CET-1CDT,3,-1,0,7200,10,-1,0,10800,3600 SET IEPPP=C:\IEXPLORE SET PCTCP=C:\IEXPLORE\PCTCP.SHV SET PATH=%PATH%;C:\IEXPLORE C:\VIDEO\VMODE 640-72 C:\VIDEO\VMODE 800-72 C:\VIDEO\VMODE 1024-70 C:\VIDEO\VMODE 1280-60 C:\SB16\SB16SET /P C:\NORTON\TM START /N C:\TOOLS\AUTOTIME /EU C:\TOOLS\PRINTCP /Q C:\AUTOBASE\AUTOBASE /HUSK+ CALL C:\BAT\BOOTLOG CALL C:\BAT\START CALL C:\BAT\MENU |
DOS-UP.DAT |
|
DOSDATA=1 FILES=1 FCBS=1 LASTDRIV=1 INSTALL=1 STACKS=1 WKBUFFER=1 IFS=1 |
In this file it is stated in which UMB, FILES,BUFFERS etc. shall be loaded. This gives an opportunity of manually filling up small unused UMB areas. IFS= only works with MS-DOS 7.00 |
This results in 632 Kb free memory with QEMM386 and 607 Kb free memory with EMM386.
Furthermore there is now room in Upper Memory for the two drivers C:\SB16\DRV\CTSB16.SYS and C:\SB16\DRV\CTMMSYS.SYS, which makes it possible to playback WAV, MID, CMF and VOC soundfiles under DOS, using the program C:\SB16\PLAY.EXE. These drivers are provided with the Sound Blaster 16 soundcard.
If there is not enough Upper Memory for all drivers and resident programs, the line: DEVICE=C:\QEMM\QEMM386.SYS R:1 RAM can be expanded with the parameter: ST:F (safest) or ST:M (this should be tested with the Quarterdeck OPTIMIZE program).
If DoubleSpace, DriveSpace or Stacker disk compression is used, then the parameter: DBF=2 HAS to be added to the line mentioned above.
If there is not 632 Kb of free memory with QEMM386, the OPTIMIZE program can be tried, but this program cannot always improve the memory utilization, and some times it becomes worse. Especially KEYB.COM can cause problems.
If the computer hangs under startup after an apparently successful OPTIMIZE, it might be because OPTIMIZE has added squeezing to the LOADHI procedure for some of the programs. Boot again and press F5. Then run the following command: C:\QEMM\OPTIMIZE /NOSQT /NOSQF. This starts OPTIMIZE with Temporary- and Frame squeezing turned off.
If version 7.x of Quarterdeck is used, it can not be recommended to use DEVICE=C:\QEMM\DOSDATA.SYS, because there will be SO MUCH free memory, that some programs (Windows, among others) refuses to start. In most instances you can circumvent this by starting the programs with the MS-DOS LOADFIX program. Version 8.x of Quartedeck seems to take hand of the problem by itself.
If Stacker version 3.x or 4.x is used, the following can be entered into CONFIG.SYS, AUTOEXEC.BAT and STACKER.INI. Stacker is presumed installed in C:\STACKER, and there is two physical harddisks (C: and D:).
CONFIG.SYS |
|
. . DEVICE=C:\QEMM\QEMM386.SYS R:1 RAM DBF=2 ST:F DEVICE=C:\QEMM\DOS-UP.SYS @C:\QEMM\DOS-UP.DAT DEVICE=C:\QEMM\LOADHI.SYS /R:2 C:\STACKER\STACHIGH.SYS . . |
ST:F for more UMB. Loads Stacker in UMB. |
AUTOEXEC.BAT |
|
. . C:\QEMM\LOADHI /R:2 /LO C:\DOS\SMARTDRV 2048 128 /V C:\STACKER\CHECK /WP . . |
Checks the Stacker drives. |
STACKER.INI |
|
/DIR=C:\STACKER\ /P=1 /EMS /-AUTO /Q- C:\STACVOL.DSK,SW D:\STACVOL.DSK,SW |
States in which directory Stacker is installed. Sets the compression to minimum (fastest). Loads the Stacker buffers in EMS (64 Kb). Turns off automatic stacking of floppy-drives. Turns on displaying the loading of the Stacker drives. States the name of the 1.st Stacker file and swaps drive C: and E: States the name of the 2.nd Stacker file and swaps drive D: and F: |
The Quarterdeck parameter: DBF=2 HAS to be used with Stacker.
It is best to use Stacker with minimum compression, and then at regular intervals run a full optimization with maximal compression by means of the command: C:\STACKER\SDEFRAG /R /SU. This may last up to 1 hour for a Stacker file of 512 Mb.
With Stacker 4.x the DEVICE=C:\STACKER\DPMS.EXE statement can be used in CONFIG.SYS to create DPMS memory, in which Stacker can be loaded, but this might cause problems with other programs as for instance PKZIP or QEMM386 with Stealth (ST:F / ST:M). DPMS can also NOT be used if 32-bit file access to the compressed drives is wanted under Windows. So if EMS memory is available, it is better to use this, than to use DPMS memory.
If you do not want to compress your harddisk, you can often obtain more space by partitioning the disk by means of the program FDISK.EXE. This reduces the amount of space wasted by each of the files on the disk.
The amount of wasted space is among other things dependent on the size of the disk, as the waste is bigger on large disks, because DOS has to use larger clusters (allocation units) on large disks than on small disks.
One file always takes up a whole number of clusters, and therefore a file of just 1 byte will use 16.384 bytes = 1 cluster on a harddisk of 1023 Mb and 32.768 bytes on a harddisk bigger than 1023 Mb! The average waste of space on a harddisk bigger than 1023 Mb will be 40% !!, while the waste on a harddisk between 512 and 1023 Mb will be 20%, and on a harddisk of 511 Mb it will only be about 10%. Smaller files typically results in more waste of space, as do large numbers of directories and subdirectories, because these also occupy 1 cluster each.
If you have 2 harddisks, both partitioned to 2 drives, then the first harddisk (harddisk 0) will contain the logical drives C: and E:, while the other harddisk (harddisk 1) will contain the logical drives D: and F: after the partitioning. During the partitioning it is important to remember to set the primary partition on disk 0 to be the active partition, otherwise drive C: will not be bootable
NOTE! | |
By using FDISK all data on the harddisk are lost, so before using
FDISK all data has to be BACKED UP, ready for reinstalling afterwards. After running FDISK the drives has to be formatted again. Drive C: is formatted with the command: A:\FORMAT C: /U /S while the other drives are formatted with the command: A:\FORMAT drive: /U Don't forget to make a bootable diskette before the partitioning by means of the command: FORMAT A: /U /S and to copy the files FDISK.EXE and FORMAT.COM to this diskette. Other files that should be copied to the boot diskette are: SYS.COM, CHKDSK.EXE, KEYB.COM, KEYBOARD.SYS, ATTRIB.EXE and MEM.EXE. |
Commercial- and shareware-programs that can make disk partitioning without loss of data are available, for example PowerQuest's PartitionMagic.
The OEM Service Release 2 (OSR2) version of Windows 95 uses FAT32 instead of the previously used FAT16 file system. FAT32 uses smaller clusters (typically 4.096 bytes) and supports harddisk partitions of a size up to 2 Terrabytes (2048 Gb), whereas FAT16 only could handle harddisk partitions with sizes up to 2 Gb.
Because of the smaller clustersize used by FAT32, there is no longer the same need for harddisk partitioning in order of reducing the amount of wasted disk space. However, if you have a large harddisk (4 Gb or more), harddisk partitioning can still give you a better overview of your folders and files.
OEM stands for: "Original Equipment Manufacturer", which means that the OSR2 version of Windows 95 can only be purchased in conjunction with buying a new computer (or sometimes when buying a new harddisk).
NOTE! | |
You can NOT just update an existing Windows 95 with the OSR2 version.
Because of FAT32 the harddisk has to be partitioned and formatted again, and Windows 95
and all your applications has to be reinstalled. |
With Windows 98 it is possible to convert a FAT16 partition to FAT32.
|
|