| This Christmas will be my 25 month's anniversary with the Metacomco
assembler. I use the assembler almost entirely, and only haul out
the C compiler or Basic to run public domain software, so I think
I have a few comments. First, it is worth nothing that I got the
assembler as a part of what they used to call a "developer's kit"
(which included the assembler, linker, 1BM PC versions of both,
and various support things), so I'm not entirely sure how the packaging
works.
By buying the Metacomco assembler, do you mean buying it directly
from Metacomco, or buying the white package Amiga assembler? (Not
that I'd know the difference).
1) Does the assembler come with a linker? I'd sure be surprised
if it didn't. The linker, ALINK (aka Deep Thought) also appears
to be a Metacomco product, so I don't see why they'd be stingy with
their misery. In any case, I don't see how you'd be able to run
anything if they didn't give you one.
Even with ALINK, unless they give you a new version, I'd recommend
that you just keep it for veryifying BLINK bugs, but use a PD copy
of BLINK instead. BLINK is buggier, and I figure I've lost a total
of two days continuous work chasing BLINK bugs, but I've still spent
less time with BLINK than I would have with ALINK.
Then again, if you don't search too many libraries, ALINK isn't
so bad.
2) Does the assembler come with predefined macros? Well, my copy
came with a full flock of include files, just like in the back of
the RKM. Then again, I got the developer's kit, so I don't know
what Metacomco's comes with. If it does come with include files,
make sure they're recent (i.e. not leftover version 1.0 files).
If they're out of date, they won't do bad things, but all the stuff
implemented in later releases will be unavailable to your program.
If it doesn't come with include files, or if it comes with old ones,
you've got three choices: Steal the new ones from someone who has
them (probably illegal), type them in from the examples in the back
of the RKM (maybe illegal, and slower and more expensive if you
don't already have an RKM), or send the $20 to Commodore Amiga for
the Native Developer's Upgrade package (someone else is going to
have to point you to the precise details on this one).
3) Is the macro preprocessor fairly flexible? No, not really. There
are macros, and they work, but nothing to write home about. In
general, I avoid them because there's no way to surpress the MACRO
expansion text in your assembly listing, so if you want to get an
assembly listing, you either put up with looking at all the macro
expansions, or you edit the listing before you print it.
I've been thining of writing a listing file post-processor just
to surpress these things.
4) Was this a good product considering what I paid for it? Hard
to say. It was part of a package deal, and if we didn't pay the
money at the time, our only recourse would have been to pay the
money for the assembler only package, or stick with poking hex from
basic as my means of assembler hacking. It was the only game in
town at the time, so I played along.
5) Does it have any problems running under DOS 1.2? I've run it
under 1.0, 1.1 and 1.2, and I don't think it's done a single bad
thing to me. No bugs, no gurus, just slow.
General comments:
It's very slow. If you use macros, doubly so. It also doesn't
buffer its input and output files too well, so if you're trying
to read the source and output object and list to the same drive,
you're gonna sit there forever whilst it tries to saw your disk
in half. It's strongly recommended to output everything to RAM:.
Except that it's big. First off, it's big. Second, you have to
know ahead of time how much symbol space it's gonna need, and give
it as an argument on the command line as the heap size. The default
value is pretty big, but if you decide to include intuition.i, you're
probably gonna need a heap size of about 120000 bytes. This heap
needs to be allocated as a contiguous segment, so if your memory
is fragmented, you lose. Just as an added penalty feature: The
one bug I have run across is that if the assembly is aborted due
to insufficient heap space, it doesn't properly deallocate all its
memory, leaving your memory fragmented, with the largest hunk too
small to get a big enough heap next time. Reboot time.
Because of those first two, you generally don't multitask this thing
much on a 512K machine, beyond little clock programs in your title
bar.
Next: Slow is bad enough. Having to read those damned include files
is even worse. Best to use the include files with comments stripped.
Even still, it's slow. "I know! I'll just read the include files
on pass 1, since they're just symbol definitions" I says to myself.
Wrong! No PASS1/PASS2 conditional. "Ok, I'll just define a symbol
at the end of the module, and if it's defined at the beginning of
the module, it must be pass 2!" Wrong! It makes sure this doesn't
work. So, there you are, stuck reading the include files on both
passes.
All in all, it's an adequate assembler, but still very irritating.
Only problem is that I know of no other assembler that's better,
and most of the other assemblers I've see are ones that you have
to buy a whole C compiler to get.
|