Anvil
Stu's top ten MODS of
all time
Apple
Chat
Some more Anvil
Picture Gallery
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.
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...).
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.