For a change of perspective:
Macro was ported over from the TX-0, meaning this is 1950s software and must be one oft the earliest symbolic assemblers, ever.
And it is entirely agnostic of the instruction set (there's a directive to purge the predefined symbols and you get a blank late to work with.)
It's amazing, what it does, like macros, cascading definitions, even macros within macros, etc.
Compare this to a 1970s assembler, like the original MOS cross-assembler for the 6502, and this is still way ahead!
On the other hand, yes, it was written for a rather restricted community and everybody would have read the manual. But it's also a bit unfair to expect this to work just like any assembler written 50+ years later.
It's actually amazing, how few restrictions, there are:
1) a program starts with the title, which will be also the header for every page of a printout
2) you have to choose on your own, where to include CONSTANTS and VARIABLES (but you can do so at multiple locations)
3) you can't have storage instructions (i.e., CONSTANTS, VARIABLES) inside a macro (which is only logical)
4) It doesn't auto-flush the internal buffer at the end, so a final START is mandatory (but you'll need to define a start address anyway, because of the binary loader).
And that's actually it. Otherwise, it's mostly free-form.
(Compare this with quirky modern requirements, like a magical "main" function in C. If I come from Algol, how am I supposed to know this? Or, the other way round, if I come from C, how am I supposed to know that an Algol program is supposed to start with PROGRAM? Obviously, this is all crap! ;-) And the handling of storage instruction is actually rather simple, if we compare this to the handling of malloc in C.)
Yes, the use of TAB as a non-white space character is quirky from a modern perspective, but, I guess, it kind of makes sense, if you're writing this on paper (i.e. a Flexowriter), and a line per instruction would have been quite wasteful and forced you to look at miles of paper. And don't forget, none of the modern conventions (like white-space agnostic code formats) existed at that time, rather, there would be a prehistory from the Whirlwind, etc., things, we have no idea of.
I still think, even with the more obvious restrictions, like a symbol is just up to 3 characters (but may consist of any anum chars) in the original incarnation, given the circumstances (like this is all working on a 4K machine), it's an amazing piece of software!
(We may feel privileged that we have still access to this.)
Best,
Norbert