Settings

Theme

SDL Now Supports DOS

github.com

289 points by Jayschwa 2 months ago · 135 comments

Reader

ronsor 2 months ago

All that's left now is SDL for UEFI, and then all our games can run in a pre-OS environment.

  • floxy 2 months ago

    What's the latest with Intel's Management Engine / Minix that runs on every Intel chipset? Is that still a thing? Did they harden it? Or can you still get access?

    https://www.zdnet.com/article/minix-intels-hidden-in-chip-op...

    • ssl-3 2 months ago

      You're missing the most important question: Can the Intel Management Engine run Doom?

    • stuaxo 2 months ago

      "It's slow, hard to get at, and insecure as insecure can be.

      Wow, I totally want to get my hands on this.

  • mananaysiempre 2 months ago

    That... Shouldn’t be terribly difficult? Though I don’t believe UEFI has sound drivers (you’ll have problems writing one yourself because even frickin’ sound-codec chips have NDA-only datasheets these days), and the stupidest thing is that the “graphics output protocol” doesn’t indicate vsync so you can’t do tear-free blitting, which is literally worse than VGA.

    • DiabloD3 2 months ago

      Most support Intel HDA.

      The problem is that people don't use onboard audio anymore (because its incredibly and audibly noisy). They use USB or Bluetooth.

      Bluetooth absolutely isn't standardized and is a mess, and USB miiiiiiight be okay if you limit to a subset of EHCI and USB Audio Class 1.0 devices.

      At this point, its easier to just use Linux and run your game as pid 1.

      • ahartmetz 2 months ago

        Regarding onboard audio:

        About 10 years ago, it became "common knowledge" about mainboards that onboard sound has become good enough for almost anybody. It has never been true for me, maybe because my recent mainboards have been lower middle class (AMD B350 / B650) largely chosen for good CPU power converters.

        Because my two (PC) laptops since 2020 have both had really damn good headphone outputs, I can believe that some good / expensive mainboards have it, too. It's not exotic technology anymore. Meanwhile, my desktop PC has a 20+ years old M-Audio prosumer card that also sounds great. (Now rigged with a PCIe -> PCI converter card off AliExpress)

        • DiabloD3 2 months ago

          This common knowledge is still incorrect.

          Good news, though, there are a lot of inexpensive good external DACs out there. Over the past decade, an entire industry grew up to fix this problem.

          • ahartmetz 2 months ago

            Between these DACs and / or Chi-Fi class D amps (some of them with built-in DACs), nowadays you can spend 90% of the Hi-Fi budget on speakers. It's incredible how good electronics you can get for how cheap these days.

      • anthk 2 months ago

        Bluetooth sucks against the raw codec of a soundcard. If you want lossy music, that's it.

        But given autotune trends and how genz-ers grew up with shitty early smartphone loudspeakers and not much better BT ones they aren't used to proper music and their tastes are rot forever.

        • DiabloD3 2 months ago

          I refuse to use Bluetooth, too.

          But, unfortunately, people keep buying that trash. We're kinda forced to support their mistakes.

      • ronsor 2 months ago

        You can strip down Linux significantly as well: no multi-user, no extra syscalls, no FS support beyond initramfs/tmpfs, etc.

  • BirAdam 2 months ago

    Well… UEFI is kind of modern DOS.

    • lnx01 2 months ago

      It certainly is not.

      • rwmj 2 months ago

        There are a lot of parallels: It has a janky set of buggy drivers. It has backslashes in paths. It has a shell that is "inspired" by COMMAND.COM. And it's basically a program loader where every program immediately replaces it and drives the hardware directly.

    • ahartmetz 2 months ago

      More like modern BIOS++ IMO

      • BirAdam 2 months ago

        Except that UEFI supports loading PE executables which replace it and have direct access to hardware… so… not really BIOS-like. Some UEFI implementations provide BIOS compatibility, but that’s via an UEFI application whether provided by the implementer or via something like CSMWrap: https://github.com/CSMWrap/CSMWrap

  • chaps 2 months ago

    That honestly sounds amazing. Imagine booting into something like a grub menu that's just a list of classic games.

    • Xirdus 2 months ago

      I basically had this setup back in the day. I don't really know how I ended up with it, I was 7 at the time and none of it was intentional - but my bootloader had two entries: I could boot into Windows 98, or I could boot into Worms.

      • Dwedit 2 months ago

        It's a similar idea, but that's a DOS menu. At the point when the menu appears, MS-DOS 7.1 has already been loaded.

        • tetrisgm 2 months ago

          Stupid question but... would bundling the binary with an ASM port of something that could run this technically make it possible to run without the OS?

          I realize this is basically doing docker for DOS games and incredibly stupid, I'm just curious about the thought experiment

      • dale_glass 2 months ago

        Probably your parents setting it up?

        As far as I know, Worms is a normal DOS game, so the only way for that to happen should be a DOS install configured to just auto-start Worms on boot. Which makes sense as a way to keep a kid away from anything that could cause trouble.

        I very vaguely recall that there used to be a very few PC games that worked as boot floppies and possibly didn't use DOS at all, but it was a rarity and Worms definitely wasn't one.

        • Induane 2 months ago

          I bet it wasn't actually the bootloader but something with autoexec.bat - you could setup choices in it and windows was just one launch option.

          • Xirdus 2 months ago

            Well, if you treat DOS as a bootloader for Windows 98 - which it was actually - then modifying autoexec.bat would count as setting up the bootloader.

        • Xirdus 2 months ago

          No, I set it up. My parents were non-technical. I had a CD-ROM re-release of Worms for DOS from one gaming magazine or another. I guess the installer set it up somewhere somehow but I remember it wasn't easy to get it installed and there were further problems trying to launch it. It's possible the installer itself was a DOS program, not a Windows program.

      • bigfatkitten 2 months ago

        MS-DOS Shell was one popular option to do this.

        https://en.wikipedia.org/wiki/DOS_Shell

        Brown Bag PowerMenu was another.

        https://forum.winworldpc.com/discussion/15739/software-spotl...

    • queuebert 2 months ago

      I would guess a modern BIOS chip is as powerful as an NES, right?

      • snazz 2 months ago

        You can do substantially more in UEFI than NES-level games. (See https://uefi.org/specs/UEFI/2.9_A/12_Protocols_Console_Suppo...)

      • fluoridation 2 months ago

        What do you mean by "BIOS chip"? Like, the flash memory that stores the motherboard's firmware? I don't think that contains any processing elements.

        • sedatk 2 months ago

          BIOS can only manage VESA which is much much slower than the capabilities of a modern GPU, so they might have meant graphical performance in regards to that.

          • jasomill 2 months ago

            VESA BIOS Extensions support direct framebuffer access in protected mode, and I don't imagine the lack of accelerated 2D operations would be a practical bottleneck when implementing NES-style graphics on modern PCs.

            UEFI GOP additionally supports accelerated bitblt, but again YAGNI for 2D game performance at reasonable framerates on a modern PC.

  • pjmlp 2 months ago

    Welcome to Amiga games, in many cases the floppy would contain the boot loader that would directly jump into the game.

    At least on the Amiga 500 you would not go through the trouble to start Workbench, only to load the game, unless you were a lucky owner of an external hard drive.

    • deaddodo 2 months ago

      PC had bare metal games too. They were called “booters” and you can find an entire category of them on mobygames:

      https://www.mobygames.com/platform/pc-booter/

      • pjmlp 2 months ago

        Yeah, but I never saw them, missed my reply on the other thread?

        • deaddodo 2 months ago

          Whether I saw your other response or not is moot.

          Your comment said "welcome to Amiga games", as if it were unique to Amiga. The context of the thread is PC, where they had their own booter/bare-metal games.

          So you don't have to go to "Amiga games world", you're already in the proper world.

          • pjmlp 2 months ago

            It was certainly unique to Amiga games on my little part of the world.

            Not everyone was rich enough to know how the world looked elsewhere, connecting to all kinds of BBSs.

            • deaddodo 2 months ago

              And yet, your little slice of the world doesn't represent the world at whole.

              If you're ignorant of the situation, maybe don't come out with such a self-centered (and arguably, arrogant) statement; and especially don't double down on it when corrected.

              • pjmlp 2 months ago

                My slice of the world was certainly relevant to me.

                You have the freedom to chose to reply or ignore me.

                • deaddodo 2 months ago

                  People also have have the choice to ignore their racist grandparents spouting right-wing ideology or try educating them out of hope they'll shift their viewpoints.

                  Unfortunately, like many in that group, it seems you'd rather double down on your ignorance.

    • markus_zhang 2 months ago

      I recall many IBM-PC games are bootable games. I inserted a floppy , resets the computer, and then it directly boots into the game. The disk must contain a boot sector and drivers and such.

      • pjmlp 2 months ago

        As well, although I think in the Amiga this was more common, to buy games that were already prepared like this.

        At least on my circle for doing the same with PC games, we built the floppies ourselves, then again, it could be a side effect that you could hardly buy any legal games in Portugal during those days, even regular shops would sell pirated games as originals.

  • gblargg 2 months ago

    SDL for bare metal.

alnwlsn 2 months ago

This is an especially funny screenshot as DosBOX itself is built on SDL.

vunderba 2 months ago

Awesome. I wonder how this would work with a 386+ targeted MS-DOS executable from FreeBASIC, which supports binding to SDL.

[1] - https://github.com/freebasic/fbc

  • versteegen 2 months ago

    I'm going to find out. I've been meaning for years to port the OHRRPGCE back to DOS, where it came from.

    I'm very surprised to see SDL3 re-gain DOS support, since they've aggressively dropped support for almost every port/OS they had in the SDL 1.2 days.

    • vunderba 2 months ago

      Very cool. I'd never heard of OHRRPGCE (Official Hamster Republic Role Playing Game Construction Engine) before. I was going to say it feels like an early predecessor to something like RPG Maker but I think RPG Maker originally came out in the early ’90s for the Japanese PC-98 computers.

      From the wikipedia entry [1] for OHRRPGCE

      > It runs at an 8-bit color depth, by default creates games that run at a 320 × 200 resolution.

      It's funny but I bet anyone else in here who also grew up with the QBASIC interpreter as a kid instantly thinks SCREEN 13 when they read something like this.

      [1] - https://en.wikipedia.org/wiki/Official_Hamster_Republic_Role...

      • versteegen 2 months ago

        :) SCREEN 13 (VGA Mode 13h) is almost correct, but actually it originally used a 320x200 VGA Mode X assembly graphics library. I believe 320x200 instead of 320x240 to be compatible with earlier pure-QB code for SCREEN 13 reused in the engine. (Mode X isn't a single mode, it has some adjustable parameters.)

jlokier 2 months ago

Perfect! I was just doing some Turbo C development inside DOSBox-X inside Debian GNU/Linux inside VMware Fusion inside macOS this morning.

  • vodou 2 months ago

    Was this a joke? I must know!

    • jlokier 2 months ago

      It was true! I really do have Turbo C, Unix V7 C and Sun C compilers in my CI workflow, alongside modern GCC for C23 and C++26, Clang, MSVC, Fil-C and Tinycc and others.

  • mayama 2 months ago

    Is there a turboc variant for linux, I vaguely remember working on turboc decades ago

  • bpavuk 2 months ago

    you may also enjoy watching Inception then :)

    • psychoslave 2 months ago

      Almost but usually I watch live stream of people watching records of people talking about how they remember about it.

theamk 2 months ago

Note this uses DJGPP, which switches processor to 32 bit mode via DPMI. You won't get old-school experience of segmented memory, near pointers and 64KB limits everywhere.

Dwedit 2 months ago

Technically this already worked with HXDOS, which emulated DirectDraw well enough that SDL could use it.

  • suprjami 2 months ago

    Wait what.

    What SDL would you compile for? Win32 with exclusive fullscreen? With a VESA resolution like 640x480?

TacticalCoder 2 months ago

> Input: ... gameport joystick via BIOS INT 15h with auto-calibration

Joystick calibration: what a blast from the past! Blast from the past I encountered recently...

Joysticks had to be "calibrated" and it was something you had to do for each game that supported joysticks. These would give back analog values and they'd depend on the phases of the moon or the room temperature or both. I'm not making this up: this was a serious pain point both for players and coders.

FWIW in that DOS game of mine from 1991 or so for which I still had the .ASM source code files (about 30 000 lines of assembly code, 15 000 of which were auto-generated code to do very fast sprites drawing in the VGA 320x200 "tweaked" mode) and which I managed, at long last, to get to compile again a few days ago thanks to UASM (and quite some LLM help), I found lines like these:

    ul_corner_ch:
        db      63,"PUT YOUR JOYSTICK IN THE UPPER LEFT CORNER AND PRESS A BUTTON  "
    lr_corner_ch:
        db      63,"PUT YOUR JOYSTICK IN THE LOWER RIGHT CORNER AND PRESS A BUTTON "
    p1_choose:
        dw      1       ;1 keyboard   2 joystick
    p2_choose:
        dw      0       ;0 none       1 keyboard   2 joystick
And basically a 350 lines assembly file only for joystick calibration.

So you can understand that "auto-calibration" as in TFA is quite a selling point!

flykespice 2 months ago

I'm more impressed by the fact they accepted it upstream, specially for an OS target that is long gone from the market and has virtually no users.

Usually upstream projects would reject such PRs under the reason they just increase maintenance cost with little to no benefit to the userbase.

  • tom_ 2 months ago

    Looks like one of the main contributors to the PR is one of the SDL maintainers. That probably helps!

1313ed01 2 months ago

For making DOS games, there is also an old port of Löve2D. Löve2D normally uses SDL, but the DOS port has its own little (mode 13h VGA) graphics/audio/input library instead. Guess with a proper SDL port it might be possible to make a more complete port of Löve 2D (and of a newer version).

https://github.com/SuperIlu/lovedos

The original upstream version is archived and has not been maintained in 9+ years. The link is to a fork that has fixes as recent as 2025.

looneysquash 2 months ago

For a open source project like SDL is, for something like this, it's usually a matter of how invasive it is, and how likely the contributors seem to stick around and maintain it.

Different projects have different policies, and I don't know what SDLs is.

But they already have a lot of ports, so I trust they know what they're getting themselves into.

  • somat 2 months ago

    These obscure architectures are almost always one person with a dream, one hero willing to step up make it happen and maintain it. My favorite is the openbsd luna88k https://www.openbsd.org/luna88k.html

    I don't have any real clue how many openbsd luna 88k users there are in the wild, it was an obscure machine released, I think, only in japan, so most users, if they exist, are probably japanese, that is, out of my normal view scope. So as far as I can tell there is one user, the porter. But every release a couple weeks after the standard release date he comes out of the woods and drops the luna88k files and packages. I suspect it takes that long to compile on an actual luna88k. But that is all it takes and luna88k is an official hardware platform of openbsd.

    I don't have nor do I really want a luna88k but that guy is sort of my hero for keeping it going like this.

oso2k 2 months ago

I remember way back when, there were ports of SDL 1.x to djgpp. Glad to see someone still cares.

vintermann 2 months ago

SDL getting back to its Loki roots

DeathArrow 2 months ago

>Timer: Native PIT-based timer using DJGPP's uclock()

I want to commend Dj Delorie for doing a great job. As a poor child at that time having access to a proper compiler which could ran on my old PC which only ran DOS, was awesome and amazing.

klik99 2 months ago

Awesome. Why? But awesome. There does not need to be a reason why

  • ashleyn 2 months ago

    FreeDOS is technically a modern, actively-supported DOS.

  • suprjami 2 months ago

    With the ease and speed of browser-based DOSBox (look at internet archive), DOS becomes a highly portable target for small games and even non-trivial games.

    Anything up to the complexity of mid-90s AAA titles can run practically anywhere with a keyboard and mouse.

    Games like Tomb Raider, Command & Conquer, Quake, etc. This is pretty compelling if you want a "it just works" platform.

    Having SDL now makes that even easier.

  • krapp 2 months ago

    SDL is a cross-platform multimedia library, and DOS is a platform.

  • Pay08 2 months ago

    So I can play Dota 2 on DOS.

cmxch 2 months ago

Wait, it didn’t already or am I confusing it with the VESA support on Linux?

qsera 2 months ago

Awesome! This makes me really happy.

shevy-java 2 months ago

Good - now we can play more DOS games again!

whobre 2 months ago

Love it! Now, let's port it to CP/M (via GSX, maybe?)

raverbashing 2 months ago

Well I guess Allegra was a bit old already /s

  • sedatk 2 months ago

    I loved Allegra! Saved me a lot of time when I was writing code for our musicdisk. That was 29 years ago though. :)

jan_Sate 2 months ago

Uhm... excuse me? Why? Is there anyone even using DOS for anything serious these days?

  • mrweasel 2 months ago

    Perhaps not serious, but I think people gravitate towards older systems these days because they are easier to conceptualize. It's not unrealistic for a single person to have a complete grasp of e.g. the C64 and it's programming environment. DOS is similarly constraint, but also easier for you to form a more or less complete mental model around.

    Some people love computers and making them do weird stuff, older computers make certain tasks feel more manageable.

    • qsera 2 months ago

      Yea, it is like looking at the insides of a mechanical clock vs looking into an electronic one.

      The former is mesmerizing, intriguing, inviting and inspiring. The later? you can't wait to put the lid back on...

  • sedatk 2 months ago

    Most computers in Turkey come with FreeDOS preinstalled because there's a law that states all computers must be sold with an operating system. FreeDOS turns out to be the cheapest and easiest.

    That's why you don't let people who have never touched a computer write tech laws. You get results like this.

  • wk_end 2 months ago

    Who said anything about "serious"?

    (FWIW: I suspect there are more than a few old industrial control systems and such out there that are still running DOS, just because of an "if it ain't broke, don't fix it" attitude)

    • kjs3 2 months ago

      My brother is in manufacturing. DOS is everywhere. Older things too (PDP-11? DG Nova? Seen both, semi-recently). Not just because "ain't broke, don't fix", but because when you have a cloth dying machine or brick forming machine you spent >US$5M for, that is often a bespoke install for your plant, you don't replace it because some guy who prolly slings Javascript all day sez "DOS is oooold, boomer".

      • zozbot234 2 months ago

        These DOS machines for industrial control could probably be replaced by an Arduino or a far more reliable MCU, whereas running an actual legacy PC as a business-critical component in manufacturing has to be a bit of a nightmare by now. AI could probably do a good enough job of working out how the legacy DOS executables were intended to work.

        • kjs3 2 months ago

          This isn't hackaday or adafruit. Everything is easy when you don't have to actually do it. You are wrong on every point.

          • zozbot234 2 months ago

            You might notice that I never once claimed that the replacement I described would be "easy" or, for that matter, even advisable given the broader real-world constraints involved; just technically feasible in the barest sense. I don't think many people would want to use DOS to design a greenfield system of that kind today, and there's a reason for that. Yes, you can buy newly made "DOS PCs" today, but can you really ensure that today's brand new DOS PC will behave in every way that matters like the actual 30 years old DOS PC that used to control the machinery? That's not a trivial question to answer.

            If you design the system from the outset to work with an actual PLC/SCADA or similar (the typical solution for hooking up to big industrial machinery of that sort) that's a bit less likely to come up as an issue, and the hardware will actually be designed for that kind of environment.

            • kjs3 2 months ago

              Yes, if you ignore everything that was discussed, invent time travel do you can "design the system from the outset" as the prescient you are, and pretend anyone was talking about greenfield, you get to be right. Good for you...some people just need the 'win'.

      • ale42 2 months ago

        Given the implications, I guess nobody is going to touch those setups to put an SDL-based program on them, though...

        • kjs3 2 months ago

          Yeah...this is "if you screw around with it enough, you void the warranty and we will no longer support it" for a potentially multimillion dollar machine.

  • gbin 2 months ago

    The real question is "why not?" :)

    • spijdar 2 months ago

      I think this PR is awesome, and I can totally see myself playing around with this at some point. Being able to create DOS executables of SDL projects is just ... cool!

      But I do wonder about the practicality. This would, I presume (never done DOS development, never touched a memory extender) only run on 386+ CPUs, and maybe more importantly, probably require a newer CPU than that to run anything non-trivial at acceptable performance. So I wonder how many "real DOS machines" this can practically target.

      Still, it is massively cool.

      • justsomehnguy 2 months ago

        > "real DOS machines" this can practically target.

        Define "real DOS machine".

        But I would give you my definition: something with ISA slot so you can hear that awful 2.0 stereo SB Pro-compatible with a hiss what could be almost parseltongue. Video card of choice.

        So basically anything between 386sx to P3 Tualatin and some rare and weird cases even P4 and AMD Athlon.

        https://theretroweb.com/motherboards?page=1&itemsPerPage=24&...

        • AJenbo 2 months ago

          I did testing on a K6-2 300Mhz, and yes it has 2 ISA slot, one of which is where I put the Sound Blaster 16.

          Compiling an SDL port of Quake quake gives you 90% performance at 320x200 and 97% at 640x480 compared to the original. That's about 45fps which isn't bad I think.

          SDL3 should now work with any i386+ with a VGA and 4MB of RAM which is roughly the requirements of Doom.

        • dosisking 2 months ago

          A real DOS machine is running on a 8086 (or 8088)

          ISA is part of IBM-compatibility.

  • mikepurvis 2 months ago

    Hacker News

  • kjs3 2 months ago

    Because it's fun, at least for certain folks? Crazy, right?

  • queuebert 2 months ago

    There used to be stock exchanges running happily on DOS. Maybe there still are.

    • chaps 2 months ago

      Worked at an exchange in 2007/2008 and... we had systems still running from the 80s. Mostly tape audit stuff.

    • BirAdam 2 months ago

      Most use Linux now, and specifically RHEL. I did see some IBM z, but that was specifically for one old DB that handled oil pipeline stuff.

  • benatkin 2 months ago

    SDL is written in C. So it can support it without too much trouble. And some people are compiling stuff to run on DOS. So it makes sense. And your objection doesn't hold any water.

  • jordand 2 months ago

    There's a lot of interesting projects and even innovation going on making new games for old PCs/consoles. James Lambert and Kaze are doing fantastic work in the N64 space as one example (watch their videos on Youtube)

  • zozbot234 2 months ago

    It's a simple enough implementation that implicitly helps document how SDL is supposed to work (DOS being a well understood platform by now). Plenty of reasons to maintain it based on that alone.

  • zzo38computer 2 months ago

    There are several reasons. One possible reason is, if you do not need the functions of other operating systems, then DOS will be much simpler.

  • reaperducer 2 months ago

    Uhm... excuse me? Why? Is there anyone even using DOS for anything serious these days?

    Translation: "Stop liking things I don't like!"

    • spankibalt 2 months ago

      I suppose it's an issue of ignorance; even IT veterans often don't know that DOS was, and still is, the driver of many highly specialized industry applications, or an OS running the software of individuals as well as small business owners around the world.

  • alnwlsn 2 months ago

    because you can

  • qsera 2 months ago

    Because computers can be used to do things that are not...so serious?

    • AJenbo 2 months ago

      More specifically it's part of my quest to get Diablo (DevilutionX) running on anything it can, using modern tools. Next up PS2 and PSP.

      • qsera 2 months ago

        > it's part of my quest to get Diablo

        Sorry, I didn't quite get what you refer to as "it" here. Nevertheless, I also have a similar quest going.

tempodox 2 months ago

If you have to do Microslop, then DOS is a sane option. Windows 11 is just too bloated and too slow in addition to being malware.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection