home *** CD-ROM | disk | FTP | other *** search
-
- ** Programmer's Technical Reference for MSDOS and the IBM PC **
- USA copyright TXG 392-616 ALL RIGHTS RESERVED
- ──────────────────────────┤ DOSREF (tm) ├───────────────────────────
- ISBN 1-878830-02-3 (disk-based text)
- Copyright (c) 1987, 1993 Dave Williams
- ┌─────────────────────────────┐
- │ Shareware Version, 05/25/93 │
- │ Please Register Your Copy │
- └─────────────────────────────┘
-
- C H A P T E R O N E
-
- DOS AND THE IBM PC
-
-
- C O N T E N T S
-
- Some History ................................................... 1**1
- What is DOS? ................................................... 1**2
- Other Operating Systems ........................................ 1**3
- Specific Versions of MS/PC-DOS ................................. 1**4
- The Operating System Heirarchy ................................. 1**5
- DOS Structure .................................................. 1**6
- DOS Initialization ............................................. 1**7
-
-
-
- Some History ................................................... 1**1
-
- Development of MSDOS/PCDOS began in October 1980, when IBM began
- searching the market for an operating system for the yet-to-be-
- introduced IBM PC.
-
- IBM had originally intended to use Digital Research's (actually,
- they had the somewhat pretentious name of "Intergalactic Digital
- Research" at the time) CP/M was then the industry standard operating
- system - you either ran a BASIC with disk functions, someone's
- proprietary OS, or CP/M.
-
- Folklore reports various stories about the rift between DRI and IBM.
- The most popular story claims Gary Kildall or DRI snubbed the IBM
- executives by flying his airplane when the meeting was scheduled.
- Another story claims Kildall didn't want to release the source for
- CP/M to IBM, which would be odd, since they released it to other
- companies. One noted industry pundit claims Kildall's wife killed the
- deal by insisting on various contract changes. I suspect the deal was
- killed by the good ol' boy network. It's hard to imagine a couple of
- junior IBM executives giving up when ordered to a task as simple as
- licensing an operating system from a vendor. It wouldn't look good on
- their performance reports. It would be interesting to hear IBM's
- story...
-
- IBM then talked to a small company called Microsoft. Microsoft
- was a language vendor. Bill Gates and Paul Allen had written
- Microsoft BASIC and were selling it on punched tape or disk to early
- PC hobbyists, which was probably a step up from the company's original
- name and goal - they were Traf-O-Data before, making car counters for
- highway departments.
-
- Microsoft had no 8086 real operating system to sell, but quickly made
- a deal to license Seattle Computer Products' 86-DOS operating system,
- which had been written by Tim Paterson earlier in 1980 for use on that
- company's line of 8086, S100 bus micros. 86-DOS (also called QDOS, for
- Quick and Dirty Operating System) had been written as more or less a
- 16-bit version of CP/M, since Digital Research was showing no hurry in
- introducing CP/M-86. Paterson's DOS 1.0 was approximately 4000 lines of
- assembler source.
-
- This code was quickly polished up and presented to IBM for
- evaluation.
-
- IBM found itself left with Microsoft's offering of "Microsoft Disk
- Operating System 1.0". An agreement was reached between the two, and
- IBM agreed to accept 86-DOS as the main operating system for their new
- PC. Microsoft purchased all rights to 86-DOS in July 1981, and "IBM
- Personal Computer DOS 1.0" was ready for the introduction of the IBM
- PC in October 1981. IBM subjected the operating system to an
- extensive quality-assurance program, reportedly found well over 300
- bugs, and decided to rewrite the programs. This is why PC-DOS is
- copyrighted by both IBM and Microsoft.
-
- Some early OEM versions of DOS had different names, such as Compaq-
- DOS, Z-DOS, Software Bus 86, etc. By version 2 Microsoft managed to
- persuade everyone but IBM to refer to the product as "MS-DOS."
-
- It is sometimes amusing to reflect on the fact that the IBM PC was
- not originally intended to run MS-DOS. The target operating system at
- the end of the development was for a (not yet in existence) 8086
- version of CP/M. On the other hand, when DOS was originally written
- the IBM PC did not yet exist! Although PC-DOS was bundled with the
- computer, Digital Research's CP/M-86 would probably have been the main
- operating system for the PC except for two things - Digital Research
- wanted $495 for CP/M-86 (considering PC-DOS was essentially free) and
- many software developers found it easier to port existing CP/M
- software to DOS than to the new version of CP/M.
-
- The IBM PC shipped without an operating system. IBM didn't start
- bundling DOS until the second generation AT/339 came out. You could
- order one of three operating systems for your PC, assuming you popped
- for the optional disk drive and 64k RAM upgrade (base models had 16k
- and a cassette player port). These operating systems were IBM
- Personal Computer DOS 1.0, a version of the UCSD p-System, which was
- an integrated Pascal operating system something like the souped-up
- BASIC operating systems used by the Commodore 64 and others, or
- Digital Research's CP/M-86, which was officially an option although
- you couldn't buy it until later. Since IBM's $39.95 DOS was far
- cheaper than anyone else's alternative, darned near everyone bought
- DOS.
-
- The upgrade from DOS 3.3 to 4.0 was done in-house by IBM. DOS 4.0
- was a completely IBM product, later licensed back to Microsoft. In
- early 1990 IBM announced that it was ceasing development of DOS and
- all further work would be done solely by Microsoft.
-
- Microsoft Press' "MSDOS Encyclopedia" shows a reproduction of a late
- DOS 1.25 OEM brochure. Microsoft was touting future enhancements to
- 1.25 including Xenix-compatible pipes, process forks, and
- multitasking, as well as "graphics and cursor positioning, kanji
- support, multi-user and hard disk support, and networking." Microsoft
- certainly thought big, but, alas, the forks, multitasking, and
- multiuser support never came about, at least in US versions of DOS.
- Oddly, the flyer claims:
-
- "MS-DOS has no practical limit on disk size. MS-DOS uses 4-byte XENIX
- OS compatible pointers for file and disk capacity up to 4 gigabytes."
-
- Umm... yeah. One sort of gets the idea nobody at Microsoft had a
- hard disk larger than 32 megabytes...
-
- For the record they actually delivered:
-
- Xenix-compatible pipes:
- DOS 2.0 ("|" operator)
-
- process forks, and multitasking:
- eDOS 4.0 (not delivered in the US)
-
- multi-user:
- never delivered
-
- graphics and cursor positioning:
- DOS 2.0 (ANSI.SYS)
-
- kanji support:
- DOS 2.01, 2.25 (double-byte character set)
-
- hard disk support:
- DOS 2.0 (subdirectories)
-
- networking:
- DOS 3.1 (file locking support MS Networks)
- DOS 6.0 (bundled Interlink in with DOS)
-
- Early Microsoft ads pumped DOS' Xenix-like features and promised
- Xenix functionality in future releases.
-
- We'll probably never know what the real story was behind eDOS/DOS 4/
- DOS 5/286DOS/OS2. Microsoft had announced their intent to build a
- multitasking, multiuser version of MSDOS as early as 1982. They
- shipped betas of "DOS 4.0" in '86 and early '87, before 3.3 was even
- announced. Microsoft UK announced they had licensed 4.0 to Apricot
- Computer, and the French Postal Service was supposed to be running it.
- I've never been able to find out if Apricot ever shipped any 4.0 to
- end users.
-
- Despite Gordon Letwin's acid comments about problems with the 80286
- processor, I doubt the '286 was the barrier between users and a
- multitasking MS-DOS. I also doubt there was any shortage of
- programming talent at Microsoft - Digital Research's Concurrent DOS
- and Software Link's PC-MOS/386 were developed without undue trouble.
-
-
- MSDOS and PC-DOS have been run on more than just the IBM-PC and
- clones. Some of the following have been done:
-
- Hardware PC Emulation:
-
- Apple II -> TransPC 8088 board
- Apple MacIntosh -> AST 80286 board
- Atari 400/800 -> Co-Power 88 board
- Atari ST -> PC-Ditto II cartridge
- Amiga 2000 -> 8088 or A2286D 80286 Bridge Board
- IBM PC/RT -> 80286 AT adapter
- Kaypro 2 -> Co-Power Plus board
-
- Software PC Emulation:
-
- Apple MacIntosh -> SoftPC
- Atari ST -> PC-Ditto I
- IBM RS/6000 -> DOS emulation
-
- DOS Emulation:
-
- AIX (IBM RS/6000) -> DOS emulation with "PCSIMulator"
- OS/2 1.x -> DOS emulation in "Compatibility Box"
- OS/2 2.x -> executes Virtual DOS Machine
- QNX -> DOS window
- SunOS -> DOS window
- Xenix -> DOS emulation with DOSMerge
-
-
- What Is DOS?.................................................... 1**2
-
- DOS exists as a high-level interface between an application program
- and the computer. DOS stands for "Disk Operating System", which
- reflects the fact that its main original purpose was to provide an
- interface between the computer and its disk drives.
-
- DOS now lets your programs do simple memory management, I/O from the
- system console, and assorted system tasks (time and date, etc) as well
- as managing disk operations. Versions 3.1 and up also incorporate
- basic networking functions.
-
- With the introduction of installable device drivers and TSR
- (terminate but stay resident) programs in DOS 2.0, the basic DOS
- functions may be expanded to cover virtually any scale of operations
- required.
-
-
- Other Operating Systems ........................................ 1**3
-
- There are a number of compatible replacements for Microsoft's MSDOS.
- Some are:
-
- Alloy 386 Multiware (multitasking control prog,
- licensed DOS)
- Consortium Technologies MultiDOS (multitasking, multiuser)
- Digital Research Concurrent DOS (multitasking)
- Digital Research Concurrent DOS 386 (for 80386 computers)
- Digital Research Concurrent DOS XM (multitasking, multiuser)
- Digital Research DR-DOS (PC-DOS clones)
- Digital Research Multiuser DOS (multitasking, multiuser)
- PC-MOS/386 (multitasking, multiuser)
- Wendin-DOS (multitasking, multiuser)
- VM/386 (multitasking)
- X-DOS (DOS 3.31 compatible)
-
- Various other operating systems are available for the IBM PC. These
- include:
-
- Digital Research CP/M-86
- Digital Research Concurrent CP/M-86 (multitasking)
- Minix (multitasking UNIX workalike)
- Pick (database-operating system)
- QNX (multitasking, multiuser)
- UCSD p-System (Pascal interpreter and operating system)
- UNIX (various systems from IBM itself, Microsoft-SCO, Bell, and
- various UNIX clones, single and multi user, such as AIX,
- Xenix, AT&T System V, etc.)
-
- "Shell" programs exist which use DOS only for disk management while
- they more or less comprise a new operating system. These include:
-
- DESQview Windows OmniView
- GEM TopView TaskView
- GeoWorks
-
-
- TopView and TaskView (later called OmniView) and Omniview are no
- longer sold.
-
- Systems using the NEC V-series CPUs can execute Intel 8080/8085 8-bit
- instructions as well as the 16-bit 8088-up instructions. They can run
- standard Digital Research 8-bit CP/M and MP/M directly, as well as
- other operating systems developed for that processor.
-
-
-
- Specific Versions of MS/PC-DOS ................................. 1**4
-
- DOS 1.x is essentially 86-DOS. DOS 2.x kept the multiple file layout
- (the two hidden files and COMMAND.COM) but for all practical purposes
- is an entirely different operating system with backwards compatibility
- with 1.x. I seriously doubt there has been much code from 1.x
- retained in 2.x. DOS 3.x is merely an enhancement of 2.x; there seems
- little justification for jumping a whole version number. The disk
- handling routines were considerably extended in 3.1, allowing disk
- access in a "virtual" fashion, independent of whether the drive was a
- local or network device. DOS 4.0, originating as it did from outside
- Microsoft, can justify a version jump. Unfortunately, 4.0 seemed to
- have very little reason to justify its existence - virtually all of
- its core features could be found in one version or another of DOS 3.x.
- According to Microsoft's Gordon Letwin, DOS 5.0 was a complete rewrite
- with the kernel done in hand optimized assembly language.
-
- DOS version nomenclature: major.minor.minor. The digit to the left
- of the decimal point indicates a major DOS version change. 1.0 was
- the first version. 2.0 added support for subdirectories, 3.0 added
- support for networking, 4.0 added some minimal support for Lotus-
- Intel-Microsoft EMS.
-
- The first minor version indicates customization for a major
- application. For example, 2.1 for the PCjr, 3.3 for the PS/2s. The
- second minor version does not seem to have any particular meaning.
-
- The main versions of DOS are:
-
- 86-DOS February 1981 Paterson's Quick'n'Dirty DOS first runs
- on IBM's wirewrapped PC prototype
-
- PC-DOS 1.0 August 1981 original IBM release
-
- PC-DOS 1.05 -------- ---- fixes to BASIC interpreter
-
- PC-DOS 1.1 June 1982 bugfix, double sided drive support
-
- MS-DOS 1.25 July 1982 for early compatibles. This is the first
- non-IBM OEM version
-
- PC-DOS 2.0 March 1983 for PC/XT, Unix-type subdirectory support,
- installable device drivers, I/O
- redirection, subdirectories, hard disk
- support, handle calls
-
- PC-DOS 1.85 April 1983 internal IBM - extended 1.1 - not released
- I found a copy of this one on an old
- diskette. It added a whole host of
- features, including an enhanced COMMAND.COM
- with command line editing. Too bad none
- of the goodies made it into DOS 2.0!
-
- MS-DOS 2.01 -------- 1983 first support for individual country
- formats, Kanji
-
- PC-DOS 2.1 October 1983 for IBM PCjr, bugfixes for 2.0.
- No country support
-
- MS-DOS 2.11 December 1983 basically a cross of PC-DOS 2.1 and
- MS-DOS 2.01
-
- MS-DOS 2.12 -------- ---- special version for TI Professional
- (nonstandard video and keyboard)
-
- PC-DOS 3.0 August 1984 1.2 meg drive for PC/AT, some new system
- calls, new external programs, 16-bit FAT,
- specific support for IBM network
-
- MS-DOS 3.05 November 1984 first OEM version of 3.x
-
- PC-DOS 3.1 November 1984 bugfix for 3.0, implemented generic
- network support
-
- MS-DOS 2.25 October 1985 extended foreign language support
-
- PC-DOS 3.2 January 1986 720k 3.5 inch drive support, special
- support for laptops (IBM PC Convertible),
- XCOPY
-
- MS-DOS 4.0 April 1986 multitasking (Europe only) - withdrawn
- from market after a very short run
-
- PC-DOS 3.3 April 1987 for PS/2 series, 1.44 meg support,
- multiple DOS partition support, code page
- switching, improved foreign language
- support, some new function calls, support
- for the AT's CMOS clock.
-
- MS-DOS 3.31 November 1987 over-32 meg DOS partitions. Different
- versions from different OEMs (not
- Microsoft). Compaq and Wyse are most
- common.
-
- PC-DOS 3.4 -------- ---- internal IBM - not released (4.0
- development)
-
- MS-DOS 2.11R -------- 1988 bootable ROM DOS for Tandy machines
-
- PC-DOS 4.0 August 1988 32mb disk limit officially broken, minor
- EMS support, more new function calls,
- enhanced network support for external
- commands. PCjr support dropped.
-
- MS-DOS 4.01 January? 1989 Microsoft version with some bugfixes
-
- MS-DOS 3.21R September1989 DOS in ROM, Flash File System for laptops
-
- MS-DOS 3.3R -------- 1990 DOS in ROM, introduced for TI laptops
-
- MS-DOS 5.0 June 1991 high memory support, uses up to 8 hard
- disks, command line editor and aliasing,
- 2.88 floppies, ROMable OEM kit available
-
- MS-DOS V February 1993 Japanese-market version of 5, with double
- byte Kanji character support
-
- MS-DOS 6.0 March 1993 disk compression (Doublespace), multiple
- configurations in CONFIG.SYS
-
-
- IBM's PC-DOS was long considered to be the "standard" version of DOS.
- Now that MS 5.0 is a commercial product most developers will probably
- write to it.
-
- Microsoft's policy was once to sell DOS only to OEMs. Despite this,
- they sold small quantities of DOS 3.2, 3.3, and 4.0 without
- insurmountable difficulties. DOS 5.0 was conceived from the beginning
- as an over-the-counter retail product.
-
- Incidentally, IBM refers to its DOS as "The IBM Personal Computer
- DOS." The term "PC-DOS" is a trademark of IBM's rival DEC.
-
- Some versions of MS-DOS varied from PC-DOS in the available external
- commands. Some OEMs only licensed the basic operating system code (the
- xxxDOS and xxxBIO programs, and COMMAND.COM) from Microsoft, and
- either wrote the rest themselves or contracted them from outside
- software houses like Phoenix. Most of the external programs for DOS
- 3.x and 4.x are written in "C" while the 1.x and 2.x utilities were
- written in assembly language. Other OEMs required customized versions
- of DOS for their specific hardware configurations, such as Sanyo 55x
- and early Tandy computers, which were unable to exchange their DOS
- with the IBM version.
-
- PC-DOS 3.0 was extremely buggy on release. It did not handle the DOS
- environment correctly and there were numerous documented problems with
- the batch file parser. The network support code was also
- nonfunctional in that DOS version. It is recommended that users
- upgrade to at least version 3.1.
-
- DEC MS-DOS versions 2.11 for the Rainbow had the ANSI.SYS device
- driver built into the main code. The Rainbow also used a unique quad
- density, single-sided floppy drive and its DOS had special support for
- it.
-
- IBM had a version 1.85 of PC-DOS in April 1983, after the
- introduction of DOS 2.0. It was evidently for internal use only,
- supported multiple drive file searches (a primitive form of PATH),
- built in MODE sommands for screen support, a /P parameter for TYPE for
- paused screens, an editable command stack like the public domain
- DOSEDIT.COM utility, and could be set up to remain completely resident
- in RAM instead of a resident/transient part like normal DOS. It is a
- pity some of the neat enhancements didn't make it into DOS 2.0. IBM
- also had an "internal use only" version 3.4, evidently used while
- developing DOS 4.0.
-
- Digital Research's DR-DOS is the first widely available DOS clone.
- Version 3.4, released in June 1988, was the one first available to the
- American public. It was somewhat buggy and its use is not recommended.
- DR 3.41 is extremely compatible and its use should pose no problems on
- any machine. DR-DOS 5.0 (released May, 1990) is functionally
- equivalent to MS-DOS 5.0. For all practical purposes, MS 5.0 is a
- clone of DR 5.0, since DR beat MS to market by over a year. According
- to Greg Ewald, DRI's DR-DOS product manager, DR-DOS was developed from
- Concurrent DOS 386 with the multiuser and multitasking code stripped
- out. DR-DOS 6.0 was introduced in December 1991, and added disk
- compression via bundling the third-party SuperStor program. Novell DOS
- 7.0 (DRI sold out to Novell) in March 1993, at the same time as MS-DOS
- 6.0. Novell one-upped Microsoft by tossing in their Netware Lite with
- their DOS.
-
- Some versions of DOS used in compatibles do not maintain the 1.x,
- 2.x, ... numbering system. Columbia Data Products computers labeled
- DOS 1.25 as DOS 2.0. Early Compaqs labeled DOS 2.0 as DOS 1.x. Other
- versions incorporated special features - Compaq DOS 3.31 and Wyse DOS
- 3.21 both support >32mb disk partitions in the same fashion as DOS
- 4.x.
-
- AT&T DOS 3.1 differs from generic MS-DOS 3.10 in its use of cluster-
- size and file allocation table structures. AT&T DOS appears to use
- rules not from version 3, but rather those from version 2.
-
- Epson Equity III and ComputerLand 3.10 DOS's appear to use cluster
- techniques that are a cross between versions 2 and 3. On type DOS
- partitions, these DOS's use 3.x rules if the partition is larger than
- 32,680 sectors in total size. This implies 16 bit FAT entries as well.
- On partitions below this size, they will use 2.x rules, including the
- 12 bit FAT entries.
-
- Zenith DOS 3.x and Wyse DOS 3.2 have a builtin internal device driver
- to handle up to 4 32Mb DOS partitions on a single hard disk. Wyse DOS
- 3.31 will handle single partitions up to 512Mb with a 32-bit FAT.
-
- According to PC Week Magazine, July 4, 1988, Arabic versions of MS-
- DOS are shipping with a hardware copy-protection system from Rainbow
- Technologies. This is similar to the short-lived system used by
- AutoCAD 2.52 and a very few other MS-DOS programs, where an adapter
- block is plugged into the parallel port and software makes use of
- coded bytes within the block. This type of copy protection has been
- common on Commodore products for several years, where it is called a
- "dongle."
- The AutoCAD dongle was defeated by a small program written within
- weeks of version 2.52's debut. Version 2.62 was released 3 months
- later, without the dongle. The DOS dongle will, however, prevent the
- system from booting at all unless it is found.
- This makes the Arabic version of MSDOS the first copy-protected
- operating system, a dubious distinction at best. The modifications to
- the operating system to support the dongle are not known at this time.
- Frankly, it would seem that burning the operating system into ROMs
- would be cheaper and simpler.
-
- Versions of DOS sold in Great Britain are either newer than those
- sold in the US or use a different numbering system. DOS 3.4, 4.0,
- 4.1, 4.2, and 4.3 had been released there between the US releases of
- 3.3 and 4.0.
- MSDOS 4.0 (eDOS) was introduced in mid-1987 in Europe (at SICOB in
- Paris and sometime earlier by Apricot Computer in the UK). It offered
- multitasking provided applications were specially written for it.
- David Fraser (Microsoft UK Managing Director) is on record saying
- that "DOS 4.0 is unlikely to set the world alight and is of interest
- only to specific OEMs who want its features for networking and
- communications." Standard DOS applications will run under DOS 4.x as
- a foreground task according to uncertain information. It differs from
- earlier versions only in allowing background tasks to run. For
- further information, see Chapter 4.
-
- Microsoft changed their OEM licensing agreements between DOS versions
- 2.x and 3.x. OEM versions of DOS 3.x must maintain certain data areas
- and undocumented functions in order to provide compatibility with the
- networking features of the operating system. For this reason, TSR
- programs will be much more reliable when operating under DOS 3.x.
-
- Several versions of DOS have been modified to be run out of ROM. The
- Sharp PC5000 had MSDOS 1.25 in ROM, and the Toshiba 1000 and some
- Tandy 1000 models have MSDOS 2.11 in ROM. In mid-September 1989
- Microsoft introduced 3.21R ROMs for laptops, and in early '90 Texas
- Instruments laptops were the first to get the 3.3R ROMs. All versions
- of Digital Research's DR-DOS are available in ROM version and Award
- Software is marketing DR-DOS cards to OEMs as a plug-in to ISA-bus
- machines.
-
- IBM's release of DOS 4.0 (and the immediate subsequent release of a
- bugfix) was a dubious step "forward." DOS 4.0 was the first version
- of DOS to come with a warranty; the catch is that IBM warranted it
- only for a very slim list of IBM-packaged software. 4.0 had some
- minor EMS support, support for large hard disks, and not much else.
- With its voracious RAM requirements and lack of compatibility with
- previous versions of DOS (many major software packages crashed under
- DOS 4.0), plus the increase in price to a cool $150, there was no
- great rush to go to that version of DOS.
-
- Microsoft undertook development of MSDOS 5.0 in early 1990,
- soliciting input from Usenet, BIX, and Compuserve among others.
- This was quite a surprise after Bill Gates had announced "DOS is dead"
- at every opportunity, trying to build support for OS/2. Alas, most of
- Microsoft's revenue came from DOS, not OS/2's few sales (at $325 per
- copy) or applications. Apparently Microsoft realized they were
- shooting themselves in the foot and that there was still plenty of
- life left in DOS. They dropped OS/2 development shortly after
- starting on DOS 5.0.
-
- 5.0 is a functional clone of Digital Research's DR-DOS 5.0. 5.0's
- compatibility was assured by what has been claimed as the largest
- beta-test program in history -in his address to the Boston Computer
- Society, Bill Gates announced over 7,500 testers were involved.
-
- There are many versions of MS-DOS 5.0. Microsoft's original
- revision reported "Revision A" when you used the at-first-undocumented
- VER/R command. There was a Revision B and C, which I have personally
- seen right out of the shrinkwrap. Microsoft has denied (at least up
- to late 1992) there ever was a B or C revision, and shortly afterward
- new copies started reporting "Revision A" no matter what the
- datestamps on the files were. IBM DOS 5.0 went through a number of
- CSDs, all of which were available for free download from their BBS in
- Atlanta (see Appendix 5) but most of the revisions related to IBM
- specific hardware problems.
-
- MS-DOS 6.0 was introduced in March 1993. It bundles some third
- party utilities and disk compression (developed from licensed code),
- but other than boot control via new CONFIG.SYS options, it doesn't add
- any new features. If it weren't for marketing reasons, it would
- probably have been called DOS 5.1.
-
-
-
- The Operating System Hierarchy ................................. 1**5
-
- The Disk Operating System (DOS) and the ROM BIOS serve as an
- insulating layer between the application program and the machine, and
- as a source of services to the application program.
-
- As the term 'system' might imply, DOS is not one program but a
- collection of programs designed to work together to allow the user
- access to programs and data. Thus, DOS consists of several layers of
- "control" programs and a set of "utility" programs.
-
- The system hierarchy may be thought of as a tree, with the lowest
- level being the actual hardware. The 8088 or V20 processor sees the
- computer's address space as a ladder one byte wide and one million
- bytes long. Parts of this ladder are in ROM, parts in RAM, and parts
- are not assigned. There are also 65,536 "ports" that the processor
- can use to control devices.
-
- The hardware is normally addressed by the ROM BIOS, which will always
- know where everything is in its particular system. The chips may
- usually also be written to directly, by telling the processor to write
- to a specific address or port. This sometimes does not work as the
- chips may not always be at the same addresses or have the same
- functions from machine to machine.
-
-
-
- DOS Structure .................................................. 1**6
-
- DOS consists of four components:
-
- * The boot record
- * The ROM BIOS interface (IBMBIO.COM, DRBIOS.SYS, or IO.SYS)
- * The DOS program file (IBMDOS.COM, DRBDOS.SYS, or MSDOS.SYS)
- * The command processor (COMMAND.COM or aftermarket replacement)
-
-
- * The Boot Record
-
- The boot record begins on track 0, sector 1, side 0 of every diskette
- prepared by the DOS FORMAT command. The boot record is placed on
- diskettes to produce an error message if you try to start up the
- system with a nonsystem diskette in drive A. For hard disks, the boot
- record resides on the first sector of the DOS partition. All media
- supported by DOS use one sector for the boot record.
-
-
- * Read Only Memory (ROM) BIOS Interface and Extensions
-
- The file IBMBIO.COM or IO.SYS is the interface module to the ROM
- BIOS. This file provides a low-level interface to the ROM BIOS device
- routines and may contain extensions or changes to the system board
- ROMs. Some compatibles do not have a ROM BIOS to extend, and load the
- entire BIOS from disk. (Sanyo 55x, Viasyn machines). Some versions
- of MSDOS, such as those from Compaq's MS-DOS and Digital Research's
- DRDOS 5.0, are named IBMBIO.COM but are not IBM files.
-
- These low-level interface routines include the instructions for
- performing operations such as displaying information on the screen,
- reading the keyboard, sending data out to the printer, operating the
- disk drives, and so on. It is the operating system's means of
- controlling the hardware. IBMBIO.COM contains any modifications or
- updates to the ROM BIOS that are needed to correct any bugs or add
- support for other types of hardware such as new disk drives. By using
- IBMBIO.COM to update the ROM BIOS on the fly when the user turns on
- their computer, IBM does not need to replace the ROM BIOS chip itself,
- but makes any corrections through the cheaper and easier method of
- modifying the IBMBIO.COM file instead.
-
- IBMBIO.COM also keeps track of hardware operations on an internal
- stack or "scratch pad" area for the operating system to save
- information such as addresses it will need, etc. An example of the
- use for this stack can be seen when running a program such as a word
- processor. If you have told the word processor to save your letter,
- it will write the data to your disk. During this time, if you start
- typing some more information, the keyboard generates a hardware
- interrupt. Since you don't want the process of writing the
- information to the disk to be interrupted, DOS allocates a slot in the
- stack for the keyboard's hardware interrupt and when it gets a chance,
- (probably after the data has been written to the disk), it can process
- that interrupt and pick up the characters you may have been typing.
- The STACKS= command in DOS 3.2+'s CONFIG.SYS file controls the number
- of stack frames available for this purpose.
-
- IBMBIO.COM also reads your CONFIG.SYS file and installs any device
- drivers (i.e. DEVICE=ANSI.SYS) or configuration commands it may find
- there.
-
-
-
- * The DOS Program
-
- The actual DOS program is the file IBMDOS.COM or MSDOS.SYS. It
- provides a high-level interface for user (application) programs. This
- program consists of file management routines, data blocking/deblocking
- for the disk routines, and a variety of built-in functions easily
- accessible by user programs.
-
- When a user program calls these function routines, they accept high-
- level information by way of register and control block contents. When
- a user program calls DOS to perform an operation, these functions
- translate the requirement into one or more calls to IBMBIO.COM,
- MSDOS.SYS or system hardware to complete the request.
-
- This section is often referred to as the "kernel" by systems
- programmers.
-
-
-
- * The Command Interpreter
-
- The command interpreter, COMMAND.COM, is the part you interact with
- on the command line. COMMAND.COM has three parts. IBM calls them the
- "resident portion", the "initialization portion" and the "transient
- portion".
-
- IBM's original documentation spoke of installing alternate command
- interpreters (programs other than COMMAND.COM) with the SHELL=
- statement in CONFIG.SYS. Unfortunately, IBM chose not to document
- much of the interaction between IBMDOS.COM and IBMBIO.COM. By the
- time much of the interaction was widely understood, many commercial
- software programs had been written to use peculiarities of COMMAND.COM
- itself.
-
- Several programs exist that perform as actual "shells" by completely
- replacing COMMAND.COM and substituting their own command interpreter
- to use with the hidden DOS files. Examples are Command Plus, a
- commercial package, and the shareware 4DOS and FlexShell packages.
- Both supply greatly enhanced batch language and editing capabilities.
-
- NOTE: DOS 3.3+ checks for the presence of a hard disk, and will
- default to COMSPEC=C:\. Previous versions default to
- COMSPEC=A:\. Under some DOS versions, if COMMAND.COM is not
- immediately available for reloading (i.e., swapping to a floppy
- with COMMAND.COM on it) DOS may crash.
-
-
- Resident Portion:
-
- The resident portion resides in memory immediately following
- IBMDOS.COM and its data area. This portion contains routines to
- process interrupts 22h (Terminate Address), 23h (Ctrl-Break Handler),
- and 24h (Critical Error Handler), as well as a routine to reload the
- transient portion if needed. For DOS 3.x, this portion also contains
- a routine to load and execute external commands, such as files with
- exensions of COM or EXE.
-
- When a program terminates, a checksum is used to determine if the
- application program overlaid the transient portion of COMMAND.COM. If
- so, the resident portion will reload the transient portion from the
- area designated by COMSPEC= in the DOS environment. If COMMAND.COM
- cannot be found, the system will halt.
-
- All standard DOS error handling is done within the resident portion
- of COMMAND.COM. This includes displaying error messages and
- interpreting the replies to the "Abort, Retry, Ignore, Fail?" message.
-
- Since the transient portion of COMMAND.COM is so large (containing
- the internal commands and all those error messages), and it is not
- needed when the user is running an application it can be overlaid that
- program if that application needs the room. When the application is
- through, the resident portion of COMMAND.COM brings the transient
- portion back into memory to show the prompt. This is why you will
- sometimes see the message "Insert disk with COMMAND.COM". It needs to
- get the transient portion off the disk since it was overlaid with the
- application program.
-
- The initialization portion of COMMAND.COM follows the resident
- portion and is given control during the bootup procedure. This
- section actually processes the AUTOEXEC.BAT file. It also decides
- where to load the user's programs when they are executed. Since this
- code is only needed during startup, it is overlaid by the first
- program which COMMAND.COM loads.
-
- The transient portion is loaded at the high end of memory and it is
- the command processor itself. It interprets whatever the user types
- in at the keyboard, hence messages such as "Bad command or file name"
- for when the user misspells a command. This portion contains all the
- internal commands (i.e. COPY, DIR, RENAME, ERASE), the batch file
- processor (to run .BAT files) and a routine to load and execute
- external commands which are either .COM or .EXE files.
-
- The transient portion of COMMAND.COM produces the system prompt,
- (C>), and reads what the user types in from the keyboard and tries to
- do something with it. For any .COM or .EXE files, it builds a command
- line and issues an EXEC function call to load the program and transfer
- control to it.
-
-
-
- DOS Initialization ............................................. 1**7
-
- The system is initialized by a software reset (Ctrl-Alt-Del), a
- hardware reset (reset button), or by turning the computer on. The
- Intel 80x8x series processors always look for their first instruction
- at the end of their address space (0FFFF0h) when powered up or reset.
- This address contains a jump to the first instruction for the ROM
- BIOS.
-
- Built-in ROM programs (Power-On Self-Test, or POST, in the IBM) check
- machine status and run inspection programs of various sorts. Some
- machines set up a reserved RAM area with bytes indicating installed
- equipment (AT and PCjr).
-
- When the ROM BIOS finds a ROM on an adapter card, it lets that ROM
- take control of the system so that it may perform any set up necessary
- to use the hardware or software controlled by that ROM. The ROM BIOS
- searches absolute addresses C8000h through E0000h in 2K increments in
- search of a valid ROM. A valid ROM is determined by the first few
- bytes in the ROM. The ROM will have the bytes 55h, AAh, a length
- indicator and then the assembly language instruction to CALL FAR (to
- bring in a "FAR" routine). A checksum is done on the ROM to verify
- its integrity, then the BIOS performs the CALL FAR to bring in the
- executible code. The adapter's ROM then performs its initialization
- tasks and hopefully returns control of the computer back to the ROM
- BIOS so it can continue with the booting process.
-
- The ROM BIOS routines then look for a disk drive at A: or an option
- ROM (usually a hard disk) at absolute address C:800h. If no floppy
- drive or option ROM is found, the BIOS calls int 19h (ROM BASIC if it
- is an IBM) or displays an error message.
-
- If a bootable disk is found, the ROM BIOS loads the first sector of
- information from the disk and then jumps into the RAM location holding
- that code. This code normally is a routine to load the rest of the
- code off the disk, or to "boot" the system.
-
- The following actions occur after a system initialization:
-
- 1. The boot record is read into memory and given control.
-
- 2. The boot record then checks the root directory to assure that the
- first two files are IBMBIO.COM and IBMDOS.COM or their OEM
- equivalents. These files must be in that order, with IBMBIO.COM
- first, with its sectors in contiguous order.
- note 1) IBMDOS.COM need not be contiguous in version 3.x+.
- 2) DR-DOS versions 3.40 through 6.0 may have DRBIOS.SYS and
- DRDOS.SYS anywhere on the hard disk.
- 3) PC-MOS/386' $$MOS.SYS file may be anywhere on the hard
- disk.
-
- 3. The boot record loads IBMBIO.COM into memory.
-
- 4. The initialization code in IBMBIO.COM loads IBMDOS.COM,
- determines equipment status, resets the disk system,
- initializes the attached devices, sets the system parameters
- and loads any installable device drivers according to the
- CONFIG.SYS file in the root directory (if present), sets the
- low-numbered interrupt vectors, relocates IBMDOS.COM downward,
- and calls the first byte of DOS.
- note 1) CONFIG.SYS may be a hidden file.
-
- 5. DOS initializes its internal working tables, initializes the
- interrupt vectors for interrupts 20h through 27h, and builds
- a Program Segment Prefix for COMMAND.COM at the lowest
- available segment. For DOS versions 3.10 up, DOS also
- initializes the vectors for interrupts 0Fh through 3Fh. An
- initialization routine is included in the resident portion and
- assumes control during startup. This routine contains the
- AUTOEXEC.BAT file handler and determines the segment address
- where user application programs may be loaded. The
- initialization routine is then no longer needed and is overlaid
- by the first program COMMAND.COM loads.
- note 1) AUTOEXEC.BAT may be a hidden file.
-
- 6. IBMDOS.COM uses the EXEC function call to load and start the top-
- level command processor. The default command processor is
- COMMAND.COM in the root directory of the boot drive. If
- COMMAND.COM is in a subdirectory or another command processor is
- to be used, it must be specified by a SHELL= statement in the
- CONFIG.SYS file. A transient portion is loaded at the high end
- of memory. This is the command processor itself, containing all
- of the internal command processors and the batch file processor.
- For DOS 2.x, this portion also contains a routine to load and
- execute external commands, such as files with extensions of COM
- or EXE. This portion of COMMAND.COM also produces the DOS prompt
- (such as "A>"), reads the command from the standard input device
- (usually the keyboard or a batch file), and executes the command.
- For external commands, it builds a command line and issues an EXEC
- function call to load and transfer control to the program.
-
- note 1) COMMAND.COM may be a hidden file.
- 2) For IBM DOS 2.x, the transient portion of the command
- processor contains the EXEC routine that loads and executes
- external commands. For MSDOS 2.x+ and IBM DOS 3.x+, the
- resident portion of the command processor contains the EXEC
- routine.
- 3) IBMDOS only checks for a file named "COMMAND.COM". It will
- load any file of that name if no SHELL= command is used.
-
-
- That pretty much covers the bootup process. After the command
- processor is loaded, it runs the AUTOEXEC.BAT file and then the user
- gets their prompt to begin working.
-
-
-