From 28ca41277bf113afc0c886c0bee5a72b076efc30 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Wed, 6 Sep 2023 00:04:25 -0700 Subject: [PATCH 1/3] pc.js now supports --hidden to increase number of hidden sectors on disk (also disables boot sector bug fix using hidden sectors) --- .vscode/launch.json | 8 ++++---- machines/pcx86/modules/v3/diskinfo.js | 17 +++++++++++++--- tools/pc/pc.js | 29 +++++++++++++++++---------- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 78accc8b7..e95238f37 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -478,13 +478,13 @@ "request": "launch", "program": "${workspaceFolder}/tools/pc/pc.js", "args": [ - "ver", - "--sys=pcdos:3.0", + "load info", + "--sys=pcdos:2.0", "--drive=pcjs", "--target=1M", - "--halt" + "--hidden=1948" ], - "cwd": "${workspaceFolder}/tools/pc/disks/test", + "cwd": "${workspaceFolder}/tools/pc/disks/empty", "stopOnEntry": false, "console": "integratedTerminal", "outFiles": [ diff --git a/machines/pcx86/modules/v3/diskinfo.js b/machines/pcx86/modules/v3/diskinfo.js index faa7760ed..6ff8c327e 100644 --- a/machines/pcx86/modules/v3/diskinfo.js +++ b/machines/pcx86/modules/v3/diskinfo.js @@ -98,6 +98,7 @@ import { DRIVE_CTRLS, DRIVE_TYPES } from "./driveinfo.js"; * @property {number} typeFAT * @property {number} clusterSize * @property {number} rootEntries + * @property {number} hiddenSectors * @property {number} verDOS * @property {boolean} trimFAT * @property {boolean} partitioned @@ -1494,9 +1495,14 @@ export default class DiskInfo { if (driveInfo.partitioned) { bMediaID = 0xF8; - cHiddenSectors = 1; // our hard disk images are always partitioned and always reserve a diagnostic cylinder + cHiddenSectors = 1 + (driveInfo.hiddenSectors || 0); cDiagnosticSectors = cHeads * cSectorsPerTrack; } + + if (cTotalSectors <= cHiddenSectors + cDiagnosticSectors) { + this.printf(Device.MESSAGE.DISK + Device.MESSAGE.ERROR, "insufficient sectors (%d total, %d unusable)\n", cTotalSectors, cHiddenSectors + cDiagnosticSectors); + return false; + } cTotalSectors -= cHiddenSectors + cDiagnosticSectors; cbSector = driveInfo.cbSector || cbSector; @@ -1754,7 +1760,7 @@ export default class DiskInfo { */ let cFileSectors = 0; if (aFileData[0]) { - let maxAdjustments = driveInfo.trimFAT? 0 : cSectorsPerTrack; + let maxAdjustments = driveInfo.hiddenSectors? 0 : cSectorsPerTrack; cFileSectors = Math.ceil(aFileData[0].size / cbSector); while (maxAdjustments--) { let cInitSectors = cHiddenSectors + cReservedSectors + cFATs * cFATSectors + cRootSectors; @@ -1896,8 +1902,13 @@ export default class DiskInfo { return false; } + if (cbTotal > cbAvail) { + this.printf(Device.MESSAGE.DISK + Device.MESSAGE.ERROR, "file(s) too large (%d bytes total, %d bytes available)\n", cbTotal, cbAvail); + return false; + } + let abSector, offDisk = 0; - let cbDisk = cTotalSectors * cbSector; + let cbDisk = (cTotalSectors + cHiddenSectors) * cbSector; /* * If the disk is actually a partition on a larger drive, calculate how much larger the drive data diff --git a/tools/pc/pc.js b/tools/pc/pc.js index fe89f310d..ab7d854c9 100755 --- a/tools/pc/pc.js +++ b/tools/pc/pc.js @@ -72,6 +72,7 @@ let driveInfo = { typeFAT: 0, // set this to 12 or 16 to request a specific FAT type clusterSize: 0, // set this to a specific cluster size (in bytes) if desired rootEntries: 0, // set this to a specific number of root directory entries if desired + hiddenSectors: 0, // set this to a specific number of hidden sectors if desired verDOS: 0, trimFAT: false, partitioned: undefined, @@ -765,7 +766,7 @@ function getDriveInfo() info.sectorsReserved = vol.vbaFAT; info.sectorsFAT = (sectorsFAT / info.totalFATs)|0; info.sectorsRoot = Math.ceil((info.sizeRoot * 32) / vol.cbSector); - info.sectorsTotal = vol.lbaTotal + vol.lbaStart; + info.sectorsTotal = vol.lbaTotal; info.sectorsData = info.sectorsTotal - info.sectorsReserved - sectorsFAT - info.sectorsRoot; info.clusterSize = vol.clusSecs * vol.cbSector; info.clustersTotal = vol.clusTotal; @@ -777,7 +778,7 @@ function getDriveInfo() text += sprintf(" %d FAT sectors (x%d), %d root sectors (%d entries)\n", info.sectorsFAT, info.totalFATs, info.sectorsRoot, info.sizeRoot); text += sprintf(" %d total sectors, %d data sectors, %d data bytes\n", info.sectorsTotal, info.sectorsData, info.bytesTotal); if (fTest) { - text += sprintf(" %3.2f usage of final FAT sector\n", info.usageFinalFAT); + text += sprintf(" %3.2f% usage of final FAT sector\n", info.usageFinalFAT); } } } @@ -2779,22 +2780,28 @@ function main(argc, argv) } } + let hiddenSectors = removeArg('hidden'); + if (hiddenSectors) { + driveInfo.hiddenSectors = +hiddenSectors || 0; + } + if (removeFlag('help')) { let optionsMain = { "--start=[machine]": "start machine configuration file", }; let optionsDisk = { - "--dir=[directory]": "set drive local directory (default is " + localDir + ")", - "--disk=[image]": "\tset drive disk image (instead of directory)", - "--drive=[controller]": "set drive controller (eg, XT, AT, COMPAQ)", - "--drivetype=[value]": "set drive type or C:H:S (eg, 306:4:17)", - "--fat=[number]": "\tset hard disk FAT type (12 or 16)", - "--label=[label]": "\tset volume label of disk image", - "--maxfiles=[number]": "set maximum local files (default is " + maxFiles + ")", + "--dir=[directory]": "drive directory (default is " + localDir + ")", + "--disk=[image]": "\tdrive disk image (instead of directory)", + "--drive=[controller]": "drive controller (XT, AT, COMPAQ, or PCJS)", + "--drivetype=[value]": "drive type or C:H:S (eg, 306:4:17)", + "--fat=[number]": "\thard disk FAT type (12 or 16)", + "--hidden=[number]": "additional hidden sectors (default is 0)", + "--label=[label]": "\tvolume label of disk image", + "--maxfiles=[number]": "maximum local files (default is " + maxFiles + ")", "--normalize=[boolean]": "convert text file encoding (default is " + fNormalize + ")", "--save=[image]": "\tsave drive disk image and exit", "--sys=[string]": "\toperating system type (default is " + systemType + ")", - "--target=[nK|nM]": "set target disk size (default is " + ((kbTarget / 1024)|0) + "M)", + "--target=[nK|nM]": "target disk size (default is " + ((kbTarget / 1024)|0) + "M)", "--ver=[#.##]": "\toperating system version (default is " + systemVersion + ")" }; let optionsOther = { @@ -2820,7 +2827,7 @@ function main(argc, argv) printf("\t%s\t%s\n", option, optionGroups[group][option]); } } - printf("\nnotes:\n\t--type can also specify a drive geometry (eg, --type=306:4:17)\n"); + printf("\nnotes:\n\t--drivetype can also specify a drive geometry (eg, --drivetype=306:4:17)\n"); printf("\t--fat can also specify cluster and root directory sizes (eg, --fat=16:2048:512)\n"); printf("\tAll values should be considered advisory, as it may not be possible to honor them.\n"); printf("\npc.js configuration settings are stored in %s\n", path.join(pcjsDir, configFile)); From 687f370149d4cd487d9fbef61fc947560b3e0c22 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Wed, 6 Sep 2023 09:57:43 -0700 Subject: [PATCH 2/3] Fixed some typos in the clusters per sector checks --- machines/pcx86/modules/v3/diskinfo.js | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/machines/pcx86/modules/v3/diskinfo.js b/machines/pcx86/modules/v3/diskinfo.js index 6ff8c327e..bd1b9ea7f 100644 --- a/machines/pcx86/modules/v3/diskinfo.js +++ b/machines/pcx86/modules/v3/diskinfo.js @@ -1560,23 +1560,21 @@ export default class DiskInfo { cSectorsPerCluster = 4; } else if (cTotalSectors <= 32680) { // 0x7FA8 (16Mb) cSectorsPerCluster = 8; - } else { - if (driveInfo.verDOS >= 3.0) { - typeFAT = 16; - if (cTotalSectors <= 262144) { // 0x40000 (128Mb) - cSectorsPerCluster = 4; - } else if (cSectorsPerCluster <= 524288) { // 0x80000 (256Mb) - cSectorsPerCluster = 8; - } else if (cSectorsPerCluster <= 1048576) { // 0x100000 (512Mb) - cSectorsPerCluster = 16; - } else if (cSectorsPerCluster <= 2097152) { // 0x200000 (1Gb) - cSectorsPerCluster = 32; - } else /* if (cSectorsPerCluster <= 4194304) */ { // 0x400000 (2Gb) - cSectorsPerCluster = 64; - } + } else if (driveInfo.verDOS >= 3.0) { + typeFAT = 16; + if (cTotalSectors <= 262144) { + cSectorsPerCluster = 4; // 0x40000 (128Mb) + }else if (cTotalSectors <= 524288) { + cSectorsPerCluster = 8; // 0x80000 (256Mb) + } else if (cTotalSectors <= 1048576) { + cSectorsPerCluster = 16; // 0x100000 (512Mb) + } else if (cTotalSectors <= 2097152) { + cSectorsPerCluster = 32; // 0x200000 (1Gb) } else { - cSectorsPerCluster = 16; + cSectorsPerCluster = 64; // 0x400000 (2Gb) } + } else { + cSectorsPerCluster = 16; } } if (!driveInfo.rootEntries) { @@ -1614,6 +1612,7 @@ export default class DiskInfo { minClusters = (typeFAT == 12)? 0 : DiskInfo.FAT12.MAX_CLUSTERS + 1; maxClusters = (typeFAT == 12)? DiskInfo.FAT12.MAX_CLUSTERS : DiskInfo.FAT16.MAX_CLUSTERS; grossClusters = Math.floor(cTotalSectors / cSectorsPerCluster); + /* * We start with the basic estimate of sectors per FAT that DOS 2.x used for FAT12. */ @@ -1647,6 +1646,7 @@ export default class DiskInfo { let divisor = cSectorsPerCluster * 256 + cFATs; cFATSectors = Math.ceil((cTotalSectors - cReservedSectors - cRootSectors) / divisor); } + /* * This next bit is an experiment, because it turns out a disk with 10948 total sectors (162:4:17) * and 4K clusters only needs 4 sectors per FAT, not 5. And yes, that drive geometry actually has From ca860c713ef71a10e27a6f15b5d4f72b77875eab Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Wed, 6 Sep 2023 22:24:01 -0700 Subject: [PATCH 3/3] Added page for COMPAQ DOS 3.20 and updated other COMPAQ DOS pages --- .vscode/launch.json | 7 +- .vscode/settings.json | 1 + machines/pcx86/diskettes.json | 51 ++++-- software/pcx86/sys/dos/compaq/1.10/README.md | 5 +- software/pcx86/sys/dos/compaq/1.11/README.md | 4 +- software/pcx86/sys/dos/compaq/1.12/README.md | 6 +- software/pcx86/sys/dos/compaq/2.11/README.md | 42 ++++- software/pcx86/sys/dos/compaq/2.12/README.md | 3 +- software/pcx86/sys/dos/compaq/3.00/README.md | 3 +- software/pcx86/sys/dos/compaq/3.10/README.md | 169 ++++++++++++++++--- software/pcx86/sys/dos/compaq/3.20/README.md | 84 +++++++++ tools/pc/pc.js | 8 +- tools/pc/pc.json5 | 12 +- 13 files changed, 327 insertions(+), 68 deletions(-) create mode 100644 software/pcx86/sys/dos/compaq/3.20/README.md diff --git a/.vscode/launch.json b/.vscode/launch.json index e95238f37..0dc8c072f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -478,11 +478,8 @@ "request": "launch", "program": "${workspaceFolder}/tools/pc/pc.js", "args": [ - "load info", - "--sys=pcdos:2.0", - "--drive=pcjs", - "--target=1M", - "--hidden=1948" + "--sys=compaq", + "--ver=3.10e" ], "cwd": "${workspaceFolder}/tools/pc/disks/empty", "stopOnEntry": false, diff --git a/.vscode/settings.json b/.vscode/settings.json index ff9f74771..c6cad91db 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -470,6 +470,7 @@ "discontiguous", "DISHRQ", "diskapi", + "DISKCOMP", "DISKCOPY", "DISKDATA", "diskdump", diff --git a/machines/pcx86/diskettes.json b/machines/pcx86/diskettes.json index 9e65628b4..f1ec3d243 100644 --- a/machines/pcx86/diskettes.json +++ b/machines/pcx86/diskettes.json @@ -1246,12 +1246,6 @@ "@diskette": "COMPAQ-DOS110B.json", "@photo": "jpg", "@format": "PC320K" - }, - { - "@title": "COMPAQ MS-DOS 1.10 Rev E", - "@diskette": "COMPAQ-DOS110E.json", - "@photo": "jpg", - "@format": "PC320K" } ], "@documents": [ @@ -1359,19 +1353,34 @@ "@bootable": true, "@media": [ { - "@title": "COMPAQ MS-DOS 3.10 (Disk 1)", - "@diskette": "COMPAQ-DOS310-DISK1.json", + "@title": "COMPAQ MS-DOS 3.10 (1985 1.2M)", + "@diskette": "COMPAQ-DOS310-PERSONAL.json", + "@format": "PC1200K" + }, + { + "@title": "COMPAQ MS-DOS 3.10 (1985-09 Disk 1)", + "@diskette": "COMPAQ-DOS310-19850930-DISK1.json", "@format": "PC360K" }, { - "@title": "COMPAQ MS-DOS 3.10 (Disk 2)", - "@diskette": "COMPAQ-DOS310-DISK2.json", + "@title": "COMPAQ MS-DOS 3.10 (1985-09 Disk 2)", + "@diskette": "COMPAQ-DOS310-19850930-DISK2.json", "@format": "PC360K" }, { - "@title": "COMPAQ MS-DOS 3.10 (12-17-85)", - "@diskette": "COMPAQ-DOS310-PERSONAL.json", - "@format": "PC1200K" + "@title": "COMPAQ MS-DOS 3.10 (1986-03 Disk 1)", + "@diskette": "COMPAQ-DOS310-19860327-DISK1.json", + "@format": "PC360K" + }, + { + "@title": "COMPAQ MS-DOS 3.10 (1986-10 Disk 1)", + "@diskette": "COMPAQ-DOS310-19861031-DISK1.json", + "@format": "PC360K" + }, + { + "@title": "COMPAQ MS-DOS 3.10 (1986-10 Disk 2)", + "@diskette": "COMPAQ-DOS310-19861031-DISK2.json", + "@format": "PC360K" }, { "@title": "COMPAQ PC DOS 3.20 Support", @@ -1380,6 +1389,22 @@ } ] }, + "3.20": { + "@title": "COMPAQ MS-DOS 3.20", + "@bootable": true, + "@media": [ + { + "@title": "COMPAQ MS-DOS 3.20A (Disk 1)", + "@diskette": "COMPAQ-DOS320A-DISK1.json", + "@format": "PC360K" + }, + { + "@title": "COMPAQ MS-DOS 3.20A (Disk 2)", + "@diskette": "COMPAQ-DOS320A-DISK2.json", + "@format": "PC360K" + } + ] + }, "3.31": { "@title": "COMPAQ MS-DOS 3.31", "@bootable": true, diff --git a/software/pcx86/sys/dos/compaq/1.10/README.md b/software/pcx86/sys/dos/compaq/1.10/README.md index cce23efa8..ce78ac761 100644 --- a/software/pcx86/sys/dos/compaq/1.10/README.md +++ b/software/pcx86/sys/dos/compaq/1.10/README.md @@ -18,7 +18,6 @@ Released in 1983 by COMPAQ Computer Corp, this version of MS-DOS reports itself The COMPAQ Personal Computer DOS Version 1.10 - (C) Copyright COMPAQ Computer Corp. 1982 (C) Copyright Microsoft 1981, 82 @@ -374,9 +373,9 @@ mounting it), mount the image as `/Volumes/Untitled`, and then copy the contents open archive/COMPAQ-DOS110B.img cp -pr /Volumes/Untitled Disk -{% include gallery/documents.html %} +### COMPAQ MS-DOS 1.10 Rev E -### Directory of COMPAQ MS-DOS 1.10 Rev E +I also had a disk labeled "COMPAQ Personal Computer DOS Version 1.10 Rev E", but the entire disk was identical to [Version 1.11](../1.11/), so either the label was a misprint or (more likely) whoever owned the disk before me overwrote it with version 1.11. So I have removed the "1.10 Rev E" disk image from the PCjs library until a genuine copy turns up. Volume in drive A has no label Directory of A:\ diff --git a/software/pcx86/sys/dos/compaq/1.11/README.md b/software/pcx86/sys/dos/compaq/1.11/README.md index ed5bdfe92..c3fc3a8d9 100644 --- a/software/pcx86/sys/dos/compaq/1.11/README.md +++ b/software/pcx86/sys/dos/compaq/1.11/README.md @@ -20,7 +20,6 @@ Released in 1983 by COMPAQ Computer Corp, this version of MS-DOS reports itself The COMPAQ Personal Computer DOS Version 1.11 - (C) Copyright COMPAQ Computer Corp. 1982 (C) Copyright Microsoft 1981, 82 @@ -110,5 +109,4 @@ The boot sector of the COMPAQ MS-DOS 1.11 disk image contains the following byte 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 |................| -It is identical to the [COMPAQ MS-DOS 1.10 Boot Sector](../1.10/#compaq-ms-dos-110-boot-sector), -so refer to that page for more information. +It is identical to the [COMPAQ MS-DOS 1.10 Boot Sector](../1.10/#compaq-ms-dos-110-boot-sector), so refer to that page for more information. diff --git a/software/pcx86/sys/dos/compaq/1.12/README.md b/software/pcx86/sys/dos/compaq/1.12/README.md index 72bad4b5b..85900f5ab 100644 --- a/software/pcx86/sys/dos/compaq/1.12/README.md +++ b/software/pcx86/sys/dos/compaq/1.12/README.md @@ -23,8 +23,7 @@ Released in 1983 by COMPAQ Computer Corp, this version of MS-DOS reports itself (C) Copyright COMPAQ Computer Corp. 1982, 83 (C) Copyright Microsoft 1981, 82 -To learn more about this double-sided 320Kb diskette, see the -[Directory Listing](#directory-of-compaq-ms-dos-112) and [Boot Sector](#compaq-ms-dos-112-boot-sector) below. +To learn more about this double-sided 320Kb diskette, see the [Directory Listing](#directory-of-compaq-ms-dos-112) and [Boot Sector](#compaq-ms-dos-112-boot-sector) below. {% include machine.html id="ibm5150-compaq112" %} @@ -101,5 +100,4 @@ The boot sector of the COMPAQ MS-DOS 1.12 disk image contains the following byte 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 |................| -It is identical to the [COMPAQ MS-DOS 1.10 Boot Sector](../1.10/#compaq-ms-dos-110-boot-sector), -so refer to that page for more information. +It is identical to the [COMPAQ MS-DOS 1.10 Boot Sector](../1.10/#compaq-ms-dos-110-boot-sector), so refer to that page for more information. diff --git a/software/pcx86/sys/dos/compaq/2.11/README.md b/software/pcx86/sys/dos/compaq/2.11/README.md index 811b878b5..77cd7e090 100644 --- a/software/pcx86/sys/dos/compaq/2.11/README.md +++ b/software/pcx86/sys/dos/compaq/2.11/README.md @@ -23,8 +23,7 @@ Released in 1984 by COMPAQ Computer Corp, this early version of MS-DOS displays (C) Copyright COMPAQ Computer Corp. 1982, 83, 84 (C) Copyright Microsoft 1981, 82, 83 -A directory listing of the diskette is provided [below](#directory-of-compaq-ms-dos-211). -We also have copies of the original [COMPAQ MS-DOS Version 2 Documentation](#documents). +A directory listing of the diskette is provided [below](#directory-of-compaq-ms-dos-211). We also have copies of the original [COMPAQ MS-DOS Version 2 Documentation](#documents). {% include machine.html id="ibm5160-compaq211" %} @@ -75,6 +74,45 @@ We also have copies of the original [COMPAQ MS-DOS Version 2 Documentation](#doc 39 file(s) 335452 bytes 7168 bytes free +### COMPAQ MS-DOS 2.11 Boot Sector + +Unlike COMPAQ's 1.x releases, which used system files `IOSYS.COM` and `MSDOS.COM`, COMPAQ switched to IBM's naming convention: `IBMBIO.COM` and `IBMDOS.COM`. However, COMPAQ opted to use an OEM signature of `CCC 2.1` instead of `IBM 2.0`. + +The boot sector of the COMPAQ MS-DOS 2.11 disk image contains the following bytes: + + 00000000 eb 35 90 43 43 43 20 20 32 2e 31 00 02 02 01 00 |.5.CCC 2.1.....| + 00000010 02 70 00 d0 02 fd 02 00 09 00 02 00 00 00 df 02 |.p..............| + 00000020 25 02 09 2a ff 50 f6 00 02 00 00 00 00 00 00 00 |%..*.P..........| + 00000030 00 be 8c 01 e9 15 01 c4 5c 08 33 ed b8 c0 07 8e |........\.3.....| + 00000040 d8 0a d2 79 12 89 1e 29 00 8c 06 2b 00 88 16 2d |...y...)...+...-| + 00000050 00 c7 06 2f 00 02 00 8e c5 8e d5 bc 00 7c fc bf |.../.........|..| + 00000060 78 00 b8 1e 00 ab 8c d8 ab a1 16 00 d1 e0 40 01 |x.............@.| + 00000070 06 29 00 11 2e 2b 00 e8 67 00 bb 00 05 53 b0 01 |.)...+..g....S..| + 00000080 e8 94 00 5f be 76 01 b9 0b 00 f3 a6 75 a3 83 c7 |..._.v......u...| + 00000090 15 b1 0b f3 a6 75 9a a1 11 00 b1 04 d3 e8 01 06 |.....u..........| + 000000a0 29 00 11 2e 2b 00 ff 36 29 00 c4 1e 72 01 e8 30 |)...+..6)...r..0| + 000000b0 00 00 06 2e 00 e8 5f 00 01 06 29 00 11 2e 2b 00 |......_...)...+.| + 000000c0 80 3e 2e 00 11 72 e7 cd 11 d1 e0 d1 e0 80 e4 03 |.>...r..........| + 000000d0 b9 02 00 74 04 fe c4 8a cc a1 2f 00 5b ff 2e 72 |...t....../.[..r| + 000000e0 01 a1 18 00 f6 26 1a 00 91 a1 29 00 8b 16 2b 00 |.....&....)...+.| + 000000f0 f7 f1 92 8b 0e 18 00 f6 f1 fe c4 86 cc d0 ce d0 |................| + 00000100 ce 0a ce 8a ea 8a f0 8a 16 2d 00 51 80 e1 3f 2a |.........-.Q..?*| + 00000110 e1 fe c4 8a c4 59 c3 98 96 56 bf 05 00 b8 01 02 |.....Y...V......| + 00000120 cd 13 72 0a 80 c7 02 fe c1 4e 75 f1 58 c3 80 fc |..r......Nu.X...| + 00000130 11 75 0f 1e b8 00 c8 8e d8 81 3e ea 1f 43 4f 1f |.u........>..CO.| + 00000140 74 e2 33 c0 cd 13 4f 75 d4 be d6 01 e8 1d 00 be |t.3...Ou........| + 00000150 ac 01 e8 17 00 33 c0 cd 16 26 c7 06 72 04 34 12 |.....3...&..r.4.| + 00000160 ea 00 00 ff ff b4 0e bb 07 00 cd 10 ac 3c 24 75 |.............<$u| + 00000170 f4 c3 00 00 70 00 49 42 4d 42 49 4f 20 20 43 4f |....p.IBMBIO CO| + 00000180 4d 49 42 4d 44 4f 53 20 20 43 4f 4d 0a 0d 4e 6f |MIBMDOS COM..No| + 00000190 6e 2d 53 79 73 74 65 6d 20 64 69 73 6b 20 6f 72 |n-System disk or| + 000001a0 20 64 69 73 6b 20 65 72 72 6f 72 24 0a 0d 52 65 | disk error$..Re| + 000001b0 70 6c 61 63 65 20 61 6e 64 20 73 74 72 69 6b 65 |place and strike| + 000001c0 20 61 6e 79 20 6b 65 79 20 77 68 65 6e 20 72 65 | any key when re| + 000001d0 61 64 79 0a 0d 24 0a 0d 44 69 73 6b 20 62 6f 6f |ady..$..Disk boo| + 000001e0 74 20 66 61 69 6c 75 72 65 24 43 6f 70 72 2e 20 |t failure$Copr. | + 000001f0 43 4f 4d 50 41 51 20 31 39 38 33 2c 38 34 55 aa |COMPAQ 1983,84U.| + {% include gallery/documents.html %} diff --git a/software/pcx86/sys/dos/compaq/2.12/README.md b/software/pcx86/sys/dos/compaq/2.12/README.md index 50cb612f5..86dcbd835 100644 --- a/software/pcx86/sys/dos/compaq/2.12/README.md +++ b/software/pcx86/sys/dos/compaq/2.12/README.md @@ -23,8 +23,7 @@ Released in 1984 by COMPAQ Computer Corp, this early version of MS-DOS displays (C) Copyright COMPAQ Computer Corp. 1982, 83, 84 (C) Copyright Microsoft 1981, 82, 83 -A directory listing of the diskette is provided [below](#directory-of-compaq-ms-dos-212). -We also have copies of the original [COMPAQ MS-DOS Version 2 Documentation](#documents). +A directory listing of the diskette is provided [below](#directory-of-compaq-ms-dos-212). We also have copies of the original [COMPAQ MS-DOS Version 2 Documentation](#documents). {% include machine.html id="ibm5160-compaq212" %} diff --git a/software/pcx86/sys/dos/compaq/3.00/README.md b/software/pcx86/sys/dos/compaq/3.00/README.md index 611060016..6cb0a0ef7 100644 --- a/software/pcx86/sys/dos/compaq/3.00/README.md +++ b/software/pcx86/sys/dos/compaq/3.00/README.md @@ -24,8 +24,7 @@ Released in 1985 by COMPAQ Computer Corp, this version of MS-DOS displays the fo (C) Copyright COMPAQ Computer Corp. 1982, 1983, 1984, 1985 (C) Copyright Microsoft Corp. 1981, 1982, 1983, 1984, 1985 -[Directory Listings](#directory-of-compaq-ms-dos-300-disk-1) of the distribution diskettes are provided below. -Thanks (again) to the [OS/2 Museum](http://www.os2museum.com/) for sharing these disks with us. +[Directory Listings](#directory-of-compaq-ms-dos-300-disk-1) of the distribution diskettes are provided below. Thanks (again) to the [OS/2 Museum](http://www.os2museum.com/) for sharing these disks with us. {% include machine.html id="ibm5170-compaq300" %} diff --git a/software/pcx86/sys/dos/compaq/3.10/README.md b/software/pcx86/sys/dos/compaq/3.10/README.md index d6f0a8c0a..dd65e0c2e 100644 --- a/software/pcx86/sys/dos/compaq/3.10/README.md +++ b/software/pcx86/sys/dos/compaq/3.10/README.md @@ -11,28 +11,30 @@ machines: config: /machines/pcx86/compaq/deskpro386/ega/2048kb/machine.xml autoMount: A: - name: COMPAQ MS-DOS 3.10 (Disk 1) + name: COMPAQ MS-DOS 3.10 (1985-09 Disk 1) B: - name: COMPAQ MS-DOS 3.10 (Disk 2) + name: COMPAQ MS-DOS 3.10 (1985-09 Disk 2) autoStart: true + autoType: \r\r --- -This directory contains two different releases of COMPAQ MS-DOS 3.10: +This directory contains *four* different variations of COMPAQ MS-DOS 3.10: - - [COMPAQ MS-DOS 3.10 (dated 10-31-86)](#compaq-ms-dos-310-10-31-86) - - [COMPAQ MS-DOS 3.10 (dated 12-17-85)](#compaq-ms-dos-310-12-17-85) + - [COMPAQ MS-DOS 3.10 (1985-09)](#directory-of-compaq-ms-dos-310-1985-09-disk-1) + - [COMPAQ MS-DOS 3.10 (1986-03)](#directory-of-compaq-ms-dos-310-1986-03-disk-1) + - [COMPAQ MS-DOS 3.10 (1986-10)](#directory-of-compaq-ms-dos-310-1986-10-disk-1) -However, the older release is not a distribution copy. It is provided for historical interest only. +including a December 1985 disk image from the PCjs library (it is not a distribution copy and is provided for historical interest only): -All COMPAQ Supplemental User Programs, as well as diagnostics and setup utilities, are now filed under -`COMPAQ Diagnostics`. The earliest known version of `CEMM` can be found on the -[COMPAQ DeskPro 386 (1986)](/software/pcx86/diag/compaq/1986/) diskette. + - [COMPAQ MS-DOS 3.10 (1985-12)](#compaq-ms-dos-310-1985-12) + +All COMPAQ Supplemental User Programs, as well as diagnostics and setup utilities, are now filed under `COMPAQ Diagnostics`. The earliest known version of `CEMM` can be found on the [COMPAQ DeskPro 386 (1986)](/software/pcx86/diag/compaq/1986/) diskette. {% include machine.html id="deskpro386" %} -### COMPAQ MS-DOS 3.10 (10-31-86) +### COMPAQ MS-DOS 3.10 -Released in 1986 by COMPAQ Computer Corp, this version of MS-DOS displays the following messages on boot: +Released in 1985 by COMPAQ Computer Corp, this version of MS-DOS displays the following messages on boot: The COMPAQ Personal Computer MS-DOS Version 3.10 @@ -40,9 +42,134 @@ Released in 1986 by COMPAQ Computer Corp, this version of MS-DOS displays the fo (C) Copyright COMPAQ Computer Corp. 1982,83,84,85 (C) Copyright Microsoft Corp. 1982,82,83,84,85 -Directory listings of the two 360Kb distribution diskettes are provided below. +Directory listings of the distribution diskettes are provided below. + +### Directory of COMPAQ MS-DOS 3.10 (1985-09 Disk 1) + + Volume in drive A has no label + Directory of A:\ + + IBMBIO COM* 9728 9-30-85 12:00p + IBMDOS COM* 27760 9-30-85 12:00p + COMMAND COM 23210 9-30-85 12:00p + VDISK SYS 2926 9-30-85 12:00p + ANSI SYS 1593 9-30-85 12:00p + ENHDISK SYS 1569 9-30-85 12:00p + CLOCK SYS 1458 9-30-85 12:00p + FORMAT COM 8987 9-30-85 12:00p + CHKDSK COM 9435 9-30-85 12:00p + SYS COM 3823 9-30-85 12:00p + DISKCOMP COM 2897 9-30-85 12:00p + DISKCOPY COM 3006 9-30-85 12:00p + COMP COM 2470 9-30-85 12:00p + MODE COM 4180 9-30-85 12:00p + FDISK COM 7200 9-30-85 12:00p + BACKUP COM 5465 9-30-85 12:00p + RESTORE COM 5247 9-30-85 12:00p + ASSIGN COM 1509 9-30-85 12:00p + SORT EXE 1664 9-30-85 12:00p + FIND EXE 6403 9-30-85 12:00p + MORE COM 282 9-30-85 12:00p + PRINT COM 8291 9-30-85 12:00p + TREE COM 1756 9-30-85 12:00p + LABEL COM 1239 9-30-85 12:00p + BASIC COM 1175 9-30-85 12:00p + BASICA COM 1173 9-30-85 12:00p + BASICA EXE 66576 9-30-85 12:00p + GRAPHICS COM 3048 9-30-85 12:00p + EDLIN COM 7261 9-30-85 12:00p + SHARE EXE 8304 9-30-85 12:00p + ATTRIB EXE 15091 9-30-85 12:00p + SELECT COM 1714 9-30-85 12:00p + KEYBGR COM 8085 9-30-85 12:00p + KEYBFR COM 8157 9-30-85 12:00p + KEYBUK COM 7551 9-30-85 12:00p + KEYBIT COM 7770 9-30-85 12:00p + KEYBSP COM 8149 9-30-85 12:00p + GRAFTABL COM 1130 9-30-85 12:00p + DISKINIT COM 9168 9-30-85 12:00p + 39 file(s) 296450 bytes + 45056 bytes free + +### Directory of COMPAQ MS-DOS 3.10 (1985-09 Disk 2) + + Volume in drive A has no label + Directory of A:\ -### Directory of COMPAQ MS-DOS 3.10 (Disk 1) + SETCLOCK COM 2771 9-30-85 12:00p + TAPE EXE 27992 9-30-85 12:00p + BASICA COM 1173 9-30-85 12:00p + SUBST EXE 16611 9-30-85 12:00p + JOIN EXE 15971 9-30-85 12:00p + EXE2BIN EXE 2816 9-30-85 12:00p + LINK EXE 38144 9-30-85 12:00p + DEBUG COM 15552 9-30-85 12:00p + RECOVER COM 4226 9-30-85 12:00p + CMPQADAP COM 21940 9-30-85 12:00p + GRAFTABL COM 1130 9-30-85 12:00p + DEMO BAT 14 9-30-85 12:00p + DEMO BAS 6146 9-30-85 12:00p + DEMO1 BAS 15611 9-30-85 12:00p + DEMO2 BAS 15629 9-30-85 12:00p + DEMO3 BAS 25625 9-30-85 12:00p + USA DAT 16128 9-30-85 12:00p + EUROPE DAT 16008 9-30-85 12:00p + INTEREST BAS 384 9-30-85 12:00p + WORDS 1306 9-30-85 12:00p + 20 file(s) 245177 bytes + 103424 bytes free + +### Directory of COMPAQ MS-DOS 3.10 (1986-03 Disk 1) + + Volume in drive A has no label + Directory of A:\ + + IBMBIO COM* 9728 3-27-86 12:00p + IBMDOS COM* 27760 3-27-86 12:00p + COMMAND COM 23210 3-27-86 12:00p + VDISK SYS 2926 3-27-86 12:00p + ANSI SYS 1631 3-27-86 12:00p + ENHDISK SYS 1569 3-27-86 12:00p + CLOCK SYS 1462 3-27-86 12:00p + FORMAT COM 8987 3-27-86 12:00p + CHKDSK COM 9435 3-27-86 12:00p + SYS COM 3823 3-27-86 12:00p + DISKCOMP COM 2897 3-27-86 12:00p + DISKCOPY COM 3006 3-27-86 12:00p + COMP COM 2470 3-27-86 12:00p + MODE COM 4180 3-27-86 12:00p + FDISK COM 7200 3-27-86 12:00p + BACKUP COM 5465 3-27-86 12:00p + RESTORE COM 5247 3-27-86 12:00p + ASSIGN COM 1509 3-27-86 12:00p + SORT EXE 1664 3-27-86 12:00p + FIND EXE 6403 3-27-86 12:00p + MORE COM 282 3-27-86 12:00p + PRINT COM 8291 3-27-86 12:00p + TREE COM 1756 3-27-86 12:00p + LABEL COM 1239 3-27-86 12:00p + BASIC COM 1424 3-27-86 12:00p + BASICA COM 1422 3-27-86 12:00p + BASICA EXE 66544 3-27-86 12:00p + GRAPHICS COM 3048 3-27-86 12:00p + EDLIN COM 7261 3-27-86 12:00p + SHARE EXE 8304 3-27-86 12:00p + SELECT COM 1714 3-27-86 12:00p + KEYBGR COM 8085 3-27-86 12:00p + KEYBFR COM 8157 3-27-86 12:00p + KEYBUK COM 7551 3-27-86 12:00p + KEYBIT COM 7770 3-27-86 12:00p + KEYBSP COM 8149 3-27-86 12:00p + KEYBDA COM 8613 3-27-86 12:00p + KEYBNO COM 8613 3-27-86 12:00p + KEYBSV COM 8623 3-27-86 12:00p + KEYBSU COM 8623 3-27-86 12:00p + GRAFTABL COM 1130 3-27-86 12:00p + DISKINIT COM 9179 3-27-86 12:00p + 42 file(s) 316350 bytes + 24576 bytes free + +### Directory of COMPAQ MS-DOS 3.10 (1986-10 Disk 1) Volume in drive A has no label Directory of A:\ @@ -88,7 +215,7 @@ Directory listings of the two 360Kb distribution diskettes are provided below. 38 file(s) 311931 bytes 27648 bytes free -### Directory of COMPAQ MS-DOS 3.10 (Disk 2) +### Directory of COMPAQ MS-DOS 3.10 (1986-10 Disk 2) Volume in drive A has no label Directory of A:\ @@ -148,14 +275,9 @@ Directory listings of the two 360Kb distribution diskettes are provided below. 18 file(s) 106289 bytes 245760 bytes free ---- - -COMPAQ MS-DOS 3.10 (12-17-85) ------------------------------ +### COMPAQ MS-DOS 3.10 (1985-12) -This older 1985 release of COMPAQ MS-DOS 3.10 is from a 1.2Mb disk in our private collection. Since this disk -was created for personal use, it also contains files unrelated to COMPAQ MS-DOS 3.10. A directory listing is provided -[below](#directory-of-compaq-ms-dos-310-12-17-85). +This December 1985 release of COMPAQ MS-DOS 3.10 is from a 1.2Mb disk in our private collection. Since this disk was created for personal use, it also contains files unrelated to COMPAQ MS-DOS 3.10. A directory listing is provided [below](#directory-of-compaq-ms-dos-310-1985-12m). This release displays the following messages on boot: @@ -165,8 +287,7 @@ This release displays the following messages on boot: (C) Copyright COMPAQ Computer Corp. 1982,83,84,85 (C) Copyright Microsoft Corp. 1982,82,83,84,85 -which is *identical* to the newer 1986 release. And most of the files are identical, so from a MS-DOS functionality -standpoint, there was no difference between these releases. +which is *identical* to all the other 3.10 releases. And most of the files are identical, so from a MS-DOS functionality standpoint, there was no difference between these releases. Also of interest, this disk contains two COMPAQ ENHDISK drivers: @@ -180,7 +301,7 @@ However, even though the drivers are different, they both display the same messa The ENHDISK.SYS file dated 08-14-86 is identical to ENHDISK.SYS dated 10-31-86 on the 3.10 distribution disks above. -### Directory of COMPAQ MS-DOS 3.10 (12-17-85) +### Directory of COMPAQ MS-DOS 3.10 (1985 1.2M) Volume in drive A has no label Directory of A:\ diff --git a/software/pcx86/sys/dos/compaq/3.20/README.md b/software/pcx86/sys/dos/compaq/3.20/README.md new file mode 100644 index 000000000..075952f6e --- /dev/null +++ b/software/pcx86/sys/dos/compaq/3.20/README.md @@ -0,0 +1,84 @@ +--- +layout: page +title: COMPAQ MS-DOS 3.20 +permalink: /software/pcx86/sys/dos/compaq/3.20/ +machines: + - id: deskpro386 + type: pcx86 + config: /machines/pcx86/compaq/deskpro386/ega/2048kb/machine.xml + autoGen: true + autoMount: + A: "COMPAQ MS-DOS 3.20A (Disk 1)" + autoType: \r\r +--- + +{% include machine.html id="deskpro386" %} + +### Directory of COMPAQ MS-DOS 3.20A (Disk 1) + + Volume in drive A is DOS 020687 + Directory of A:\ + + IBMBIO COM* 16490 2-06-87 12:00p + IBMDOS COM* 28477 2-06-87 12:00p + ANSI SYS 1682 2-06-87 12:00p + ASSIGN COM 1536 2-06-87 12:00p + ATTRIB EXE 8247 2-06-87 12:00p + BACKUP COM 5481 2-06-87 12:00p + BASIC COM 3477 2-06-87 12:00p + BASICA COM 3476 2-06-87 12:00p + BASICA EXE 78992 2-06-87 12:00p + CHKDSK COM 9832 2-06-87 12:00p + CLOCK SYS 1471 2-06-87 12:00p + COMMAND COM 23855 2-06-87 12:00p + COMP COM 2470 2-06-87 12:00p + DISKCOMP COM 4267 2-06-87 12:00p + DISKCOPY COM 4555 2-06-87 12:00p + DISKINIT COM 13339 2-06-87 12:00p + DRIVER SYS 1131 2-06-87 12:00p + EDLIN COM 7508 2-06-87 12:00p + ENHDISK SYS 3109 2-06-87 12:00p + FDISK COM 7232 2-06-87 12:00p + FIND EXE 6416 2-06-87 12:00p + FORMAT COM 11235 2-06-87 12:00p + GRAFTABL COM 1130 2-06-87 12:00p + GRAPHICS COM 7204 2-06-87 12:00p + LABEL COM 1239 2-06-87 12:00p + MODE COM 6485 2-06-87 12:00p + MORE COM 295 2-06-87 12:00p + PRINT COM 8976 2-06-87 12:00p + REPLACE EXE 5060 2-06-87 12:00p + RESTORE COM 5247 2-06-87 12:00p + SELECT COM 4362 2-06-87 12:00p + SETCLOCK COM 3659 2-06-87 12:00p + SHARE EXE 8580 2-06-87 12:00p + SORT EXE 1911 2-06-87 12:00p + SYS COM 4785 2-06-87 12:00p + TREE COM 1756 2-06-87 12:00p + VDISK SYS 3550 2-06-87 12:00p + XCOPY EXE 5664 2-06-87 12:00p + 38 file(s) 314181 bytes + 24576 bytes free + +### Directory of COMPAQ MS-DOS 3.20A (Disk 2) + + Volume in drive A is SUPP 020687 + Directory of A:\ + + CMPQADAP COM 22340 2-06-87 12:00p + DEBUG COM 15799 2-06-87 12:00p + EXE2BIN EXE 3063 2-06-87 12:00p + INTEREST BAS 384 2-06-87 12:00p + JOIN EXE 8955 2-06-87 12:00p + KEYBFR COM 13184 2-06-87 12:00p + KEYBGR COM 13184 2-06-87 12:00p + KEYBIT COM 13184 2-06-87 12:00p + KEYBSP COM 13184 2-06-87 12:00p + KEYBUK COM 13184 2-06-87 12:00p + LINK EXE 39076 2-06-87 12:00p + RECOVER COM 4473 2-06-87 12:00p + SUBST EXE 9911 2-06-87 12:00p + TAPE EXE 44624 2-06-87 12:00p + WORDS 1352 2-06-87 12:00p + 15 file(s) 215897 bytes + 141312 bytes free diff --git a/tools/pc/pc.js b/tools/pc/pc.js index ab7d854c9..8bd124067 100755 --- a/tools/pc/pc.js +++ b/tools/pc/pc.js @@ -1288,7 +1288,7 @@ function getSystemDisk(type, version) let system = configJSON['systems']?.[type]; if (system && system.versions) { let verNumber = sprintf("%.2f", +parseFloat(version)); - let versionInfo = system.versions[version] || system.versions[verNumber]; + let versionInfo = system.versions[version.toUpperCase()] || system.versions[verNumber]; if (versionInfo) { let sSystemPath = "/diskettes/pcx86/sys/dos/" + system.vendor + "/" + verNumber + "/"; if (typeof versionInfo == "string") { @@ -1316,7 +1316,7 @@ function getSystemFiles(type, version) let system = configJSON['systems']?.[type]; if (system && system.versions) { let verNumber = sprintf("%.2f", +parseFloat(version)); - let versionInfo = system.versions[version] || system.versions[verNumber]; + let versionInfo = system.versions[version.toUpperCase()] || system.versions[verNumber]; if (versionInfo) { if (typeof versionInfo == "string") { aSystemFiles = system.files; @@ -1401,7 +1401,7 @@ async function buildDisk(sDir, sCommand = "", sDisk = "", fLog = false) driveInfo.files = []; driveInfo.verDOS = verDOS; driveInfo.bootDrive = bootDrive; - let attrHidden = verDOSMajor > 2? DiskInfo.ATTR.HIDDEN : 0; + let attrHidden = verDOSMajor > 2 && !fBare? DiskInfo.ATTR.HIDDEN : 0; let aSystemFiles = getSystemFiles(systemType, systemVersion); for (let name of aSystemFiles) { let desc = diSystem.findFile(name); @@ -2100,7 +2100,7 @@ function loadDiskette(sDrive, aTokens) * NOTE: If you want the base filename to end with "ARC", (eg, "ARC.EXE" or "LHARC.EXE" but not "SEARCH.EXE"), * then use a period preceded by a backslash: * - * load a: --file "arc\.(com|exe" + * load a: --file "arc\.(com|exe)" */ token = token.replace(/^"([^"]*)"$/, '$1').replace(/,/g, '|'); switch (criteria) { diff --git a/tools/pc/pc.json5 b/tools/pc/pc.json5 index 0be43e1c4..569021d69 100644 --- a/tools/pc/pc.json5 +++ b/tools/pc/pc.json5 @@ -25,14 +25,10 @@ "vendor": "compaq", "product": "compaq-dos", "versions": { - "1.10B": { + "1.10": { "disk": "COMPAQ-DOS110B", "files": ["IOSYS.COM", "MSDOS.COM", "COMMAND.COM"] }, - "1.10E": { - "disk": "COMPAQ-DOS110E", - "files": ["IOSYS.COM", "MSDOS.COM", "COMMAND.COM"] - }, "1.11": { "disk": "COMPAQ-DOS111", "files": ["IOSYS.COM", "MSDOS.COM", "COMMAND.COM"] @@ -44,7 +40,11 @@ "2.11": "COMPAQ-DOS211", "2.12": "COMPAQ-DOS212", "3.00": "COMPAQ-DOS300-DISK1", - "3.10": "COMPAQ-DOS310-DISK1", + "3.10": "COMPAQ-DOS310-19850930-DISK1", + "3.10B": "COMPAQ-DOS310-PERSONAL", + "3.10C": "COMPAQ-DOS310-19860327-DISK1", + "3.10D": "COMPAQ-DOS310-19861031-DISK1", + "3.20": "COMPAQ-DOS320A-DISK1", "3.31": "COMPAQ-DOS331-DISK2", "3.31G": "COMPAQ-DOS331-REVG-DISK1" },