| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .. | ||
| README.md | ||
Windows 95
First off, let me just say:
Happy Windows 95 RTM Day!
because today, July 14, 2015, is the 20th anniversary of Windows 95 RTM ("Release To Manufacturing").
Now, to business. Today is also the first day I tried running Windows 95 SETUP inside a PCjs machine. And it immediately failed:
Please wait while Setup initializes.
Windows requires a computer with an 80386 processor or higher.
The failing code:
0E36:08FD 06 PUSH ES
0E36:08FE 1E PUSH DS
0E36:08FF 9C PUSHF
0E36:0900 33C0 XOR AX,AX
0E36:0902 50 PUSH AX
0E36:0903 9D POPF
0E36:0904 9C PUSHF
0E36:0905 58 POP AX
0E36:0906 A90080 TEST AX,8000
0E36:0909 7517 JNZ 0922
0E36:090B B80070 MOV AX,7000
0E36:090E 50 PUSH AX
0E36:090F 9D POPF
0E36:0910 FB STI
0E36:0911 9C PUSHF
0E36:0912 58 POP AX
0E36:0913 A90070 TEST AX,7000
0E36:0916 7405 JZ 091D
0E36:0918 B88603 MOV AX,0386
0E36:091B EB08 JMP 0925
0E36:091D B88602 MOV AX,0286
0E36:0920 EB03 JMP 0925
0E36:0922 B88600 MOV AX,0086
0E36:0925 9D POPF
0E36:0926 1F POP DS
0E36:0927 07 POP ES
0E36:0928 C3 RET
was easily fixed with a change to x86cpu.js, allowing the IOPL bits to be modified in real-mode on an 80386. When I had previously tweaked setPS() to accomodate 80286/80386 discrimination logic in OS/2 1.0, there was no 80386 support in PCjs at that time, so it was sufficient to never allow the IOPL bits to change in real-mode.
Following the CPU test, Setup proceeded a bit farther:
EAX=00000001 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:0E4F E8D412 CALL 2126 ;cycles=7
0E36:2126 E877E7 CALL 08A0
0E36:2129 0BC0 OR AX,AX
0E36:212B 741D JZ 214A
0E36:212D 6A00 PUSH 0000
0E36:212F 6A00 PUSH 0000
0E36:2131 68C700 PUSH 00C7
0E36:2134 E8C1F8 CALL 19F8
0E36:2137 83C406 ADD SP,0006
EAX=00000001 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:2126 E877E7 CALL 08A0 ;cycles=7
EAX=00000001 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33A EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:08A0 56 PUSH SI
EAX=00000001 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C338 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:08A1 57 PUSH DI ;cycles=3
EAX=00000001 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:08A2 B80016 MOV AX,1600 ;cycles=3 (WIN386CHECK)
EAX=00001600 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:08A5 CD2F INT 2F ;cycles=2
EAX=00001600 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:08A7 A87F TEST AL,7F ;cycles=133
EAX=00001600 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08A9 B80300 MOV AX,0003 ;cycles=3
EAX=00000003 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08AC 752A JNZ 08D8 ;cycles=2
EAX=00000003 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08AE B80A16 MOV AX,160A ;cycles=3 (INSTALLCHECK)
EAX=0000160A EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08B1 CD2F INT 2F ;cycles=2
EAX=0000160A EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08B3 0BC0 OR AX,AX ;cycles=133
EAX=0000160A EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08B5 740E JZ 08C5 ;cycles=2
EAX=0000160A EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08B7 B88046 MOV AX,4680 ;cycles=3 (WINOLDAP30CHECK)
EAX=00004680 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08BA CD2F INT 2F ;cycles=2
EAX=00004680 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08BC 0BC0 OR AX,AX ;cycles=133
EAX=00004680 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:08BE 7516 JNZ 08D6 ;cycles=2
EAX=00004680 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
0E36:08D6 33C0 XOR AX,AX ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08D8 5F POP DI ;cycles=2
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C338 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08D9 5E POP SI ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33A EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08DA C3 RET ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2129 0BC0 OR AX,AX ;cycles=11
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:212B 741D JZ 214A ;cycles=2
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:214A E88EE7 CALL 08DB ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33A EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08DB 1E PUSH DS ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C338 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08DC 06 PUSH ES ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08DD 57 PUSH DI ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C334 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08DE 56 PUSH SI ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C332 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08DF 53 PUSH BX ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C330 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08E0 52 PUSH DX ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08E1 B81116 MOV AX,1611 ;cycles=3 (WIN386GETSHELL)
EAX=00001611 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08E4 33DB XOR BX,BX ;cycles=2
EAX=00001611 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08E6 CD2F INT 2F ;cycles=2
EAX=00001611 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:08E8 0BC0 OR AX,AX ;cycles=133
EAX=00001611 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08EA B80000 MOV AX,0000 ;cycles=2
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08ED 7507 JNZ 08F6 ;cycles=2
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08F6 5A POP DX ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C330 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08F7 5B POP BX ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C332 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08F8 5E POP SI ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C334 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08F9 5F POP DI ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08FA 07 POP ES ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C338 EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08FB 1F POP DS ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33A EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:08FC C3 RET ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:214D 0BC0 OR AX,AX ;cycles=11
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:214F 7415 JZ 2166 ;cycles=2
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2166 33C0 XOR AX,AX ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2168 C3 RET ;cycles=2
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:0E52 0BC0 OR AX,AX ;cycles=11
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:0E54 7406 JZ 0E5C ;cycles=2
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33E EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:0E5C E80B13 CALL 216A ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C33C EBP=0000C444 ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:216A C8040000 ENTER 0004,00 ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C336 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:216E 57 PUSH DI ;cycles=11
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C334 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:216F 56 PUSH SI ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C332 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2170 52 PUSH DX ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C330 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2171 50 PUSH AX ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2172 B80030 MOV AX,3000 ;cycles=3
EAX=00003000 EBX=00000000 ECX=00000018 EDX=00000000
ESP=0000C32E EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2175 CD21 INT 21 ;cycles=2
EAX=00001E03 EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C32E EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2177 86E0 XCHG AH,AL ;cycles=551
EAX=0000031E EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C32E EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:2179 A3F697 MOV [97F6],AX ;cycles=3
EAX=0000031E EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C32E EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:217C 58 POP AX ;cycles=3
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C330 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:217D 5A POP DX ;cycles=5
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C332 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
0E36:217E 813EF697000A CMP [97F6],0A00 ;cycles=5
1A4F:97F6 031E 0000 0000 0001 1A4F 0000 0000 1A4F ........O.....O.
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C332 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000287 V0 D0 I1 T0 S1 Z0 A0 P1 C1
0E36:2184 7210 JC 2196 ;cycles=7
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C332 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000287 V0 D0 I1 T0 S1 Z0 A0 P1 C1
0E36:2196 813EF6971403 CMP [97F6],0314 ;cycles=7 (DOS 3.20 is the MINIMUM supported DOS version)
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
ESP=0000C332 EBP=0000C33A ESI=00004748 EDI=00004748
SS=1A4F DS=1A4F ES=0000 FS=0000 GS=0304 PS=00000206 V0 D0 I1 T0 S0 Z0 A0 P1 C0
0E36:219C 7308 JNC 21A6 ;cycles=7
So far, so good, since I was running PC-DOS 3.30. However, the next error message I received was:
Not enough free Extended/XMS memory to run Setup.
Setup needs approximately 2816000 bytes of free Extended/XMS memory.
I was running a machine with only 1Mb of extended memory. Time to install more memory and try again.
OK, that was easy. The next problem was triggered by the CAB ("Diamond") decompression code in Windows 95 Setup, which uses all 32 bits of the 80386's 32-bit registers. That was not a problem, but by leaving stray bits in the upper halves of registers like EDX, it exposed a bug in the PCjs I/O instruction handlers, which neglected to mask EDX with 0xFFFF before performing port lookup, causing mysterious I/O failures that usually manifested themselves as hard disk I/O errors.
More later.
@jeffpar
July 14, 2015