IMP-77 compiler for MS-DOS ========================== Summary: i77 [-c] [-Fc] basename This is a full IMP-77 compiler for x86 computers running MS-DOS (or a command line box under Windows). The compiler currently produces 16 bit OMF object files - a 32 bit version is in the pipline imminently. Installation ============ Put all the files in this archive in a directory on your computer, such as C:\IMP. Then either add these commands to your AUTOEXEC.BAT or (if you don't want the clutter) just run them each time you want to do some IMP work: SET PATH=C:\IMP;%PATH% SET LIB=C:\IMP;%LIB% Operation ========= The compiler is driven from the script file I77.BAT. The extension ".IMP" is automatically added to your base filename, and the default result is an executable "basename.EXE". The option "-c" inhibits the link phase for multi-file projects. The option "-Fc" produces the rather interesting file "basename.COD", which will be familiar to power users of Microsoft compilers. The compiler also always produces the standard IMP listing file in "basename.LST". Restrictions ============ There is one major language restriction - %event blocks don't work. If an event is signalled, the signal handler prints a terse message and a stack backtrace in hexadecimal, then exits the program. The most common "non-error" use of %event blocks is to catch end-of-input events - the library supplied therefore does not signal event 9, but returns -1 for EOF on input. Other run-time diagnostics are thin on the ground. By default, array bound errors will be detected, but not switch bound errors. There are no unassigned variable checks, and no tests for integer overflow either in normal arithmetic or in assignment to bytes. Strings are checked correctly however, and the compiler distinguishes between normal and jammed assignments. The compiler produces object files that are compatible with several source code debugging packages. Unfortunately, because I have not written a command line interface library yet, the compiler can't "see" the name of the source file, so it tells the linker they are all called "TEST.IMP". This means you can't do source level debugging yet. (You can't even fool it by calling your program TEST.IMP, because much of the run time library is written in IMP, and all those files are apparently called TEST.IMP as well...) Finally, although it started as a pure 8086 compiler, the floating point instructions forced a decision between Classic and Modern styles. Once I had selected the Modern style, it was the start of the slippery slope and a few other 80286 instructions crept in. The compiler therefore needs at least an 80186 processor, which is probably a major blow to those of you still running 8088's. Also Needed =========== In order to use these tools you will also need a Microsoft compatible linker and a copy of the Microsoft C library. I assume you have these, but if you have misplaced your copy, they are available as a separate download from my IMP web site. Bug reports =========== If you find an error in the compiler (surely not?) please let me know: andy@nb-info.co.uk Andy Davis 28/11/02