Hello, AS-Users, OK, here it is, the C-Version of AS that is theoretically compilable on any system that has an ANSI-C-compiler! After a couple of optimizations, the performance degradations due to the way C handles strings have been compensated, so the C version should effectively run a bit faster than the original Pascal version. LICENSING Those who have already used the original DOS/Pascal version of AS will know that AS is completely free: you may use and modify AS for whatever purpose you like (regardless whether it is commercial or not), given that you do not remove my copyright from the sources and that programs that build upon the AS sources are given out under the same license terms. Of course, if you add something significant, you may also add your own name to the copyright list! To make things a bit more interesting (for me), I have added a detail to the license terms of the C version: it is wineware! If you want and have time, you may send me a bottle of your favourite wine... PLATFORMS The C version of AS was designed primarily to work with a Unix-like system with an ANSI-C compilant compiler. Specifically, I have tested this version of AS on the following machines: - Digital Unix 3.2/4.0 with DEC-C - Digital Ultrix for Mips 4.3/4.5 with gcc 2.7.2 - Digital Ultrix for VAX 4.1/4.5 with gcc 2.7.2 - Linux/Alpha with gcc 2.7.2 - Linux/Intel with gcc 2.7.2 - HP9000/7xx HP-UX 9.0/10.0 with HP-C - MS-DOS with Borland-C 3.1 resp. 4.5 - OS/2 with emx 0.9 - Munix V.3 with cc - NetBSD/Sun3 with gcc 2.7.2 - NetBSD/pmax with gcc 2.7.2 - SGI Irix 5.3/6.2 with SGI-C - SunOS 4.1.3/Sparc with gcc 2.6.3 or cc - Solaris 2.5/Sparc with Sun-C 3.0.1 - IBM RS/6000 AIX 4.1 with IBM XLC DIFFERENCES / THINGS TO DO The portable C version of AS has the following, known differences to the original BP version: - Floating point values are internally only stored as IEEE double precision values, not in the 80-bit format Intel NPUs use. Therefore, floating point ranges and accuracy are not as good as in the BP version. Currently, there seems to be no portable, standardized 128-bit-format for FP numbers. Every vendor (IBM, SUN, CRAY, SGI...) uses his own format, so supporting them all looks like a lot of work... + On most systems, integer arithmetic is done with 64-bit-numbers. This should hurt only programs that explicitly exploit overflow and sign effects on 32-bit-versions of AS. - String variables must not contain NUL characters. This is due to the fact that C uses the NUL character as an end-of-string marker, and is probably the hardest thing to resolve :-( ~ most UNIX systems name their own assembler already 'as', so I had to modify the name to 'asl'. The additional letter is to the honor of a person that did quite a lot to spread the UNIX philosophy ;-) I also had to rename 'bind' to 'pbind', but I guess that this won't matter too much as it is a rarely used tool. - the C version was designed to have exactly the same command line interface as the original BP version; however, UNIX shells interprete some special characters like the dollar sign for hex values in their own way, so you might have to work with escape (\) and quote characters. + the USEXMS resp. USEEMS and ASXSWAP environment variables do not exist for Unix platforms (thankfully). - the AS2MSG filter does not exist (wouldn't make sense because there is no Borland Pascal for Unix.) + This version now contains dynamic switching of program messages, i.e. you do not have to compile AS any more for a specific language. Instead, AS will test the LC_MESSAGES, LC_ALL, or LANG environment variables on Unix resp. the COUNTRY settings on OS/2 and MSDOS to dynamically load the correct set of messages at runtime. INSTALLATION See the file 'INSTALL' FEEDBACK In case of problems or questions, send them to firstname.lastname@example.org .