Compiling I7 in DOS

I was delighted to hear from David Griffith that the next version of Inform 6 also will be compiled into a binary for DOS.
TADS 2 and 3 is already available for DOS. (Also I noticed that there was a later version of Frotz for DOS available (V2.43) compared to the one available at ifarchive (v2.40).

However, the most ecstatic thing I am able to imagine would be this:
Would it be possible to make a very basic command-line compiler for I7 for DOS?

If I remember correctly something very basic like that was previously available for Linux. (Its however wonderful to see that there is even a Raspberry Pi version around for a fully fledged I7 system.) Is there anybody out there who would, if it is within the range of what is possible, like to compile a very basic, command-line executable compiler for I7 for DOS? (Perhaps for use with cwsdpmi.exe) Would it at all be possible to execute it with a 33mhz 4 MB system (if I am easy on the “include” side of things in my not-very-demanding source) as in the case of Inform 6 and TADS? I do not have the knowledge and skill to create this myself, and therefore I do not know if I ask for something quite simple to do, or something very difficult and time consuming.

The Windows package includes the I7 compiler as a standard exe, and there’s no reason why you couldn’t call it yourself. But I’m sure it’s far too big to run in only 4MB of RAM.

I doubt the I7 compiler would be able to fit into DOS’s restrictions.

No, Dannii that would not work. What you mean is to use I7 in Windows (at the Command Prompt), which is not the same as using I7 in native DOS.

David What are the specific limitations that you have in mind? (No long file names?) I7, the whole thing, is said to run flawlessly on a dinosaur like Win95, (if one installs Internet Explorer 5), which unlike NT/XP and later runs native DOS under the hood. This makes me think that maybe it is technically possible, to make a executable version of just the compiler for DOS.

In DOS one would have to use either a 16bit version or a 32bit version of the I7-compiler that has been compiled with something like djgpp. (A version of the Gnu C++ compiler that produces 32-bit executables that run under MS-DOS on PC’s with 386 and all later processors.) This is how TADS3 is compiled under DOS. For TADS2 there are two different options for DOS; the above mentioned djgpp, or the Borland DOS extender that is used to make 16bit protected modes versions for 286 and later. I would not have a clue how to to compile my own I7 version, and I do not know if it would be a quickie or not for someone who already is potting around with the I7 source to thus make a DOS-compatible compiler.

I wasn’t sure if you meant DOS itself or just a command line. DOS itself is somewhat a generic term as your reply indicates too…

The NI compiler is not opensource, so we can’t compile such a thing on an antique system like DOS. Who is still using a 33mhz 4 MB system? Even if the compiler was available for dos, it would be so slow to run on this that it would probably spoil the fun of it. On my powerpc G4 800 mhz even compiling a basic game was slow.

You’d probably be able to keep the fun by editing your i7 games from the edit.exe on the 33mhz 4 mb computer and compile it from another computer.

Oh, that was the worst news i have heard in a while.

I have used I7 for more than a year and for some reason
I have completely missed that the ni.exe was not open source.
All this time I just assumed that it was. So all my
plans to do the compiling myself is then in vain… Sigh indeed.

I wrote a quite big story in i7, with quite a few extensions but the pentium 500mhz the compiling was
really very fast. T3 compiling tends to be slow on 33mhz, unlike t2 and inform 6 that compiles mid-size
stories within seconds.

So is the conclusion then that in.exe for the DOS platform will never be available?
(Since i have not heard from anyone keen on compiling it here at this forum)

you can request this on the bug tracker:

Platform support is a feature request, not a bug. Post to Uservoice instead:

The ni compiler uses upwards up 20 MB of RAM while compiling a one-room game. (The I6 compiler uses less than 2 MB for a one-room I6 game, about 3.5 MB for the I6 stage of a one-room I7 game.)

I don’t know a lot about DOS compilation, but I expect that a 16-bit verson of ni is impossible. From what I’ve seen of djgpp-compatible code, a 32-bit port wouldn’t be a lot of fun either.

The limitations I’m talking about are chiefly DOS’s segmented memory model. I’m almost up against that wall with Frotz, though some of that might be my desire to keep it workable for 16-bit mode. I agree that DJGPP is probably the best option for getting I7 compiled for straight DOS. If anyone wants to offer me access to the I7 source code, I’ll be willing to see if I can get it to work there.

Thank you Zarf for your informative answer.
The 20 megabytes of I7 compiling can maybe be compared with TADS 3 that under djgpp use a lot of discspace to do the compiling (unlike Inform 6 you correctly point out, and the same is true for TADS 2).
TADS 3 compiling has worked out fine on 33mhz for me so far but it is slow.

Thank you for your answer David. What a great thing if you would be able to do that!! I thought there was no hope.

The range of platforms, from modern to ancient ones, for the z-machine is amazing and a NI compiler for DOS would in that perspective be nothing but incredible.
Since you are compiling both Frotz and Inform 6 for DOS you seem to be very much accomplished for the task.
I will follow this possibility of developement with great interest.
Thank you.

You could try running it using HX Extender( It can run some windows command line programs under pure DOS.