ospwd@emory.UUCP (Peter Day {EUCC}) (05/27/87)
Below is the original posting, followed by a summary of the replies. Extracts of the original posting that were included in the replies have been removed. I want to thank all who responded: The responses were very helpful. The responses indicate that there are three main choices: Aztec C, Lightspeed C, and Macintosh Programmer's Workbench (MPW). I ordered Lightspeed C because it represents a low cost way to get experience with Macintosh development in C, and a lot of people like it, so it can't be too bad. ***** ORIGINAL POSTING ***** Subject: Best C dev env for Mac? What is the best C program development environment for the Macintosh? (Make up your own definition of "best".) Which is better, Aztec C or Lightspeed C? Please send responses directly to me and I will summarize to the Net if appropriate. Thanks, Peter Day CSNET: ospwd@emoryu1 ARPA: ospwd@emoryu1.arpa UUCP: { akgua, gatech }!emoryu1!ospwd BITNET: ospwd@emuvm1, ospwd@emoryu1 USPS: Computing Center, Emory University, Atlanta, GA 30322 PHONE: 404/727-7678 ********** In-Reply-To: <2039@emory.UUCP> From gatech!seismo!mit-eddie!zrm Mon Apr 27 20:04:32 1987 Organization: MIT, EE/CS Computer Facilities, Cambridge, MA As you seem to have concluded, Aztec C and LightspeedC are two of the best environments for Macintosh programming. I chose them for my book "C Programming Techniques for the Macintosh" because they are closest to the Pascal standard for the Macintosh in that they have 16 bit ints, 32 bit pointers, etc. They also have excellent Toolbox interfaces, including all the "Pascal only" traps. An additional nice feature both these compilers share is the "pascal" storage class, which enables the C programmer to write C routines that use Pascal calling conventions -- useful for filter procs. Of these two, and the half dozen others I reviewed in preparing my book, I continue to use LightspeedC. I prefer LightspeedC because it links and compiles so incredibly fast. I would stay away from compilers with different size data types as Pascal, with Toolbox interfaces that do "clever" things like converting null-terminated strings into Pascal strings (or any other automatic conversion between your program and the Toolbox), or compilers that seem to have fallen of the edge of the Earth, (anyone remember Hippo C?) Good luck. -Zigurd From sunatl!sun!gnome.cs.cmu.edu!hugo Tue Apr 28 00:31:17 1987 LightSpeedC is the fastest, friendliest, easiest C development environment I have ever seen. If you need to generate a lot of code, in C, very easily, then nothing beats it. It's great for prototyping, utilities, DAs, practically anyting. The tradeoff is, that you're stuck with what they have given you. The environment is not extensible, so nifty's like yacc, lex, awk, C++ and all those other Unixish utilities are impossibleto use easily. So, if you really need flexibility, and can give up some speed (Mac II's are fast :-), then don't get LightSpeed. But, don't get Aztec either, because for that price, you may as well get MPW, which is better, and hasa great C compiler to boot. But, if you are hacking on a small to medium large scale, and don't really need any tools but a fast compiler and smart editor, nothing, *nothing* beats LSC. That's what I think. Pete -- ARPA: hugo@cmu-cs-gandalf.arpa BELL:412-681-7431 UUCP: ...!{ucbvax,ihnp4,cmucspt}!hugo@cmu-cs-gandalf.arpa USPS: 5170 Beeler St., Pittsburgh PA 15213 From akgua!seismo!rochester!ur-tut!dagl Tue Apr 28 05:02:35 1987 : I find both to be useful, depending on the type of work I am doing. When I am doing something which primaraily involves the Mac interface, I do my work in LSC. But when I am using libraries I've grown accustomed to on UNIX machines (e.g. stdio) I rely on Aztec C, because it seems to handle them better. I tend to do the development of internal (and hopefully, portable) routines in Aztec C; I've been working on a mathematical function interpreter and some numerical analysis stuff as well. It's just faster to write a simple stdio interface to test a new routine in Aztec C. But then I port it all to LSC and write the *real* interface code there. --------------------------------------------------------------------------- David Glowny | dagl@tut.cc.rochester.edu (or) ...!rochester!ur-tut!dagl | US-Mail: PO Box 30996 - Rochester, NY 14627 --------------------------------------------------------------------------- From gatech!seismo!harvard!endor!stew Tue Apr 28 06:49:50 1987 Organization: Aiken Computation Lab Harvard, Cambridge, MA : LightSpeed is a great development and prototyping environment, but I wouldn't use it for programs to sell -- the runtime library has problems which guarentee that any application written with LightSpeed C will fail on future macintoshes. For my work, I use LightSpeed for development and MPW C for producing the final application. If you're careful (and use the Pascal glue so that strings aren't converted between null-terminated and count-byte forms) you can compile the same source with either compiler. Stew Rubenstein seismo!harvard!rubenstein From sunatl!sun!seismo!scubed!sdcsvax!jww Tue Apr 28 09:38:52 1987 There's a review of C compilers forthcoming for Byte, written by a famous Macintosh expert. It concludes that LSC is the fastest. If you like the Aztec environment, though, you'll probably like MPW (not reviewed) better, since it's more complete. From gatech!seismo!andrew.cmu.edu!rs4u# Tue Apr 28 10:07:19 1987 Absolutely Lightspeed C. Best == Good, fast, mac-Like editor (with arrow-key support), unlimited text capacity (all in RAM), incredibly fast compiler, ditto linker ( linkage consists of simply verifying all module references), " "project" file structure which makes segmentation and source management simple ("make" is completely automated, so you don't have to worry -- all dependent files are recompiled), and good debugger support TMON and Jasik's DEBUGGER both have support for LSC. Also, good code generation (at least as good as Aztec). MUCH better price than Aztec ($175 list vs. $395 list). --Rich Richard M. Siegel Materials Characterization Instrumentation Section Mail Stop 231 NASA/Langley Research Center Hampton, Virginia 23665 (804) 865-3036 Arpanet: rs4u@andrew.cmu.edu Uucp: {your fave gateway}!seismo!andrew.cmu.edu!rs4u From gatech!seismo!cmcl2!nyu-acf2.arpa!siritzky Tue Apr 28 11:44:13 1987 I have had a lot of problems with all the versions of C on the Mac! MY situation is that I have a large amount of C code that has been ported from Unix 4.2 to Unix 4.3 on a VAX, to VAX VMS C, to C on the IBM PC/AT, and to at least 5 other machines. Each of these ports was done with little bother - i.e. one man month or less. When I tried to port to the Mac I first went with Consulair C. It is rubbish! It is not even C. They have arbitrarily changed some of the scoping rules of C. Then I tried Aztec C. It could not cope with some of the code. It kept crashing. Lightspeed C was better, but it also choked on a few of the functions. Then we hit another problem. All of these C compilers will only allow you a 32K code segment - for the whole program. In our case this was way too little. I have since tried the MPW C. It is better than the others for my problems, although it still has the 32k limitation (I'm told that this is a problem with the Mac OS!). I do know that the CWI people in Amsterdam wanted to put an implementation of ABC on the Mac (ABC is a GREAT language) and they said that the only C compiler that could do it was the MPW C! Now, all this may not apply to you. If you are starting from scratch, with no existing code that has to be ported, then you may be able to work within the confines of one of the compilers. In that case I recommend either the Lightspeed or the MPW. ================================================================== Brian Siritzky, C.I.M.S., 251 Mercer Street, New York, NY 10012 ARPA : siritzky@nyu uucp : ...!cmcl2!acf2!siritzky ^ |________This is a small 'L', not a one ================================================================== From akgua!seismo!mnetor!unicus!Reid.A.Ellis Wed Apr 29 00:18:57 1987 I would have to say, and I think many will agree, that Lightspeed C cannot be beaten for small programs which are on the same order of size as binhex, unpit, and such (around 40-60k). But for Really Big Projects (we're talking Microsoft Excel or Drak Castle sized here) you have to go with MPW C. It produces the best code of any C compiler around, and has all the development tools you need, except for maybe lint. Some people claim the best thing to do is to prototype things in Lightspeed C and then develop them in MPW. You can do this if you keep away from the incompatabilities between these two compilers (strings passed to toolbox routines being the prime problem). The bottom line: Lightspeed C for fast tool development and prototyping MPW C for massive projects Let me know what else you get, Reid. -- Reid Ellis, aka Clith de T'nir {seismo!mnetor, utzoo!yetti}!unicus!reid.ellis (dumb uucp) mnetor!unicus!reid.ellis@seismo.css.gov (dumb arpa) From akgua!ihnp4!gargoyle!sphinx!fdot Wed Apr 29 01:19:57 1987 Organization: U Chicago Computation Center I use Lightspeed C -- it's a good environment for developing "real Mac" programs, and it's very un-buggy, which was a relief after using MegaMax C for a year. It also has function prototyping, which is the next best thing to lint, which I haven't seen on the Mac. I haven't looked too hard at Aztec C, but my feeling is that it doesn't measure up. However, it was a very narrow choice between Lightspeed and MPW C, which is a really strong compiler set in a *very* powerful environment. I finally chose Lightspeed for the turn-around time. --Tom Lippincott ..ihnp4!gargoyle!sphinx!fdot From gatech!akgua!ihnp4!amd!roy Wed Apr 29 02:34:58 1987 : For C, I think Lightspeed C has it hands down over all of the others, and over Aztec C without a doubt! For Pascal, it's between Lightspeed Pascal and MPW. Roy Carlson Software Consultant From gatech!tektronix!tekig4.TEK.COM!bradn Wed Apr 29 02:35:52 1987 Organization: Tektronix, Inc., Beaverton, OR. : Unfortunately, I only have experience with Aztec C -- I've never tried lightspeed C. I like Aztec C a lot. One of the reasons is the unix-like interface (as opposed to a Mac-like interface). I use Unix at work, and I appreciate being able to use similar tools when programming on the Mac. Aztec C includes programs that are very close to Unix' "make" and "vi". Another thing I like about Aztec C is that I have written complex applications involving custom controls and track routines without ever having to resort to assembly language or strange "glue" routines -- Aztec C provides routines to interface to all of the toolbox calls. I like Aztec's treatment of pascal vs C format of strings -- it doesn't automatically convert strings for you, but it provides subroutines to explicitly do the conversion. I have seen very few complaints about Aztec C on the net. At the same time a lot of folks have sent in complaints about various Lightspeed C bugs or features. Good luck with your choice, Brad Needham bradn@tekig4.TEK.COM From akgua!seismo!mcvax!uva!maarten Wed Apr 29 06:32:34 1987 Organisation: Facultaire Vakgroep Informatica, Universiteit van Amsterdam Kruislaan 409, 1098 SJ Amsterdam, The Netherlands Phone: +31 20 5925022 Telex: 10262 hef nl Organization: FVI, University of Amsterdam To my opinion, if you can afford the hardware :-), the best C is MPW C (get it through APDA, about $100-200) --maarten In real life: Maarten Carels Computer Science Department University of Amsterdam email: maarten@uva {philabs, decvax, seismo}!mcvax!uva!maarten Date: Tue, 28 Apr 87 17:22:07 EDT From: Peter DiCamillo <CMSMAINT@BROWNVM> I've been using Manx Aztec C for program development on the Macintosh for over two years, and have been very satisifed with it. I can't say that I've compared it to any other versions of C for the Mac. I've been happy enough with Aztec C that I've had little incentive to do that. I'd be happy to answer any questions you have about Aztec C, run benchmarks, etc. I do my development work on a Mac Plus with two 800K floppy disk drives. Peter From gatech!tektronix!tekig4.TEK.COM!larryha Thu Apr 30 00:46:20 1987 Organization: Tektronix, Inc., Beaverton, OR. I've used both, and Lightspeed C is miles ahead of Aztec C. If you prefer a SHELL based environmentlike UNIX, then Aztec gives you that in a prettygood package. But if you like MAC type environments, you've got see Lightspeed. It's code may not be the best in the world but it is a fast compiler and it can't be beat as a totally integrated development environment. I do major C development on VAX UNIX and VMS and there are no tools in the same class as Lightspeed C. I believe they have set a standard by which other environments can be measured... Just my opinion, but I know of which I speak Larry From gatech!seismo!rochester!cornell!batcomputer!saunders Thu Apr 30 00:46:29 1987 Organization: Cornell Theory Center, Cornell University, Ithaca NY Aztec C has one significant advantage: the source level debugger, which mostly works. Life with a Macintosh is easier with one of these. LSC is said to be very fast. MPW might be an option also; the shell is rather like a warped Bourne shell with the regular expression metacharacters changed "to protect the innocent." I'm not particularly impressed with their support. Then again, I'm not particularly impressed with Apple! ????, -- Kevin Eric Saunders ARPA: saunders@tcgould.tn.cornell.edu uw-beaver!cornell!batcomputer!saunders From akgua!spuxll!ech Thu Apr 30 01:00:11 1987 : I am no longer neutral on this question, as I went to work for Manx (who publish Aztec) about 2 months ago, specifically to ENHANCE the Mac product. Both packages are excellent. If your intent is casual use, the Lightspeed package (at the going rate of $125) is hard to beat. If you're serious, you'll find that the Aztec package will do far more for you and NOTHING behind your back (the Lightspeed package mucks about with the system too much), generates tighter and faster code, and will support the 68020 and 68881 (needed for max performance on the Mac II, if you care). We are VIGOROUSLY developing the Aztec package at this time. The next couple of months are going to see full MPW support and a Source-level debugger in the package, full ANSI-standard by the end of this year, and source-level optimization within a year from now. I like 'em both, but I'm really EXCITED about the Aztec package. =Ned Horvath= From masscomp!wanginst!elrond!anson@gatech Thu Apr 30 18:46:57 1987 Organization: Calcomp Display Products Division, Hudson, NH, USA : I bought Aztec C about a year ago, and used it a lot. It was pretty good. A few months ago, I bought Lightspeed C. I haven't used Aztec since. -- Ed Anson, Calcomp Display Products Division, Hudson NH 03051 (603) 885-8712, UUCP: [decvax, wanginst, savax]!elrond!anson From akgua!ihnp4!uiucuxc!uxf.cso.uiuc.edu!dal630 Thu Apr 30 23:53:28 1987 I have Lightspeed, Aztec 1.06h and MPW 1.0. I used to like aztec, but it's getting old (no enums, bitfields, struct passing/return). Lightspeed seems to be the only sane choice for mac-style application development. Aztec has a niche as a vehicle to port unix stuff to the mac in a useful way, and perhaps conversely as a way to develop unix stuff, although I have heard of LSC used for that purpose as well. The new LSC stdio lib is more mac-like and therefore looks better than the old "tty" style one. MPW is a monster... I guess if you need it, you need it bad. You have to retrain yourself coming from unix (different wildcards, etc...) but the C compiler is great (even though it uses 32-bit ints). I know of a guy who likes Consulair Mac C a lot, but I think that's because he likes the support direct from the author. summary: Lightpeed C pro con fast development cycle almost *have to* use mouse-based editor lot of PD source available unix libs complete but not convenient good development environment Aztec pro con unix - like slow good portability to/from unix awkward ROM inerface (ie. point passing) can use vi clone or PD microEmacs I haven't delved into MPW too much, so I won't comment dave ihnp4!uiucdcs!uiucuxf!dal630 From akgua!ihnp4!zehntel!zinfandel.UUCP!sam Fri May 1 00:11:19 1987 In response to your request in comp.lang.c: I have used Consulair C and Light Speed C. I personally thought that the Light Speed compiler was the better of the two. I've never used the Aztec compiler. The project was rather large (technical desktop publishing system [not released yet]) with about 10 programmers. Considering that we did not have a network of any kind (dismissing applenet as the little "computer joke" that it is) for source managment. It was reasonably easy to keep the versions straight using the subprojects feature. The compiler itself was pretty quick (although you better have a hard disk) and linker screamed, probably the fastest I've seen. The code quality was pretty good. Light Speed in conjunction with TMON as a debugger made a pretty nice development environment. I am no longer on the project, so I can't say what impact (if andy) the debut of the apple fileserver has. Anyway, hope this helps. I would be interested in the results of your poll, if you get enough response. P.S. In the above I didn't mean to imply that the Consulair compiler was not a good compiler, I just personally prefer Light Speed after using both. Date: Fri, 1 May 87 14:11:19 EDT From: Reid.A.Ellis@unicus.com : ... I have used Aztec C version 1.06h. Some of its problems include: can't have #includes more than three deep Aztec "make" is not full make - file.o must be explicitly stated to depend upon file.c Compile time and code produced is somewhat underwhelming Seriously, check out Lightspeed (for personal use) and MPW C (for professional use). Bye for now, Reid. -- Reid Ellis, aka Clith de T'nir {seismo!mnetor, utzoo!yetti}!unicus!rae (uucp) mnetor!unicus!rae@seismo.css.gov (arpa) From rutgers!harvard!husc4!waldman@gatech Sat May 2 18:22:34 1987 Organization: Harvard Univ. Science Center You asked for a comparison of LightSpeed and Aztec C. Well, right off the bat, I think that LightSpeed C is the best C system available for any computer. Development time is very fast, especially with a hard drive, since LSC has an auto-make facility, recompiling only files that need to be recompiled when you pick "Run" from the menu. The editor is superb, as well. The only criticism that I have is that there is no source level debugger-you're stuck with Macsbug or another such debugger. I also think that the LSC generates better code. Here at Harvard, we're developing a set of graphing programs to be used in second year calculus classes. First, Aztec was used, and then we switched to LSC, with a real improvement in graphing time--this makes me think that mathematical calculations are better handled by LSC. I hope this was helpful. Ben Waldman waldman@husc4.harvard.edu ...seismo!harvard!husc4!waldman From lewis@HARVARD.HARVARD.EDU Mon May 4 11:27:28 1987 Your question is a really easy one. We developed three fairly large applications here (15 source files, about 20 include files). We started with Aztec because that was the best available at the time, then we switched to Lightspeed when it came out. Lightspeed is MUCH MUCH faster to use -- the integrated editor and smart project management system is a real pleasure. The three programmers I had working on this stuff wouldn't dream of going back to Aztec. The libraries are just as complete as Aztec's, and all the source code is provided, which has come in handy. Version 1.0 had a few bugs (fewer than Aztec had after a year in production) but 2.0 is absolutely solid as far as I can seen. A great product at less than half of what Manx charges. We have been using Lightspeed C in a second-level programming course this year -- Think agreed to make the disk sets available at $30/student. This has been very successful -- the compiler and (especially) the linker are fast enough that students are able to develop big systems off floppies in short amounts of time. As their final projects they are all writing Lisp interpreters, complete with garbage collection, in 3 weeks. (Of course, these are probably 20-30 hour weeks, but it's still impressive.) (The exact configuration they are using is 512e with 800K internal and 400K external drive. More disk space would be nice, but even for this fairly large project this configuration is adequate.) Disclaimer: I am probably biased because Mike Kahl, who wrote Lightspeed C pretty much single-handedly, took introductory programming from me so obviously he must be doing things right. Seriously, Mike ranks with Bill Gates as being one of the smartest, most aggressively perfectionist people I have known; he would have been a good programmer if he had been taught by Bozo the Clown. - Harry Lewis (lewis@harvard.edu, lewis@harvard.csnet)
jww@sdcsvax.UUCP (05/29/87)
In article <2068@emory.UUCP., ospwd@emory.UUCP (Peter Day {EUCC}) writes:
. From gatech!seismo!cmcl2!nyu-acf2.arpa!siritzky Tue Apr 28 11:44:13 1987
...
. ... All of these C compilers
. will only allow you a 32K code segment - for the whole program. In our
. case this was way too little.
. I have since tried the MPW C. It is better than the others for my problems,
. although it still has the 32k limitation (I'm told that this is a problem
. with the Mac OS!).
...
. Brian Siritzky, C.I.M.S., 251 Mercer Street, New York, NY 10012
. ARPA : siritzky@nyu
. uucp : ...!cmcl2!acf2!siritzky
It is certainly possible to make programs with segments . 32K
with MPW C. The linker is quite keen on this, although any Macintosh 512
will crash when it sees one.
I believe your data segment is still limited to 32K, though.
--
Joel West
{ucbvax,ihnp4}!sdcsvax!jww (ihnp4!gould9!joel if I ever fix news)
jww@sdcsvax.ucsd.edu if you must
earleh@dartvax.UUCP (Earle R. Horton) (05/30/87)
In article <3243@sdcsvax.UCSD.EDU>, jww@sdcsvax.UCSD.EDU (Joel West) writes: > In article <2068@emory.UUCP., ospwd@emory.UUCP (Peter Day {EUCC}) writes: > > From gatech!seismo!cmcl2!nyu-acf2.arpa!siritzky Tue Apr 28 11:44:13 1987 > >>> > > ... All of these C compilers > > will only allow you a 32K code segment - for the whole program. In our > > case this was way too little. ..... > It is certainly possible to make programs with segments > 32K > with MPW C. The linker is quite keen on this, although any Macintosh 512 > will crash when it sees one. > > I believe your data segment is still limited to 32K, though. Macintosh Kermit, aka CKMKER 0.8(34), has a resource of type CODE and ID 1 which is 63078 bytes in length. It has yet to crash my 512. In fact, this is a PARTICULARLY well-behaved program. This program was created by the sumacc C compiler at Columbia. I don't know which combination of 68000 C compiler and assembler / OS is run on the machine which created the program, or even what that machine is. I think this establishes that a code segment > 32k can run on the 512 (I think it runs on a 128, too). In any case, let me throw in my two cents worth on this subject. I have been writing code for 68000 (Mac) and 8086 (Intel 310) for two years now, and have grown quite used to the idea of segmented code. All of the development systems I have seen allow either 32k or 64k code segments, max, but they DO allow linking of several segments into one main program. I believe all the systems mentioned above for the Mac can do this (correct me if I am wrong). I do know that Lightspeed C can be used to create large multi-segment applications whose total code size is far in excess of 32 or 64k. The idea behind segmented code, as I understand it, is this: These two processors use two general types of jump/call instruction. There is a 16-bit offset jump, and a 32-bit offset jump. The 16-bit offset jump takes fewer bytes to implement, both for the "call" and for the "return", but it is limited in scope to the size of a 16-bit quantity--32k if signed, 64k if not. Smart compilers, linkers, programmers put closely related procedures in the same segment, and use the long form of the instruction for less frequent procedure calls. This is, of course, a simplistic explanation, I refer you to the appropriate manufacturer's microprocessor handbook for details. If you "go with the flow" and use segmentation for the purpose intended, you can achieve significant savings in code size, execution time, and development time. There is programmer effort involved, true, because you then have to decide which routines go in which segment (but that's the kind of thing flow charts can help with.) Segmentation on 16/32 bit machines can be viewed in either of two ways: It's a tremendous inconvenience to the programmer. OR It provides a convenient mechanism to enforce intelligent, structured programming. I guess it's all a question of attitude. As for the data segment, it is fairly simple to create more "data" segments on the Macintosh by using custom resource types. There are also dynamic storage, separate files with data in them, linked lists, the data fork of your application, need I go on? I hope this has been of some help. If not, you could have hit the 'n' key... -- ********************************************************************* *Earle R. Horton, H.B. 8000, Dartmouth College, Hanover, NH 03755 * *********************************************************************
jww@sdcsvax.UCSD.EDU (Joel West) (05/31/87)
On a 68000, 16-bit address displacements are always signed, hence 32k. MPW's default data segment is 32K. You can't have more globals than that (I don't understand if there's a technical reason they can't support multiple segments or longer segments, or that they just haven't gotten around to it.) Having two programs with segments > 32K could be a problem, since the jump table for cross-segment references only goes 32K in. -- Joel West {ucbvax,ihnp4}!sdcsvax!jww (ihnp4!gould9!joel if I ever fix news) jww@sdcsvax.ucsd.edu if you must
traffic@ut-ngp.UUCP (Wiley Sanders) (05/31/87)
As long as we're on this subject: two years ago I wasted $150 on a copy of Hippo-C. Of course, the version I have is incompatible with Systems 3 and above and from all I can determine the company long ago went under. Does anybody know what has happened to these _________'s (fill in your own derogatory term here)? lose, lose -w -- Wiley Sanders, Civil Engineering Dept, UT-Austin secret NSA CIA anti Soviet Iran terrorist nuclear drug decoder ring - take THAT, NSA line-eater!
daveb@geac.UUCP (Dave Brown) (06/01/87)
It is also possible to use more than 32k words of data under MPW: If you allocate 2 or more segments, confirm that they are contiguous and provide an assembler or in-line access function, you can manipulate 64k objects, where an object in this case is a struct of plausable size. You would be well-advised to dispose of them carefully, though, and make sure they aren't declared relocatable! For an object called "memword", the MPW Pascal incantation was: x:= memword(pointer(org4(base)+4*org4(index))); This assigns x the address of the first byte of something called a "memword" at &base[index], which happens to be 4 bytes long. (its easier in c: the compiler doesn't frog on pointers to large things, just attempts to create large things). Incidentally, the code generated is only one instruction worse than optimal: the multiply comes out as a shift, but an extra index-to-address register transfer gets done, as the ord4() calculations are done in index (general, actually) registers. --dave (this limitation does NOT exist on Mac II) brown