Anvil
Stu's top ten MODS of all time
Apple
Chat
Some more Anvil
Picture Gallery

 

Anvil

First off, any information on this page about Anvil, Fantasm 5 or Fanta_C is strictly unofficial! Please remember I am working on just one part of a larger system and these are my views only.


Friday - hurrah! (140397).

Ok, this is tricky. This is the very first time I've tried using Anvil phase 3 for banging out more than two lines of test text. This one has the native chroma engine as a "plug-in" (fat plug actually), which always crashed in Eddie after n minutes (we never had a native chroma in Eddie cause Eddie didn't have the "foundations" for it).

It's horribly complex when you think of it - every single character Anvil wants to put in a window has to go "out" of Anvil, through an API (basically a parameter block) into the chroma plug (which wont have been loaded yet, so first it has to be loaded and installed correctly), which decides that it has no "chroma-ing" to do (this file has no language associated with it) and so simply prints it at the current caret position, and then back to Anvil.

I have to say, after many weeks of constant design and redesign, I am now quite pleased with the openness of the system (documented as well!). On Monday an external tool sent a command to another tool, which means the switcher code is very recursive (whatever that means!). I had these two tools bounce 3 million messages back and forth and it worked! (It was all over in a second - Eeek!). Luckily we have a "Slo-Mo" debug mode where we can get all tool messages displayed in a human readable form in the status bar. The same test then took forty five minutes to run - but at least I KNEW it had worked :-) And the stack stayed balanced - hurrah.

I always knew allowing tools to launch, run and kill other tools (and themselves) was going to be the really hard bit. Now it's done, works, and I'm a happy chappy. Specially as the original spec did not allow tools to run other tools.

We have a real nifty control plug-in. Basically it's the user license. Using this tiny plug (about 1k) we can control much of Anvil. We have a plug that will run until a given date, another that will run for n days, and another full license version. Thus we can send out demos that will die after thirty days, and then if the user registers, we can send a new full license that will restore Anvil whilst the disks are in the post.
(We've received a lot of email about registering with a code, so now, we feel we have a system that will allow is to do that, except there's no code to enter, just change the plug which is smaller than an average email anyway).

This little licence plug-in also gives us lots of other features. Because Anvil tools and plug-ins can run and kill other tools, we can get this tiny license plug to do anything we want. For example we can encode version numbering into it (a tool can check another
tools version), facility control, even ftp update control for auto updates. This to me means Anvil covers most everything I want at the control level. It is fully extensible.
Yeah, we can have a plug that checks the date, realise that an update should available, FTP to our site and get the latest updates and integrate them in a matter of minutes.

I've got writing a native plug frame down to about 15 minutes now, so implementation is quite fast but I find I have to be quite strict about working as it's easy to say "I have a great idea for a plug!" and rush off and try it. It invariably works first time as plug code tends to be compact, and the calls to Anvil use well tested code.
The only thing you have to be careful of is that a plug might well be re-entrant, so careful design is the order of the day.

Unfortunately I'm still under a gagging order so can not go into more details at the moment. I'd love to show you screen shots, publish draft docs etc but business logic dictates that it's better to under promise and not hype. So I'm just telling you what little I can because I'm excited about it. It's a problem I have.


Release date for Anvil/5? Some months yet - maybe 3 to 6 months or even longer as it's quite possible a serious design fault will show up later and any design fault in Anvil is serious.

Whilst I'm on the subject of Anvil, we need all testers to contact me at lightsoft@compuserve.com for the end of phase three testing. The reason is that the full kit is quite large and we don't want to send our flagship out to possibly dead email addresses. Phase 3 testing is imminent and could start within a few days (it was supposed to be this weekend but I don't think so now as I was having so much fun with the Anvil/client API's - I've been waiting years for this system :-)).
Even if I've spoken with you recently, send an email to the above address so I can collate a new "group" - ta very much me duck.

I've noticed Fluffy playing about on the keyboard a bit just recently. All this week I've been starting work at 5 A.M. Every morning I come up here to find the Mac is running and Fluff diving down the stairs in a kind of "nothing to do with me Guv!" way. Weird. I wonder what she's been up to?


Monday 17th

Rob got a look at Anvil yesterday (he's busy on the compiler) , and bar a few minor graphical glitches it worked straight off. Most impressive was the fact that Anvil correctly opened a test project with no delay. Now I know that sounds like a trivial feat, but it isn't as this snippet from my diary will show...
"Had a few problems removing things from the project file and over what to do if a file simply can't be found. Specifically spotting when the proj file to window translator had run out of files. Simply counting the files is a bad move, and finally settled on checking all the files everytime. I finally agreed with Anvil on 3 verification stages for new projects, 1 verification for opening and 1 level of translation from proj file to window. Clicks are translated directly from window pseudo code."

The only really weird thing is that the little trash icon didn't appear in the project window but the logic was functional - this is like 6 lines of code - how can it not work? The trash "folder" of the project was working (which is really just another project folder). I tried the same on Elsie and it works, it works fine on my 7200 but not on Rob's - strange. But then Rob has got what has to be the worlds strangest Mac. It has maybe three or four hard drives in various states of decay, and after a bad crash can take most of the afternoon to come back up. I tell him it's because he has two system folders, but he thinks it's a good idea...

Interestingly it does actually run on Elsie, although not at quite the same speed as on my 7200. I was most impressed that the tool loader loaded the 68k chroma - I hadn't checked that and as Anvil was booting on Elsie I thought "NO!" but before I could get into Macsbug it had booted and I realised the 68k chroma plug was working!

Well, after last weeks long hard slog at the API's, yesterday I thought it time for some fun. I put in the "Stress-o-meter", which is a little LED bar graph you can have in the status bar that shows how busy ones Mac is, with a little processor icon by the side of it you can click to get usage and spec info. At first I thought this would be rather easy to implement. It was but it didn't work very well. Mixing in the sound manager load made things better though. Whether this will make it into the release version or not I don't know - depends on the feedback from testers. I like it. There are two versions - the instant reading one, and the integrating version (switchable from prefs). I thought the integrating one would be better but it isn't :-(

The Build manager was originally planned to be in-built into Anvil, but now that the plugs are working so well I'm doing it as a plug-in (I think) as it's easier to maintain like that. As we've seen, the messaging system is about 3 million times faster than Fant4's, so I don't think there's any overhead in making Build external to Anvil.



Stu's top 10 MODS of all time
Here something I've been working on for a while. I generally listen to must be over a 1000 MOD's a year, many are truly bad and get ditched fairly quickly. For general work I have a collection of some 600 good ones, and from these I have chosen my all time top 10. Number One was a hard choice.
This was supposed to be a top 5, but I couldn't do it. "Axel F" didn't make it, as although it was one of the first great mods, it's just too old now. No excuse I know.


At number 13... (OK, I couldn't do it in just 10 :-))
"Tasmanian Rock" - Bee Hunter of Jazz. This'll wake anybody up. Needs a couple of hundred watts to be worthwhile. Fairly repetitive, but then this type of track should be :-) Nice axe and Synth work. Reverb works well. Placing seems wrong and works better with "lead" in centre (on surround if you have it) rather than left.

At number 12...
"<<<<<<1993>>>>>>" - U4ia (Jim Young) a fairly melodic ditty which has some nice samples and goes on for some 8 minutes. Better than 1992. Jenesais is good too.

At number 11...
"PullBack" by ((dynamic)). Any MOD by this guy will be technically first rate. - nice piano.

At number 10...
"Emily" by M.C. Spicy/Saviour 1995. Great melody done up with a house beat. Party! "Denise" is good as well. Again, a bit "housey".

At number 9...
"Far from Earth" - "Arpegiator imphobia". No other info. I just like this. Some nice chorusing along with a damn fine melody.

At number 8...
"JazzDontStopMo" by Chrylian. Technically this guy is great. Unfortunately the melodies are easily forgotten. Maybe "Keep your Style" is better? 1994. Good working music though.

At number 7...
"Luna Waves" - 4-Mat. Get any 4-Mat MOD. Say no more.

At number 6..
"Shit Happens" by ((dynamic)) - this could be a prelude to PullBack which could be a reprise of this one :-)

At number 5...
"Digital Innovations I-III". The all time classic by Nuke of Anarchy.

OK, now we're really getting into the good stuff. It was hard splitting these four up, but here goes...

At number 4...
"Synthetic existence" parts 1 to 3 by Maxym (May 93) (Zywiec Copy Party versions) This set is just brilliant. Normally Maxym's MOD's are good, but this is an amazing work. The way it meanders over many minutes then comes back for quite a moving finish is just amazing.

At number 3...
"Close to the edge" by Airon Jayder. 1993. Competition version at Rykkinnhallen 1994. Goes on for about eight and half minutes. Excellent drums, axe and BG play. I must have played this MOD at least five thousand times. Use SoundTrecker - PP get's it's pitch wrong on some tracks. I have all this guy's work - it's all excellent. I had to pick just one and this track was it.

At number 2...
Well it had to be Bjorn A. Lynne. Take your pick. Anything by Dr. Awsome is incredible. Last known working for Team 17. I've chosen "SpaceDeliria". This one has been around a long time. A mix of Aboriginal instrumentation, 90's synths and straight talent. Another possible would have been "Prophet2001" on SoundTrecker (PP has big problems with this one).

And at number 1...
"Clairvoyance" by Doc Holiday and Twighlight. This is just great. The axe with pedal works a treat. Luckily most Mac sound chips can handle over driving (see "Develop" Issue 24) and this MOD does just that! There's nothing very clever about this MOD - it's just 100% there.



Other great MOD's that didn't quite make it...
"Guinness" (but not on PlayerPro).
"Coffee Blues" - the first time heard this one I was gobsmacked at the sheer "Live" feel to the music. This could've easily have made the chart except it's just too damn simple. Shame.
"Street Jungle" by Heatbeat of rebels!. Short and to the point.
"Get the Funk" by Bjorn Lynne.
"Sonic assualt" by ((dynamic)).

For MOD playing try PlayerPro 4.5.4 (which has interesting reverb and Surround Sound options) if you have the memory or the SoundTrecker if you don't. Personally I prefer the SoundTrecker drivers over Player Pros which seems to get the pitch wrong on some mods (quite a few actually).

If you would like the MODS listed above let me know and I'll see if we can get them put on the server. If you disagree with my Top 10 let me know and I'll point out the error of your ways :-)


Apple
Short and sweet this time.
Bad day at Apple then. Many layoffs. Goodbye to many projects including Open Doc. I'm sure they know what they are doing, but I get the feeling there is some panic at the "cut" the clone makers are taking.



Chat
I really really tried with CIS 3.0 but it just don't work. I'm sorry. Two days I've been struggling with it, but you get a bit annoyed when an email program doesn't even have an obvious "paste as quotation" command.

What's worse, if I try to send all the email in one go, it just hangs! Add on top of that it's runs slow, needs 7 megs AND it cocks up my PPP settings it's a non-starter. Specially first thing in the morning. And where's the in-basket? It makes CIM 2.43 look "usable" even though that doesn't have a paste as quotation command either.

Apple stock is up again! (PCS-191 on CompuServe). The bank phoned me in the middle of the week saying a 3 month investment had come up - what did I want to do? I'm beginning to think I should have said "Apple shares" now. Definitely something to watch specially with the 3400 out now and new motherboards due in the summer. Bus speed - hmm, dodgy one, but I'd probably put money on 66Mhz.
Although I do remember reading in Electronic Times about 18 months ago about new "active" busses that supposedly remove the termination problems, so it could be that Apple have had a hand in it and we may see something spectacular - the first 125Mhz bus? Now that would be cool.

Expensive, but cool.


More Anvil
Well, it had to happen didn't it. I'm slowly but surely moving away from pure assembler. What to? Well it's called Fantasm. Weird but true. You'll see in V5 lots of new macro parameter manipulation commands. These can take a parameter and perform string handling functions on it. So to convert from 68k to PPC we can use just macros that take a 68k instruction and translate it to PPC (or anything else for that matter). This is very nice - it means I can write in Fantasm for basically any processor I like and get dead fast code out of the back end. So all the native bits in future releases are (almost) directly translated from 68k source code. Whether we'll be publishing the macro libraries I don't know as there's a difference between writing just the macros you need and publishing a full translation set. What language we'll use for the string handling I don't know yet, but I would suspect something like addleft$ "#",/1 *inserts "#" character at position 0 of /1.

Along with a few intrinsic global variables it should be quite useful. We also give you access to important internal variables like the rs counter value as 32 bit values.

Thus the macro to convert a 68k immediate move.l to a PPC move may looks like:

*immediate long
	let a=val(/1) *get number as 32 bit
	let b=a/0xffff *get high order word
	let b$=str(b) *Convert to string
	let a$=str(a) 
*better generate some code...
	lis r3,r3,a$ *a$ is replaced with its value as ascii
	oris r3,r3,b$

Fun!
"But" I hear you say, what about global variables. Well V5 takes care of those as well by letting the linker tie them up. The global include files for globoffs and rs blocks for BSS were a nice simple way of doing it at the time, but now we need more flexibility. Hence in v5 you can just throw in globals where ever you need them. The linker will report double defs (he says...).




Lightsoft actually sober...Anyway, writing plugs is trivial compared to writing tools and that's what I'm now doing. I have Fantasm in little bits all over my desk (it's a door actually - they make nice big desks but not very good assemblers at all). Assemblers and linkers everywhere. Deep Joy!

Oh, finally, some have requested this, so here's another picture. This was taken last year before we got rid of those terrible Apple Performa monitors. I'm furthest away from the camera and now have much longer hair than that! Rob no longer has that rather fetching top he was wearing there :-)

(Spot the I.M. in traditional closed mode - Oh dear).

 

Till the next time...

Code on!

Stu.


Send mail to Stu



Back to Stu's Page Top Level

Back to Lightsoft Home Page