VOGONS


Reply 440 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. This is what happens during Bochs' boot of the disk image with what I see happening in UniPCemu written after each line and below (if something isn't in the Bochs log):

00388000012i[CPU0  ] WRMSR: write 0x0000000000000000 to MSR_TSC
00396000007i[CPU0 ] WRMSR: write 0x0000000000000000 to MSR_TSC
00405160515i[CPU0 ] WRMSR: write 0x0000000000000000 to MSR_TSC
00413952886e[CPU0 ] RDMSR: Unknown register 0x179
00413952888e[CPU0 ] RDMSR: Unknown register 0x400
00413953055e[CPU0 ] RDMSR: Unknown register 0x179
00474618238i[FLOPPY] controller reset in software
00480977717i[KBD ] wheel mouse mode request rejected UniPCemu mouse: F3=Sample rate multiple times. F2=Device ID(=>FA,00), E8=Set resolution 00(=>FA). E6=Scaling 1:1(=>FA) x2, E9=Status request(=>FA,00,00,50), F3=Sample rate 3C(=>FA), E8=Set resolution 03(=>FA). OK!
00480983624i[KBD ] keyboard: scan convert turned off. UniPCemu Keyboard: FF=Reset(=>FA,AA), 8042: 20=Read RAM(=>44), 60=Write RAM 04, 20=Read RAM(=>04)
00480983906i[KBD ] setting typematic info. UniPCemu Keyboard: F3=Set typematic rate/delay (=>FA), 00(rate/delay)(=>FA)
00480984307i[KBD ] setting delay to 250 mS (unused)
00480984307i[KBD ] setting repeat rate to 30,0 cps (unused)
UniPCemu Keyboard: ED(=>FA), 02(=>FA)
UniPCemu 8042: 20=Read RAM(=>04), 60=Write RAM 44, 20=Read RAM(=>44), AE=Enable first PS/2 port, A8=Enable second PS/2 port, AD=Disable first PS/2 port, A7=Disable second PS/2 port, 20=Read RAM(=>74), AE=Enable first PS/2 port, A8=Enable second PS/2 port, 60=Write RAM 47, AD=Disable first PS/2 port, A7=Disable second PS/2 port, 20=Read RAM(=>77), AE=Enable first PS/2 port, A8=Enable second PS/2 port
UniPCemu Mouse: F4=Enable data reporting(=>FA)
00506172913i[BXVGA ] io read: 0x3c1: unknown register 0x16
00506172940i[BXVGA ] io read: 0x3c1: unknown register 0x16
00506172980i[BXVGA ] io read: 0x3c1: unknown register 0x16
00614328102e[CPU0 ] check_cs(0x000b): non-conforming code seg descriptor dpl != cpl, dpl=0, cpl=3. UniPCemu: #GP(0008).
00615172420i[WINGUI] dimension update x=640 y=480 fontheight=0 fontwidth=0 bpp=8. UniPCemu: Immediately after above #GP(8).
00630189717i[KBD ] setting typematic info. UniPCemu Keyboard: F3=Set typematic rate/delay(=>FA), 20(=>FA), ED=Set LEDs(=>FA), 00=All LEDs off(=>FA).
00630191202i[KBD ] setting delay to 500 mS (unused)
00630191202i[KBD ] setting repeat rate to 30,0 cps (unused)
UniPCemu 8042: FE reset to port 64h.
00672218904e[PAR ] write: parport1: unsupported control bit ignored
00672219173e[PAR ] write: parport1: unsupported control bit ignored
00675811193i[SER ] com1: FIFO enabled
00675811230i[SER ] com1: FIFO enabled
00675842229i[SER ] com1: FIFO enabled
00874349387i[WINGUI] &&&missing mouse state change
00941536746i[WINGUI] &&&missing mouse state change
01087210615i[WINGUI] &&&missing mouse state change

It always has the request in the format: WHATSWRITTEN=Command description(=>resultbyte1,resultbyte2...)

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 441 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Now trying the build 1381 CHK version...

It says "2 System processors", although the normal installer didn't do that until the first boot?

Then:

INIT: \SystemRoot => \ArchName\multi(0)disk(0)cdrom(159)\i386

Then a lot of information on mounted volumes (listing various drive letters).
And starting the installer...
Edit: Currently copying over the files for the GUI part of installation...
Edit: 2:22 hours later, 24% copying the files. This is probably going to take all night at this rate(about ). I'll check again once it finishes.
So about 9 hours and 51 minutes to copy the first stage over to the disk (not including formatting the disk, which will make it take even longer. Reusing the previous NTFS partition here (from the non-booting Windows NT 4.0 workstation in it's first phase complete state)).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 442 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. NT4's checked build displays some mounting information during boot(all floppy, CD-ROM and hard disk mount paths).
Then chkdsk output(nothing special, just as run with modern OSes).
Then pagefile 10-64MB (512MB RAM) at \??\C:\pagefile.sys with a size of [15..60] MB
Then it enters GUI mode, with the version displayed at the top of the screen.
Then the usual reboot by 8042 after some HDD activity writes and reads.
Edit: Still nothing is logged, not even in the checked build? No EVT files to view are created with infirmation why it happens. Nothing at all?

There is a pagefile though, but I doubt that can be used in some way?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 443 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. Now I'm trying the /CRASHDEBUG option with Windows NT 4.0 on UniPCemu (although it's still the CHK build I'm running).

Used the Bochs completed installation to modify the boot.ini file after removing it's attributes(System, Hidden, Read-only).

Edit: I then copied the CHK's DEBUG folder to the Windows 95-C(OSR 2.5) Dosbox SVN Daum image. (although running on Dosbox X with the serial port (COM2) in "nullmodem server:UNIPCEMUIP port:UNIPCEMUPORT" mode.
The Dosbox software seems to successfully connect to the UniPCemu that's in serial passthrough mode with the necessary Dosbox serial nullmodem protocol enabled.

So now I've gotten a Dosbox Windows 95 instance that should (theoretically) be able to connect to the Windows NT 4.0 instance (assuming Dosbox doesn't crash or hang during it). And Bochs can take care of modifying the Windows NT 4.0 NTFS filesystem files required for changing settings to make UniPCemu boot into (like /CRASHDEBUG etc.).

Although /CRASHDEBUG might not be enough in this case.
Edit: i386kd won't run on Windows 95 it seems? Missing DLL files. Probably NT 4.0 DLL files?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 444 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. Now, with UniPCemu's latest commits it can connect to a physical/emulated serial port, providing one serial port for each instance launched as a Dosbox-compatible TCP port, which is in Nullmodem mode with RTS/CTS and DTR/DSR passthrough enabled.

So now, running UniPCemu in that mode, where it's connected using TCP with UniPCemu running it's serial port in Nullmodem mode, which is in turn running Windows NT 4.0 with debugger enabled.
Then the UniPCemu instance running as a server(the first, not the one running Windows NT 4.0) is connected to an emulated COM port, which is in face the COM0COM driver running at a COM port less than #10.
The other end on the COM0COM driver port is another emulated COM port, which is also exposed to Windows 10(both are, which one being connected to UniPCemu's inputs/outputs). The other COM port that's in the COM0COM pair is then connected to using the NT 4.0 CHK build's i386kd app.

Now, i386kd displays the NT 4.0 information and kernel debugging information at least. Although I can't see if the NT 4.0 is actually in debugger mode, I do see the UniPCemu instance connected to the virtual COM0COM port having it's DTR and RTS lines raised (connected to the emulated DSR/CD and CTS in Windows NT 4.0).
I think I also saw some data being transferred between the two instances (through the COM0COM connected UniPCemu being debugged).

Microsoft(R) Windows NT Kernel Debugger
Version 4.00
Copyright (C) Microsoft Corp. 1981-1996

Symbol search path is: X:\Dosbox\NT4chkdebugger\DEBUG\I386\SYMBOLS;X:\Dosbox\NT4chkdebugger\DEBUG\I386\SYMBOLS
KD: waiting to reconnect...
KD: baud rate reset to 115200

help
help
?
?
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
*******************************************************************************
* *
* *
* You are seeing this message because you pressed CTRL+C on your debugger *
* machine's keyboard. *
* *
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
* *
*******************************************************************************
8015ec1c cc int 3
0: kd> ^ Syntax error in 'help'
0: kd> ^ Syntax error in 'help'
0: kd> A [<address>] - assemble N [<radix>] - set / show radix
BA[#] <e|r|w|i><1|2|4> <addr> - addr bp P[R] [=<addr>] [<value>] - program step
BC[<bp>] - clear breakpoint(s) Q - quit
BD[<bp>] - disable breakpoint(s) R[T] [[<reg> [= <value>]]] - reg/flag
BE[<bp>] - enable breakpoint(s) #R[T] - multiprocessor register dump
BL[<bp>] - list breakpoint(s) S <range> <list> - search
BP[#] <address> - set breakpoint
C <range> <address> - compare SS <n | a | w> - set symbol suffix
D[type][<range>] - dump memory T[R] [=<address>] [<value>] - trace
E[type] <address> [<list>] - enter U [<range>] - unassemble
F <range> <list> - fill V [<range>] - view source lines
G [=<address> [<address>...]] - go X [<*|module>!]<*|symbol> - view symbols
J<expr> [']cmd1['];[']cmd2['] - conditional execution
K[B] <count> - stacktrace .logappend [<file>] - append to log file
LN <expr> - list near .logclose - close log file
M <range> <address> - move .logopen [<file>] - open new log file
O<type> <port> <value> - write I/O
~ - list threads status ~#s - set default thread
~[.|#|*|ddd]f - freeze thread ~[.|#|ddd]k[value] - backtrace stack
| - list processes status |#s - set default process
|#<command> - default process override
? <expr> - display expression
#<string> [address] - search for a string in the dissasembly
$< <filename> - take input from a command file

<expr> ops: + - * / not by wo dw poi mod() and(&) xor(^) or(|) hi low
operands: number in current radix, public symbol, <reg>
<type> : B (byte), W (word), D (doubleword), A (ascii)
C <dwordandChar>, U (unicode), L (list)
Show last 146 lines
<pattern> : [(nt | <dll-name>)!]<var-name> (<var-name> can include ? and *)
<radix> : 8, 10, 16
<reg> : [e]ax, [e]bx, [e]cx, [e]dx, [e]si, [e]di, [e]bp, [e]sp, [e]ip, [e]fl,
al, ah, bl, bh, cl, ch, dl, ch, cs, ds, es, fs, gs, ss
cr0, cr2, cr3, cr4, dr0, dr1, dr2, dr3, dr6, dr7
gdtr, gdtl, idtr, idtl, tr, ldtr, $u0-$u9, $ea, $exp, $ra, $p
<flag> : iopl, of, df, if, tf, sf, zf, af, pf, cf
<addr> : <32-bit address>, #<16-bit protect-mode [seg:]address>,
&<V86-mode [seg:]address>
0: kd> A [<address>] - assemble N [<radix>] - set / show radix
BA[#] <e|r|w|i><1|2|4> <addr> - addr bp P[R] [=<addr>] [<value>] - program step
BC[<bp>] - clear breakpoint(s) Q - quit
BD[<bp>] - disable breakpoint(s) R[T] [[<reg> [= <value>]]] - reg/flag
BE[<bp>] - enable breakpoint(s) #R[T] - multiprocessor register dump
BL[<bp>] - list breakpoint(s) S <range> <list> - search
BP[#] <address> - set breakpoint
C <range> <address> - compare SS <n | a | w> - set symbol suffix
D[type][<range>] - dump memory T[R] [=<address>] [<value>] - trace
E[type] <address> [<list>] - enter U [<range>] - unassemble
F <range> <list> - fill V [<range>] - view source lines
G [=<address> [<address>...]] - go X [<*|module>!]<*|symbol> - view symbols
J<expr> [']cmd1['];[']cmd2['] - conditional execution
K[B] <count> - stacktrace .logappend [<file>] - append to log file
LN <expr> - list near .logclose - close log file
M <range> <address> - move .logopen [<file>] - open new log file
O<type> <port> <value> - write I/O
~ - list threads status ~#s - set default thread
~[.|#|*|ddd]f - freeze thread ~[.|#|ddd]k[value] - backtrace stack
| - list processes status |#s - set default process
|#<command> - default process override
? <expr> - display expression
#<string> [address] - search for a string in the dissasembly
$< <filename> - take input from a command file

<expr> ops: + - * / not by wo dw poi mod() and(&) xor(^) or(|) hi low
operands: number in current radix, public symbol, <reg>
<type> : B (byte), W (word), D (doubleword), A (ascii)
C <dwordandChar>, U (unicode), L (list)
<pattern> : [(nt | <dll-name>)!]<var-name> (<var-name> can include ? and *)
<radix> : 8, 10, 16
<reg> : [e]ax, [e]bx, [e]cx, [e]dx, [e]si, [e]di, [e]bp, [e]sp, [e]ip, [e]fl,
al, ah, bl, bh, cl, ch, dl, ch, cs, ds, es, fs, gs, ss
cr0, cr2, cr3, cr4, dr0, dr1, dr2, dr3, dr6, dr7
gdtr, gdtl, idtr, idtl, tr, ldtr, $u0-$u9, $ea, $exp, $ra, $p
<flag> : iopl, of, df, if, tf, sf, zf, af, pf, cf
<addr> : <32-bit address>, #<16-bit protect-mode [seg:]address>,
&<V86-mode [seg:]address>
0: kd> D=80000000
^ Syntax error in 'D=80000000'
0: kd> D 80000000
80000000 6f ef 00 f0 6f ef 00 f0-c3 e2 00 f0 6f ef 00 f0 o...o.......o...
80000010 6f ef 00 f0 54 ff 00 f0-08 80 00 f0 6f ef 00 f0 o...T.......o...
80000020 a5 fe 00 f0 87 e9 00 f0-6f ef 00 f0 6f ef 00 f0 ........o...o...
80000030 6f ef 00 f0 6f ef 00 f0-57 ef 00 f0 6f ef 00 f0 o...o...W...o...
80000040 4d 0c 00 c0 4d f8 00 f0-41 f8 00 f0 bc b6 00 f0 M...M...A.......
80000050 39 e7 00 f0 59 f8 00 f0-2e e8 00 f0 d2 ef 00 f0 9...Y...........
80000060 a4 e7 00 f0 f2 e6 00 f0-6e fe 00 f0 53 ff 00 f0 ........n...S...
80000070 53 ff 00 f0 a4 f0 00 f0-c7 ef 00 f0 d5 42 00 c0 S............B..
0: kd> D 80000000
80000000 6f ef 00 f0 6f ef 00 f0-c3 e2 00 f0 6f ef 00 f0 o...o.......o...
80000010 6f ef 00 f0 54 ff 00 f0-08 80 00 f0 6f ef 00 f0 o...T.......o...
80000020 a5 fe 00 f0 87 e9 00 f0-6f ef 00 f0 6f ef 00 f0 ........o...o...
80000030 6f ef 00 f0 6f ef 00 f0-57 ef 00 f0 6f ef 00 f0 o...o...W...o...
80000040 4d 0c 00 c0 4d f8 00 f0-41 f8 00 f0 bc b6 00 f0 M...M...A.......
80000050 39 e7 00 f0 59 f8 00 f0-2e e8 00 f0 d2 ef 00 f0 9...Y...........
80000060 a4 e7 00 f0 f2 e6 00 f0-6e fe 00 f0 53 ff 00 f0 ........n...S...
80000070 53 ff 00 f0 a4 f0 00 f0-c7 ef 00 f0 d5 42 00 c0 S............B..
0: kd> ~
0: kd> ~
0: kd> |
^ Syntax error in '|'
0: kd> D =00000000
^ Syntax error in 'D =00000000'
0: kd> D =000A0000
^ Syntax error in 'D =000A0000'
0: kd> D=000A0000
^ Syntax error in 'D=000A0000'
0: kd> D
80000080 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
80000090 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
800000a0 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
800000b0 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
800000c0 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
800000d0 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
800000e0 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
800000f0 6f ef 00 f0 6f ef 00 f0-6f ef 00 f0 6f ef 00 f0 o...o...o...o...
0: kd> D =A0000
^ Syntax error in 'D =A0000'
0: kd> D =C0000
^ Syntax error in 'D =C0000'
0: kd> D =80000000
^ Syntax error in 'D =80000000'
0: kd> D 80000000
80000000 6f ef 00 f0 6f ef 00 f0-c3 e2 00 f0 6f ef 00 f0 o...o.......o...
80000010 6f ef 00 f0 54 ff 00 f0-08 80 00 f0 6f ef 00 f0 o...T.......o...
80000020 a5 fe 00 f0 87 e9 00 f0-6f ef 00 f0 6f ef 00 f0 ........o...o...
80000030 6f ef 00 f0 6f ef 00 f0-57 ef 00 f0 6f ef 00 f0 o...o...W...o...
80000040 4d 0c 00 c0 4d f8 00 f0-41 f8 00 f0 bc b6 00 f0 M...M...A.......
80000050 39 e7 00 f0 59 f8 00 f0-2e e8 00 f0 d2 ef 00 f0 9...Y...........
80000060 a4 e7 00 f0 f2 e6 00 f0-6e fe 00 f0 53 ff 00 f0 ........n...S...
80000070 53 ff 00 f0 a4 f0 00 f0-c7 ef 00 f0 d5 42 00 c0 S............B..
0: kd> D 800A0000
800a0000 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
800a0010 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
800a0020 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
800a0030 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
800a0040 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
800a0050 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
800a0060 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
800a0070 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0: kd> D C0000000
c0000000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0000040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0000050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0000060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0000070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0: kd> D C0001000
c0001000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0001010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0001020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0001030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0001040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0001050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0001060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
c0001070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0: kd> D C00A0000
c00a0000 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0010 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0020 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0030 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0040 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0050 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0060 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0070 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
0: kd> D C00A0000
c00a0000 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0010 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0020 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0030 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0040 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0050 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0060 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
c00a0070 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 445 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Although to make it connect to the serial port, I simply modified the serial modem code in the Dosbox-compatible nullmodem emulation with some calls to the Dosbox's libserial code. Then modified the libserial file to work with UniPCemu's system (memory allocation, some little typedef modifications and merging in it's headers. Although it says it also supports OS2(untested), that isn't supported by UniPCemu (not likely it will in the future, since it's too old to run UniPCemu on).

The current end result is as follows:
i386kd <=COM4=> COM0COM UART <=COM5=> UniPCemu TCP server <=TCP connection=> UniPCemu running NT 4.0

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 446 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just adjusted the UART and connection speed a bit. Now:
- The packet server stays at a connection speed of 57600 BPS.
- The serial port connection on the host machine can have it's speed set to any integer number using a setting in the configuration file. Setting it to 0 sets it to 57600 BPS.
- The emulated serial connection will poll and send at the speed configured by the UART that's emulated (in BPS, rounded down).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 447 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just modified the speed of the outgoing and incoming TCP connection a bit:
- All modem-to-modem and TCP-to-packet server communication is using 8 cycle setting (8 cycles to send/receive a byte) for sending/receiving.
- All speeds between modems are configurable in the settings.
- The speed for a nullmodem configuration is still determined by the UART instead.

The CONNECT message of the modem now reports said speed in baud (in the settings file). The number version (when the modem is configured to do so by software) of that still always reports a 57600 baud rate, due to it being less flexible in available values.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 448 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. The CONNECT messages have been improved somewhat.

The NT 4.0 workstation debugger should connect correctly using COM0COM for a virtual port for the UniPCemu server to connect to (it converts the COM0COM serial port into a TCP port, which is connected to UniPCemu running WIndows NT 4.0 workstation, which is in the same nullmodem mode).
NT4.0 workstation itself is configured to use the emulated modem port, which is configured in nullmodem mode (and connected to the server build through the TCP nullmodem connection).

So theoretically, the i386kd debugger should see the NT 4.0 going online?

Edit: Hmmm... In NT 4.0, perhaps the page fault at C1140000 is part of the issue?
Edit: OK. Made my own mistake on the copying the current version to the server folder I use for testing the passthrough and packet server.
Managed to configure the whole thing, then wondering why the input lines from the virtual COM port never changed, even though the software on Windows 10 was running...
Then I remembered that I forgot to setup the required setting for the port to actually be used (otherwise, it'll just take it's inputs from the emulated system and not use the physical/virtual serial port at all)... Whoops 😖

Edit: The debugger connection at least seems to be working properly. I've made it set a breakpoint on c1140000 (BP0 c1140000) and then gave the go instruction ('g') to make it go and run the remainder of the boot process.

I do see the HAL dumping all supported bus ranges in the debugger... 🤣

But at least the debugger is running properly now, having control over the machine I hope (don't see anything special yet).
Edit: Hmmm... SOme VideoPortInitialize unfreed stuff is being dumped. AS well as some "0:IoReportResourceUsage: Bad resource list being translated" and "0:IoTranslateResourceList: address could not be translated". Those 'unfreed address' by the 0:VideoPortInitialize say "f2375000", physical c0000 size 40000 and 3b0 size 0000000c?
Edit: Interesting! Io port conflicts "in Driver et4000" are showing up?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 449 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. Reached the reboot point. That happens at 0008:80008558 (the OUT instruction to the 8042).
The previous executed instruction was at 0008:80008554. That could theoretically be used as a breakpoint to verify what's happening (partly).

The debugger in Windows 10 otoh dumped a lot of very interesting information:

KD: waiting to reconnect...
KD: waiting to reconnect...
KD: waiting to reconnect...
KD: waiting to reconnect...
KD: waiting to reconnect...
KD: waiting to reconnect...
KD: waiting to reconnect...
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
KD: waiting to reconnect...
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
KD: waiting to reconnect...
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
KD: waiting to reconnect...
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
KD: waiting to reconnect...
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
*******************************************************************************
* *
* *
* You are seeing this message because you pressed CTRL+C on your debugger *
* machine's keyboard. *
* *
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
* *
*******************************************************************************
8015ec1c cc int 3
kd> help

^ Syntax error in 'help'
kd> help

^ Syntax error in 'help'
kd> ?

A [<address>] - assemble N [<radix>] - set / show radix
BA[#] <e|r|w|i><1|2|4> <addr> - addr bp P[R] [=<addr>] [<value>] - program step
BC[<bp>] - clear breakpoint(s) Q - quit
BD[<bp>] - disable breakpoint(s) R[T] [[<reg> [= <value>]]] - reg/flag
BE[<bp>] - enable breakpoint(s) #R[T] - multiprocessor register dump
BL[<bp>] - list breakpoint(s) S <range> <list> - search
BP[#] <address> - set breakpoint
C <range> <address> - compare SS <n | a | w> - set symbol suffix
D[type][<range>] - dump memory T[R] [=<address>] [<value>] - trace
E[type] <address> [<list>] - enter U [<range>] - unassemble
F <range> <list> - fill V [<range>] - view source lines
G [=<address> [<address>...]] - go X [<*|module>!]<*|symbol> - view symbols
Show last 639 lines
J<expr> [']cmd1['];[']cmd2['] - conditional execution
K[B] <count> - stacktrace .logappend [<file>] - append to log file
LN <expr> - list near .logclose - close log file
M <range> <address> - move .logopen [<file>] - open new log file
O<type> <port> <value> - write I/O
~ - list threads status ~#s - set default thread
~[.|#|*|ddd]f - freeze thread ~[.|#|ddd]k[value] - backtrace stack
| - list processes status |#s - set default process
|#<command> - default process override
? <expr> - display expression
#<string> [address] - search for a string in the dissasembly
$< <filename> - take input from a command file

<expr> ops: + - * / not by wo dw poi mod() and(&) xor(^) or(|) hi low
operands: number in current radix, public symbol, <reg>
<type> : B (byte), W (word), D (doubleword), A (ascii)
C <dwordandChar>, U (unicode), L (list)
<pattern> : [(nt | <dll-name>)!]<var-name> (<var-name> can include ? and *)
<radix> : 8, 10, 16
<reg> : [e]ax, [e]bx, [e]cx, [e]dx, [e]si, [e]di, [e]bp, [e]sp, [e]ip, [e]fl,
al, ah, bl, bh, cl, ch, dl, ch, cs, ds, es, fs, gs, ss
cr0, cr2, cr3, cr4, dr0, dr1, dr2, dr3, dr6, dr7
gdtr, gdtl, idtr, idtl, tr, ldtr, $u0-$u9, $ea, $exp, $ra, $p
<flag> : iopl, of, df, if, tf, sf, zf, af, pf, cf
<addr> : <32-bit address>, #<16-bit protect-mode [seg:]address>,
&<V86-mode [seg:]address>
kd> BL


kd> BP0 c1140000

kd> BL

0 e c1140000 0001 (0001)

kd> #R

kd> 1R

^ Range error in '1R'
kd> 1RT

^ Range error in '1RT'
kd>

kd> help

^ Syntax error in 'help'
kd> ?

A [<address>] - assemble N [<radix>] - set / show radix
BA[#] <e|r|w|i><1|2|4> <addr> - addr bp P[R] [=<addr>] [<value>] - program step
BC[<bp>] - clear breakpoint(s) Q - quit
BD[<bp>] - disable breakpoint(s) R[T] [[<reg> [= <value>]]] - reg/flag
BE[<bp>] - enable breakpoint(s) #R[T] - multiprocessor register dump
BL[<bp>] - list breakpoint(s) S <range> <list> - search
BP[#] <address> - set breakpoint
C <range> <address> - compare SS <n | a | w> - set symbol suffix
D[type][<range>] - dump memory T[R] [=<address>] [<value>] - trace
E[type] <address> [<list>] - enter U [<range>] - unassemble
F <range> <list> - fill V [<range>] - view source lines
G [=<address> [<address>...]] - go X [<*|module>!]<*|symbol> - view symbols
J<expr> [']cmd1['];[']cmd2['] - conditional execution
K[B] <count> - stacktrace .logappend [<file>] - append to log file
LN <expr> - list near .logclose - close log file
M <range> <address> - move .logopen [<file>] - open new log file
O<type> <port> <value> - write I/O
~ - list threads status ~#s - set default thread
~[.|#|*|ddd]f - freeze thread ~[.|#|ddd]k[value] - backtrace stack
| - list processes status |#s - set default process
|#<command> - default process override
? <expr> - display expression
#<string> [address] - search for a string in the dissasembly
$< <filename> - take input from a command file

<expr> ops: + - * / not by wo dw poi mod() and(&) xor(^) or(|) hi low
operands: number in current radix, public symbol, <reg>
<type> : B (byte), W (word), D (doubleword), A (ascii)
C <dwordandChar>, U (unicode), L (list)
<pattern> : [(nt | <dll-name>)!]<var-name> (<var-name> can include ? and *)
<radix> : 8, 10, 16
<reg> : [e]ax, [e]bx, [e]cx, [e]dx, [e]si, [e]di, [e]bp, [e]sp, [e]ip, [e]fl,
al, ah, bl, bh, cl, ch, dl, ch, cs, ds, es, fs, gs, ss
cr0, cr2, cr3, cr4, dr0, dr1, dr2, dr3, dr6, dr7
gdtr, gdtl, idtr, idtl, tr, ldtr, $u0-$u9, $ea, $exp, $ra, $p
<flag> : iopl, of, df, if, tf, sf, zf, af, pf, cf
<addr> : <32-bit address>, #<16-bit protect-mode [seg:]address>,
&<V86-mode [seg:]address>
kd> |

^ Syntax error in '|'
kd> |0

^ Syntax error in '|0'
kd> ~

kd> V

kd> 0R

eax=00000001 ebx=ffdff000 ecx=00000000 edx=0000001f esi=80245ef0 edi=ffffffff
eip=8015ec1c esp=8017d614 ebp=ffdff600 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
KD: waiting to reconnect...
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
KD: waiting to reconnect...
KD: Kernel Debugger connection established.
Kernel Version 1381 MP Checked
Kernel base = 0x80100000 PsLoadedModuleList = 0x8018bd50
*******************************************************************************
* *
* *
* You are seeing this message because you pressed CTRL+C on your debugger *
* machine's keyboard. *
* *
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
* *
*******************************************************************************
8015ec1c cc int 3
kd> ?

A [<address>] - assemble N [<radix>] - set / show radix
BA[#] <e|r|w|i><1|2|4> <addr> - addr bp P[R] [=<addr>] [<value>] - program step
BC[<bp>] - clear breakpoint(s) Q - quit
BD[<bp>] - disable breakpoint(s) R[T] [[<reg> [= <value>]]] - reg/flag
BE[<bp>] - enable breakpoint(s) #R[T] - multiprocessor register dump
BL[<bp>] - list breakpoint(s) S <range> <list> - search
BP[#] <address> - set breakpoint
C <range> <address> - compare SS <n | a | w> - set symbol suffix
D[type][<range>] - dump memory T[R] [=<address>] [<value>] - trace
E[type] <address> [<list>] - enter U [<range>] - unassemble
F <range> <list> - fill V [<range>] - view source lines
G [=<address> [<address>...]] - go X [<*|module>!]<*|symbol> - view symbols
J<expr> [']cmd1['];[']cmd2['] - conditional execution
K[B] <count> - stacktrace .logappend [<file>] - append to log file
LN <expr> - list near .logclose - close log file
M <range> <address> - move .logopen [<file>] - open new log file
O<type> <port> <value> - write I/O
~ - list threads status ~#s - set default thread
~[.|#|*|ddd]f - freeze thread ~[.|#|ddd]k[value] - backtrace stack
| - list processes status |#s - set default process
|#<command> - default process override
? <expr> - display expression
#<string> [address] - search for a string in the dissasembly
$< <filename> - take input from a command file

<expr> ops: + - * / not by wo dw poi mod() and(&) xor(^) or(|) hi low
operands: number in current radix, public symbol, <reg>
<type> : B (byte), W (word), D (doubleword), A (ascii)
C <dwordandChar>, U (unicode), L (list)
<pattern> : [(nt | <dll-name>)!]<var-name> (<var-name> can include ? and *)
<radix> : 8, 10, 16
<reg> : [e]ax, [e]bx, [e]cx, [e]dx, [e]si, [e]di, [e]bp, [e]sp, [e]ip, [e]fl,
al, ah, bl, bh, cl, ch, dl, ch, cs, ds, es, fs, gs, ss
cr0, cr2, cr3, cr4, dr0, dr1, dr2, dr3, dr6, dr7
gdtr, gdtl, idtr, idtl, tr, ldtr, $u0-$u9, $ea, $exp, $ra, $p
<flag> : iopl, of, df, if, tf, sf, zf, af, pf, cf
<addr> : <32-bit address>, #<16-bit protect-mode [seg:]address>,
&<V86-mode [seg:]address>
kd> BP0 C1140000

kd> |

^ Syntax error in '|'
kd> L|

^ Syntax error in 'L|'
kd> ~

kd>

kd> LB

^ Syntax error in 'LB'
kd> BE0

kd> BL

0 E c1140000 0001 (0001)

kd> g

*******************************************************************************
* *
* *
* You are seeing this message because you pressed CTRL+C on your debugger *
* machine's keyboard. *
* *
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
* *
*******************************************************************************
8015ec1c cc int 3
0: kd> BL

0 E c1140000 0001 (0001)

0: kd> BE0

0: kd> BL

0 E c1140000 0001 (0001)

0: kd> g

1:

HAL - dumping all supported bus ranges1:

Internal 01:

IO......:1: 0:00000000 - 0:0000ffff

Memory..:1: 0:00000000 - 0:ffffffff

PFMemory:1: 0:00000001 - 0:00000000

Dma.....:1: 0:00000000 - 0:00000007

1:

Isa 01:

IO......:1: 0:00000000 - 0:0000ffff

Memory..:1: 0:000a0000 - 0:000bffff

PFMemory:1: 0:00000001 - 0:00000000

Dma.....:1: 0:00000000 - 0:00000007

1:

Eisa 01:

IO......:1: 0:00000000 - 0:0000ffff

Memory..:1: 0:000a0000 - 0:000bffff 0:20000000 - 0:ffffffff

PFMemory:1: 0:00000001 - 0:00000000

Dma.....:1: 0:00000000 - 0:00000007

1:

PCI 01:

IO......:1: 0:00000000 - 0:0000ffff

Memory..:1: 0:000a0000 - 0:000bffff 0:20000000 - 0:ffffffff

PFMemory:1: 0:e8000000 - 0:e7ffffff

Dma.....:1: 0:00000000 - 0:00000000

0:IOINIT: Built-in driver \Driver\atapi took 90.4s to initialize

*******************************************************************************
* *
* *
* You are seeing this message because you pressed CTRL+C on your debugger *
* machine's keyboard. *
* *
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
* *
*******************************************************************************
8015ec1c cc int 3
0: kd> .breakin

unknown . command
0: kd> lb

^ Syntax error in 'lb'
0: kd> ?

A [<address>] - assemble N [<radix>] - set / show radix
BA[#] <e|r|w|i><1|2|4> <addr> - addr bp P[R] [=<addr>] [<value>] - program step
BC[<bp>] - clear breakpoint(s) Q - quit
BD[<bp>] - disable breakpoint(s) R[T] [[<reg> [= <value>]]] - reg/flag
BE[<bp>] - enable breakpoint(s) #R[T] - multiprocessor register dump
BL[<bp>] - list breakpoint(s) S <range> <list> - search
BP[#] <address> - set breakpoint
C <range> <address> - compare SS <n | a | w> - set symbol suffix
D[type][<range>] - dump memory T[R] [=<address>] [<value>] - trace
E[type] <address> [<list>] - enter U [<range>] - unassemble
F <range> <list> - fill V [<range>] - view source lines
G [=<address> [<address>...]] - go X [<*|module>!]<*|symbol> - view symbols
J<expr> [']cmd1['];[']cmd2['] - conditional execution
K[B] <count> - stacktrace .logappend [<file>] - append to log file
LN <expr> - list near .logclose - close log file
M <range> <address> - move .logopen [<file>] - open new log file
O<type> <port> <value> - write I/O
~ - list threads status ~#s - set default thread
~[.|#|*|ddd]f - freeze thread ~[.|#|ddd]k[value] - backtrace stack
| - list processes status |#s - set default process
|#<command> - default process override
? <expr> - display expression
#<string> [address] - search for a string in the dissasembly
$< <filename> - take input from a command file

<expr> ops: + - * / not by wo dw poi mod() and(&) xor(^) or(|) hi low
operands: number in current radix, public symbol, <reg>
<type> : B (byte), W (word), D (doubleword), A (ascii)
C <dwordandChar>, U (unicode), L (list)
<pattern> : [(nt | <dll-name>)!]<var-name> (<var-name> can include ? and *)
<radix> : 8, 10, 16
<reg> : [e]ax, [e]bx, [e]cx, [e]dx, [e]si, [e]di, [e]bp, [e]sp, [e]ip, [e]fl,
al, ah, bl, bh, cl, ch, dl, ch, cs, ds, es, fs, gs, ss
cr0, cr2, cr3, cr4, dr0, dr1, dr2, dr3, dr6, dr7
gdtr, gdtl, idtr, idtl, tr, ldtr, $u0-$u9, $ea, $exp, $ra, $p
<flag> : iopl, of, df, if, tf, sf, zf, af, pf, cf
<addr> : <32-bit address>, #<16-bit protect-mode [seg:]address>,
&<V86-mode [seg:]address>
0: kd> BL

0 E c1140000 0001 (0001)

0: kd> BE0

0: kd> BL

0 E c1140000 0001 (0001)

0: kd> g

0:IoTranslateResourceList: address could not be translated

0:IoReportResourceUsage: Bad resource list being translated

0:VPGetDeviceBase : refCount hit on address 000003b0

0:VPGetDeviceBase : refCount hit on address 000c0000

0:VPGetDeviceBase : refCount hit on address 000003b0

0:VPGetDeviceBase : refCount hit on address 000c0000

0:VideoPortInitialize: unfreed address f2375000, physical 000c0000, size 00040000

0:VideoPortInitialize: unfreed refcount 3, unmapping 1



0:VideoPortInitialize: unfreed address f2375000, physical 000c0000, size 00040000

0:VideoPortInitialize: unfreed refcount 2, unmapping 1



0:VideoPortInitialize: unfreed address f2375000, physical 000c0000, size 00040000

0:VideoPortInitialize: unfreed refcount 1, unmapping 1



0:VideoPortInitialize: unfreed address 000003b0, physical 000003b0, size 0000000c

0:VideoPortInitialize: unfreed refcount 3, unmapping 0



0:VideoPortInitialize: unfreed address 000003b0, physical 000003b0, size 0000000c

0:VideoPortInitialize: unfreed refcount 2, unmapping 0



0:VideoPortInitialize: unfreed address 000003b0, physical 000003b0, size 0000000c

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:VPGetDeviceBase : refCount hit on address 000003b0

0:VPGetDeviceBase : refCount hit on address 000c0000

0:VPGetDeviceBase : refCount hit on address 000003b0

0:VPGetDeviceBase : refCount hit on address 000c0000

0:VPGetDeviceBase : refCount hit on address 000003b0

0:ATI: Timeout on WaitForIdle_m()

0:VideoPortInitialize: unfreed address 000002ea, physical 000002ea, size 00000001

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:VideoPortInitialize: unfreed address f2375000, physical 000c0000, size 00040000

0:VideoPortInitialize: unfreed refcount 3, unmapping 1



0:VideoPortInitialize: unfreed address f2375000, physical 000c0000, size 00040000

0:VideoPortInitialize: unfreed refcount 2, unmapping 1



0:VideoPortInitialize: unfreed address f2375000, physical 000c0000, size 00040000

0:VideoPortInitialize: unfreed refcount 1, unmapping 1



0:VideoPortInitialize: unfreed address 000003b0, physical 000003b0, size 0000000c

0:VideoPortInitialize: unfreed refcount 3, unmapping 0



0:VideoPortInitialize: unfreed address 000003b0, physical 000003b0, size 0000000c

0:VideoPortInitialize: unfreed refcount 2, unmapping 0



0:VideoPortInitialize: unfreed address 000003b0, physical 000003b0, size 0000000c

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:IOLOAD: Driver \Driver\ati took 31.5s to fail initialization

0:Cirrus not supported on this machine!

0:CirrusFindAdapter - Failed

0:VideoPortInitialize: unfreed address 000003b0, physical 000003b0, size 00000030

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:IoTranslateResourceList: address could not be translated

0:IoReportResourceUsage: Bad resource list being translated

0:MGA.SYS!MgaFindAdapter: Access Range conflict

0:IoTranslateResourceList: address could not be translated

0:IoReportResourceUsage: Bad resource list being translated

0:MGA.SYS!MgaFindAdapter: Access Range conflict

0:IoReportResourceUsage: conflict in port addresses

0:Io Port Reported : Base= 000003b0 length= 0000000c in Driver ncr77c22

0:Io Port conflicting : Base= 000003b0 length= 0000000c in Driver et4000

0:IoReportResourceUsage: conflict in port addresses

0:Io Port Reported : Base= 000003b0 length= 0000000c in Driver qv

0:Io Port conflicting : Base= 000003b0 length= 0000000c in Driver et4000

0:Failed to detect and configure S3 via PCI

0:IoReportResourceUsage: conflict in port addresses

0:Io Port Reported : Base= 000003c0 length= 00000010 in Driver s3

0:Io Port conflicting : Base= 000003c0 length= 00000020 in Driver et4000

0:IoReportResourceUsage: conflict in port addresses

0:Io Port Reported : Base= 000003b0 length= 0000000c in Driver v7vram

0:Io Port conflicting : Base= 000003b0 length= 0000000c in Driver et4000

0:IoReportResourceUsage: conflict in port addresses

0:Io Port Reported : Base= 000003b0 length= 0000000c in Driver wdvga

0:Io Port conflicting : Base= 000003b0 length= 0000000c in Driver et4000

0:IoReportResourceUsage: conflict in port addresses

0:Io Port Reported : Base= 000003b0 length= 0000000c in Driver wdvga

0:Io Port conflicting : Base= 000003b0 length= 0000000c in Driver et4000

0:IoReportResourceUsage: conflict in port addresses

0:Io Port Reported : Base= 000003b0 length= 0000000c in Driver wdvga

0:Io Port conflicting : Base= 000003b0 length= 0000000c in Driver et4000

0:VideoPortInitialize: unfreed address 00009100, physical 00009100, size 00000043

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:VideoPortInitialize: unfreed address 00009100, physical 00009100, size 00000043

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:VideoPortInitialize: unfreed address 00009100, physical 00009100, size 00000043

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:VideoPortInitialize: unfreed address 00009100, physical 00009100, size 00000043

0:VideoPortInitialize: unfreed refcount 1, unmapping 0



0:IOLOAD: Driver \Driver\weitekp9 took 8.4s to fail initialization

0:pOverrideConflict: found VgaSave string. Returning 1

0:pOverrideConflict: found VgaSave string. Returning 0

0:RTL: No values found under MediaTypes key.

0:The type of the file system is NTFS.


0:The volume is clean.


1:RestartSetup: Restart value is 0

1:RestartSetup: Value of RestartSetup set to 1

1:SMSS: comdlg32.dll added COMCTL32.dll to KnownDlls

0:SMSS: olecli32.dll added MPR.dll to KnownDlls

1:SMSS: ole32.dll added IMAGEHLP.dll to KnownDlls

0:MM - fault on Large page 88311910

1:MM - fault on Large page 8845cf10

1:SMSS: olecnv32.dll added MSVCRT.dll to KnownDlls

1:SMSS: olethk32.dll added ntvdm.exe to KnownDlls

1:SMSS: olethk32.dll added wow32.dll to KnownDlls

0:MM - fault on Large page 88e9c710

0:MM - fault on Large page 890b4510

0:MM - fault on Large page 89917000

0:MM - fault on Large page 8a4aeb10

0:SMSS: Ignoring ntvdm.exe as KnownDll since it is not a DLL

1:MM - fault on Large page 8acd2710

0:MM - fault on Large page 8b4007f8

0:MM - fault on Large page 909f62b0

0:MM - fault on Large page 91434000

0:PID:0x18.17 USERKRNL[Warning] UserInit: CaptMatchDevmode: DEFAULT DEVMODE returned



0:

dwRet = 2, win31upgrade = no



1:PID:0x2.24 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (mouclass)

1:PID:0x2.24 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (kbdclass)

1:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (Arrow)

1:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (IBeam)

1:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (Wait)

1:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (Crosshair)

1:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (UpArrow)

1:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (SizeNWSE)

1:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (SizeNESW)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (SizeWE)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (SizeNS)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (SizeAll)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (No)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (AppStarting)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (Help)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (NWPen)

0:PID:0x22.21 USERKRNL[Warning] FastGetProfileStringW: Failed to open cache-key (Icon)

0:WINREG : Winreg succesfully initialized.

1:34.33> Winlogon-Error: RegOpenKeyEx failed, error = 6

1:34.33> Winlogon-Error: Failed to create initial environment

0:34.33> Winlogon-Error: error 6 opening \system\setup key for CmdLine (2)LDR: Using CriticalSectionTimeout of 0xdbba0 ms from image.

1:34.33> Winlogon-Error: couldn't exec ''KD: Shutdown occurred...unloading all symbol tables.
KD: waiting to reconnect...

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 450 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. Doing a quick Google on that LDR: Using CriticalSectionTimeout leads me to this: private/ntos/dll/ldrinit.c#L731
Somewhere inside the WIndows NT 4.0 kernel that is (don't know if it's allowed to post the full link here, even though it's an indefencible leak apparently, so removed the base of the url itself).

It's trying to load some DLL afterwards? Some function named "LdrpInitializeProcess"?

Last edited by superfury on 2022-03-14, 22:12. Edited 1 time in total.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 451 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Isn't that "\system\setup" key supposed to be "HKEY_LOCAL_MACHINE\system\setup"?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 452 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Hmmm... C1140000 seems to be opcode C7h(MOV modr/m32,reg) at address 803ab33b.
But that's during the text-mode part of booting?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 453 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just optimized the handling of the debug registers a bit to check for breakpoints being active or not a bit faster(optimized for them not being active of course) by reducing multiple variables(4 byte variables, 1 for each breakpoint register) to only 1 byte to easily check if they're to be checked at all.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 454 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just tried WinCheckit 5.0 on Windows 95 C(OSR 2.5).
The CD-ROM read sector test seems to hang. Then trying to quit the program it asks to save a dump of collected data(registry etc.).
Then, trying to make it save that data makes Windows 95(?) report that the registry is corrupted? And trying to restore it from a backup as it calls it fails, giving the only option to shutdown Windows?

So something is going terribly wrong there.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 455 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Hmmm... Managed to get PCI IDE working once again on the i430fx. Now it has some weird problem with trying DMA transfers without properly setting the DMA command register to actually transfer it to use ATA busmastering DMA (next problem)?
Edit: Hmmm... I do see it write FFh to FFFC immediately before entering a loop waiting for the IRQ after executing the C8 read DMA command on the HDD?
Edit: It somehow seems to assume the DMA controller for the primary channel is at FFFC?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 456 of 620, by mr.cat

User metadata
Rank Member
Rank
Member

Yeah these latest changes have broken booting for me (cdrom0 or hdd0, with Bochs BIOS).
I went back to commit a3371a63 and that one seems to work, but some minor patching is needed for Linux:

libserial.h: "termios backup" should be "struct termios backup" maybe?
libserial.c: some #ifdef trouble, as there are messages about undefined refs to SERIAL_xxx functions.
It seems LINUX is not defined, so need to use IS_LINUX instead?

The compiler also doesn't like the last parameter or tcsetattr() on line 312:
&port->backup should probably be &((*port)->backup) or something like that.

Reply 457 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++
mr.cat wrote on 2022-03-24, 17:34:
Yeah these latest changes have broken booting for me (cdrom0 or hdd0, with Bochs BIOS). I went back to commit a3371a63 and that […]
Show full quote

Yeah these latest changes have broken booting for me (cdrom0 or hdd0, with Bochs BIOS).
I went back to commit a3371a63 and that one seems to work, but some minor patching is needed for Linux:

libserial.h: "termios backup" should be "struct termios backup" maybe?
libserial.c: some #ifdef trouble, as there are messages about undefined refs to SERIAL_xxx functions.
It seems LINUX is not defined, so need to use IS_LINUX instead?

The compiler also doesn't like the last parameter or tcsetattr() on line 312:
&port->backup should probably be &((*port)->backup) or something like that.

Yeah, on the latest commits I'm trying to seperate the PCI IDE card from the onboard i430fx/i440fx chipsets. Runs fine on the i440fx(enabled by BIOS), but the i430fx rejects the card and enables onboard PIIX instead, which has no mounts currently. The two disk mounts are now always on the PCI IDE controller instead of onboard.
Onboard is also improved for the 85C496 chipset, which is an alternative to the i430fx/i440fx PIIX, which are both hardcoded to legacy IRQs and ports (BARs always zeroed pn i440fx).
Edit: Hmmm... Lots of errors on Ubuntu 20 now?
Edit: Just fixed the build on Ubuntu. It properly compiles now!

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 458 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

It doesn't look like the Bochs BIOS supports PCI IDE devices? UniPCemu has it implemented as documented by the PCI IDE spec at osdev.org's documentation for the PCI IDE (as well as the documentation for the relevant device, see the PCI IDE spec rev 1.0).

The PCI BARs should now only be active when in PCI native mode. In legacy mode they're disabled and forced to legacy ports and IRQs.

The BARs are still writeable though, and respond like a PCI device (when read back).

The i430fx still leaves the device disabled for some reason? It's in legacy mode by default (as documented for PCI IDE rev 1.0 spec), but since the card is disabled, it's not running and booting on the i430fx?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 459 of 620, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just fixed the Bochs BIOS.

I've modified the PCI device to disable the PCI BARs when in legacy mode again.
I've also forced the i430fx/i440fx PIIX IDE in legacy mode, but with only the IRQs in legacy mode (the I/O ports are in PCI mode).
The i440fx BARs are still zeroed, except BAR4. The i430fx BAR0-3 are still changable.

The Bochs BIOS now properly detects the hard drives again. It even configures the PCI properly.
The i430fx BIOS I use still has issues (the S728P.ROM one).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io