Emulating win32
neugierig.org
neugierig.org
This is also the approach of qemu user-space, which went unmentioned in the article. It can emulate another ISA and translate the syscalls to your host version of Linux. This way you can run x86 Wine on, say, ARM or RISC-V systems. From a user perspective, if everything is set up so, Windows applications for x86 will run just as well as ARM Linux applications.
The closed Github issues are a trip. https://github.com/otya128/winevdm/issues?q=is%3Aissue+is%3A...
In the words of its own README:
CPU Emulator
wine based Win16->Win32 conversion codes:
Relay routines from 16-bit to 32-bit are autogenerated by convspec
DOS emulation for Win16
16-bit <=> native HANDLE conversion
Fix compatibility problems, fix compatibility problemsDosBox works well enough for most pre-Windows stuff, DosBox-X can handle the Windows 95 era well enough, but Windows 2000-Windows 7 stuff is actually kind of hard to get fully working on modern computers, and I feel emulation has not been able to keep up.
I wish a lot of success on this project. It would be great to get Jazz Jackrabbit 2 working on my Mac without mucking with VMWare.
Stop using apple products. They are luke-warm in design and terrible in execution.
Get a PC: Supports Linux, windows, all your games (ALL) and has a mouse with more than one button.
> all your games (ALL)
This is measurably untrue; modern computers have trouble with the Windows XP era of games a lot of the time. Many games require tinkering and some will just crash after a minute.
This is mostly the fault of games and not Windows. Software usually breaks because of unfounded assumptions, for example, that user documents are always at a specific location or that CPU frequency is always constant. Instead of using Windows API functions to retrieve the path or keep track of frequency, lazy developers often halfass the implementation, hardcode values into their code and that breaks sometime in the future when those API functions become meaningful.
Yes, there will be some amount of inevitable jank, but by and large the latest version of Windows will happily run software originally written almost 30 years ago for Windows 95.
Macs have had a second mouse button for 20ish years.
Unfortunately 16 bit Windows applications no longer work. I don't believe that is being actively worked on.
xterm - terminal emulator for X
From Wikipedia entry for Wine: Wine (formerly a recursive backronym for Wine Is Not an Emulator (...))The wine project changed name to avoid the bad reputation emulators had back then due to their poor performance. "Wine is not an emulator" is not factually accurate, its a social workaround.
Wine is a re-implementation of win32 on top of (near) POSIX OSes like Linux.
It's all the other "terminals" for Linux, especially the libvt ones, Kitty, and Alacritty, that are more like shitty xterm emulators.
Different kinds of emulators have different kinds of interfaces they emulate.
Obviously a simplification, worth mentioning maybe at a slightly deeper level https://learn.microsoft.com/en-us/cpp/c-language/thread-loca...
I think a PE32 (.exe) can have multiple sections like this that are implicitly started before main()/entrypoint basically
For a hobby/minimalist Win32 implementation I wonder if HLE support for popular packers/obfuscators would be easier than getting the low level details right?
Interesting - I wouldn't have expected that. Anyone know why that's the case?
Thus there was never really a proper need to have stable syscall interface, because at least officially no application was supposed to use them - they were private implementation details of various DLLs.
I wonder how Microsoft will react to third parties beginning to do syscalls.
If they figure a way that makes it harder to reverse or run or whatever, they will do it. Even if they are essentially rootkits bad enough someone really should try to see if CFAA would stick.
https://news.ycombinator.com/item?id=13264007
The above-linked handful of pages may be the only detailed documentation of the 9x syscall interface that is still reachable by search engines today.
Combined with the obvious 'it's not a stable interface so we like changing it up regularly so people don't feel like they can depend on it'.
Here's the table itself for 32 bit x86 versions if anyone's curious: https://j00ru.vexillium.org/syscalls/nt/32/
The amount of memory and CPU we could have saved.
Interesting if anyone tried this on Notepad++.