[HN Gopher] Writing FreeDOS Programs in C
___________________________________________________________________
Writing FreeDOS Programs in C
Author : AlexeyBrin
Score : 75 points
Date : 2025-11-02 13:43 UTC (9 hours ago)
(HTM) web link (www.freedos.org)
(TXT) w3m dump (www.freedos.org)
| dardeaup wrote:
| Curious as to whether there are any real-world use cases for
| doing this (other than curiosity) in DOS. If so, I'd love to hear
| about them.
| grg0 wrote:
| I have it on my to-do list to install FreeDOS on bare metal to
| set up a retro gaming box. Tried once, but for some reason the
| installer failed writing to disk. Anyway, if anyone is making
| new FreeDOS games, I'll gladly pay for them, and it'll give me
| an excuse to go down that avenue again.
| dlcarrier wrote:
| If enabling CSM in your BIOS isn't an option or isn't enough
| for FreeDOS, there is a translation layer that can get it to
| run on UEFI hardware: https://github.com/FlyGoat/CSMWrap
| grg0 wrote:
| That had not occurred to me and I'm also not sure. FreeDOS
| was able to boot just fine into the live environment. It
| was the disk part that failed.
| 1313ed01 wrote:
| OK, I just posted a comment saying FreeDOS will no longer
| run on hardware because of lack of BIOS support, but that
| might change things I guess. Hope it can be made to work.
|
| Another big problem for FreeDOS is the lack of sound card
| support. I do not know if anyone has solved that yet.
| comprev wrote:
| I used FreeDOS once to run ancient software which controlled an
| industrial size oven. The client was having an ever increasing
| challenge of sourcing IDE disks (in 2008) so I was contracted
| to find a solution.
|
| Eventually we settled on industrial PCs, solid state media and
| FreeDOS.
|
| It was significantly cheaper than replacing the oven at PS1M
| each.... in 50 of their factories worldwide.
| LeFantome wrote:
| Lots of solid state to IDE adapties out there too. But great
| example.
| anthk wrote:
| An IDE->CF one would have been cheap enough.
| kragen wrote:
| MS-DOS was a reasonable bootloader for Linux and Windows 95; I
| imagine FreeDOS might be a better one if you wanted to do hobby
| OSDev. Historically you could get hard real time performance
| for things like controlling steppers from your parallel port
| under MS-DOS, but nowadays you'd just use Freeduino or an
| iCE40. Also maybe brushless motors.
| 1313ed01 wrote:
| FreeDOS is no good at all for booting anymore, since BIOS
| support is increasingly rare. No way to boot FreeDOS (or MS-
| DOS) from UEFI. And of course also no point in trying to run
| it on ARM or any other non-x86 CPU. Looks like the future for
| FreeDOS will be to run in virtual machines only. A bit sad,
| since running FreeDOS on the bare metal of a 21st century
| computer (even one from 10-20 years ago) has been a nice way
| to experience just how fast modern hardware is.
| anthk wrote:
| https://sourceforge.net/p/freedos/mailman/message/59108825/
|
| There's mUEFIrcate for that.
| 1313ed01 wrote:
| I hobby-code for DOS, partly because of nostalgia, but much
| also because it (specifically DOSBox, or DOSBox-X) is such a
| fantastic and stable virtual machine. No one is going to
| deprecate even some minor part of the API. And some emulators
| give you fun features like allowing any screen resolution to be
| set up to run in fullscreen on a modern monitor (exposed using
| standard VESA API inside of DOS).
|
| There are some other retro computer or consoles that could
| probably be just as useful for this. But DOSBox (as well as
| QEMU+FreeDOS, for those that prefer that) are nice because they
| have fully open source implementation from the CPU-level up to
| the user utilities, so there is no need to mess with dodgy ROM
| downloads or such to get things working.
| actuallyalys wrote:
| I suppose there could be a use for programming for computers
| that would otherwise be ewaste, although I'm not sure how much
| ewaste is out there that can run DOS but not, say, Linux or a
| BSD. Lots has already been trashed or recycled, and my
| impression is that retrocomputing enthusiasts are thinning out
| the market as well.
| Dwedit wrote:
| Is there really a difference between writing a DOS program and
| writing a FreeDOS program? You just need a period-accurate
| compiler that can target DOS. Maybe OpenWatcom, maybe DJGPP.
|
| With HXDOS, you can also write a Win32 console-mode program and
| run it on DOS. 7-zip is an example of a program compatible with
| HXDOS.
| johannes1234321 wrote:
| The "difference" is, that this is the FreeDOS project, thus
| they focus on that environment.
| QuercusMax wrote:
| I confess I don't know anything about FreeDOS, but are they
| trying to evolve DOS for the future, or just make a free bug-
| for-bug compatible version? Those are very different things.
| johannes1234321 wrote:
| I think the goal is compatibility, but not being afraid of
| extensions (like power management support and some other
| "modern" hardware features)
|
| In the context of this tutorial: They use their own "fed"
| editor.
| WalterBright wrote:
| The Digital Mars compiler for DOS is available for free.
|
| https://www.digitalmars.com/
| kragen wrote:
| But the GCC, OpenWatcom, and DJGPP compilers the FreeDOS
| folks recommend are additionally free software, which is of
| real value to some of us. Zortech C had a reputation for
| producing better code IIRC, and it could run on an 80286,
| which I'm not sure the others can?
| 1313ed01 wrote:
| I guess it made a lot of sense to implement compilers in
| 32-bit protected mode to get more space to work with
| easier? Free Pascal's compiler also requires 32-bit even if
| it can generate 16-bit DOS code as well (at least when
| cross-compiling from some other OS; I have not tried to
| cross-compile from DOS 32-bit compiler to DOS 16-bit
| executable).
|
| Some people (and by that I mean Debian people; not sure
| about anyone else) disagree about OpenWatcom being free
| software. The license has some unusual requirement(s).
| There has been talk for a long time about possibly fixing
| that, but I do not know how on track that is (or how much
| it matters, in practice): https://github.com/open-
| watcom/open-watcom-v2/discussions/27...
| WalterBright wrote:
| I developed on a 32 bit machine because of memory
| protection. Memory corruption resulted in seg faults,
| while in 16 bit real mode memory corruption would
| scramble your hard disk.
|
| I ran all the test suites on protected machines. Only
| when everything was perfect did I run the programs in
| real mode DOS.
|
| Protected mode memory is the greatest advance ever in
| computer hardware.
| Narishma wrote:
| I don't know about OpenWatcom but I used the original
| Watcom on my old 286 just fine. Even the Windows 3.1 IDE
| ran fine on it IIRC.
| WalterBright wrote:
| I don't remember when we transitioned to 32 bit DOS
| extenders for the DOS compilers, but we never got any
| pushback for that. Developers all used 386 computers.
|
| I remember attending a compile panel at one of the SDWest
| conferences. The panel members were myself, representing
| Zortech, along with representatives from Borland, Watcom,
| and Microsoft.
|
| The first question was "do you sell a version that will
| work on a floppy disk only computer?" One of the other
| panelists responded with yes, we do. He went on to describe
| how the various bits could be distributed among multiple
| floppies, and of course it involved a lot of shuffling
| floppies in and out.
|
| I was next. I replied, "Yes, we have a version that does
| it! It costs $200 extra and comes with a hard disk drive!"
|
| That got a huge laugh, and that was the end of that
| question. I never heard it again from anybody. Sometimes,
| it's just time to move on!
| sgt wrote:
| Vibe coders are just going to be staring at this and go...
| where'd you get that blue mode in Cursor?
| grg0 wrote:
| From the soydev extension.
| hedora wrote:
| Tangentially related: I was getting awful screen tearing in
| dosbox with a gl @ 4K@60hz rendering target.
|
| Switching to 1080p@240Hz fixed it. The problem was that 60Hz was
| close to, but not the framerate the old game asked for.
| Narishma wrote:
| The typical 320x200 mode that games used back then ran at 70Hz.
| 1313ed01 wrote:
| To the list of compiler listed I want to mention this one as
| well, that is my compiler of choice for 16-bit C in (Free)DOS
| these days (because it has a MIT license, it's very small, and it
| runs great inside of DOS itself so no need to mess with cross-
| compilation and I know if I have an environment like FreeDOS or
| DOSBox set up I can both compile and run my code, and I will
| never have to re-install or reconfigure anything when moving
| between different host systems):
|
| https://github.com/microsoft/MS-DOS/tree/main/v4.0/src/TOOLS
|
| (Not only Microsoft's C compiler in that directory, but also
| MASM, MAKE, and a bunch of other tools. 1-2 MB of files and you
| have an entire toolchain for 16-bit DOS.)
| kragen wrote:
| Interesting, "All files within this repo are released under the
| MIT License as per the LICENSE file stored in the root of this
| repo," but did they include the source for the toolchain? I may
| be looking in the wrong place...
| 1313ed01 wrote:
| No, but that MIT license does not say anything about sharing
| the source code, so just sharing the binaries should be fine.
| (Not a lawyer.)
|
| ( * Also thanks for mentioning MIT. My comment said BSD, but
| I fixed that now.)
| kragen wrote:
| Yeah, I didn't mean it was illegal, just that you might
| have an unnecessarily hard time fixing compiler bugs and
| understanding how the toolchain works.
| 1313ed01 wrote:
| Yes, of course. Source code would be nice, but I gamble
| on that there wasn't a terrible amount of bugs in that
| compiler. It is version 5.10, so not the first 5.x
| release, plus with the lack of good ways to distribute
| patches back then we all know software tended to be
| better tested. It also obviously works well enough to
| compile DOS 4.0 (and a bunch of user tools that are
| included) plus I have tried it already for some quite big
| code-bases without noticing anything being broken.
|
| I feel like any bugs can probably be worked around and
| since it is C it is possible some things can be fixed by
| adding some macros in the include-files. I have thought
| of making some minor changes to the include-files to
| modify some of the few things I noticed that are missing
| from C89. I do not know if it is possible to make it 100%
| C89 compliant or if the binaries would have to be patched
| for that, but it seems like it already is 99% of the way.
|
| * Since I can't comment on the comment to this post: Note
| I said C89. Definitely not going to go for anything more
| modern. Possibly add the standard integer size types from
| C99, as those can be useful for more portable code. There
| are other, bigger, compilers for more modern C versions
| that can cross-compile to DOS (and also Free Pascal that
| seems like a nice language for that).
| kragen wrote:
| Oh, yeah, you're definitely going to have a harder time
| adding C99 support to it than to OpenWatcom, not to
| mention C11, C17, and C23. Which matters if you're
| writing new code.
___________________________________________________________________
(page generated 2025-11-02 23:00 UTC)