The assembler which comes bundled with BBC BASIC is a really great feature, making it possible to develop assembly language programs straight out of the box. However it is slow and unsuitable for assembling large sources due to the limited amount of memory available and the necessity to have all the source and assembler output in memory at the same time. Also, the editing functions provided in BASIC are limited when dealing with large programs.
This assembler uses tokenised source for speed and reduced memory footprint and also allows the use of (nested) include files, making it possible to assemble much larger sources such as for a complete 16KB paged ROM or OS replacement. It is also possible to assemble to a file or to paged RAM rather than to main memory. Improved editing capabilities are also provided. Another feature is a command which automatically generates labels for disassembled code.
In the way that the BBC BASIC assembler is BASIC with an assembler tacked on, this is more of an assembler with a subset of BBC BASIC tacked on. Forward references are resolved by two pass assembly which is done automatically without having to code it specially. Most of the integer and string capabilities of BBC BASIC are present, as is multi-line IF-THEN-ELSE-ENDIF (like FORTRAN) and a unique loop structure allowing the equivelant of standard loop types such as FOR-NEXT, REPEAT-UNTIL, WHILE-ENDWHILE as well as other variations to be constructed.
Unfortunately, like a lot of projects, it was never quite finished. However, all the basic functionality is there and it has proved very useful for assembling large programs. User defined functions and macros never got added. It was also planned to have a BRK based debugging system but this didn't get done either. Neither was GOTO or an equivelant implemented.