diff --git a/blog/2015/07/17/README.md b/blog/2015/07/17/README.md index 08431bbc1..e05c4ea74 100644 --- a/blog/2015/07/17/README.md +++ b/blog/2015/07/17/README.md @@ -88,7 +88,7 @@ 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 +immediately. To monitor DOS calls until the first 36-byte read of PRECOPY1.CAB, try 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" @@ -99,14 +99,18 @@ In the current machine, `1ED4:16B4` is the DOS INT 0x21 entry point and `FDC8:42 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. +Regarding the other Debugger commands shown above, the `dos` command describes the current DOS operation +(alternatively, you could use the `m int on; m dos on` commands to turn on DOS interrupt messages). The `di` +command dumps PCjs BACKTRACK(tm) information, to help you visually confirm which INT 0x21 calls are reading +PRECOPY1.CAB. Finally, the `if` command evaluates the given expression, and if the result is non-zero ("true"), +all subsequent commands are executed, up to to any `else` command; otherwise, only commands after the `else` +command will be executed, and if there is no `else` command, execution will stop. -This test machine has also been updated to load WDEB386.EXE prior to starting B:SETUP.EXE, if you prefer using +Debugger expressions may contain the usual variety of arithmetic, bitwise and logical binary operators, and they +are evaluated using traditional operator precedence (ie, the same as C or JavaScript); any other operators, such as +parentheses, assignment operators, and unary or ternary operators, are not supported in expressions. + +This test machine below has 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. @@ -114,6 +118,15 @@ The Debugger *input* field is used exclusively for PCjs Debugger commands, where 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. +To help reduce confusion, the PCjs Debugger displays a double-character command prefix, to differentiate its commands +from WDEB386's single-character command prompt -- but it's still easy to get confused. + +A quick recap of those PCjs Debugger command prefixes (which you won't see until AFTER you've typed a PCjs command): + + * `>>` indicates real-mode + * `##` indicates protected-mode + * `--` indicates V86-mode + 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::uncompiled:debugger")