EJC: How many slashes (subdirectories) are allowed for source files?
Posted: Tue Jan 03, 2017 12:34 am
As I now have a fully working (USB-)floppy disk drive on my main (Windows 10) machine (Win10 unfortunately doesn't support native PC disk drives), I have installed EJC.
Is there anyone who has experience with EJC? I have already compiled a first "Hello, world!" program successfully. Now I want to write another program for testing EJCs val(...) function. The "Hello" program is stored in "WIN1_home_abcd_xyz_c_" under the name "ehello_c' and compiles OK. For the program I want to write now, I created a directory "WIN1_home_abcd_xyz_c_qalc_" and the source file "qalc1h_c" in it. When compiling I get the error message:
Error in pass 1 when compiling WIN1_home_abcd_xyz_c_qalc_qalc1h (Listing file is empty).
If I copy qalc1h_c to "WIN1_abcd_xyz_qalc_" and compile it there, it is OK and an executable file is produced. Strange.
p.s.:
You may ask why anyone wants to use EJC, when we have the excellent C68. Well EJC, which is not free, cause it uses (patched versions) phase 1 and 2 from the commercial Lattice C compiler - which I have had bought long ago (horrible expensive for a student like me at this time) - which is unfortunately still not free, has one very big advantage. The Lattice compiler was always capable of producing reentrant, even ROMable code. Unfortunately the libraries delivered with Metacomco-C (they delivered Lattice-C for the QL) never supported this (but it is documented in the manual for the compiler switches). Erling Jacobsen (Denmark) has written libs and initialisation code (AND has patched the compiler phases 1 and 2), so that his EJC produces reentrant, ROMable code (and functions like printf(), floating points, ... are suppoorted!). In fact it is a full K&R compiler for the QL which produces reentrant, ROMable code. The only restriction is the size of the program. As the 68000 only supports PC-relative branches of +/- 32 KBytes the size of EJC-programs is limited to a maximum of 64 KBytes (at least if the code should be reentrant and ROMable - albeit I'm not absolutely sure).
Is there anyone who has experience with EJC? I have already compiled a first "Hello, world!" program successfully. Now I want to write another program for testing EJCs val(...) function. The "Hello" program is stored in "WIN1_home_abcd_xyz_c_" under the name "ehello_c' and compiles OK. For the program I want to write now, I created a directory "WIN1_home_abcd_xyz_c_qalc_" and the source file "qalc1h_c" in it. When compiling I get the error message:
Error in pass 1 when compiling WIN1_home_abcd_xyz_c_qalc_qalc1h (Listing file is empty).
If I copy qalc1h_c to "WIN1_abcd_xyz_qalc_" and compile it there, it is OK and an executable file is produced. Strange.
p.s.:
You may ask why anyone wants to use EJC, when we have the excellent C68. Well EJC, which is not free, cause it uses (patched versions) phase 1 and 2 from the commercial Lattice C compiler - which I have had bought long ago (horrible expensive for a student like me at this time) - which is unfortunately still not free, has one very big advantage. The Lattice compiler was always capable of producing reentrant, even ROMable code. Unfortunately the libraries delivered with Metacomco-C (they delivered Lattice-C for the QL) never supported this (but it is documented in the manual for the compiler switches). Erling Jacobsen (Denmark) has written libs and initialisation code (AND has patched the compiler phases 1 and 2), so that his EJC produces reentrant, ROMable code (and functions like printf(), floating points, ... are suppoorted!). In fact it is a full K&R compiler for the QL which produces reentrant, ROMable code. The only restriction is the size of the program. As the 68000 only supports PC-relative branches of +/- 32 KBytes the size of EJC-programs is limited to a maximum of 64 KBytes (at least if the code should be reentrant and ROMable - albeit I'm not absolutely sure).