ptitSeb / box86

Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
https://box86.org
MIT License
3.37k stars 233 forks source link

Unimplemented Opcode (00) 66 0F 01 When running Codeskin.com's C2prog.exe in wine on Raspberry Pi #404

Closed ghost closed 3 years ago

ghost commented 3 years ago

Do you have any advice for me getting this small executable running under Box86 0.2.3 + wine 6.0.1 on the Raspberry Pi. It is a small program that Codeskin.com develops that uses COM ports to Flash embedded TI C2000 microcontrollers. I have it working with wine 6.0.1 on my Ubuntu Laptop. I would love to get it working under ARM on the Raspberry Pi. I have tried it with both BOX86_DYNAREC=0 and =1.

Here is my output when I try to run C2Prog.exe

pi@raspberrypi:~/.wine/drive_c/Program Files/C2Prog $ BOX86_DYNAREC=0 wine C2Prog.exe Box86 with Dynarec v0.2.3 d5e3bc9c built on Jun 20 2021 00:03:24 Box86 with Dynarec v0.2.3 d5e3bc9c built on Jun 20 2021 00:03:24 Box86 with Dynarec v0.2.3 d5e3bc9c built on Jun 20 2021 00:03:24 00cc:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 00d8:fixme:process:SetProcessShutdownParameters (00000380, 00000000): partial stub. Box86 with Dynarec v0.2.3 d5e3bc9c built on Jun 20 2021 00:03:24 0024:fixme:heap:RtlSetHeapInformation 00000000 1 00000000 0 stub Library has been loaded. 2200|0x13031497: Unimplemented Opcode (00) 66 0F 01 E0 A8 04 75 59 pi@raspberrypi:~/.wine/drive_c/Program Files/C2Prog $ 00cc:fixme:msvcrt:__clean_type_info_names_internal (64082A5C) stub

ptitSeb commented 3 years ago

It's a missing opcode. Not sure how to implement, I'll add a dummy one tomorrow, hopefully it will be enough.

ghost commented 3 years ago

Thanks so much for adding this for me and so quickly. The C2Prog.exe program now works when I run "BOX86_DYNAREC=0 wine C2Prog.exe", but an exception occurs when I run "wine C2Prog.exe". From what I have read, it should run faster if BOX86_DYNAREC is equal to 1.
Any advice on possibly getting this to work with BOX86_DYNAREC=1? Here is the output:

First: and after a bit a Dialog Box pops up saying that an exception occurred and then the program exits.

wine C2Prog.exe Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 00cc:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 00d8:fixme:process:SetProcessShutdownParameters (00000380, 00000000): partial stub. Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 0024:fixme:heap:RtlSetHeapInformation 00000000 1 00000000 0 stub 00d8:fixme:service:QueryServiceConfig2W Level 6 not implemented 00d8:fixme:service:QueryServiceConfig2W Level 6 not implemented 0024:fixme:msvcrt:clean_type_info_names_internal (100074A4) stub 0024:fixme:msvcrt:clean_type_info_names_internal (029123CC) stub 0024:fixme:msvcrt:clean_type_info_names_internal (003F3E14) stub 0024:fixme:msvcrt:clean_type_info_names_internal (003D4994) stub pi@raspberrypi:~/.wine/drive_c/Program Files/C2Prog $ 00b4:err:rpc:I_RpcReceive we got fault packet with status 0x1c010003 00cc:fixme:msvcrt:__clean_type_info_names_internal (64082A5C) stub

Second: This works and runs the program but I included this output just in case it helps you see what is happening.
BOX86_DYNAREC=0 wine C2Prog.exe Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 00d0:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 00dc:fixme:process:SetProcessShutdownParameters (00000380, 00000000): partial stub. Box86 with Dynarec v0.2.3 da64e491 built on Jun 28 2021 08:32:50 0024:fixme:heap:RtlSetHeapInformation 00000000 1 00000000 0 stub C2Prog 1.8.11-7-g6659068 (c) CodeSkin LLC running with JRE-version 1.7.0_80

0024:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 00dc:fixme:service:QueryServiceConfig2W Level 6 not implemented 00dc:fixme:service:QueryServiceConfig2W Level 6 not implemented 0024:fixme:uxtheme:BufferedPaintInit Stub ()

Thanks for you help with this.

ptitSeb commented 3 years ago

That means there is a bug in the dynarec. Can I found that C2Prog.exe somewhere so I can debug myself?

ptitSeb commented 3 years ago

@dblockil I let you test and close the ticket if it's working correctly (it does start for me now)

ghost commented 3 years ago

Yes that fixed the problem. Thanks again. I really appreciate it.