JimDabell 2 years ago

This got me into Linux. First I was installing DJGPP on Windows, then I followed the trail back to GCC, then I found out all about all the great free stuff the GNU toolchain provided, and ended up installing Slackware from a stack of floppies that I had downloaded painstakingly over a 14.4kbps modem.

  • cesarb 2 years ago

    The same happened to me (including the download of a stack of Slackware floppies, though I had a faster modem). In my case, it was because of a desire for true multitasking; under DJGPP, telling the IDE to use your Makefile to compile a project produced no output (and blocked the input so you couldn't do anything else) until the compilation finished. Installing Linux (using the UMSDOS pseudo-filesystem which allowed it to install on the DOS partition, plus the loadlin bootloader so it could be loaded from DOS; the choice of Slackware was because it had good support for UMSDOS) allowed me to keep the same compiler (GCC) while being able to do several things at once. After a while, I noticed I wasn't even using MS-DOS or Windows anymore (other than as a bootloader), so I erased one partition and did a native install (ext2 filesystem and booting through LILO).

    • zozbot234 2 years ago

      > Installing Linux (using the UMSDOS pseudo-filesystem which allowed it to install on the DOS partition, plus the loadlin bootloader so it could be loaded from DOS

      This was a great strategy back in the day, no need to fiddle with the partition table or the boot sector, or resize existing filesystems on the device. (Current Linux versions have no UMSDOS support, but some distributions allow for a similar approach using loopback filesystem images. It can work especially well if used with LVM, to seamlessly extend storage as needed.)

treprinum 2 years ago

DJGPP was where as a kid I learned C++, inline assembly with advanced optimizations and produced my first real-time 3D engine (perspective-correct Gouraud shaded textured polygons with Z-buffer and view frustum culling, no HW acceleration). In RHIDE as well. Thanks DJ!

  • xtracto 2 years ago

    I only did some simple but fun 2d games with sound. Thanks to rhide, djgpp and allegro. It was a blast

  • mempko 2 years ago

    Same! The website looks the same. I'm surprised it's still up.

epcoa 2 years ago

This was the toolchain used to build and ship Quake. Prior to that id, like everyone used Watcom C/C++ with the DOS/4GW extender.

  • mysterydip 2 years ago

    What prompted the switch? Was performance improved?

    • epcoa 2 years ago

      Performance was not improved directly, gcc was terrible. Gcc development had actually stagnated for basically all of the early 90s and there was considerable discontent leading to a long forgotten but high profile fork: egcs. This work eventually went back into gcc for the 3.0 major version and the development model evolved considerably but this was well after the development of Quake. Short story Watcom had superior codegen throughout this time and for years later.

      The performance critical parts of quake were written in Pentium micro optimized assembly.

      Using DJGPP gave other advantages, the id team developed on Unix/Next boxes. I think they also had some commercial Unix servers for running the expensive level (PVS) compilers. This gave them had a compiler that could target Unixen, DOS and windows. They could ship the compiler if they wanted (though ultimately mods were done through quake C). With source available they were able to and did in fact modify the compiler and DOS extender for their needs as well

      https://en.m.wikipedia.org/wiki/CWSDPMI (See CWSDPR0)

      • pjmlp 2 years ago

        NeXTSTEP to be more precise.

      • flopsamjetsam 2 years ago

        > long forgotten but high profile fork: egcs

        Thanks for the reminder of the name. I was trying to think of this a couple of days ago.

rwmj 2 years ago

DJ is still very much around. He works at Red Hat on toolchain things, and is also helping out with the RISC-V port of Fedora.

  • happosai 2 years ago

    I bumped into him in conference some years ago and had some great chats. Only much later I realized he was the DJ from DJGPP. Missed my chance to thank for creating the compiler I used in my DOS teenager years!

micheljansen 2 years ago

This brings back memories! Back when I wanted to get into programming, I had no idea where to start. I found a book about C++ at the library and it was one of the only programming languages I had heard about before (little did I know!). I believe it was "Teach yourself C++ in 21 days" or something like that. It came with a copy of DJGPP on CD-ROM.

Looking back it's amazing how much easier it is to learn stuff nowadays. The internet is truly a blessing.

  • docandrew 2 years ago

    Is it easier now? Back then you could learn C++ in 21 days, nowadays it takes years and years and you’re still just scratching the surface. :)

    • micheljansen 2 years ago

      Well this was more than 21 years ago and I still barely scratched the surface (though nowadays I also have less need for it)

kreddor 2 years ago

This and the "C Programming Language, 2nd Edition" was how I taught myself C back in the mid 90's.

  • davedx 2 years ago

    Almost the same here. I actually got started with Borland Visual C++ but moved onto DJGPP, IIRC so I could get access to all 32 bits of memory address space? It's been a long time!

livrem 2 years ago

These days there is also a 16-bit GCC port to DOS (https://github.com/tkchia/gcc-ia16). I never encountered one of those back in the day? I think the compiler itself does not run in 16-bit DOS though.

Anyone interested in compiling for DOS (32-bit or 16-bit) should also check out Free Pascal.

  • rwmj 2 years ago

    There's also a port of Java / JVM to DOS which I briefly used back in the 90s to port some Java software for a client who was still using DOS and "wouldn't upgrade" (I think he was using a 386 though so I guess it used a DOS extender and wasn't truly 16 bit).

    I was trying to find this JVM recently and couldn't find any trace of its existence which makes me wonder if I imagined or got confused about the whole thing.

    • livrem 2 years ago

      I did not know of a Java port, but this reminds me there is some kind of JavaScript-based environment for DOS that I see linked now and then (think it is bundled with FreeDOS?). Probably this one:

      https://github.com/SuperIlu/DOjS

      "DOjS is a JavaScript programming environment for systems running MS-DOS, FreeDOS or any DOS based Windows (like 95, 98, ME). It features an integrated editor, graphics & sound output, mouse/keyboard/joystick input and more"

      Never tried it.

  • zozbot234 2 years ago

    16-bit x86 support requires supporting the old segment-based real mode memory models and _near / _far / _huge pointer types, which can be very fiddly. I'm not even sure if the existing standard extension for "multiple address spaces" in C can accommodate this, or if something even more bespoke is needed. If it can be done it would be great to have in LLVM, if only for completeness sake.

    • livrem 2 years ago

      You do not need segment registers much if you stick to the tiny model. Here is someone compiling Rust to a 16-bit DOS COM executable:

      https://github.com/o8vm/rust_dos

      Not sure what the approach would be for them to expand that to support segments.

      In DJGPP there are macros to allow your protected mode application access physical real-mode addresses (like when you want to write to video RAM). I don't know if IA-16 also does something like that, or if they added far/near keywords to the language like old 16-bit C compilers did (at least the ones I used).

      Free Pascal has helper-functions to work with segment+offset pointer pairs, also without having to modify the language itself. I think that would work well enough in C, but I guess the old method of adding non-standard keywords was seen as slightly more convenient.

  • sigsev_251 2 years ago

    Isn't the gcc-ia16 more of a cross-compiler for embedded systems?

ketralnis 2 years ago

I learned C on this compiler. Very fond memories

  • kunjanshah 2 years ago

    I learnt game programming with this and Allegro!

    • busterarm 2 years ago

      Gosh I remember trying to wrap my head around this and Allegro in my early teens. Specifically for use with Mugen.

      Years later I learned SDL/SDL2 and found them much much easier.

      • sgt 2 years ago

        Same, Allegro was very impressive, and I built a little game in it. However, I remember I got stuck on something that I didn't quite fully understand at the time. Hell of a lot of fun though.

        Re SDL - exactly! Same path.

        It's been years since I wanted to play around making a game. I was thinking of building something in the love 2d framework now. What do you think of that?

      • deaddodo 2 years ago

        That's funny, I always found allegro (4 or 5) easier than SDL. Allegro's performance had some issues for me, which is why I switched.

        • gpderetta 2 years ago

          Agree, it is all fuzzy now, but I remember allegro docs being very good.

          • deaddodo 2 years ago

            Yeah, that and it wasn't as low-level as SDL. You didn't have to manage your draw instance, textures, screen flipping, frame locking/time deltas etc. It was much more conducive to the paradigms of what a game loop actually looks like.

            But, for those same reasons, if you did something crazy (like I did with my first isomorphic engine), it could quickly get unmanageable with resource leaks.

            Nowadays, I just recommend raylib, if you want a more "game"-oriented (vs "graphics"-oriented) library. I just wish someone would expand the docs so it wasn't as difficult for new gamedevs to jump in.

  • malux85 2 years ago

    Me too! On a bunch of old 486 machines my high school library threw in the trash (I fished them out after school)

    Frankensteined a few together until I had 4 machines, connected their serial ports, and learnt C and how to use a chess library to make them play chess against each other, it took me years but I leant heaps,

    Also got my first exposure to a decent graphical desktop, Desqview/X!

  • slim 2 years ago

    Fond memories of RHIDE. It was as capable as borland C

  • gpderetta 2 years ago

    I started with some 16bit Turbo C++ variant (I hardly remember), but quickly moved to DJGPP and protected mode (with Allegro). Great memories!

vdaea 2 years ago

http://www.delorie.com/users/dj/

Interesting name. I wonder if it's the one that his parents gave him or if he changed it? Very unusual.

  • jfk13 2 years ago

    Curious; it looks like his background is New England. In my mind the use of letters (can't really call them initials) as the actual name is a pattern that's more associated with the South of the US. Whether to include periods and/or spaces seems to be variable.

    (Remember Johnny Cash? Originally named J. R. Cash; he only expanded the "J" to "John" when he joined the Air Force, as they wouldn't allow the single letter; and AFAIK never did expand the "R". See also Harry S Truman: the "S" does not stand for any one name.)

keepamovin 2 years ago

Many happy memories learning to program C on DOS/Windows back in the 90s. This little website (which looks the same as back then) was my go to! :)

martinclayton 2 years ago

Used this for a camera project in 1992-3. We had a 16MB machine and our images were 14MB, so we couldn't squeeze in to Windows 3.1. Worked a treat, and was much easier to work in the flat memory space it offered IIRC.

scoopr 2 years ago

For the longest time I had memorised the weird dpmi commands to enable 13h mode and get the screen buffer address. I don't think I can remember anymore.

Good times :)

Also the one place I learned to use `info`, as it had a very good reference for many of the libc stuff, though for some reason I never really continued to use it even if its available on linux.

taspeotis 2 years ago

Makes me miss old school tools like Dev-C++ and MSVC 6.0

Courier was so readable.

  • ziotom78 2 years ago

    Not sure about Courier :-) but I too have fond memories of MSVC 6.0!

    • usrusr 2 years ago

      That entire era in Microsoft products, MSVC 6.0, Office 97 and bit later w2k was quite special: linear progress from earlier windows things, but not yet in that cycle of change for the sake of change, that is never really complete so you always get a wild mix (arguably w2k already contained first glimpses of that with its service control panels that felt a little alien to the rest)

      (ps: change for the sake of change is not quite all that I meant, it's not just that "new UI language every five years", but also those great API revolutions that came independent of looks. Those are certainly far more well-founded than just "for the sake of change", but suffer from coexistence with their predecessors nonetheless. win32 as an evolution of win16 and optionally wrapped in MFC, that might have been error-prone and complicated to write for, but it does have a certain clarity that no successor can claim as long as compatibility remains the product)

  • anta40 2 years ago

    You may want give OpenWatcom a try. Some folks are still working on it. https://github.com/open-watcom/open-watcom-v2

    In terms of ISO-complianceness, perhaps don't expect much. It basically C89 (the C99 support is still incomplete), and for C++... most likely not even C++98 - compliant.

  • vintagedave 2 years ago

    Dev-C++ is still around, and the open source project is now sponsored by Embarcadero.

    https://www.embarcadero.com/free-tools/dev-cpp

    • nottorp 2 years ago

      That's scary actually. Do they include some modules that would make you liable for a few k per month in retroactive subscriptions?

      • anta40 2 years ago

        I don't think so. It's basically a more polished version of good old DevC++. Still using a rather old GCC, eh...?

  • xtracto 2 years ago

    I remember going to Code::Blocks ( https://www.codeblocks.org/ ) once Dev-Cpp started to become obsolete. I wrote a bunch of small games using CodeBlocks.

miohtama 2 years ago

Also remember Rhide IDE.

(Looks like the official Rhide website is down/gone?).

sgt 2 years ago

Almost didn't recognize it as "Djgpp". As DJGPP however, it kicks off a lot of memories instantly!

daitangio 2 years ago

I used and loved it. As someone said, was my door on GNU utilities under MS-DOS and worked well! I forgotten it, so thank you for the link!

whitten 2 years ago

Conceptually this seems to be the opposite of wine. It allows programs written for Linux to run under Microsoft Windows. Wine allows Windows programs to run under Linux.

Is there any way to use the synergy between them to make them work better ?

  • i_love_cookies 2 years ago

    For me it let me use a c compiler without paying for visual c++

    • pjmlp 2 years ago

      Visual C++ has been available for free, for at least 20 years now, first with the language specific express editions, and now with full community edition.

      • worik 2 years ago

        > Visual C++ has been available for free, for at least 20 years now,

        Only 20 years?

        Some of us have been around longer than that. I know Visual C++ has

        • pjmlp 2 years ago

          Indeed, however before the express editions, the only way Visual C++ was available for free, was via piracy.

          Naturally depending on the country culture that was hardly a problem, with endless list of software catalogs on street bazaars, but that wasn't what I was refering to.

          • usrusr 2 years ago

            There was a short phase before express when you could get a free command line visual C compiler with some SDK. I think the intention was to enable users of other compilers to create C bindings to msvc C++ ABI DLL or something like that, perhaps related to the dawn of .net. I wanted to make Buzz plugins that are tied to msvc ABI and had just recently lost my "cultural compatibility with piracy" to the availability of gimp, djgpp and friends. "Pay or pirate" had been displaced by "pay or the challenges of freedom". Of course just when I had my routine somewhat going, express appeared and my adventures in frugality imploded.

            • usrusr 2 years ago

              ps: long dead thread, but my memory just chimed in with the suggestion that express might have already been available, but only that command line version did not have all optimizations disabled.

      • bluescrn 2 years ago

        It was closer to 30 years ago when I used started learning C using DJGPP, in DOS. 1996 or 1997 maybe?

        There was an IDE for it, 'RHIDE' I think, that looked similar to the DOS-era Turbo Pascal IDE

      • cesarb 2 years ago

        > Visual C++ has been available for free, for at least 20 years now

        The context of this discussion (DJGPP) is from the MS-DOS and Windows 9x era, which was more than 20 years ago.

        • pjmlp 2 years ago

          OP didn't put like that, and there is the small gotcha that DJGPP predates Visual C++.

      • nottorp 2 years ago

        You must be new here :)

        Plus I think the express editions came with some strings attached. I could be wrong, because I already had the gcc ports (djgpp, mingw) and didn't care much about Microsoft's breadcrumbs.

  • simoncion 2 years ago

    It allows a (possibly large) subset of programs written for a POSIX environment to work. I'm all but completely certain that most any program that used Linux-specific features would fail to function correctly.

    Also, I don't see what "synergy" you're talking about.

  • lelanthran 2 years ago

    > onceptually this seems to be the opposite of wine. It allows programs written for Linux to run under Microsoft Windows.

    No, it allows some POSIX programs to be compiled on Windows. ISTR using it on DOS with Allegro to write games.

  • noselasd 2 years ago

    Not really, it's a gcc toolchain for compiling code targeting MS-DOS, it doesn't really provide much in terms compatibility between windows and linux

  • cesarb 2 years ago

    > It allows programs written for Linux to run under Microsoft Windows.

    No, at its core it's a port of GCC to MS-DOS (not Windows); it has no compatibility for Linux programs other than by virtue of both using the same compiler (GCC). If the program uses more than the standard C or C++ library, there's a good chance it won't compile unless it's ported to use what's available in MS-DOS. Even basic things such as process management (fork and so on) are non-existent in DJGPP, and unless you're running in a DOS window within Windows 9x (which makes available the LFN API to DOS applications), you're limited to the classic case-insensitive 8.3 filenames (which trip programs designed for Unix-style systems more often than you'd think).

matt3210 2 years ago

My first c++ compiler in 97

butterisgood 2 years ago

Fond memories of writing software with Allegro on DOS. Playing around with little games.

Definitely made getting into C/C++ on Linux easier to have started with this tool chain.

tn1 2 years ago

The title should be all caps. From this page [1]:

> Note: DJGPP is spelled all upper case when it would normally be capitalized, and all lower case otherwise. It is never correct to spell it ``Djgpp''.

[1] https://www.delorie.com/djgpp/history.html

  • pronoiac 2 years ago

    I emailed the mods.

  • bmacho 2 years ago

    I hate when the creators of a word make it irregular in English. Are there other words with irregular capitalization?

    • ale42 2 years ago

      Is it a word or an acronym? Or neither?

      • seritools 2 years ago

        DJ's GNU Programming Platform

      • bmacho 2 years ago

        A word. I also believe that names that don't contain any whitespace are all English words. DJGPP is an irregular one.

        • janet-catcus 2 years ago

          their word, their rules.

          or would you start another jif/gif-kinda war over this with the author? XD

          • bmacho 2 years ago

            I personally follow the "I am the user, my rules" when it comes to language rules :P. It is at least as strong as "their word, their rules".

            Also I can see that Paul Graham's "my website my rules" is even stronger than mine or DJ Delorie's, so Djgpp is also correct (if not by the Gods, then by fist).

          • jhgb 2 years ago

            > their word, their rules

            That strongly reminds me of "it's spelt Raymond Luxury-Yacht, but it's pronounced 'Throatwobbler Mangrove'".

          • torstenvl 2 years ago

            The G is from graphics [ɡɹæfɪks].

            Additionally, word-initial single G before short I is always [g] instead of [dʒ] in native English: gift girl give gibbon gimlet gizzard gilded git gimp giddy gig gimbal.

            The exceptions are borrowed French words: gin (le gin), ginger (le gingembre), giraffe (la girafe), giblet (OF: gibelet).

            • janet-catcus 2 years ago

              it is funny how just mentioning it starts another instance... the power of christ compells you!

        • Sharlin 2 years ago

          Huh? It’s clearly an initialism and meant to be pronounced "dee jay gee pee pee". FBI is not written "Fbi" in English orthography.

        • croes 2 years ago

          An acronym DJ's GNU Programming Platform (DJGPP)

      • zephyrfalcon 2 years ago

        An acronym. The "GPP" is the DOS-ified spelling of "g++"; the '+' was not (officially) allowed in MS-DOS filenames. The DJ stands for the first name (not the initials, apparently [1]) of the project's originator, DJ Delorie.

        Although: "Since C++ is integral to gcc, djgpp no longer stands for "DJ's G++" but probably stands for something like "DJ's GNU Programming Platform"." [2]

        [1] https://www.delorie.com/users/dj/

        [2] https://www.delorie.com/djgpp/history.html

        • billpg 2 years ago

          DOS: "One of our commands allows separation of filenames with a + symbol, so we need to prohibit that character."

          "Couldn't we rework that command to not use + separators?"

          "No, far better to take that character out of consideration."

          Unix: "Filenames can use control characters. I don't care if that makes pipes between commands really complicated! Add an option for NUL-separated filenames if you have to."

          • ale42 2 years ago

            Ahah... it was long ago the last time I typed a command like this...

              copy /b file1+file2 output
    • bmacho 2 years ago

      The linked site starts sentences with "djgpp 1.05" and "djgpp 1.06", so maybe the software name has a different irregular capitalization than version names, which stay lowercase no matter what.

    • keepamovin 2 years ago

      Yeah, that's really creators' fault.

          /s
    • Sharlin 2 years ago

      What exactly makes you think it’s a word when it’s clearly an initialism? Do you also write MS-DOS as "Ms-dos" or BBC as "Bbc"? (Or NATO as "Nato", though that one actually has better grounds to be written like that, being an acronym rather than an initialism – in some orthographies acronyms are indeed written like proper nouns.)

      • bmacho 2 years ago

        > What exactly makes you think it’s a word

        The definition of the word word.

        > when it’s clearly an initialism?

        Then why does its creator write it all lowercase?

        > Do you also write MS-DOS as "Ms-dos"

        Yes.

        • Sharlin 2 years ago

          > Then why does its creator write it all lowercase?

          It's written consistently in all upper case in the copy text at https://www.delorie.com/djgpp/.

          When it's written in all lowercase, like in the title, that's a stylistic preference that you can disapprove of if you want, although it's an incredibly petty thing to care about.

          > Yes.

          Well, that's your prerogative, but it's against standard English orthography. Acronyms and initialisms that refer to proper nouns are spelled all uppercase in English. FBI, NASA, WHO, GCC, HSV, NY, no "Fbi", "Nasa", "Who", "Gcc", "Hsv", or "Ny". You'd never get the latter versions past any remotely competent copy editor or grade school teacher.

          As an example of different orthography, in standard Finnish NASA would indeed be spelled "Nasa", but FBI is still FBI and DJGPP is still DJGPP.

          • bmacho 2 years ago

            > It's written consistently in all upper case in the copy text at https://www.delorie.com/djgpp/.

            And consistently lowercase in the article linked in the post I was answering.

            There is 10 years between the 2 links, seems the author changed their mind about introducing words with forced irregular capitalization.

    • croes 2 years ago

      By your logic NASA, NATO, CIA, FBI etc.

      DJ's GNU Programming Platform (DJGPP)

      • bmacho 2 years ago

        Here there are more examples: https://en.wikipedia.org/wiki/Acronym#Comparing_a_few_exampl...

        Apart from organizations, I'd capitalize only the first character for most.

        • Joker_vD 2 years ago

          The Usa is not an organization.

        • itishappy 2 years ago

          That's quite irregular.

        • croes 2 years ago

          I would capitalize every letter which is pronounced individually.

          So it's HIV but Nasa, and because you can hardly pronounce DJGPP it's all capital letters.

  • marcus0x62 2 years ago

    The author has a page[0] wherein he notes his legal first name is "DJ" and that it is not appropriate to spell it in lower case, insert spaces or periods, etc. Also on that page, directly above that admonition, is an image with his name spelled in lower case. ¯\_(ツ)_/¯

    0 - https://www.delorie.com/users/dj/

  • dang 2 years ago

    We don't usually do that (e.g. Nvidia not NVIDIA is standard in HN titles) but I've uppercased it (belatedly) now.