Added IBM Pascal Compiler 1.00 "Combined" disk to the mix

This commit is contained in:
Jeff Parsons 2017-09-21 15:09:29 -07:00 committed by Jeff Parsons
commit 4ea4662c91
6 changed files with 56 additions and 20 deletions

View file

@ -421,6 +421,7 @@
<disk path="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISK1.json">IBM Pascal 1.00 (Disk 1)</disk> <disk path="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISK1.json">IBM Pascal 1.00 (Disk 1)</disk>
<disk path="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISK2.json">IBM Pascal 1.00 (Disk 2)</disk> <disk path="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISK2.json">IBM Pascal 1.00 (Disk 2)</disk>
<disk path="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISK3.json">IBM Pascal 1.00 (Disk 3)</disk> <disk path="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISK3.json">IBM Pascal 1.00 (Disk 3)</disk>
<disk path="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISKS.json">IBM Pascal 1.00 (Combined)</disk>
<disk path="/disks/pcx86/tools/logitech/modula2/1.00/LOGITECH-MODULA2-DISK1-SYSTEM.json">Modula-2/86 1.00 (1-System)</disk> <disk path="/disks/pcx86/tools/logitech/modula2/1.00/LOGITECH-MODULA2-DISK1-SYSTEM.json">Modula-2/86 1.00 (1-System)</disk>
<disk path="/disks/pcx86/tools/logitech/modula2/1.00/LOGITECH-MODULA2-DISK2-LINKER.json">Modula-2/86 1.00 (2-Linker)</disk> <disk path="/disks/pcx86/tools/logitech/modula2/1.00/LOGITECH-MODULA2-DISK2-LINKER.json">Modula-2/86 1.00 (2-Linker)</disk>
<disk path="/disks/pcx86/tools/logitech/modula2/1.00/LOGITECH-MODULA2-DISK3-COMPILER.json">Modula-2/86 1.00 (3-Compiler)</disk> <disk path="/disks/pcx86/tools/logitech/modula2/1.00/LOGITECH-MODULA2-DISK3-COMPILER.json">Modula-2/86 1.00 (3-Compiler)</disk>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -7,6 +7,29 @@ permalink: /disks/pcx86/tools/ibm/pascal/1.00/
IBM Pascal Compiler 1.00 IBM Pascal Compiler 1.00
------------------------ ------------------------
When the IBM Pascal Compiler 1.00 was originally released in August 1981, the standard IBM PC contained at most
two diskette drives (no hard drive), so compiling Pascal programs required using a "scratch disk" in drive B:
and then inserting each of the three 160Kb Pascal Compiler disks into drive A: to complete the compilation and
linking process. Moreover, the user was required to copy LINK.EXE from their PC-DOS 1.00 diskette (the only version
of PC-DOS available at the time) to the third disk.
To make life a bit simpler (but only a bit), we've combined the contents of all three diskettes onto a 360Kb "Combined"
diskette, along with LINK.EXE from PC-DOS 1.00. Here's the [DiskDump](/modules/diskdump/) command used to produce the
diskette image:
diskdump --path="archive/PAS1/PAS1.EXE;PASKEY;ENTX6S.ASM;FILKQQ.INC;FILUQQ.INC;archive/PAS2/PAS2.EXE;
archive/PAS3/PASCAL;PASCAL.LIB;../../../../dos/ibm/1.00/archive/PCDOS100/LINK.EXE" --format=json --label=PASCAL100
--output=PASCAL100-DISKS.json --manifest
It's important to use the original PC-DOS linker, because not all linkers will process IBM Pascal 1.00 object files
properly. Given this dependency, it's odd that IBM didn't simply distribute the PC-DOS 1.00 linker on the third IBM
Pascal disk; there was certainly room for it, so it wouldn't have cost anything, and it would have reduced the risk
of using a newer and potentially incompatible linker.
### Directory of IBM Pascal 1.00 (Disk 1) ### Directory of IBM Pascal 1.00 (Disk 1)
### Directory of IBM Pascal 1.00 (Disk 2) ### Directory of IBM Pascal 1.00 (Disk 2)
### Directory of IBM Pascal 1.00 (Disk 3)
### Directory of IBM Pascal 1.00 (Combined)

View file

@ -25,4 +25,16 @@
<file size="50" time="1981-08-31 12:00:00" attr="0x20" md5="0d20462b4a56654c357fd5b332b45f08">PASCAL</file> <file size="50" time="1981-08-31 12:00:00" attr="0x20" md5="0d20462b4a56654c357fd5b332b45f08">PASCAL</file>
<file size="83456" time="1981-08-31 12:00:00" attr="0x20" md5="fcb8631a5fba5c4b146cf253ca27773e">PASCAL.LIB</file> <file size="83456" time="1981-08-31 12:00:00" attr="0x20" md5="fcb8631a5fba5c4b146cf253ca27773e">PASCAL.LIB</file>
</disk> </disk>
<disk id="disk04" size="368640" chs="40:2:9" href="/disks/pcx86/tools/ibm/pascal/1.00/PASCAL100-DISKS.json" md5="01cb202e441cc2d6fe4cad0b2771df0d" md5json="a2f35b82f2263007feba98c5682d9ee3">
<name>IBM Pascal 1.00 (Combined)</name>
<file size="81408" time="1981-08-31 12:00:00" attr="0x20" md5="2f5b2a5abb1ddc47b8878c4ddc85d659">PAS1.EXE</file>
<file size="2816" time="1981-08-31 12:00:00" attr="0x20" md5="158742abe72baea5f1c4de6e3541e578">PASKEY</file>
<file size="8320" time="1981-08-31 12:00:00" attr="0x20" md5="948612930287deb5fd53edd701ea0c11">ENTX6S.ASM</file>
<file size="5347" time="1981-08-31 12:00:00" attr="0x20" md5="7dfc79d20d272dafe89050d496a964cf">FILKQQ.INC</file>
<file size="1513" time="1981-08-31 12:00:00" attr="0x20" md5="f2ccf10239ff715e0185f4fd6773f6bf">FILUQQ.INC</file>
<file size="99200" time="1981-08-31 12:00:00" attr="0x20" md5="6fa0cf28313f5fd6672a87ab7734dec7">PAS2.EXE</file>
<file size="50" time="1981-08-31 12:00:00" attr="0x20" md5="0d20462b4a56654c357fd5b332b45f08">PASCAL</file>
<file size="83456" time="1981-08-31 12:00:00" attr="0x20" md5="fcb8631a5fba5c4b146cf253ca27773e">PASCAL.LIB</file>
<file size="43264" time="1981-08-04 00:00:00" attr="0x20" md5="2f11573f12d0bf5a60a62a50eef7e577">LINK.EXE</file>
</disk>
</manifest> </manifest>

View file

@ -331,7 +331,7 @@ function DiskDump(sDiskPath, asExclude, sFormat, fComments, sSize, sServerRoot,
*/ */
this.sServerRoot = sServerRoot; this.sServerRoot = sServerRoot;
this.sDiskPath = sDiskPath; this.sDiskPath = sDiskPath;
if (this.sServerRoot && !net.isRemote(sDiskPath)) { if (this.sServerRoot && !net.isRemote(sDiskPath) && sDiskPath.indexOf(';') < 0) {
this.sDiskPath = path.join(this.sServerRoot, sDiskPath); this.sDiskPath = path.join(this.sServerRoot, sDiskPath);
} }
this.asExclude = asExclude || DiskDump.asExclusions; this.asExclude = asExclude || DiskDump.asExclusions;
@ -1786,7 +1786,15 @@ DiskDump.prototype.readPath = function(sPath, done)
var sFileName = asFiles[iFile]; var sFileName = asFiles[iFile];
var i = sFileName.lastIndexOf(path.sep); var i = sFileName.lastIndexOf(path.sep);
if (i >= 0) { if (i >= 0) {
if (sFileName.indexOf("..") < 0) { //
// We used to prevent paths with "..", to protect the web server from malicious requests,
// but we need to allow them for unfettered command-line support of the --path option.
//
// if (sFileName.indexOf("..") >= 0) {
// var err = new Error('invalid file "' + sFileName + '"');
// done(err, null);
// return;
// }
sDefaultPath = sFileName.substr(0, i); sDefaultPath = sFileName.substr(0, i);
/* /*
* The DiskDump constructor joins the beginning of sPath with sServerRoot, * The DiskDump constructor joins the beginning of sPath with sServerRoot,
@ -1796,15 +1804,6 @@ DiskDump.prototype.readPath = function(sPath, done)
sDefaultPath = path.join(this.sServerRoot, sDefaultPath); sDefaultPath = path.join(this.sServerRoot, sDefaultPath);
} }
sFileName = sFileName.substr(i+1); sFileName = sFileName.substr(i+1);
} else {
/*
* TODO: We need to permit ".." without compromising the server...
*
var err = new Error('invalid file "' + sFileName + '"');
done(err, null);
return;
*/
}
} }
/* /*
* Ordinarily, sFileName will already be the basename, except when it has a path element like "../" * Ordinarily, sFileName will already be the basename, except when it has a path element like "../"