Added MS-DOS 1.x and 2.0 directory listings (and fixed improper fault handling on 8086 machines)

This commit is contained in:
Jeff Parsons 2016-02-04 12:13:32 -08:00
commit c3215b7aca
6 changed files with 216 additions and 9 deletions

View file

@ -32,8 +32,8 @@ that automatically run the software.
### MS-DOS (Microsoft)
* MS-DOS 1.25
* MS-DOS 2.00
* [MS-DOS 1.25](/disks/pc/dos/microsoft/1.25/)
* [MS-DOS 2.00](/disks/pc/dos/microsoft/2.00/)
* [MS-DOS 3.20](/disks/pc/dos/microsoft/3.20/)
* MS-DOS 3.21
* MS-DOS 3.30

View file

@ -0,0 +1,109 @@
---
layout: page
title: MS-DOS 1.25
permalink: /disks/pc/dos/microsoft/1.25/
machines:
- type: pc-dbg
id: ibm5150-msdos125
config: /devices/pc/machine/5150/mda/64kb/debugger/machine.xml
automount:
A:
path: /disks/pc/dos/microsoft/1.25/MSDOS-COMPAQ-111.json
---
MS-DOS 1.25
---
There was no MS-DOS 1.25 *per se*. Instead, there were assorted OEM releases of MS-DOS based on version 1.25.
Here, we have two such releases:
* MS-DOS v1.25 (Compaq v1.11)
* MS-DOS v1.25 (Compaq v1.12)
Directory listings of each of these 360Kb diskettes are provided [below](#directory-listings).
{% include machine.html id="ibm5150-msdos125" %}
Directory Listings
---
### Directory of MS-DOS v1.25 (Compaq v1.11) Disk
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
### Directory of MS-DOS v1.25 (Compaq v1.12) Disk
Volume in drive A has no label
Directory of A:\
IOSYS COM 1998 11-28-83 12:00p
MSDOS COM 6140 11-28-83 12:00p
COMMAND COM 4959 11-28-83 12:00p
LINK EXE 41856 11-28-83 12:00p
EDLIN COM 2432 11-28-83 12:00p
SYS COM 645 11-28-83 12:00p
DEBUG COM 6619 11-28-83 12:00p
BASIC COM 549 11-28-83 12:00p
BASICA COM 547 11-28-83 12:00p
FORMAT COM 3376 11-28-83 12:00p
EXE2BIN EXE 1280 11-28-83 12:00p
DISKCOPY COM 1946 11-28-83 12:00p
DISKCOMP COM 1433 11-28-83 12:00p
MODE COM 1800 11-28-83 12:00p
CHKDSK COM 1770 11-28-83 12:00p
COMP COM 1484 11-28-83 12:00p
WORDS 1242 11-28-83 12:00p
BASICA EXE 54304 11-28-83 12:00p
TEST EXE 18560 11-28-83 12:00p
DEMO BAT 14 11-28-83 12:00p
DEMO BAS 7936 11-28-83 12:00p
DEMO1 BAS 18048 11-28-83 12:00p
DEMO2 BAS 17920 11-28-83 12:00p
DEMO3 BAS 21248 11-28-83 12:00p
DEMO4 BAS 6656 11-28-83 12:00p
JUGGLER DAT 16128 11-28-83 12:00p
USA DAT 16128 11-28-83 12:00p
INTEREST BAS 384 11-28-83 12:00p
28 file(s) 257402 bytes
Total files listed:
28 file(s) 257402 bytes
52224 bytes free

View file

@ -0,0 +1,78 @@
---
layout: page
title: MS-DOS 2.00
permalink: /disks/pc/dos/microsoft/2.00/
machines:
- type: pc
id: ibm5160-msdos200
config: /devices/pc/machine/5160/mda/256kb/machine.xml
automount:
A:
path: /disks/pc/dos/microsoft/2.00/MSDOS-COMPAQ-212.json
---
MS-DOS 2.00
---
There was no MS-DOS 2.00 *per se*. Instead, there were assorted OEM releases of MS-DOS based on version 2.00.
Here, we have one such release:
* MS-DOS v2.00 (Compaq v2.12)
A directory listing of this 360Kb diskette is provided below.
{% include machine.html id="ibm5160-msdos200" %}
### Directory of MS-DOS v2.00 (Compaq v2.12) Disk
Volume in drive A has no label
Directory of A:\
IBMBIO COM 5120 01-01-80 12:00p
IBMDOS COM 17408 01-01-80 12:00p
COMMAND COM 18272 12-04-84 12:00p
CLOCK SYS 947 12-04-84 12:00p
ENHDISK SYS 1521 12-04-84 12:00p
ANSI SYS 1593 12-04-84 12:00p
FORMAT COM 6560 12-04-84 12:00p
CHKDSK COM 6468 12-04-84 12:00p
SYS COM 1600 12-04-84 12:00p
DISKCOPY COM 2122 12-04-84 12:00p
DISKCOMP COM 1850 12-04-84 12:00p
COMP COM 2259 12-04-84 12:00p
EDLIN COM 8096 12-04-84 12:00p
MODE COM 3342 12-04-84 12:00p
FDISK COM 5968 12-04-84 12:00p
BACKUP COM 5129 12-04-84 12:00p
RESTORE COM 5308 12-04-84 12:00p
PRINT COM 4506 12-04-84 12:00p
RECOVER COM 2439 12-04-84 12:00p
ASSIGN COM 946 12-04-84 12:00p
TREE COM 2122 12-04-84 12:00p
GRAPHICS COM 702 12-04-84 12:00p
SORT EXE 1632 12-04-84 12:00p
FIND EXE 6331 12-04-84 12:00p
MORE COM 4380 12-04-84 12:00p
BASIC COM 1078 12-04-84 12:00p
BASICA COM 1076 12-04-84 12:00p
BASICA EXE 64272 12-04-84 12:00p
EXE2BIN EXE 1649 12-04-84 12:00p
LINK EXE 42368 12-04-84 12:00p
DEBUG COM 12171 12-04-84 12:00p
DEMO BAT 14 12-04-84 12:00p
DEMO BAS 5447 12-04-84 12:00p
DEMO1 BAS 15114 12-04-84 12:00p
DEMO2 BAS 15261 12-04-84 12:00p
DEMO3 BAS 20987 12-04-84 12:00p
DEMO4 BAS 4977 12-04-84 12:00p
USA DAT 16128 12-04-84 12:00p
TEST EXE 21438 12-04-84 12:00p
INTEREST BAS 384 12-04-84 12:00p
WORDS 1306 12-04-84 12:00p
41 file(s) 340291 bytes
Total files listed:
41 file(s) 340291 bytes
2048 bytes free

View file

@ -1025,6 +1025,14 @@ CPU.prototype.runCPU = function(fOnClick)
catch(exception) {
if (typeof exception != "number") throw exception;
if (MAXDEBUG) this.println("CPU exception " + str.toHexByte(exception));
/*
* TODO: If we ever get into a situation where every single instruction is generating a fault
* (eg, if an 8088 executes opcode 0xFF 0xFF, which is incorrectly routed to fnFault() instead
* of fnGRPUndefined()), the browser may hang because we're failing to yield often enough.
* This is likely because the thrown exceptions are taking MUCH longer than normal instructions,
* throwing off our burst calculations. We need to either adjust the burst or break out of the
* DO-WHILE loop on every exception.
*/
}
/*

View file

@ -3776,6 +3776,18 @@ X86.fnXORw = function(dst, src)
*/
X86.fnGRPFault = function(dst, src)
{
/*
* This should NEVER be called on 8086/8088 CPUs, and yet we preset some of the handlers in aOpGrpPOPw,
* aOpGrp4b, and aOpGrp4w to call it. initProcessor() DOES patch aOpGrp4b[0x07] and aOpGrp4w[0x07] to
* fnGRPInvalid, but that's it.
*
* However, given the infrequency of this call, it's simpler to continue presetting all the handlers in
* aOpGrpPOPw to their post-8086 default, and deal with the appropriate 8086 behavior here (which for now,
* is to call fnGRPUndefined instead).
*/
if (this.model < X86.MODEL_80186) {
return X86.fnGRPUndefined.call(this, dst, src);
}
X86.fnFault.call(this, X86.EXCEPTION.GP_FAULT, 0);
return dst;
};

View file

@ -4342,7 +4342,7 @@ X86.opGRP3w = function()
X86.opCLC = function()
{
this.clearCF();
this.nStepCycles -= 2; // CLC takes 2 cycles on all CPUs
this.nStepCycles -= 2; // CLC takes 2 cycles on all CPUs
};
/**
@ -4353,7 +4353,7 @@ X86.opCLC = function()
X86.opSTC = function()
{
this.setCF();
this.nStepCycles -= 2; // STC takes 2 cycles on all CPUs
this.nStepCycles -= 2; // STC takes 2 cycles on all CPUs
};
/**
@ -4373,7 +4373,7 @@ X86.opCLI = function()
return;
}
this.clearIF();
this.nStepCycles -= this.cycleCounts.nOpCyclesCLI; // CLI takes LONGER on an 80286
this.nStepCycles -= this.cycleCounts.nOpCyclesCLI; // CLI takes LONGER on an 80286
};
/**
@ -4394,7 +4394,7 @@ X86.opSTI = function()
}
this.setIF();
this.opFlags |= X86.OPFLAG.NOINTR;
this.nStepCycles -= 2; // STI takes 2 cycles on all CPUs
this.nStepCycles -= 2; // STI takes 2 cycles on all CPUs
};
/**
@ -4405,7 +4405,7 @@ X86.opSTI = function()
X86.opCLD = function()
{
this.clearDF();
this.nStepCycles -= 2; // CLD takes 2 cycles on all CPUs
this.nStepCycles -= 2; // CLD takes 2 cycles on all CPUs
};
/**
@ -4416,7 +4416,7 @@ X86.opCLD = function()
X86.opSTD = function()
{
this.setDF();
this.nStepCycles -= 2; // STD takes 2 cycles on all CPUs
this.nStepCycles -= 2; // STD takes 2 cycles on all CPUs
};
/**
@ -4655,5 +4655,5 @@ X86.aOpGrp4b = [
X86.aOpGrp4w = [
X86.fnINCw, X86.fnDECw, X86.fnCALLw, X86.fnCALLFdw, // 0xFF(reg=0x0-0x3)
X86.fnJMPw, X86.fnJMPFdw, X86.fnPUSHw, X86.fnGRPFault // 0xFF(reg=0x4-0x7)
X86.fnJMPw, X86.fnJMPFdw, X86.fnPUSHw, X86.fnGRPUndefined // 0xFF(reg=0x4-0x7)
];