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!
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). As Harold Evans wrote in his work, They Made America: From the Steam Engine to the Search Engine (©2004), it was seeing Bob O'Rear's name (known to be a Microsoft programmer) right here in the Boot Sector that shocked Gary Kildall, since it meant, "Microsoft was in bed with IBM..." before he negotiated his deal with IBM in July, 1981.
Here's a disassembly of the code (; with comments) after being loaded into memory at location 0000:7C00 by the PC's BIOS:
NOTE: The following is still a work in progress!
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
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
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 |
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.
First Published: August 2, 2005 (02-08-2005).
Last Update: 27 FEB 2018 (27.02.2018)
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