home *** CD-ROM | disk | FTP | other *** search
/ Share Gallery 1 / share_gal_1.zip / share_gal_1 / LA / LA023.ZIP / DOSREF17.ZIP / CHAPTER.001 next >
Text File  |  1990-03-21  |  24KB  |  427 lines

  1.  
  2.    **  Programmer's  Technical  Reference  for  MSDOS  and  the  IBM  PC **
  3.                         ┌─────────────────────────────┐
  4.                         │ Shareware Version, 03/21/90 │
  5.                         │  Please Register Your Copy  │
  6.                         └─────────────────────────────┘
  7.                     Copyright (c) 1987, 1990 Dave Williams
  8.  
  9.  
  10.                             C H A P T E R    O N E 
  11.  
  12.                            DOS TECHNICAL INFORMATION
  13.  
  14.  
  15. SOME HISTORY├──────────────────────────────────────────────────────────────────
  16.  
  17.  Development of MSDOS/PCDOS began in October 1980, when IBM began searching 
  18. the market for an operating system for the yet-to-be-introduced IBM PC.
  19. Microsoft had no real operating system to sell, but after some research licensed
  20. Seattle Computer Products' 86-DOS operating system, which had been written by a
  21. man named Tim Paterson earlier in 1980 for use on that company's line of 8086,
  22. S100 bus micros. 86-DOS (also called QDOS, for Quick and Dirty Operating System)
  23. had been written as more or less a 16-bit version of CP/M, since Digital
  24. Research was showing no hurry in introducing CP/M-86.
  25.  
  26.  This code was hurriedly polished up and presented to IBM for evaluation. IBM
  27. had originally intended to use Digital Research's CP/M operating system, which
  28. was the industry standard at the time. Folklore reports everything from obscure
  29. legal entanglements to outright snubbing of the IBM representatives by Digital,
  30. irregardless, IBM found itself left with Microsoft's offering of "Microsoft Disk
  31. Operating System 1.0". An agreement was reached between the two, and IBM agreed
  32. to accept 86-DOS as the main operating system for thir new PC. Microsoft 
  33. purchased all rights to 86-DOS in July 1981, and "IBM PC-DOS 1.0" was ready for
  34. the introduction of the IBM PC in October 1981. IBM subjected the operating
  35. system to an extensive quality-assurance program, found well over 300 bugs, and
  36. decided to rewrite the programs. This is why PC-DOS is copyrighted by both IBM
  37. and Microsoft. 
  38.  
  39.  It is sometimes amusing to reflect on the fact that the IBM PC was not
  40. originally intended to run MSDOS. The target operating system at the end of the
  41. development was for a (not yet in existence) 8086 version of CP/M. On the other
  42. hand, when DOS was originally written the IBM PC did not yet exist! Although
  43. PC-DOS was bundled with the computer, Digital Research's CP/M-86 would probably
  44. have been the main operating system for the PC except for two things - Digital
  45. Research wanted $495 for CP/M-86 (considering PC-DOS was essentially free) and
  46. many software developers found it easier to port existing CP/M software to DOS
  47. than to the new version of CP/M.
  48.  
  49.  After eight years the wheel has turned a full circle. Digital Research aided 
  50. IBM in writing DOS 4.0, which was subsequently licensed back to Microsoft, 
  51. which has dropped further development of the operating system to tilt at the 
  52. windmills of OS/2. 
  53.  
  54.  MSDOS and PC-DOS have been run on more than just the IBM-PC and clones. There 
  55. was an expansion board for the Apple ][ that allowed one to run (some) well - 
  56. behaved DOS programs. There are expansion boards for the Commodore Amiga 2000,
  57. the Apple MacIntosh II, and the IBM RT PC allowing them to run DOS, the Atari
  58. STs can run an emulator program called PC-Ditto and boot any version of MSDOS
  59. with full functionality. Microsoft's OS/2 operating system incorporates the
  60. so-called "DOS Compatibility Box" to run DOS software; QNX will run DOS as a
  61. task, and a few Unix systems offer "DOS Merge" or control programs that allow
  62. DOS to run as a task.
  63.  
  64.  
  65. WHAT IS DOS?├──────────────────────────────────────────────────────────────────
  66.  
  67.  DOS exists as a high-level interface between an application program and the 
  68. computer. DOS stands for "Disk Operating System", which reflects the fact that 
  69. its main original purpose was to provide an interface between the computer and 
  70. its disk drives. 
  71.  DOS now lets your programs do simple memory management, I/O from the system 
  72. console, and assorted system tasks (time and date, etc) as well as managing 
  73. disk operations. Versions 3.1 and up also incorporate basic networking 
  74. functions.
  75.  With the introduction of installable device drivers and TSR (terminate but 
  76. stay resident) programs in DOS 2.0, the basic DOS functions may be expanded to 
  77. cover virtually any scale of operations required.
  78.  
  79.  
  80. OTHER OPERATING SYSTEMS├───────────────────────────────────────────────────────
  81.  
  82.  Various other operating systems are availible for the IBM PC. These include:
  83.  
  84. Digital Research CP/M-86
  85. Digital Research Concurrent CP/M-86 (multitasking)
  86. Digital Research Concurrent DOS (PC-DOS compatible, multitasking)
  87. Digital Research Concurrent DOS XM (PC-DOS compatible, multitasking, multiuser)
  88. Digital Research Concurrent DOS 386 (same, for 80386 computers)
  89. Digital Research DR-DOS 3.31 and 4.0  (PC-DOS clones)
  90. Wendin-DOS  (PC-DOS compatible, multitasking, multiuser)
  91. QNX   (multitasking, multiuser)
  92. UNIX  (various systems from IBM itself, Microsoft-SCO, Bell, and various UNIX
  93.        clones, single and multi user)
  94. MINIX (multitasking UNIX clone)
  95. PC-MOS/386 (PC-DOS clone, multiuser, multitasking)
  96.  
  97.  "Shell" programs exist which use DOS only for disk management while they more 
  98. or less comprise a new operating system. These include:
  99.  
  100.      DesQview                        Windows                     OmniView
  101.      GEM                             TopView                     TaskView
  102.  
  103.  
  104.  NEC V-series CPUs can execute Intel 8080/8085 8-bit instructions as well as
  105. the 16-bit 8088-up instructions. They can run standard Digital Research 8-bit 
  106. CP/M and MP/M directly, as well as other operating systems developed for that 
  107. processor.
  108.  
  109.  
  110.  
  111. SPECIFIC VERSIONS OF MS/PC-DOS├────────────────────────────────────────────────
  112.  
  113.  DOS 1.x is essentially 86-DOS. DOS 2.x kept the multiple file layout (the two 
  114. hidden files and COMMAND.COM) but for all practical purposes is an entirely 
  115. different operating system with backwards compatibility with 1.x. I seriously 
  116. doubt there has been much code from 1.x retained in 2.x. DOS 3.x is merely an 
  117. enhancement of 2.x; there seems little justification for jumping a whole 
  118. version number. DOS 4.0, originating as it did from outside Microsoft, can 
  119. justify a version jump. Unfortunately, 4.x seems to have very little to reason
  120. justify its existence - virtually all of its core features can be found in one 
  121. version or another of DOS 3.x.
  122.  
  123.  DOS version nomenclature: major.minor.minor. The digit to the left of the 
  124. decimal point indicates a major DOS version change. 1.0 was the first version. 
  125. 2.0 added support for subdirectorites, 3.0 added support for networking, 4.0 
  126. added support for Lotus-Intel-Microsoft EMS.
  127.  The first minor version indicates customization for a major application. For 
  128. example, 2.1 for the PCjr, 3.3 for the PS/2s. The second minor version does not 
  129. seem to have any particular meaning.
  130.  
  131.  The main versions of DOS are:
  132.  
  133.  PC-DOS 1.0   October  1981  original release
  134.  PC-DOS 1.1   June     1982  bugfix, double sided drive support
  135.  MS-DOS 1.25  June     1982  for early compatibles
  136.  PC-DOS 2.0   March    1983  for PC/XT, many UNIX-like functions
  137.  PC-DOS 2.1   October  1983  for PCjr, bugfixes for 2.0
  138.  MS-DOS 2.11  October  1983  compatible equivalent to 2.1
  139.  PC-DOS 3.0   August   1984  1.2 meg drive for PC/AT
  140.  PC-DOS 3.1   November 1984  bugfix for 3.0, implemented network support
  141.  MS-DOS 2.25  October  1985  compatible; extended foreign language support
  142.  PC-DOS 3.2   July     1986  720k 3.5 inch drive support for Convertible
  143.  PC-DOS 3.3   April    1987  for PS/2 series, 1.44 meg, multiple DOS partitions
  144.  PC-DOS 4.0   August   1988  over-32 meg DOS partitions, EMS support
  145.  
  146.  IBM's PC-DOS is considered to be the "standard" version of DOS; Microsoft has 
  147. sold MS-DOS over the counter only since version 3.2 (previously, Microsoft 
  148. sold its versions only to OEMs). Most versions of DOS functionally duplicate 
  149. the external DOS commands such as DISKCOPY, etc. Microsoft has announced that
  150. they will sell MS-DOS 4.0 only to OEMs, so it looks like the "generic" MS-DOS 
  151. was short-lived.
  152.  
  153.  Some versions of MS-DOS varied from PC-DOS in the availible external commands.
  154. Some OEMs only licensed the basic operating system code (the xxxDOS and xxxBIO
  155. programs, and COMMAND.COM) from Microsoft, and either wrote the rest themselves
  156. or contracted them from outside software houses like Phoenix. Most of the 
  157. external programs for DOS 3.x and 4.x are written in "C" while the 1.x and 2.x
  158. utilities were written in assembly language. Other OEMs required customized
  159. versions of DOS for their specific hardware configurations, such as Sanyo 55x
  160. and early Tandy computers, which were unable to exchange their DOS with the IBM
  161. version.
  162.  
  163.  At least two versions of DOS have been modified to be run entirely out of ROM.
  164. The Sharp PC5000 had MSDOS 1.25 in ROM, and the Toshiba 1000 and some Tandy 
  165. models have MSDOS 2.11 in ROM.
  166.  
  167.  PC-DOS 3.0 was extremely buggy on release. It does not handle the DOS 
  168. environment correctly and there are numerous documented problems with the 
  169. batch file parser. The network support code is also nonfunctional in this DOS 
  170. version. It is recommended that users upgrade to at least version 3.1.
  171.  
  172.  DEC MSDOS versions 2.11 for the Rainbow had the ANSI.SYS device driver built 
  173. into the main code. The Rainbow also supported a unique quad density, single
  174. sided floppy drive.
  175.  
  176.  IBM had a version 1.85 of PC-DOS in April 1983, after the introduction of DOS 
  177. 2.0. It was evidently for internal use only, supported multiple drive file 
  178. searches (a primitive form of PATH), builtin MODE sommands for screen support, 
  179. a /P parameter for TYPE for paused screens, an editable command stack like the
  180. public domain DOSEDIT.COM utility, and could be set up to remain completely 
  181. resident in RAM instead of a resident/transient part like normal DOS. It is a 
  182. pity some of the neat enhancements didn't make it into DOS 2.0. IBM also had 
  183. an internal use only version 3.4, evidently used while developing DOS 4.0.
  184.  
  185.  Some versions of DOS used in compatibles do not maintain the 1.x, 2.x, .....
  186. numbering system. Columbia Data Products computers labeled DOS 1.25 as DOS 
  187. 2.0. Early Compaqs labeled DOS 2.0 as DOS 1.x. Other versions incorporated 
  188. special features - Compaq DOS 3.31 and Wyse DOS 3.21 both support 32-bit File 
  189. Allocation Tables.
  190.  
  191.  AT&T DOS 3.1 differs from generic MSDOS 3.10 in its use of cluster-size and
  192. file allocation table structures. AT&T DOS appears to use rules not from 
  193. version 3, but rather those from version 2.
  194.  
  195.  Epson Equity III and ComputerLand 3.10 DOS's appear to use cluster techniques
  196. that are a cross between versions 2 and 3. On type DOS partitions, these DOS's
  197. use 3.x rules if the partition is larger than 32,680 sectors in total size.
  198. This implies 16 bit FAT entries as well. On partitions below this size, they
  199. will use 2.x rules, including the 12 bit FAT entries.
  200.  
  201.  Zenith DOS 3.x and Wyse DOS 3.2 have a builtin internal device driver to 
  202. handle up to 4 32Mb DOS partitions on a single hard disk. Wyse DOS 3.31 will 
  203. handle single partitions up to 512Mb with a 32-bit FAT.
  204.  
  205.  According to PC Week Magazine, July 4, 1988, Arabic versions of MSDOS are 
  206. shipping with a hardware copy-protection system from Rainbow Technologies. 
  207. This is similar to the short-lived system used by AutoCAD 2.52 and a very few 
  208. other MSDOS programs, where an adapter block is plugged into the parallel port
  209. and software makes use of coded bytes within the block. This type of copy
  210. protection has been common on Commodore products for several years, where it is
  211. called a "dongle."
  212.  The AutoCAD dongle was defeated by a small program written within weeks of 
  213. version 2.52's debut. Version 2.62 was released 3 months later, without the 
  214. dongle. The DOS dongle will, however, prevent the system from booting at all 
  215. unless it is found. 
  216.  This makes the Arabic version of MSDOS the first copy-protected operating 
  217. system, a dubious distinction at best. The modifications to the operating 
  218. system to support the dongle are not known at this time.
  219.  
  220.  Versions of DOS sold in Great Britain are either newer than those sold in the 
  221. US or use a different numbering system. DOS 3.4, 4.0, 4.1, 4.2, and 4.3 had 
  222. been released there between the US releases of 3.3 and 4.0.
  223.  MSDOS 4.0 was introduced in mid-1987 in Europe (at SICOB in Paris and sometime
  224. earlier by Apricot Computer in the UK). It apparently offers multitasking
  225. PROVIDED applications are specially written for it.
  226.  David Fraser (UK MD of Microsoft) is on record saying that DOS 4 is unlikely
  227. to set the world alight and is of interest only to specific OEM's who want its
  228. features for networking/comms etc. Standard DOS applications will run under DOS
  229. 4.x as a foreground task according to uncertain information. It differs from
  230. earlier versions only in allowing background tasks to run. No info about how
  231. many tasks/memory requirements etc. at this time. It will run an MS-DOS 3.2 or
  232. earlier type task in a foreground partition, and a specially written task in
  233. the background.
  234.  
  235.  Microsoft changed their OEM licensing agreements between DOS versions 2.x and
  236. 3.x. OEM versions of DOS 3.x must maintain certain data areas and undocumented
  237. functions in order to provide compatibility with the networking features of the
  238. operating system. For this reason, resident programs will be much more reliable
  239. when operating under DOS 3.x.
  240.  
  241.  IBM's release of DOS 4.0 (and the immediate subsequent release of a bugfix)
  242. is a dubious step "forward." DOS 4.0 is the first version of DOS to come with 
  243. a warranty; the catch is that IBM warrants it only for a very slim list of 
  244. IBM-packaged software. 4.0 has some minor EMS support, support for large hard 
  245. disks, and not much else. With its voracious RAM requirements and lack of 
  246. compatibility with previous versions of DOS (many major software packages 
  247. crash under DOS 4.0), plus the increase in price to a cool $150, there has 
  248. been no great rush to go to the newest DOS.
  249.  
  250.  
  251.  
  252. THE OPERATING SYSTEM HIERARCHY├────────────────────────────────────────────────
  253.  
  254.  The Disk Operating System (DOS) and the ROM BIOS serve as an insulating layer 
  255. between the application program and the machine, and as a source of services 
  256. to the application program.
  257.  The system hierarchy may be thought of as a tree, with the lowest level being 
  258. the actual hardware. The 8088 or V20 processor sees the computer's address 
  259. space as a ladder two bytes wide and one million bytes long. Parts of this 
  260. ladder are in ROM, parts in RAM, and parts are not assigned. There are also 
  261. 256 "ports" that the processor can use to control devices. 
  262.  The hardware is normally addressed by the ROM BIOS, which will always know
  263. where everything is in its particular system. The chips may usually also be
  264. written to directly, by telling the processor to write to a specific address or
  265. port. This sometimes does not work as the chips may not always be at the same
  266. addresses or have the same functions from machine to machine.
  267.  
  268.  
  269.  
  270. DOS STRUCTURE├─────────────────────────────────────────────────────────────────
  271.  
  272. DOS consists of four components:
  273.  
  274.  * The boot record
  275.  * The ROM BIOS interface  (IBMBIO.COM or IO.SYS)
  276.  * The DOS program file    (IBMDOS.COM or MSDOS.SYS)
  277.  * The command processor   (COMMAND.COM or aftermarket replacement)
  278.  
  279.  
  280. * The Boot Record
  281.  
  282.  The boot record begins on track 0, sector 1, side 0 of every diskette formatted
  283. by the DOS FORMAT command. The boot record is placed on diskettes to produce an
  284. error message if you try to start up the system with a nonsystem diskette in 
  285. drive A. For hard disks, the boot record resides on the first sector of the DOS
  286. partition. All media supported by DOS use one sector for the boot record.
  287.  
  288.  
  289. * Read Only Memory (ROM) BIOS Interface and Extensions
  290.  
  291.  The file IBMBIO.COM or IO.SYS is the interface module to the ROM BIOS.
  292. This file provides a low-level interface to the ROM BIOS device routines and 
  293. may contain extensions or changes to the system board ROMs. Some compatibles do
  294. not have a ROM BIOS to extend, and load the entire BIOS from disk. (Sanyo 55x,
  295. Viasyn machines). Some versions of MSDOS, such as those supplied to Tandy, are 
  296. named IBMBIO.COM but are not IBM files.
  297.  
  298.  
  299. * The DOS Program
  300.  
  301.  The actual DOS program is the file IBMDOS.COM or MSDOS.SYS. It provides a high-
  302. level interface for user (application) programs. This program consists of file
  303. management routines, data blocking/deblocking for the disk routines, and a
  304. variety of built-in functions easily accessible by user programs.
  305.  When a user program calls these function routines, they accept high-level
  306. information by way of register and control block contents. When a user program 
  307. calls DOS to perform an operation, these functions translate the requirement
  308. into one or more calls to IBMBIO.COM, MSDOS.SYS or system hardware to complete
  309. the request.
  310.     
  311.  
  312. * The Command Interpreter
  313.   
  314.  The command interpreter, COMMAND.COM, is the part you interact with on the 
  315. command line. It consists of these parts:
  316.     
  317. Resident Portion:
  318.  
  319.  The resident portion resides in memory immediately following IBMDOS.COM and its
  320. data area. This portion contains routines to process interrupts 22h (Terminate 
  321. Address), 23h (Ctrl-Break Handler), and 24h (Critical Error Handler), as well as
  322. a routine to reload the transient portion if needed. For DOS 3.x, this portion 
  323. also contains a routine to load and execute external commands, such as files 
  324. with exensions of COM or EXE.
  325.  
  326.  When a program terminates, a checksum is used to determine if the application 
  327. program overlaid the transient portion of COMMAND.COM. If so, the resident 
  328. portion will reload the transient portion from the area designated by COMSPEC= 
  329. in the DOS environment. If COMMAND.COM cannot be found, the system will halt.
  330.  
  331. NOTE: DOS 3.3+ checks for the presence of a hard disk, and will default to 
  332.       COMSPEC=C:\. Previous versions default to COMSPEC=A:\. Under some DOS
  333.       versions, if COMMAND.COM is not immediately availible for reloading
  334.       (i.e., swapping to a floppy with COMMAND.COM on it) DOS may crash.
  335.  
  336.  All standard DOS error handling is done within the resident portion of 
  337. COMMAND.COM.  This includes displaying error messages and interpreting the 
  338. replies to the "Abort, Retry, Ignore, Fail?" message.  
  339.  
  340.   
  341.  
  342.  
  343.  
  344. DOS INITIALIZATION├────────────────────────────────────────────────────────────
  345.  
  346.  The system is initialized by a software reset (Ctrl-Alt-Del), a hardware reset
  347. (reset button), or by turning the computer on. The Intel 80x8x series processors
  348. always look for their first instruction at the end of their address space 
  349. (0FFFF0h) when powered up or reset. This address contains a jump to the first 
  350. instruction for the ROM BIOS.
  351.  Built-in ROM programs (Power-On Self-Test, or POST, in the IBM) check machine
  352. status and run inspection programs of various sorts. Some machines set up a
  353. reserved RAM area with bytes indicating installed equipment (AT and PCjr). 
  354.  The ROM routine looks for a disk drive at A: or an option ROM (usually a hard
  355. disk) at absolute address C:800h. If no floppy drive or option ROM is found, the
  356. BIOS calls int 19h (ROM BASIC if it is an IBM) or displays error message. 
  357.  If a bootable disk is found, the ROM BIOS loads the first sector of information
  358. from the disk and then jumps into the RAM location holding that code. This code
  359. normally is a routine to load the rest of the code off the disk, or to "boot"
  360. the system. 
  361.  The following actions occur after a system initialization:
  362.  
  363.  1.  The boot record is read into memory and given control.    
  364.  
  365.  2.  The boot record then checks the root directory to assure that the first 
  366.      two files are IBMBIO.COM and IBMDOS.COM. These two files must be the 
  367.      first two files, and they must be in that order (IBMBIO.COM first, with 
  368.      its sectors in contiguous order).
  369.      NOTE: IBMDOS.COM need not be contiguous in version 3.x+.
  370.  
  371.  3.  The boot record loads IBMBIO.COM into memory.
  372.  
  373.  4.  The initialization code in IBMBIO.COM loads IBMDOS.COM, determines 
  374.      equipment status, resets the disk system, initializes the attached 
  375.      devices, sets the system parameters and loads any installable device 
  376.      drivers according to the CONFIG.SYS file in the root directory (if 
  377.      present), sets the low-numbered interrupt vectors, relocates IBMDOS.COM 
  378.      downward, and calls the first byte of DOS.
  379.      NOTE: CONFIG.SYS may be a hidden file.
  380.  
  381.  
  382.  
  383.  5.  DOS initializes its internal working tables, initializes the interrupt
  384.      vectors for interrupts 20h through 27h, and builds a Program Segment 
  385.      Prefix for COMMAND.COM at the lowest available segment. For DOS versions
  386.      3.10 up, DOS also initializes the vectors for interrupts 0Fh through 3Fh.
  387.      An initialization routine is included in the resident portion and assumes
  388.      control during startup. This routine contains the AUTOEXEC.BAT file
  389.      handler and determines the segment address where user application programs
  390.      may be loaded. The initialization routine is then no longer needed and is
  391.      overlaid by the first program COMMAND.COM loads.
  392.      NOTE: AUTOEXEC.BAT may be a hidden file.
  393.  
  394.  6.  IBMBIO.COM uses the EXEC function call to load and start the top-level
  395.      command processor. The default command processor is COMMAND.COM in the
  396.      root directory of the boot drive. If COMMAND.COM is in a subdirectory 
  397.      or another command processor is to be used, it must be specified by a
  398.      SHELL= statement in the CONFIG.SYS file.
  399.      A transient portion is loaded at the high end of memory. This is the
  400.      command processor itself, containing all of the internal command
  401.      processors and the batch file processor. For DOS 2.x, this portion also
  402.      contains a routine to load and execute external commands, such as files
  403.      with extensions of COM or EXE.
  404.       This portion of COMMAND.COM also produces the DOS prompt (such as "A>"),
  405.      reads the command from the standard input device (usually the keyboard or
  406.      a batch file), and executes the command. For external commands, it builds
  407.      a command line and issues an EXEC function call to load and transfer
  408.      control to the program.
  409.      NOTE: COMMAND.COM may be a hidden file.
  410.      NOTE: For IBM DOS 2.x, the transient portion of the command processor
  411.            contains the EXEC routine that loads and executes external commands.
  412.            For MSDOS 2.x+ and IBM DOS 3.x+, the resident portion of the command
  413.            processor contains the EXEC routine. 
  414.      NOTE: IBMBIO only checks for a file *named* "COMMAND.COM". It will load
  415.            any file of that name if no SHELL= command is used.
  416.  
  417.  
  418.  IBM's original documentation spoke of installing alternate command 
  419. interpreters (programs other than COMMAND.COM) with the SHELL= statement in 
  420. CONFIG.SYS. Unfortunately, IBM chose not to document much of the interaction 
  421. between IBMDOS.COM and IBMBIO.COM. By the time much of the interaction was 
  422. widely understood, too many commercial software programs had been written to 
  423. use peculiarities of COMMAND.COM itself. There are only two well-known 
  424. replacements for COMMAND.COM - the commercial Command Plus and the shareware
  425. 4DOS.
  426.  
  427.