Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

Old 8086 version of pcc spotted (cross-compiles to DOS) (Miscellaneous)

posted by Rugxulo(R) Homepage, Usono, 05.03.2012, 20:56

> > Grab
> >
> djgpp.cvs.tar.gz,
> > gunzip it, then do this: "tar tvf djgpp.cvs.tar.gz | grep 2012- | wc",
> and
> > it should say 21 lines (aka, at least 21 files changed this year). For
> > 2009, 2010, 2011: 16 lines, 10 lines, 321 lines respectively.
> >
>
> Thanx. Will do.

That's the daily snapshot from Martin Stromberg, and it's certainly the easiest way to get it.

> > DJGPP is not dead (yet, barely, close but not quite).
>
> Glad to hear that. :)

Well, I wouldn't pin any huge hopes on it, but IMHO, it's too good to die.

> I know. What I meant is.. Lzma sdk based stuff uses a lot (?) of C99.

I don't know. But IIRC 7zdecode is pure ANSI C (C89).

> But I don't know how good is 3.3.x support for C99. Had varied
> experiences. But it works ok. :)

NASM 2.x series requires C99 (but has workarounds for incomplete OpenWatcom -za99 , see here). I just remember trying, and the oldest I could get working was 3.2.3 or such. I'm sure later versions have better C99 support, but remember that GCC has never fully implemented C99 (still! see here), although it's fairly close by now, hence why -std=gnu89 is still default instead of -std=gnu99. C11 makes some stuff optional, so maybe compliance will be easier. Though note that Clang is C99 by default.

> You're talking about resurrected version? Classic ACK didn't have ANSI
> support.

I'm pretty sure ACK has supported ANSI since a long time, at least since Minix 2.0.0 series. The last public "official" ACK from Vrije Universitat was 5.5 (see here).

> Well, Minix is quite modern right now. Minix 3 requires i586 or i686 and
> uses GCC. They switched a long time ago. They used the classic ACK in the
> beginning (after bcc?).

I don't know, haven't tried it much, mostly because I had trouble booting it, even in VMs or real hardware (IIRC). Haven't tried lately, latest may? require VT-X, which I have (but only on this cpu).

I thought? I had read somewhere that they were still defaulting to ACK and GCC was only optional. I can't imagine they'd switch entirely, but <sarcasm> those pesky (Linux) spies^H^H^H^H^H volunteers probably have their own preferences (sabotage!). </sarcasm>

> Btw, their first 386 version in the mid ninties
> used GCC by default. Only 16-bit port (which died with version 3) used ACK.
> Minix 3 got announced in 2005.

You mean Minix-vmd? That was unofficial, of course, just a fork. And it used a very hacked and old GCC (2.7.2.1), IIRC. But yeah, the 16-bit version was pretty obviously dying ever since 2.0.2. ACK did eventually support ANSI (long long ago), so the need for GCC was less pressing. Plus, IIRC, GCC assumed floating point, which (until very very recently) Minix didn't support (didn't save context upon task switching). Also it used more RAM (gotta love chmem), ran slower, was GPL (and Minix prefers BSD), etc.

> > There is a DJGPP port of
> >
> BYacc,
> > but I'm not heavily familiar with it (or "yacc" in general).
> >
>
> I have 4 ports (and wrote a nice batch build system for it): 32-bit Watcom
> without LFN, 32-bit Watcom with 1.9 long names,

Does 32-bit DOS output work with LFNs? In my limited testing, I didn't think so. Even the compiler itself isn't LFN-aware, so I wasn't very impressed. Sad, really, I guess there aren't enough volunteers, and I'm not convinced I could help very much.

> 16-bit Watcom without LFN
> (not sure how well would it work with LFN compiled in, tests in qemu showed
> it to be buggy if LFN driver is not loaded), and a "classic" DJGPP build.

16-bit seems to work with LFN okay, but I didn't heavily test. I guess it depends on what calls are used. You can disable LFN at runtime, I think, by "set LFN=n", IIRC.

> > As for kicking the tires, dunno. The only things that I know of that
> might?
> > be easy to build and need Yacc are GNU Bash (also needs m4) or Detlef's
> > LCC/DJ.
>
> Bash is most likely to use Bison-isms, so I don't know how would it work
> with Berkley's Yacc (a classic favour). :)

IIRC, building ACK on Linux didn't work with Bison, perhaps I had to install BYACC instead, funnily enough. But ACK is weird, prefers LLGEN. Honestly, it's such a weird beast to build that I'm not sure what it needs. Certainly it's a bit too *nix-y. Wirth compilers usually compile themselves and are simpler and cleaner. But ACK is written in C for *nix, so whatever, always seems to complicate everything. I guess it's really just a cultural difference, I'm not really complaining (but I definitely don't understand it enough to port it).

P.S. In particular, with Detlef's LCC/DJ build, he had a public DJGPP setup that he used, but it didn't include the Bison-generated output, so I had to install Bison + m4, and I tried telling him that BYACC (apparently) didn't need M4, so he could use / include that, but I don't think he ever "fixed" it. Oh well. But LCC is definitely easier to build than GCC, though of course it (at least 4.2) is C89 only and less optimizing, to say the least. (And he uses NASM as assembler, which LCC can build, but it still requires GNU ld.)

 

Complete thread:

Back to the forum
Board view  Mix view
15112 Postings in 1359 Threads, 247 registered users, 17 users online (0 registered, 17 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum