home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / sysutl / tryst.arc / TRYST3.DOS < prev    next >
Text File  |  1988-03-31  |  14KB  |  245 lines

  1.             TRYST DOS #3
  2.  
  3.      In the second TRYST DOS article, I covered some initial
  4. information about the bootup process and ended with the boot record.
  5. This article will cover the part of the bootup process controlled by
  6. IBMBIO.COM, IBMDOS.COM and COMMAND.COM.  That should end the bootup
  7. process and then in the fourth article we can go on to other things.
  8.  
  9.      As mentioned in TRYST2.DOS, the boot record is used by the
  10. computer's ROM BIOS to find the parts of the operating system which
  11. should be on your boot disk, whether that disk is a floppy or a hard
  12. disk.  The boot record points to the first entry in the directory, and
  13. that entry should be IBMBIO.COM.  Remember that both IBMBIO.COM and
  14. IBMDOS.COM are hidden, read-only, system files which means you do not
  15. see them when you do a directory.  These hidden files must be present
  16. for you to boot up.  Having COMMAND.COM alone on a disk does not make
  17. that disk bootable.  If you see the error message "Non-System disk or
  18. or disk error.  Replace and strike any key when ready".  This error
  19. message is produced by the boot record when IBMBIO.COM is not the
  20. first file on the default disk drive.
  21.  
  22.      IBMBIO.COM is labeled the "interface module to the ROM BIOS" by
  23. IBM.  (There is a fairly good explanation of the booting process in
  24. the "Disk Operating System Technical Reference", but I'll go over the
  25. major points here.) The IBMBIO.COM allows the programs running on a PC
  26. to access the device routines coded in the ROM BIOS.  These
  27. "low-level" routines include the instructions for performing
  28. operations such as displaying information on the screen, reading the
  29. keyboard, sending data out to the printer, making the disk drives
  30. operate to access data, and so on.  It is how the operating system
  31. controls the hardware.  IBMBIO.COM contains any modifications or
  32. updates to the ROM BIOS that are needed to correct any bugs or add
  33. support for other types of hardware such as new disk drives.  By using
  34. the IBMBIO.COM to "update" the ROM BIOS on the "fly" when the user
  35. turns on their computer, IBM does not need to replace the ROM BIOS
  36. chip itself, but makes any corrections through the cheaper and easier
  37. method of modifying the IBMBIO.COM file instead.  (This is one reason
  38. why IBM DOS 3.2 came out, it needed to support the 3.5 inch floppies
  39. and the new screen on the IBM laptop PC.)
  40.  
  41.      IBMBIO.COM also keeps track of hardware operations on an internal
  42. stack which is a "scratch pad" area for the operating system to save
  43. information, such as addresses it will need.  An example of the uses
  44. for this stack can be seen when running a program such as a word
  45. processor.  If you have told the word processor to save your letter,
  46. it will write the data to your disk.  During this time, if you start
  47. typing some more information, a hardware interrupt occurs for the
  48. keyboard.  A hardware interrupt is just a way to let the system know
  49. that something is going on with the hardware.  Since you don't want
  50. the process of writing the information to the disk to be interrupted,
  51. DOS allocates a slot in the stack for the keyboard's hardware
  52. interrupt and when it gets a chance, (probably after the data has been
  53. written to the disk), it can process that interrupt and pick up the
  54. characters you may have been typing.
  55.  
  56.      In DOS 3.2, only 9 slots, or frames are allocated for the stack,
  57. and as it turns out this is probably not sufficient to allow for all
  58. the hardware interrupts possible.  Therefore, you can include a line
  59. in your configuration file, CONFIG.SYS, to increase the number of
  60. frames if you get the error message "Internal Stack Failure".  The
  61. line you would need to add to the CONFIG.SYS file could be:
  62.  
  63. STACKS=12,128
  64.  
  65.      This would give you 12 frames, or slots, for IBMBIO.COM.  Each
  66. frame is 128 bytes long, and that parameter is necessary for the
  67. instruction to work, even though 128 bytes is the default size.
  68.  
  69.      One way to discover what kind of things the IBMBIO.COM does is to
  70. look at its error messages.  These messages are issued by IBMBIO.COM
  71. when something that it is supposed to be doing fails.  The messages
  72. include:  "FATAL:  Internal Stack Failure, System Halted";  "Insert
  73. diskette for drive A:  and strike any key when ready", "Unrecognized
  74. command in CONFIG.SYS";  "Sector size too large in file";  "Bad or
  75. missing Command Interpreter";  "Invalid country code";  "Configuration
  76. too large for memory";  and "Too many Block Devices".
  77.  
  78.      Looking at these messages, you can make a guess that the
  79. IBMBIO.COM is the portion of the DOS operating system that reads your
  80. CONFIG.SYS file and puts any device drivers (i.e.  DEVICE=ANSI.SYS)
  81. into play.  You can tell this by the messages "Unrecognized command in
  82. CONFIG.SYS", and "Too many Block Devices", for examples.
  83.  
  84.      So, after the boot record is read into memory by the ROM BIOS, it
  85. checks the root directory to be sure that IBMBIO.COM AND IBMDOS.COM
  86. are present and in that order.  IBMBIO.COM is then read into memory
  87. and the BIOS reads IBMDOS.COM into memory.  IBMBIO.COM then looks at
  88. the system switches to determine the kind of monitor you are using, it
  89. checks on equipment status, such as the amount of memory (RAM)
  90. available, it initializes the attached devices (checks to see if you
  91. have a printer and if it is on), loads the device drivers from the
  92. CONFIG.SYS file, sets up the low-numbered interrupt vectors (they
  93. control things like printing when you hit <CTRL><PrtSc>), and
  94. reclocates IBMDOS.COM down in memory to where it is supposed to be.
  95. Then IBMBIO.COM releases control to IBMDOS.COM.
  96.  
  97.      IBMDOS.COM contains the routines such as opening a file, reading
  98. a file, writing a file and other kinds of file accessing.  It performs
  99. these functions through calls to the IBMBIO.COM to perform disk
  100. operations and other kind of hardware operations.  IBMDOS.COM is
  101. mostly used by applications programmers to perform file functions,
  102. such as opening a file in order to do something with the data in it.
  103. Programs such as Dbase, WordStar and so on, use IBMDOS.COM's functions
  104. (also called interrupts) to perform these same things.  By using
  105. IBMDOS.COM, Dbase does not have to contain its own coding for finding
  106. a file on the user's disk and doing all the housekeeping chores
  107. necessary to open and use a file.  When IBMBIO.COM releases control to
  108. IBMDOS.COM, IBMDOS.COM sets up its interrupt vectors (the file
  109. functions) and builds a Program Segment Prefix for COMMAND.COM at the
  110. lowest available memory segment.  The Program Segment Prefix is one of
  111. those housekeeping chores which are necessary to open and use a file.
  112. It contains information such as how big a record is, what the file
  113. attribute is, what is the current block (to read the file), the file
  114. size, the current record and the drive where the file is located.
  115.  
  116.      There is only one error message in IBMDOS.COM and that is "Divide
  117. Overflow".
  118.  
  119.      Control then goes back to IBMBIO.COM.  IBMBIO.COM uses the EXEC
  120. function call to load and start up COMMAND.COM or any other command
  121. processor which you may have specified in the CONFIG.SYS file.
  122. The command processor is the portion of DOS which most people consider
  123. to BE DOS.  It gives them their prompt (i.e. C>), and it contains many
  124. of the internal commands, such as DIR, COPY and ERASE.  It also
  125. contains the instructions for executing .BAT files and when the
  126. command processor begins running, one of the first things it does is
  127. to search for an AUTOEXEC.BAT file in the root directory.  If it finds
  128. it, it will execute the batch file.
  129.  
  130.      The command processor, COMMAND.COM has three parts.  IBM calls
  131. them the "resident portion", the "initialization portion" and the
  132. "transient portion".  The resident portion stays in memory for the
  133. entire session on the computer (or until a reboot).  It contains the
  134. instructions for performing critical error handling, handling
  135. <CTRL><Break>, and for program termination.  It also has a routine to
  136. reload the transient portion of COMMAND.COM if necessary when an
  137. application program such as Lotus' 1-2-3 is exitted.  All of DOS'
  138. standard error handling is done with this portion of the operating
  139. system.  There are too many error message in COMMAND.COM to list all
  140. of them here, but a few are:  "Incorrect DOS version";  "Batch file
  141. missing";  "Insert disk with batch file and press any key when ready";
  142. "Bad command or file name";  "Duplicate file name or File not found.";
  143. "Access denied.";  "Insufficient disk space";  "File cannot be copied
  144. onto itself";  "Invalid parameter";  "Enter new time:";  "Invalid
  145. path, not directory, or directory not empty";  "Insufficient memory";
  146. "Error writing to device".  These messages should give you a "flavor"
  147. of what COMMAND.COM does.
  148.  
  149.      The initialization portion of COMMAND.COM follows the resident
  150. portion and is given control during the bootup procedure.  This
  151. section actually processes the AUTOEXEC.BAT file.  It also decides
  152. where to load the user's programs when they are executed (i.e.  where
  153. to put Dbase in memory when the user wants to run it).  Since this
  154. code is only needed during startup, it is overlaid by the first
  155. program which COMMAND.COM loads, since it is no longer needed.
  156.  
  157.      The transient portion is loaded at the high end of memory and it
  158. is the command processor itself.  It interprets whatever the user
  159. types in at the keyboard, hence messages such as "Bad command or file
  160. name" for when the user misspells a command.  This portion contains
  161. all the internal commands (i.e.  COPY, DIR, RENAME, ERASE), it
  162. contains the batch file processor (to run .BAT files) and it has a
  163. routine to load and execute external commands which are either .COM or
  164. .EXE files.
  165.  
  166.      If you wish to change the names of the internal commands, you can
  167. actually use DEBUG and rename COPY or one of the other commands to
  168. anything you wish.  If you do this, it will cause fewer problems if
  169. you use the same number of letters as the old command.  Some people
  170. customize their COMMAND.COM files like this to use names for commands
  171. which they are more comfortable with, or to prevent other users from
  172. doing certain operations.  Here is how you could change the command
  173. DEL to ERA (which makes more sense than DEL as an abbreviation for
  174. ERASE):
  175.  
  176. C>DEBUG COMMAND.COM <Enter>        use debug to "edit" command.com
  177. -                                  debug's prompt is a hyphen
  178. -S100 FFFE "DEL" <Enter>           search for the word "DEL" from
  179. 2536:4f60                            address 100 through FFFE
  180. -                                    write down the address it gives
  181.                                         you
  182. -d2536:4f60 <Enter>                display what is at that address,
  183. xxxxxxxxx xxxxxxxxx                  you should see some numbers on
  184. -                                    the left of the screen, but on
  185.                                      the right should be some English
  186.                                      words which are the names of the
  187.                                      internal commands
  188. -e2536:4f60 <Enter>                edit the word "DEL"
  189.  44.45 <Space> 45.52 <Space> 4c.41 <Enter>
  190.                                        the edit command gives you the
  191.                                        44.  and you enter the 45 and
  192.                                        hit the <Space> bar to continue
  193.                                        with the edit.  The next letter
  194.                                        is 45 and you enter 52, and so
  195.                                        on, hitting the <Enter> key to
  196.                                        end the edit.  When you do
  197.                                        this, you change the
  198.                                        hexidecimal values for DEL and
  199.                                        enter the hex values for ERA.
  200. -
  201. -w <Enter>                        save the file by writing it
  202. -q <Enter>                        quit debug
  203. C>
  204.  
  205.      If you decide to do this, be sure you are working with a copy of
  206. the COMMAND.COM file, and not the original, since if you mess it up
  207. you may be very sad you ever heard of doing this.
  208.  
  209.      This is an interesting point - if you look at your application
  210. programs, they have .COM and .EXE endings too, as well as those
  211. supplemental programs (or external commands) on the DOS disk.  This
  212. actually means that any program you write and compile with a .COM or a
  213. .EXE ending could be considered to be an external command and any
  214. application programs which you purchase, such as 1-2-3 can also be
  215. considered to be an external command.  Or you could consider all
  216. external commands which come on the DOS disk to be applications
  217. programs.  The point is that those features of DOS which require a
  218. .COM or .EXE file to be present, are just useful programs which are
  219. marketed on the disk with DOS and are not actually part of DOS itself.
  220. These include FIND, SORT, DEBUG, LINK, PRINT and so on.
  221.  
  222.      This transient portion of COMMAND.COM produces the system prompt,
  223. (A>), and reads what the user types in from the keyboard and tries to
  224. do something with it.  For any .COM or .EXE files, it builds a command
  225. line and issues an EXEC function call to load the program and transfer
  226. control to it.
  227.  
  228.      Since the transient portion of COMMAND.COM is so large
  229. (containing the internal commands and all those error messages), and
  230. it is not needed when the user is running an application such as
  231. 1-2-3, it can be overlaid by an application, if that application needs
  232. the room.  When the application is through, the resident portion of
  233. COMMAND.COM brings the transient portion back into memory to show the
  234. prompt.  This is why you will sometimes see the message "Insert disk
  235. with COMMAND.COM".  It needs to get the transient portion off the disk
  236. since it was overlaid with the application program.
  237.  
  238.      That pretty much covers the bootup process.  After COMMAND.COM is
  239. loaded, it runs the AUTOEXEC.BAT file and then the user gets their
  240. prompt to begin working.  The next article will cover specifics on
  241. the CONFIG.SYS and AUTOEXEC.BAT files.
  242.  
  243. Amy J. Goebel
  244. emory when the user wants to run it).  Since this
  245. code is only needed during startup, it is overlaid by the