Skip to content
This repository has been archived by the owner on Dec 24, 2020. It is now read-only.

Commit

Permalink
v1.18.8: Update of the Windows 95 Setup test machine
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffpar committed Aug 14, 2015
1 parent d260c20 commit 4cdb949
Show file tree
Hide file tree
Showing 31 changed files with 9,134 additions and 2,131 deletions.
42 changes: 36 additions & 6 deletions blog/2015/07/17/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
Windows 95
---

This week was the 20th anniversary of Windows 95 RTM ("Release To Manufacturing"). So I decided to throw a
PCjs party and try running Windows 95 Setup inside a PCjs machine for the first time. Sadly, it immediately failed:
This week (July 14, 2015) was the 20th anniversary of Windows 95 RTM ("Release To Manufacturing"). So I decided to
throw a PCjs party and try running Windows 95 Setup inside a PCjs machine for the first time. Sadly, it immediately
failed:

Please wait while Setup initializes.
Windows requires a computer with an 80386 processor or higher.
Expand Down Expand Up @@ -78,15 +79,44 @@ completion. If you want to give it a spin yourself, start the machine below (cl
finished booting, run SETUP from drive B, where the first Windows 95 diskette is already loaded.

If, when it crashes (and it will), you're interested in examining the instructions that were executed prior to the
crash, use the "m int on" Debugger command prior to starting the machine. That will trigger allocation of the instruction
history buffer, which you can then dump at any time using the Debugger's "dh" command.
crash, you can dump the instruction history buffer using the Debugger's "dh" command.

NOTE: The diskette images contain a pre-release version of Windows 95, as I don't currently have the RTM version on
diskette.

To be continued....
Update for August 13, 2015
---

PCjs v1.18.8 has made a little more progress running Windows 95 Setup, but CAB decompression still fails almost
immediately. To monitor DOS calls until the first 36-byte read of PRECOPY1.CAB, set the following breakpoints and
start the machine, using the PCjs Debugger *input* field next to the **Enter** button:

bp 1ED4:16B4 "let fn=ah;dos;if fn!=3f||cx!=24"
bp FDC8:422A "if fn==3f;di ds:dx;db ds:dx lcx;h;else"
g

In the current machine, `1ED4:16B4` is the DOS INT 0x21 entry point and `FDC8:422A` is the corresponding IRET.
The first breakpoint sets an internal variable, `fn`, to the value of the **AH** register on entry, so that the second
breakpoint can check the value on exit.

The `di` command dumps PCjs BACKTRACK(tm) information, to help you visually confirm which INT 0x21
calls are reading PRECOPY1.CAB. The `if` command evaluates an expression, and if the result is non-zero ("true"),
all subsequent commands are executed, up to to any `else` command; expressions may contain the usual variety of
arithmetic, bitwise and logical binary operators, using the same precedence as JavaScript; parentheses and nested
`if` commands are not supported. If the expression is zero ("false"), then only commands after the `else` command
will be executed, and if there is no `else` command, execution stops.

This test machine has also been updated to load WDEB386.EXE prior to starting B:SETUP.EXE, if you prefer using
WDEB386. Make sure the machine is running (ie, click the **Run** button, or use the PCjs Debugger "g" command),
and then click on the Debugger *output* window to give it focus and press CTRL-C to trigger WDEB386.

The Debugger *input* field is used exclusively for PCjs Debugger commands, whereas the *output* window combines
all Debugger output *and* WDEB386 COM2 serial port I/O. You can even use the PCjs Debugger to debug
the WDEB386 debugger; just make sure the appropriate window has focus before typing a command.

80386 Debug register (DR0-DR7) support was recently added, so even WDEB386 read/write breakpoints should work now.

[Embedded DeskPro 386](/devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml "PCjs:deskpro386-vga-4096k::uncompiled:debugger")
[Embedded DeskPro 386](/devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml "PCjs:deskpro386::uncompiled:debugger")

*[@jeffpar](http://twitter.com/jeffpar)*
*July 17, 2015*
4 changes: 2 additions & 2 deletions devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.18.8/machine.xsl"?>
<machine id="deskpro386" class="pc" border="1" pos="center" background="#FAEBD7">
<computer id="deskpro386-vga-4096k" name="Compaq DeskPro 386" buswidth="32"/>
<computer id="deskpro386-vga-4096k" name="Compaq DeskPro 386" buswidth="32" state="/devices/pc/machine/compaq/deskpro386/vga/4096kb/state.json"/>
<cpu id="cpu386" model="80386" autostart="false"/>
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="ROM BIOS memory test has been disabled"/>
<ram id="ramCPQ" addr="0xfa0000" size="0x60000" comment="Compaq memory at 0xFA0000"/>
Expand All @@ -13,7 +13,7 @@
<fdc ref="/disks/pc/library.xml" automount='{B: {name: "Win95 Build 499 (Disk 1)", path: "/disks/pc/windows/win95/build499/WIN95-DISK01.json"}}'/>
<debugger id="debugger" messages="fault|tss|int" commands=""/>
<panel ref="/devices/pc/panel/wide386.xml"/>
<hdc id="hdcAT" type="at" drives='[{name:"68Mb Hard Disk",type:4,path:"http://static.pcjs.org/devices/pc/machine/compaq/deskpro386/vga/4096kb/68mb.json"}]'/>
<hdc id="hdcAT" type="at" drives='[{name:"68Mb Hard Disk",type:4,path:"http://static.pcjs.org/devices/pc/machine/compaq/deskpro386/vga/4096kb/WDEB386-68Mb.json"}]'/>
<chipset id="chipset" model="deskpro386" floppies="[1200,1200]" monitor="vga"/>
<serial id="com1" adapter="1"/>
<serial id="com2" adapter="2" binding="print"/>
Expand Down
1 change: 1 addition & 0 deletions devices/pc/machine/compaq/deskpro386/vga/4096kb/state.json

Large diffs are not rendered by default.

Loading

0 comments on commit 4cdb949

Please sign in to comment.