diff --git a/devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml b/devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml index a28e87120..8d17048d0 100644 --- a/devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml +++ b/devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml @@ -1,6 +1,7 @@ + Compaq DeskPro 386 (16Mhz), 128Kb EGA, 2048Kb RAM @@ -13,7 +14,7 @@ - + diff --git a/devices/pc/machine/compaq/deskpro386/other/2048kb/machine.xml b/devices/pc/machine/compaq/deskpro386/other/2048kb/machine.xml index fab8f3e5c..e71def534 100644 --- a/devices/pc/machine/compaq/deskpro386/other/2048kb/machine.xml +++ b/devices/pc/machine/compaq/deskpro386/other/2048kb/machine.xml @@ -1,6 +1,7 @@ + Compaq DeskPro 386 (16Mhz), Compaq VGA, 2048Kb RAM @@ -13,7 +14,7 @@ - + diff --git a/devices/pc/machine/compaq/deskpro386/vga/2048kb/machine.xml b/devices/pc/machine/compaq/deskpro386/vga/2048kb/machine.xml index 1598dbff8..df2b51457 100644 --- a/devices/pc/machine/compaq/deskpro386/vga/2048kb/machine.xml +++ b/devices/pc/machine/compaq/deskpro386/vga/2048kb/machine.xml @@ -1,6 +1,7 @@ + Compaq DeskPro 386 (16Mhz), IBM VGA, 2048Kb RAM, 20Mb Hard Disk diff --git a/devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml b/devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml index 3e4a97fd9..a5aca7f9f 100644 --- a/devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml +++ b/devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml @@ -1,6 +1,7 @@ + Compaq DeskPro 386 (16Mhz), IBM VGA, 2048Kb RAM, 20Mb Hard Disk diff --git a/docs/README.md b/docs/README.md index 30bb4c21c..65c9e7880 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,7 +23,7 @@ Assorted documentation is also available for programming the machines: {% endif %} -Our [Publication Archive](/pubs/) includes these PC-related resources: +Our [Publication Archive](/pubs/) also includes these PC-related resources: * [Datasheets](/pubs/pc/datasheets/) * [Magazines](/pubs/pc/magazines/) @@ -31,17 +31,17 @@ Our [Publication Archive](/pubs/) includes these PC-related resources: * [Reference Manuals](/pubs/pc/reference/) * [Software User Guides](/pubs/pc/software/) -Publications related to Ohio Scientific's 6502-based Challenger 1P: +And publications related to Ohio Scientific's 6502-based Challenger 1P: * [Datasheets](/pubs/c1p/datasheets/) * [Programming Guides/Samples](/pubs/c1p/programming/) * [Reference Manuals](/pubs/c1p/techref/) -[8088 CPU](pc/datasheets/) -[Byte Magazine](pc/magazines/byte/) -[Microsoft Systems Journal](pc/magazines/msj/) -[PC Tech Journal](pc/magazines/pctj/) -[Graphics for the IBM PC](pc/programming/Graphics_for_the_IBM_PC/) -[IBM 5150 Technical Reference (August 1981)](pc/reference/ibm/) -[80286 and 80287 Programmer's Reference](pc/reference/intel/) -[IBM PC Disk Operating System v1.00](pc/software/) +[8088 CPU](/pubs/pc/datasheets/) +[Byte Magazine](/pubs/pc/magazines/byte/) +[Microsoft Systems Journal](/pubs/pc/magazines/msj/) +[PC Tech Journal](/pubs/pc/magazines/pctj/) +[Graphics for the IBM PC](/pubs/pc/programming/Graphics_for_the_IBM_PC/) +[IBM 5150 Technical Reference (August 1981)](/pubs/pc/reference/ibm/) +[80286 and 80287 Programmer's Reference](/pubs/pc/reference/intel/) +[IBM PC Disk Operating System v1.00](/pubs/pc/software/) diff --git a/modules/pcjs/lib/x86seg.js b/modules/pcjs/lib/x86seg.js index 0b8b3466a..29ab71dd4 100644 --- a/modules/pcjs/lib/x86seg.js +++ b/modules/pcjs/lib/x86seg.js @@ -859,6 +859,7 @@ X86Seg.prototype.loadDesc8 = function(addrDesc, sel, fProbe) cpu.assert(this.cpl == cplNew); if (this.cpl < cplOld) { + if (fCall !== true) { cpu.assert(false); return X86.ADDR_INVALID; @@ -955,7 +956,7 @@ X86Seg.prototype.loadDesc8 = function(addrDesc, sel, fProbe) * In both cases, the segment type is not valid for the target segment register *and* the PRESENT bit * is clear. OS/2 doesn't seem to care whether I report an NP_FAULT or GP_FAULT, but Windows 95 definitely * cares: it will resolve the fault only if a GP_FAULT is reported. And Intel's 80386 Programmers Reference - * implies that, yes, NP_FAULT checks are supposed to be performed *after* GP_FAULT checks. + * implies that, yes, GP_FAULT checks are supposed to be performed *before* NP_FAULT checks. */ if (type < X86.DESC.ACC.TYPE.SEG || (type & (X86.DESC.ACC.TYPE.CODE | X86.DESC.ACC.TYPE.READABLE)) == X86.DESC.ACC.TYPE.CODE) { if (this.id < X86Seg.ID.VER) X86.fnFault.call(cpu, X86.EXCEPTION.GP_FAULT, sel & X86.ERRCODE.SELMASK); @@ -1484,12 +1485,12 @@ X86Seg.prototype.updateMode = function(fLoad, fProt, fV86) * loaded); unlike the ACCESSED and DIRTY bits in PTEs, a descriptor ACCESSED bit is only * updated on loads, not on every memory access. * - * We compute address of the descriptor byte containing the ACCESSED bit (offset 0x5); + * We compute the address of the descriptor byte containing the ACCESSED bit (offset 0x5); * note that it's perfectly normal for addrDesc to occasionally be invalid (eg, when the CPU * is creating protected-mode-only segment registers like LDT and TSS, or when the CPU has * transitioned from real-mode to protected-mode and new selector(s) have not been loaded yet). * - * TODO: Note I do NOT update the ACCESSED bit for null GDT selectors, because I assume the + * NOTE: I do NOT update the ACCESSED bit for null GDT selectors, because I'm assuming the * hardware does not update it either. In fact, I've seen code that uses the null GDT descriptor * for other purposes, on the assumption that that descriptor is completely unused. */