pcjs/disks/pcx86/dos/compaq/1.11/README.md
2017-06-29 17:42:21 -07:00

14 KiB

layout title permalink machines
page COMPAQ MS-DOS 1.11 /disks/pcx86/dos/compaq/1.11/
id type config resume autoMount autoType
ibm5150-compaq111 pcx86 /devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml 1
A B
name
COMPAQ MS-DOS 1.11
name
None
$date\r$time\r

COMPAQ MS-DOS 1.11

Released in 1983 by COMPAQ Computer Corp, this version of MS-DOS reports itself as:

The COMPAQ Personal Computer DOS
Version 1.11


(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82

To learn more about this double-sided 320Kb diskette, see the Directory Listing and Boot Sector below.

{% include machine.html id="ibm5150-compaq111" %}

Directory of COMPAQ MS-DOS 1.11 Diskette

 Volume in drive A has no label

Directory of A:\

IOSYS    COM      1998 05-13-83  12:00p
MSDOS    COM      6136 05-13-83  12:00p
COMMAND  COM      4959 05-13-83  12:00p
LINK     EXE     41856 05-13-83  12:00p
EDLIN    COM      2432 05-13-83  12:00p
SYS      COM       645 05-13-83  12:00p
DEBUG    COM      6619 05-13-83  12:00p
BASIC    COM       549 05-13-83  12:00p
BASICA   COM       547 05-13-83  12:00p
FORMAT   COM      3296 05-13-83  12:00p
EXE2BIN  EXE      1280 05-13-83  12:00p
DISKCOPY COM      1812 05-13-83  12:00p
DISKCOMP COM      1291 05-13-83  12:00p
MODE     COM      1800 05-13-83  12:00p
CHKDSK   COM      1720 05-13-83  12:00p
COMP     COM      1484 05-13-83  12:00p
WORDS             1242 05-13-83  12:00p
BASICA   EXE     54272 05-13-83  12:00p
TEST     EXE     18560 05-13-83  12:00p
DEMO     BAT        14 05-13-83  12:00p
DEMO     BAS      7808 05-13-83  12:00p
DEMO1    BAS     17920 05-13-83  12:00p
DEMO2    BAS     17792 05-13-83  12:00p
DEMO3    BAS     21120 05-13-83  12:00p
DEMO4    BAS      6528 05-13-83  12:00p
JUGGLER  DAT     16128 05-13-83  12:00p
USA      DAT     16128 05-13-83  12:00p
INTEREST BAS       384 05-13-83  12:00p
       28 file(s)     256320 bytes

Total files listed:
       28 file(s)     256320 bytes
                       53248 bytes free

One curiosity regarding this disk are the BASIC files. BASIC.COM and BASICA.COM are nothing more than tiny programs to load BASICA.EXE, a stand-alone version of BASIC that doesn't require any BASIC ROMs. And BASICA.EXE reports a version number that differs from the DOS version:

The COMPAQ Personal Computer BASIC
Version 1.13
(C) Copyright COMPAQ Computer Corp. 1983

COMPAQ MS-DOS 1.11 Boot Sector

The boot sector of the COMPAQ MS-DOS 1.11 disk image contains the following bytes:

00000000  fa bc e7 01 b8 c0 07 8e  d0 fb 8e d8 8e c0 33 c0  |..............3.|
00000010  cd 13 b8 01 02 bb 00 02  b9 04 00 33 d2 e8 8b 00  |...........3....|
00000020  eb 1c bb da 00 8a 07 3c  24 74 0c 53 b4 0e bb 07  |.......<$t.S....|
00000030  00 cd 10 5b 43 eb ee 33  c0 cd 16 eb c3 c3 fc 8b  |...[C..3........|
00000040  f3 bf c4 00 b9 0b 00 f3  a6 75 d7 83 c6 15 b9 0b  |.........u......|
00000050  00 f3 a6 75 cd b8 01 02  bb 00 02 b9 02 00 33 d2  |...u..........3.|
00000060  e8 48 00 8a 27 80 fc fe  be 26 01 74 0a 80 fc ff  |.H..'....&.t....|
00000070  74 02 eb ae be 3c 01 b8  60 00 50 07 8b 04 33 db  |t....<..`.P...3.|
00000080  8b 4c 02 8b 54 04 e8 22  00 8b 44 06 03 5c 08 8b  |.L..T.."..D..\..|
00000090  4c 0a 8b 54 0c e8 13 00  8b 44 0e 03 5c 10 8b 4c  |L..T.....D..\..L|
000000a0  12 8b 54 14 e8 04 00 ff  2e 52 01 bf 05 00 57 50  |..T......R....WP|
000000b0  cd 13 72 03 58 58 c3 33  c0 cd 13 58 5f 4f 75 ee  |..r.XX.3...X_Ou.|
000000c0  58 e9 5e ff 49 4f 53 59  53 20 20 20 43 4f 4d 4d  |X.^.IOSYS   COMM|
000000d0  53 44 4f 53 20 20 20 43  4f 4d 0a 0d 4e 6f 6e 2d  |SDOS   COM..Non-|
000000e0  53 79 73 74 65 6d 20 64  69 73 6b 20 6f 72 20 64  |System disk or d|
000000f0  69 73 6b 20 65 72 72 6f  72 0a 0d 52 65 70 6c 61  |isk error..Repla|
00000100  63 65 20 61 6e 64 20 73  74 72 69 6b 65 20 61 6e  |ce and strike an|
00000110  79 20 6b 65 79 20 77 68  65 6e 20 72 65 61 64 79  |y key when ready|
00000120  0a 0d 24 47 41 53 01 02  08 00 00 00 08 02 00 02  |..$GAS..........|
00000130  01 01 00 00 08 02 00 10  01 02 00 00 06 02 03 00  |................|
00000140  00 01 08 02 00 0c 01 01  00 00 03 02 00 10 01 01  |................|
00000150  00 01 00 00 60 00 28 43  29 43 6f 70 79 72 69 67  |....`.(C)Copyrig|
00000160  68 74 20 43 4f 4d 50 41  51 20 43 6f 6d 70 75 74  |ht COMPAQ Comput|
00000170  65 72 20 43 6f 72 70 6f  72 61 74 69 6f 6e 20 31  |er Corporation 1|
00000180  39 38 32 00 00 00 00 00  00 00 00 00 00 00 00 00  |982.............|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 e7  01 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

Unlike most DOS boot sectors, this boot sector doesn't start with an Intel x86 JMP instruction. Let's take a look at the code, using the PCjs Debugger to stop at the first instruction:

>> bp 0:7c00
bp &0000:7C00 set
>> g
bp &0000:7C00 hit
stopped (5153504 opcodes, 42808074 cycles, 9014 ms, 4749065 hz)
AX=0000 BX=7C00 CX=0004 DX=0000 SP=0100 BP=E4B7 SI=0000 DI=0044 
SS=0030 DS=0040 ES=0000 PS=F296 V0 D0 I1 T0 S1 Z0 A1 P1 C0 
&0000:7C00 FA              CLI     
>> u 7c00
&0000:7C00 FA              CLI     
&0000:7C01 BCE701          MOV      SP,01E7
&0000:7C04 B8C007          MOV      AX,07C0
&0000:7C07 8ED0            MOV      SS,AX
&0000:7C09 FB              STI     
&0000:7C0A 8ED8            MOV      DS,AX
&0000:7C0C 8EC0            MOV      ES,AX
&0000:7C0E 33C0            XOR      AX,AX
&0000:7C10 CD13            INT      13
&0000:7C12 B80102          MOV      AX,0201
&0000:7C15 BB0002          MOV      BX,0200
&0000:7C18 B90400          MOV      CX,0004
&0000:7C1B 33D2            XOR      DX,DX
&0000:7C1D E88B00          CALL     7CAB
&0000:7C20 EB1C            JMP      7C3E
&0000:7C22 BBDA00          MOV      BX,00DA
&0000:7C25 8A07            MOV      AL,[BX]
&0000:7C27 3C24            CMP      AL,24
&0000:7C29 740C            JZ       7C37
&0000:7C2B 53              PUSH     BX
&0000:7C2C B40E            MOV      AH,0E
&0000:7C2E BB0700          MOV      BX,0007
&0000:7C31 CD10            INT      10
&0000:7C33 5B              POP      BX
&0000:7C34 43              INC      BX
&0000:7C35 EBEE            JMP      7C25
&0000:7C37 33C0            XOR      AX,AX
&0000:7C39 CD16            INT      16
&0000:7C3B EBC3            JMP      7C00
&0000:7C3D C3              RET     
&0000:7C3E FC              CLD     
&0000:7C3F 8BF3            MOV      SI,BX
&0000:7C41 BFC400          MOV      DI,00C4
&0000:7C44 B90B00          MOV      CX,000B
&0000:7C47 F3              REPZ    
&0000:7C48 A6              CMPSB   
&0000:7C49 75D7            JNZ      7C22
&0000:7C4B 83C615          ADD      SI,0015
&0000:7C4E B90B00          MOV      CX,000B
&0000:7C51 F3              REPZ    
&0000:7C52 A6              CMPSB   
&0000:7C53 75CD            JNZ      7C22
&0000:7C55 B80102          MOV      AX,0201
&0000:7C58 BB0002          MOV      BX,0200
&0000:7C5B B90200          MOV      CX,0002
&0000:7C5E 33D2            XOR      DX,DX
&0000:7C60 E84800          CALL     7CAB
&0000:7C63 8A27            MOV      AH,[BX]
&0000:7C65 80FCFE          CMP      AH,FE
&0000:7C68 BE2601          MOV      SI,0126
&0000:7C6B 740A            JZ       7C77
&0000:7C6D 80FCFF          CMP      AH,FF
&0000:7C70 7402            JZ       7C74
&0000:7C72 EBAE            JMP      7C22
&0000:7C74 BE3C01          MOV      SI,013C
&0000:7C77 B86000          MOV      AX,0060
&0000:7C7A 50              PUSH     AX
&0000:7C7B 07              POP      ES
&0000:7C7C 8B04            MOV      AX,[SI]
&0000:7C7E 33DB            XOR      BX,BX
&0000:7C80 8B4C02          MOV      CX,[SI+02]
&0000:7C83 8B5404          MOV      DX,[SI+04]
&0000:7C86 E82200          CALL     7CAB
&0000:7C89 8B4406          MOV      AX,[SI+06]
&0000:7C8C 035C08          ADD      BX,[SI+08]
&0000:7C8F 8B4C0A          MOV      CX,[SI+0A]
&0000:7C92 8B540C          MOV      DX,[SI+0C]
&0000:7C95 E81300          CALL     7CAB
&0000:7C98 8B440E          MOV      AX,[SI+0E]
&0000:7C9B 035C10          ADD      BX,[SI+10]
&0000:7C9E 8B4C12          MOV      CX,[SI+12]
&0000:7CA1 8B5414          MOV      DX,[SI+14]
&0000:7CA4 E80400          CALL     7CAB
&0000:7CA7 FF2E5201        JMP      FAR [0152]
&0000:7CAB BF0500          MOV      DI,0005
&0000:7CAE 57              PUSH     DI
&0000:7CAF 50              PUSH     AX
&0000:7CB0 CD13            INT      13
&0000:7CB2 7203            JC       7CB7
&0000:7CB4 58              POP      AX
&0000:7CB5 58              POP      AX
&0000:7CB6 C3              RET     
&0000:7CB7 33C0            XOR      AX,AX
&0000:7CB9 CD13            INT      13
&0000:7CBB 58              POP      AX
&0000:7CBC 5F              POP      DI
&0000:7CBD 4F              DEC      DI
&0000:7CBE 75EE            JNZ      7CAE
&0000:7CC0 58              POP      AX
&0000:7CC1 E95EFF          JMP      7C22
>> db 7cc4 l13c
&7CC4  49 4F 53 59 53 20 20 20-43 4F 4D 4D 53 44 4F 53  IOSYS   COMMSDOS
&7CD4  20 20 20 43 4F 4D 0A 0D-4E 6F 6E 2D 53 79 73 74     COM..Non-Syst
&7CE4  65 6D 20 64 69 73 6B 20-6F 72 20 64 69 73 6B 20  em disk or disk 
&7CF4  65 72 72 6F 72 0A 0D 52-65 70 6C 61 63 65 20 61  error..Replace a
&7D04  6E 64 20 73 74 72 69 6B-65 20 61 6E 79 20 6B 65  nd strike any ke
&7D14  79 20 77 68 65 6E 20 72-65 61 64 79 0A 0D 24 47  y when ready..$G
&7D24  41 53 01 02 08 00 00 00-08 02 00 02 01 01 00 00  AS..............
&7D34  08 02 00 10 01 02 00 00-06 02 03 00 00 01 08 02  ................
&7D44  00 0C 01 01 00 00 03 02-00 10 01 01 00 01 00 00  ................
&7D54  60 00 28 43 29 43 6F 70-79 72 69 67 68 74 20 43  `.(C)Copyright C
&7D64  4F 4D 50 41 51 20 43 6F-6D 70 75 74 65 72 20 43  OMPAQ Computer C
&7D74  6F 72 70 6F 72 61 74 69-6F 6E 20 31 39 38 32 00  orporation 1982.
&7D84  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&7D94  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&7DA4  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&7DB4  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&7DC4  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&7DD4  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
&7DE4  00 00 00 E7 01 00 00 00-00 00 00 00 00 00 00 00  ................
&7DF4  00 00 00 00 00 00 00 00-00 00 00 00

Mounting the COMPAQ MS-DOS 1.11 Diskette

Note that the disk cannot be mounted by a modern operating system (e.g., macOS), because it lacks a proper BPB at offset 0x000B.

To resolve the mounting problem, one solution is to use the DiskDump utility's --forceBPB option, which creates a mountable disk image by making the following boot sector modifications:

00000000  eb fe 90 50 43 4a 53 2e  4f 52 47 00 02 02 01 00  |...PCJS.ORG.....|
00000010  02 70 00 80 02 ff 01 00  08 00 02 00 00 00 00 00  |.p..............|
00000020  00 00 00 00 00 8a 07 3c  24 74 0c 53 b4 0e bb 07  |.......<$t.S....|

The following (hex) byte ranges are modified:

  • 0000-0002: 2-byte Intel x86 JMP instruction followed by 1-byte x86 NOP
  • 0003-000A: 8-byte OEM signature string (we use the fake "PCJS.ORG" OEM signature)
  • 000B-001D: 19-byte BPB describing a 320Kb diskette image with 8 sectors/track and 2 heads

Ordinarily, only the 19-byte BPB would be required, but it turns out that macOS won't mount the disk image unless the boot sector also begins with an Intel x86 JMP instruction. So the --forceBPB option updates all 30 bytes at the beginning of the boot sector, making the disk image mountable, but also rendering it unbootable -- which is OK if all you want to do is mount the image and copy files from it.

One common misconception is that the last word of a mountable boot sector must also contain 0xAA55 (ie, the low byte at offset 0x1FE must be 0x55 and the high byte at offset 0x1FF must be 0xAA). This claim is often backed up by pointing out that some (newer) ROMs will not boot from a disk if that signature is missing.

However, that evidence is misleading, because those ROMs check only hard disk boot sectors for the 0xAA55 signature, not diskettes. Which makes sense, because hard disk support didn't exist in DOS until version 2.0 -- the same version of DOS that also introduced BPBs and the 0xAA55 boot sector signature.

Here's how you can use DiskDump to a mountable disk. Note that two DiskDump commands are required, because BPB modification only happens when converting an IMG file to a JSON file; the second DiskDump command converts the modified JSON back into an IMG file.

diskdump --disk=COMPAQ-DOS111.img --format=json --forceBPB --output=COMPAQ-DOS111-BPB.json
warning: BPB has been updated
327680-byte disk image saved to COMPAQ-DOS111-BPB.json
diskdump --disk=COMPAQ-DOS111-BPB.json --format=img --output=COMPAQ-DOS111-BPB.img
327680-byte disk image saved to COMPAQ-DOS111-BPB.img
chmod -w COMPAQ-DOS111-BPB.img
open COMPAQ-DOS111-BPB.img
mkdir COMPAQ-DOS111
cp -pr /Volumes/Untitled/ COMPAQ-DOS111

[Return to COMPAQ MS-DOS Disks]