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.
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).
> 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.)
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!
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
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!
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.
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!
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.
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.
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:
"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"
Perhaps you are only confused about being confused. Called JavaPC. It cost money and I don’t think it sold well, maybe you were the only customer. There was also a DOS port of Kaffe called KaffePC.
I'd imagined there might be a port of one of the PalmOS-targeted JVM-alikes (eg SuperWaba) but it doesn't look like any of them made it back to DOS. I could also imagine someone getting an OS/2 or Windows JVM running under a DOS extender.
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.
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.
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?
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.
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!
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.)
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.
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.
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)
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.
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.
I was using it in the early 90's.
At that time if you wanted to port your C/C++ application to multiple platforms, one option would be:
- gcc on linux
- djgpp on MSDos
- emx+gcc on OS/2 [1]
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 ?
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.
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.
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.
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.
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.
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.
> 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).
> 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''.
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).
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).
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]
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."
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.
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.)
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.
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. ¯\_(ツ)_/¯
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.
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).
> 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.)
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!
I only did some simple but fun 2d games with sound. Thanks to rhide, djgpp and allegro. It was a blast
Same! The website looks the same. I'm surprised it's still up.
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.
What prompted the switch? Was performance improved?
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)
NeXTSTEP to be more precise.
> 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.
See also: https://groups.google.com/g/comp.os.msdos.djgpp/c/VD-mIK56h7...
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.
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!
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.
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. :)
Well this was more than 21 years ago and I still barely scratched the surface (though nowadays I also have less need for it)
This and the "C Programming Language, 2nd Edition" was how I taught myself C back in the mid 90's.
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!
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.
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.
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.
Perhaps you are only confused about being confused. Called JavaPC. It cost money and I don’t think it sold well, maybe you were the only customer. There was also a DOS port of Kaffe called KaffePC.
https://web.archive.org/web/20000613171121/http://www.sun.co...
KaffePC sounds very familiar, could be it!
https://web.archive.org/web/20011206153449/http://www.openje...
Wow I thought it was gone, but it's still available
Googling about I found http://www.delorie.com/djgpp//mail-archives/browse.cgi?p=djg...
I'd imagined there might be a port of one of the PalmOS-targeted JVM-alikes (eg SuperWaba) but it doesn't look like any of them made it back to DOS. I could also imagine someone getting an OS/2 or Windows JVM running under a DOS extender.
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.
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.
Isn't the gcc-ia16 more of a cross-compiler for embedded systems?
I learned C on this compiler. Very fond memories
I learnt game programming with this and Allegro!
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.
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?
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.
Agree, it is all fuzzy now, but I remember allegro docs being very good.
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.
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!
Fond memories of RHIDE. It was as capable as borland C
I started with some 16bit Turbo C++ variant (I hardly remember), but quickly moved to DJGPP and protected mode (with Allegro). Great memories!
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.
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.)
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! :)
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.
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.
Makes me miss old school tools like Dev-C++ and MSVC 6.0
Courier was so readable.
Not sure about Courier :-) but I too have fond memories of MSVC 6.0!
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)
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.
Dev-C++ is still around, and the open source project is now sponsored by Embarcadero.
https://www.embarcadero.com/free-tools/dev-cpp
That's scary actually. Do they include some modules that would make you liable for a few k per month in retroactive subscriptions?
I don't think so. It's basically a more polished version of good old DevC++. Still using a rather old GCC, eh...?
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.
I recently ported this to Nix if anyone is itching to try it.
https://github.com/NixOS/nixpkgs/pull/237151
I was using it in the early 90's. At that time if you wanted to port your C/C++ application to multiple platforms, one option would be: - gcc on linux - djgpp on MSDos - emx+gcc on OS/2 [1]
[1] https://en.wikipedia.org/wiki/EMX_(programming_environment)
Also remember Rhide IDE.
(Looks like the official Rhide website is down/gone?).
Almost didn't recognize it as "Djgpp". As DJGPP however, it kicks off a lot of memories instantly!
Is this still being developed?
https://www.delorie.com/pub/djgpp/current/v2/
They have a pretty recent build of GCC, 12.2 from 18 months ago. https://www.delorie.com/pub/djgpp/current/v2gnu/
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!
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 ?
For me it let me use a c compiler without paying for visual c++
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.
> 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
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.
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.
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.
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
> 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.
OP didn't put like that, and there is the small gotcha that DJGPP predates Visual C++.
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.
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.
> 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.
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
> 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).
This is a C compiler. You might be thinking of Cygwin - https://en.wikipedia.org/wiki/Cygwin
To continue in this vein, djgpp is less like Cygwin, more like mingw and its derivatives eg https://en.wikipedia.org/wiki/Mingw-w64
My first c++ compiler in 97
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.
Blast from the past!
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
I emailed the mods.
I hate when the creators of a word make it irregular in English. Are there other words with irregular capitalization?
Is it a word or an acronym? Or neither?
DJ's GNU Programming Platform
A word. I also believe that names that don't contain any whitespace are all English words. DJGPP is an irregular one.
their word, their rules.
or would you start another jif/gif-kinda war over this with the author? XD
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).
> their word, their rules
That strongly reminds me of "it's spelt Raymond Luxury-Yacht, but it's pronounced 'Throatwobbler Mangrove'".
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).
it is funny how just mentioning it starts another instance... the power of christ compells you!
Huh? It’s clearly an initialism and meant to be pronounced "dee jay gee pee pee". FBI is not written "Fbi" in English orthography.
An acronym DJ's GNU Programming Platform (DJGPP)
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
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."
Ahah... it was long ago the last time I typed a command like this...
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.
Yeah, that's really creators' fault.
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.)
> 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.
> 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.
> 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.
By your logic NASA, NATO, CIA, FBI etc.
DJ's GNU Programming Platform (DJGPP)
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.
The Usa is not an organization.
That's quite irregular.
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.
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/
We don't usually do that (e.g. Nvidia not NVIDIA is standard in HN titles) but I've uppercased it (belatedly) now.