![]() There is no such thing as 32 bit DOS exe. (from comments) So basically if I were to execute a 16 bit exe file in DosBox, it would run as though it were on a 16 bit environment and a 32 bit exe as though it were on a 32 bit environment right? There are multiple forks of original dosbox projects, which care rather about HW emulation accuracy than about old SW being usable (sometimes improving the emulation accuracy may break old SW, if the emulation is still not fully perfect, but now it has different flaws.). That's the reason why it is "easy" to create new DOS SW which will not work in dosbox correctly. his focus was to make sure the old SW works as indented, even going intentionally for small imperfections or gaps in the emulation. The bonus about dosbox: the dosbox author did multiple times refuse to make the emulation more accurate, stating his goal was to make dosbox perfect for the SW from the era, i.e. So in this regard the code may due to confusion do some 16b operations instead of 32b operation, but for any non-trivial code it will very likely in few instructions hit some more major difference, which will probably make it crash it lot more hilarious way. That's compile time thing and depends on the compiler.Īlthough, if you run by accident 16b real-mode machine code in 32b protected mode, the most trivial pieces of code like xor ax,ax will actually work in 32b mode as xor eax,eax, and vice versa ( xor eax,eax compiled for real mode, if accidentally run in protected mode, will end operating as xor ax,ax). No, the Borland's Turbo C did produce only 16bit real-mode machine code, and executables produced by it were running in real-mode (unless somebody went great lengths by implementing switch into protected mode and use that for parts of their app code, but such code would have to be compiled by different compiler, or written in assembly, as Turbo C didn't have native support for 32bit protected mode - at least not in the versions I am aware of).Īnd how does the size of an int variable change? So basically I had this argument with someone, he said that when turbo cpp compiles it generates 16 bit code, but when you run it on dosbox it behaves like a 32 bit application, is that true? ![]() and I can't tell from my head, if those are accurately emulated in dosbox, but I think most of it works "good enough" to run old DOS SW). So it emulates both real-mode and protected mode of 80386 (and by the way how you switch the 80386 between modes you may get less common configurations, sometimes called "unreal mode"/etc. dosbox does emulate enough of the machine to make most of the classic SW work, but if you are mean, you can easily create DOS application which would work on real HW but fail in dosbox, due to some missing feature in emulation. So any DOS application (starting in the real-mode) can switch the CPU into protected mode, and that's what many DOS application did, often using some kind of common extender like DOS4GW, etc. But it emulates 80386 HW (actually it does emulate also some parts of 8046, but the 80386 is as close to "complete" as it's practical). ![]() It's DOS emulator, and DOS (its interface part and services (implementation in dosbox is often on the host side, not running in the emulated HW at all)) are on the 16-bit real mode side. ![]() So, if DosBox is indeed an emulator for 32 bit applications ![]()
0 Comments
Leave a Reply. |