8:45 a.m., Monday morning, two weeks ago.

I'm stood in a blacksmiths shop surrounded by photographic equipment, half asleep and wondering why I don't go get a nice, easy, 9 to 5 job like everybody else. I love programming, but all this other "stuff" is like, difficult. I could get a job, just programming and BSing the boss every now and again. Life would be easy. I'd get holidays! I'd get paid a decent wage! Sure, what I'd be programming wouldn't be what I wanted to program, but I'd still be doing that in my spare time, just not as much of it. So why don't I do it?

Easy. Fifteen months ago that is exactly what I was doing, and I had been doing it for some thirteen years. After a while I realized that one day, I'd be lying on my death bed and I just do not want to be saying "Gee, I wish I'd tried that", or "I wish I could just have another go at it".

I'll be honest and state right out that I love what I do, OK, so some of it is a little nauseous, but most of it is fun. Just the simple fact that somebody, somewhere likes what we do, and it makes their life a little easier, or better or whatever, makes it all worthwhile. Whether we were selling software or not, I'd still be doing it, only with people using your software, and going like "Wow - I didn't know it could that!" it really makes me feel good.

So, moving onwards, we come to Fantasm 5 (bet you knew I'd be coming to that :-)). I think it is somewhat different to Fantasm 4. We've been working on it for about two years, and finally it's nice to be able to talk openly about it. It is only just the start and provides us with a nice solid foundation on which to work. Key to it's operation is the class based tool loader which really took a fair amount of work to come up with. We wanted to get rid of those horrible old extensions, and we wanted most things to be pretty automatic, and at the same time we needed lots of flexibility. We think the class system handles all this and more. Suppose that you were prototyping a compiler. Now this compiler would have at least three or four logical parts; a preprocessor/tokeniser, a grammar engine and code generators. Well with the class system you can write a shell, give it a class and then give your other logical parts sub classes of the shell's class. So although you only see the "shell" in your project, all the shell has to do is send messages to the sub tools and they'll be loaded (if not already) and run. Because the only data you'll probably be passing is pointers to data, speed will be fine.

The other major item is the Client Command Processor or CCP. This provides most calls a tool would need to use. Granted in this release we had to draw the line somewhere and not include all the features we wanted to or could. Basically it provides a mini OS for tools to call, and because it provides parameter error checking where necessary, we would urge anybody dabbling with writing a tool to use the CCP where ever possible from a stability point of view. (BTW, if you are thinking of writing a tool or a plug and run into problems, contact either myself or Rob and we'll do all we can to help you - C, 68K or PowerPC assm is fine). If you pass duff parameters to the CCP it will generally return a generic -1 error. The other nicety is that most all parameters for CCP calls are defined as int32's - no halfs or bytes. This you may say is wasteful - why for example are errors returned as int32's when int16's would suffice. Well, we think it makes life easier for the programmer if most everything is standardized on the same size. There are exceptions to this, notably with regard to structures (obviously). Sometimes pointers to structures and passed and sometimes the structure itself is passed. I'm really not happy about these inconsistencies in the API, but as always it was done because it was necessary. Consider a tool that is passing a pointer to a structure. In this case the tool sending the pointer must keep the memory holding the data "alive" - it can't dispose of it because it's client is working on the data. If however the whole structure is passed, then the sending tool can dispose of the memory holding the data as soon as it gets a chance, and in complete safety.

I bet you're thinking, "Yes, well, that's terrific, but as a user what good is it to me?". Well, four things mainly. Because everything just plugs in, we can produce updates and respond to service requests much quicker than ever before. Specially when coupled with the fact that all Fantasm 5 owners are automatically subscribed to our update service for 12 months from time of purchase. Secondly, it means the system is very much more stable. When a message is sent from a tool to another tool, the CCP does a load of error checking, not only on the message itself but on the environment too. This way, if a tool does get out of control, you'll more than likely see Anvil give you the opportunity of either killing the offending tool, or if that's not possible at least a graceful shutdown of Anvil rather than an all out crash. (If you really want to see this, just create a tool that calls itself recursively ad infinitum). Thirdly, it's much faster than Fantasm 4. Finally, it's very expandable. As noted previously we had to decide on what calls to implement in the version 1 release of the CCP. Whilst we must maintain backwards compatibility in version 2of the CCP, we can throw in a load of goodies whilst making it faster still. By the way, if you have a question about Anvil or Fantasm or anything really, send it in and if it's useful we'll put it in the FAQ so everybody benefits. Possibly the best place to post it is on the Fantasm list server, so we can answer it in public.

As I said at the start, this really is just the beginning. We have updates planned and new tools and widgets. As we've publically stated, we want to make Fantasm the best assembler ever. We need your feedback to be able to do this. If something is great, tell us. If something sucks or don't work, tell us. If you'd like to see a specific feature, tell us. We are listening and are more than interested. It's gratifying to see so many long term users upgrading already - we assume this is because you like what you see (and we're really sorry the demo is so "crippled" as one respondant put it). We really like to think of our software as your software, and hopefully as we move ever onwards we can continue to help make your life a little easier, help you produce better software quicker and of course continue our support of Apple, Macintosh and all that that stands for.


Bit short this time, but we are a tadge busy. I have the really difficult job of finalizing the MOD's/XM's/ and s3m's to go on the CD. At first I thought maybe thirty of the best of Lightsoft's collection would be fine. Well it's a tough job - we have about a thousand to choose from, and currently I have about 110 on the CD. So much for my top thirty!

And finally, here is a photo of Jeff and myself with our real Anvil in that blacksmiths shop (with many thanks to the guy that owns it.). Was it hot in there? Nah, that's Jeff's lighting. Our hero photographer, is the one who looks as if he's just about to scratch his crotch. Sorry Jeff but it's true. I'm the one with the not-so-happy look on my face, but then again macro photography really isn't my forte which is why we paid Jeff to do it.

Just another note, this photo has been retouched to reduce the glare off Jeff's forehead <G>.

 

Till the next time,

Code on!


Send mail to Stu



Back to Stu's Page Top Level

Back to Lightsoft Home Page