The  Boot Sector   of
IBM® Personal Computer™ DOS
Version 1.00 (1981)


Copyright © 2005 by Daniel B. Sedory

NOT to be reproduced in any form without Permission of the Author !

 

See our Tech Notes on the difficulty of working with versions 1.00 and 1.10 of IBM®'s Personal Computer™ DOS.

NOTE: The FORMAT.COM file contains an exact copy of the Boot Sector (it's located at offsets 780h through 97Fh inclusive within that file; which is the same as offsets 4580h through 477Fh for the whole diskette).

Unlike later DOS versions, 1.00 (and 1.10) never contained a BPB (BIOS Parameter Block; though it appears to have a BPB pre-cursor located at offsets 0002h through 0030h), nor what has become the standard Boot Signature (the Word AA55h) in the last two bytes of every IBM®/Microsoft® Boot/MBR sector beginning with DOS version 2.00. Because of these two differences in the Boot Record's structure, most utility programs and all the other versions of DOS or Windows® Operating Systems will always consider these diskettes to be incorrectly formatted; even though they use the same FAT12 file system found on later DOS diskettes!

A Disk Editor View of the Boot Sector

Absolute Sector 0 (Track 0, Side 0, Sector 1)
       0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
0000  EB 2F 14 00 00 00 60 00 20 37 2D 4D 61 79 2D 38  ./....`. 7-May-8
0010  31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  1...............
0020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0030  00 FA 8C C8 8E D8 BA 00 00 8E D2 BC 00 7C FB A1  .............|..
0040  06 7C 8E D8 8E C0 BA 00 00 8B C2 CD 13 72 41 E8  .|...........rA.
0050  58 00 72 FB 2E 8B 0E 02 7C 51 BB 00 00 33 D2 B9  X.r.....|Q...3..
0060  08 00 BE 01 00 56 B0 01 B4 02 CD 13 72 22 5E 58  .....V......r"^X
0070  E8 E7 00 2B C6 74 14 FE C5 B1 01 BE 08 00 3B C6  ...+.t........;.
0080  73 04 8B F0 EB 01 96 56 50 EB DD 2E FF 2E 04 7C  s......VP......|
0090  BE 44 7D B8 42 7D 50 32 FF AC 24 7F 74 0B 56 B4  .D}.B}P2..$.t.V.
00A0  0E BB 07 00 CD 10 5E EB F0 C3 BB 00 00 B9 04 00  ......^.........
00B0  B8 01 02 CD 13 1E 72 34 8C C8 8E D8 BF 00 00 B9  ......r4........
00C0  0B 00 26 80 0D 20 26 80 8D 20 00 20 47 E2 F3 BF  ..&.. &.. . G...
00D0  00 00 BE 76 7D B9 0B 00 FC F3 A6 75 0F BF 20 00  ...v}......u.. .
00E0  BE 82 7D B9 0B 00 F3 A6 75 02 1F C3 BE F9 7C E8  ..}.....u.....|.
00F0  A5 FF B4 00 CD 16 1F F9 C3 0D 0A 4E 6F 6E 2D 53  ...........Non-S
0100  79 73 74 65 6D 20 64 69 73 6B 20 6F 72 20 64 69  ystem disk or di
0110  73 6B 20 65 72 72 6F F2 0D 0A 52 65 70 6C 61 63  sk erro...Replac
0120  65 20 61 6E 64 20 73 74 72 69 6B 65 20 61 6E 79  e and strike any
0130  20 6B 65 79 20 77 68 65 6E 20 72 65 61 64 F9 0D   key when read..
0140  0A 00 CD 18 0D 0A 44 69 73 6B 20 42 6F 6F 74 20  ......Disk Boot 
0150  66 61 69 6C 75 72 E5 0D 0A 00 50 52 8B C6 BF 00  failur....PR....
0160  02 F7 E7 03 D8 5A 58 C3 52 6F 62 65 72 74 20 4F  .....ZX.Robert O
0170  27 52 65 61 72 20 69 62 6D 62 69 6F 20 20 63 6F  'Rear ibmbio  co
0180  6D B0 69 62 6D 64 6F 73 20 20 63 6F 6D B0 C9 00  m.ibmdos  com...
0190  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
01A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
01B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
01C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
01D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
01E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
01F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
       0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

 

At offsets 0168h through 0175h, you'll find the phrase "Robert O'Rear ," but it's never used by the code; it was simply inserted there by the Boot Sector's author to identify his work. It was replaced by a company name in the next revision (cf. version 1.10).

 

An Examination of the Assembly Code
for the IBM® DOS 1.00 Boot Sector
as found in Memory during Execution

 

 7C00 EB2F          JMP     7C31         ; Jump over reserved data area
 
 =======================================================================
           Data Locations which Code Execution Jumps Over:
        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
 7C02        14 00 00 00 60 00 20 37 2D 4D 61 79 2D 38    ....`. 7-May-8
 7C10  31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  1...............
 7C20  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
 7C30  00                                               .
 =======================================================================

 7C31 FA            CLI                  ; Disable maskable Interrupts
 7C32 8CC8          MOV     AX,CS
 7C34 8ED8          MOV     DS,AX
 7C36 BA0000        MOV     DX,0000
 7C39 8ED2          MOV     SS,DX        ; SS -> 0000
 7C3B BC007C        MOV     SP,7C00      ; Stack Pointer at 0000:7C00
 7C3E FB            STI                  ; Enable Interrupts

 7C3F A1067C        MOV     AX,[7C06]    ; 0060h -> AX
 7C42 8ED8          MOV     DS,AX        ; 0060h -> DS
 7C44 8EC0          MOV     ES,AX        ; 0060h -> ES
 7C46 BA0000        MOV     DX,0000
 7C49 8BC2          MOV     AX,DX        ; Function 00 of INT 13

;-----------------------------------------------------------------------
; AX=0000  BX=0000  CX=0000  DX=0000  SP=7C00  BP=0000  SI=0000  DI=0000
; DS=0060  ES=0060  SS=0000  CS=0000  IP=7C4B    NV UP EI PL NZ NA PO NC
; 137E:7C4B CD13          INT     13
;-----------------------------------------------------------------------
 7C4B CD13          INT     13           ; Reset Floppy Disk drives; if
                                         ;  CF=1(set) there's an error.
 7C4D 7241          JC      7C90         ; JC -> Drive response failure.
 7C4F E85800        CALL    7CAA
 7C52 72FB          JB      7C4F
 7C54 2E            CS:
 7C55 8B0E027C      MOV     CX,[7C02]    ; W[7C02] = 0014h
 7C59 51            PUSH    CX
 7C5A BB0000        MOV     BX,0000
 7C5D 33D2          XOR     DX,DX
 7C5F B90800        MOV     CX,0008
 7C62 BE0100        MOV     SI,0001
 7C65 56            PUSH    SI
 7C66 B001          MOV     AL,01        ; Read 1 sector
 7C68 B402          MOV     AH,02        ; Function 02 of INT 13
 7C6A CD13          INT     13
 7C6C 7222          JB      7C90
 7C6E 5E            POP     SI
 7C6F 58            POP     AX
 7C70 E8E700        CALL    7D5A
 7C73 2BC6          SUB     AX,SI
 7C75 7414          JZ      7C8B
 7C77 FEC5          INC     CH
 7C79 B101          MOV     CL,01
 7C7B BE0800        MOV     SI,0008
 7C7E 3BC6          CMP     AX,SI
 7C80 7304          JNB     7C86
 7C82 8BF0          MOV     SI,AX
 7C84 EB01          JMP     7C87
 7C86 96            XCHG    SI,AX
 7C87 56            PUSH    SI
 7C88 50            PUSH    AX
 7C89 EBDD          JMP     7C68

 7C8B 2E            CS:
 7C8C FF2E047C      JMP     FAR [7C04]

 ==========================================================================

 7C90 BE447D        MOV     SI,7D44      ; -> 0D,0A,"Disk Boot failur" etc.
 7C93 B8427D        MOV     AX,7D42      ; 7D42 -> CDh,18h
 7C96 50            PUSH    AX           ; Store values on stack. 
 7C97 32FF          XOR     BH,BH
 7C99 AC            LODSB
 7C9A 247F          AND     AL,7F
 7C9C 740B          JZ      7CA9         ; Return if zero-byte found.
 7C9E 56            PUSH    SI
 7C9F B40E          MOV     AH,0E
 7CA1 BB0700        MOV     BX,0007
 7CA4 CD10          INT     10

 7CA6 5E            POP     SI
 7CA7 EBF0          JMP     7C99
 7CA9 C3            RET

; =================================================================
;       Disk    Read   Subroutine:
; =================================================================
 7CAA BB0000        MOV     BX,0000
 7CAD B90400        MOV     CX,0004
 7CB0 B80102        MOV     AX,0201
 7CB3 CD13          INT     13

 7CB5 1E            PUSH    DS
 7CB6 7234          JB      7CEC
 7CB8 8CC8          MOV     AX,CS
 7CBA 8ED8          MOV     DS,AX
 7CBC BF0000        MOV     DI,0000
 7CBF B90B00        MOV     CX,000B
 7CC2 26            ES:
 7CC3 800D20        OR      BYTE PTR [DI],20
 7CC6 26            ES:
 7CC7 808D200020    OR      BYTE PTR [DI+0020],20
 7CCC 47            INC     DI
 7CCD E2F3          LOOP    7CC2

 7CCF BF0000        MOV     DI,0000
 7CD2 BE767D        MOV     SI,7D76      ; -> "ibmbio  com", B0
 7CD5 B90B00        MOV     CX,000B
 7CD8 FC            CLD
 7CD9 F3            REPZ
 7CDA A6            CMPSB
 7CDB 750F          JNZ     7CEC
 7CDD BF2000        MOV     DI,0020
 7CE0 BE827D        MOV     SI,7D82      ; -> "ibmdos  com", B0, C9
 7CE3 B90B00        MOV     CX,000B
 7CE6 F3            REPZ
 7CE7 A6            CMPSB
 7CE8 7502          JNZ     7CEC
 7CEA 1F            POP     DS
 7CEB C3            RET

 ===========

 7CEC BEF97C        MOV     SI,7CF9      ; -> 0D,0A,"Non-System disk" etc.
 7CEF E8A5FF        CALL    7C97

 7CF2 B400          MOV     AH,00
 7CF4 CD16          INT     16

 7CF6 1F            POP     DS
 7CF7 F9            STC
 7CF8 C3            RET

Location of Error Messages in Memory

 
 7CF9                             0D 0A 4E 6F 6E 2D 53           ..Non-S
 7D00  79 73 74 65 6D 20 64 69 73 6B 20 6F 72 20 64 69  ystem disk or di
 7D10  73 6B 20 65 72 72 6F F2 0D 0A 52 65 70 6C 61 63  sk erro...Replac
 7D20  65 20 61 6E 64 20 73 74 72 69 6B 65 20 61 6E 79  e and strike any
 7D30  20 6B 65 79 20 77 68 65 6E 20 72 65 61 64 F9 0D   key when read..
 7D40  0A 00 CD 18 0D 0A 44 69 73 6B 20 42 6F 6F 74 20  ......Disk Boot 
 7D50  66 61 69 6C 75 72 E5 0D 0A 00                    failur....
        0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

 7D5A 50            PUSH    AX
 7D5B 52            PUSH    DX
 7D5C 8BC6          MOV     AX,SI         ; SI value is multiplied...
 7D5E BF0002        MOV     DI,0200       ; (200h = 512)
 7D61 F7E7          MUL     DI            ; ...by 512 and the answer is
 7D63 03D8          ADD     BX,AX         ; added to, and stored in BX.
 7D65 5A            POP     DX
 7D66 58            POP     AX
 7D67 C3            RET

Location of  Boot Sector Author's
Name and File Names in Memory

 
7D68                          52 6F 62 65 72 74 20 4F          Robert O
7D70  27 52 65 61 72 20 69 62 6D 62 69 6F 20 20 63 6F  'Rear ibmbio  co
7D80  6D B0 69 62 6D 64 6F 73 20 20 63 6F 6D B0 C9 00  m.ibmdos  com...
       0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F


Who is Robert (Bob) O'Rear ?

Robert O'Rear, originally from the rural Texas Panhandle town of Wellington, earned his bachelor's degree in mathematics from Texas Western College (now UT, El Paso) in 1964 and went on to earn his master's degree from the University of Texas at Austin in 1966. After graduation, he worked for TRW Systems in the aerospace division writing mathematical analysis programs that supported targeting systems for ballistic missiles, spy satellites and the NASA Apollo program.

In 1977, he became the seventh employee of Bill Gates and Paul Allen's business venture, Microsoft®. As the company's chief mathematician and project manager, O'Rear co-authored the first version of MS-DOS along with its creator, Tim Paterson, and placed Microsoft's software into the first IBM® Personal Computer™. After the release of the IBM PC in 1981, O'Rear moved into international sales and marketing, launching Microsoft's offices in Europe. He retired from the company in 1993.


 

 

Last Update: August 2, 2005 (02-08-2005).

You can write to me using this: online reply form. (It opens in a new window.)



IBM PC DOS 1.00 Index

MBR and Boot Records Index

The Starman's Realm Index

 

 

 

 

Hosted by uCoz