[HN Gopher] 32-Bit DOS Applications
___________________________________________________________________
 
32-Bit DOS Applications
 
Author : mariuz
Score  : 44 points
Date   : 2023-05-11 07:37 UTC (15 hours ago)
 
web link (www.youtube.com)
w3m dump (www.youtube.com)
 
| liendolucas wrote:
| Oh boy, when you see those game requirements. Today gamers would
| change GPUs not every year or so but kind of. Those software
| rendering engines are true gems because the guys who worked on
| them literally pushed CPU and RAM to their limits and beyond. Is
| also a reminder of how much you can do with so little. I highly
| respect and admire people that grew up chewing up assembly during
| the 80's and 90's, wished I had that pleasure.
 
| jmclnx wrote:
| Microsoft c/c++ 7.0 compiler/linker is a 32bit application. I
| still have it and hope to see if I can get it working under
| FreeDOS. The docs are great.
 
  | markus_zhang wrote:
  | https://winworldpc.com/res/img/screenshots/29213296f35729c46...
  | 
  | Man this is good time. I wish nowadays we has such
  | documentations.
 
| tambourine_man wrote:
| Aside from the software, I'd love a modern version of this laptop
| too. Sturdy keys with lots of travel, just the right screen size.
| Imagine a unibody built of this form factor, with modern SSD and
| RAM. The amount of battery one could fit in at that thickness
| would last you a week in a single charge.
 
| tambourine_man wrote:
| We really did have everything, didn't we? I mean, when you think
| about it.
 
  | pavlov wrote:
  | With 32-bit DOS extenders, VESA VGA BIOS extensions and Gravis
  | Ultrasound, we really did have everything -- except an
  | operating system. Who needs one anyway.
 
    | mysterydip wrote:
    | All it was missing was an (optional) network stack, IMHO
 
    | com2kid wrote:
    | Turns out they just get in the way, and in-between showing
    | ads, sell your usage data to advertising companies.
    | 
    | We were better off without them.
 
      | anyfoo wrote:
      | Don't be trite in a technical conversation. While I agree
      | that those things are bad, it adds nothing here, and
      | besides only a minority of Operating Systems does what you
      | say.
 
    | anyfoo wrote:
    | Yeah. Until we wanted multitasking. Separate address spaces,
    | shared resources, protection, eventually security. That's
    | when the "operating system" came in. DOS was allowed to live
    | as a virtualized task, but it wasn't the same.
    | 
    | I did get tambourine_man's reference, though. Nice!
 
      | linguae wrote:
      | Though, there's a way we can enjoy a minimal operating
      | system yet also have security, protection, and resource
      | management:
      | 
      | https://en.m.wikipedia.org/wiki/Exokernel
 
  | Dwedit wrote:
  | We even have HxDOS, which runs Win32 applications, including
  | console applications. For example, even a modern version of
  | 7-zip (console version) runs perfectly on ancient DOS
  | computers.
 
    | mysterydip wrote:
    | Now apparently just called HX, for those (like me) looking
    | for it:
    | https://pmwiki.xaver.me/drdoswiki/index.php?n=Main.HX-DOS
 
    | ale42 wrote:
    | Now I just want HX running directly on UEFI! ;-)
 
      | blueflow wrote:
      | If you have UEFI you can develop against the UEFI
      | interface... its a more sophisticated OS than DOS on its
      | own.
 
    | garganzol wrote:
    | This is something I was able to achieve independently back in
    | 2001 by writing a small DOS program that switched CPU into
    | 32-bit protected mode, loaded a PE (portable executable) exe
    | file into the memory together with DLL modules it depended
    | upon.
    | 
    | The next step was to write KERNEL32.dll etc modules that were
    | used by executable files of interest. It turned out to be a
    | relatively easy task - only a handful of Win32 modules and
    | their API functions were actually used by the real programs I
    | was trying to run under the DOS. And those API
    | implementations were mostly stubs that translated, say, I/O
    | calls from a program into corresponding DOS calls.
    | 
    | Having that trick upon my sleeve, I vividly remember of being
    | able to run 32-bit Borland C++ compiler (bcc32.exe) and
    | linker for Windows under the raw DOS environment. Don't ask
    | why, I did it because I could.
 
      | justsomehnguy wrote:
      | > Don't ask why, I did it because I could.
      | 
      | The most amusing was when you start something and by some
      | minor things you understood what the thing is doing
      | something _weird_ , in a good sense.
      | 
      | Later it was when a win32 app announce what it has a merit
      | just by being not a square one.
      | 
      | Good times.
 
      | anonymousiam wrote:
      | Okay, I won't ask why you did it, but I know I would have
      | liked to run their IDE under DOS instead of Windows. Back
      | in that era, Windows was very slow and clunky, and I was
      | pretty unhappy when I "upgraded" to Borland 4.0 (IIRC)
      | which required Windows.
      | 
      | Fortunately, I switched to Linux around the same time.
 
        | garganzol wrote:
        | I had similar intentions - I was deep into OS development
        | back then, so I wanted to have a 32-bit C/C++ compiler
        | that would effortlessly target 80386+ CPUs.
        | 
        | Borland C++ was my favorite one because it supported
        | official x86 assembly syntax (Intel). In contrast, GNU
        | tools of the day had their own kinky x86 syntax which
        | made me uneasy. It so happened that the Borland compiler
        | that was able to target a 32-bit CPU, required a 32-bit
        | CPU itself to run. DOS only provided 16-bit environment.
        | That's why I went to those lengths of writing a custom
        | 32-bit PE loader that would allow me to run some 32-bit
        | Windows applications right under the DOS.
        | 
        | DOS was a preferable environment because it was fast and
        | allowed booting your own OS kernels without doing a full
        | computer reboot - you just ran an executable loader and
        | it took control away from the DOS and gave it to your OS.
        | And then when you "exited" your OS, instead of rebooting,
        | it was returning back to the DOS provided that the OS
        | kernel you were running was careful enough to
        | preserve/restore the RAM content upon exit.
        | 
        | It gave a huge productivity boost back then. Later,
        | however, I switched to Windows and was using Bochs (open-
        | source x86 PC emulator) to effortlessly run the OS I was
        | working on.
 
| LeoPanthera wrote:
| Today, "DOS/32" replaces DOS/4G and can even patch out the older
| runtime in binaries.
| 
| https://github.com/yetmorecode/dos32a-ng
 
  | pan69 wrote:
  | I'm pretty sure you could do the same with PMODE/W back in the
  | day (/W = Watcom of course). However, not 100% on the patching,
  | my memory is rusty.
  | 
  | http://www.sid6581.net/pmodew/
 
| Dwedit wrote:
| When you ran a game and saw "DOS/4GW Protected Mode Run-time",
| you knew you were in for a good time.
 
  | jbverschoor wrote:
  | I was so happy with my Watcom C compiler after Borland. Made me
  | feel like a pro.
 
  | Narishma wrote:
  | Or a bad time if, like me, you only had a 286.
 
    | astrodust wrote:
    | Interestingly the 286 had a protected mode but very few
    | applications ever used it. There were upgrade kits with then
    | stupid amounts of memory, like 16MB, for then astronomical
    | prices. I wonder how often those were used for anything.
 
      | WalterBright wrote:
      | I used Rational Systems' 286 DOS extender a lot. It was a
      | great boon to writing programs, because it would seg fault
      | on a bad pointer access.
 
      | ElectricalUnion wrote:
      | Not many I guess; the reason you basically required a
      | "protected runtime" in the first place is because real mode
      | (or a even better thing, the shiny new 386 virtual 8086
      | mode aka virtual real mode) was very important.
      | 
      | Until the 386, leaving the protected mode was either
      | completly unsupported (I think 186) or you needed heroics
      | involving bugs in the keyboard irc handler (I think 286).
      | Because the OS and most "normal" applications and libraries
      | back them being real-mode only, it means you were locked
      | out of most of the filesystem I/O, and a program with
      | limited filesystem I/O is a very limited program indeed.
 
        | phire wrote:
        | Not bugs. IBM literally wired up the keyboard controller
        | to trigger the CPU's reset pin on request as a workaround
        | for getting back to real mode. But not every system has
        | that feature. Some motherboard chipsets had an even
        | faster method for triggering reset; it was all very non-
        | standard.
        | 
        | But the most compatible way to get back to real mode on a
        | 286 was by triggering a triple fault.
 
| rep_lodsb wrote:
| The 32-bit registers are accessible in real mode too, it only
| requires a prefix to each opcode (and the same is true when using
| the 16-bit registers in 32- or 64-bit mode). There is also no
| restriction on using the FS and GS registers in real mode, they
| work like any other segment register.
| 
| There really is surprisingly little difference between real and
| protected mode, it mainly affects how segment registers are
| loaded. Internally, each segment register has a base and limit
| field that is used the same regardless of mode.
| 
| Loading a segment register in real mode sets the base to the
| value shifted left by 4 bits, but leaves the limit unchanged. By
| briefly entering protected mode and loading descriptors with a
| limit of 4 GiB, it would remain that way after switching back to
| real mode, giving access to the full address space (this is
| called "flat real", "unreal", or "voodoo" mode).
 
___________________________________________________________________
(page generated 2023-05-11 23:01 UTC)