REVIEW OF COMPASS, ZAP, AND RAVEN ASSEMBLERS
By Stephen Weir
COMPASS (not to be confused with COMPAS Pascal), ZAP and RAVEN are tape
based assemblers for use with the Nascom range of microcomputers.
COMPASS stands for COMPression ASSembler and is written by Level 9, the
same people who write those excellent adventures. As you would expect
therefore, COMPASS is a good quality piece of software with no bugs. It comes
on a TDK cassette with a neatly printed label together with a user manual
bound in the usual “Level 9 blue”. On the tape there is the assembler itself
within a relocator program followed by a program to convert ZEAP files to
COMPASS files should you wish to change over to COMPASS from ZEAP but still
use your ZEAP files. Finally, there is the source for the ZEAP convertor so
that you can see how it works and also use it to try out the editing
The relocator is very useful as you can relocate COMPASS to the top of
your RAM and then you have the rest of RAM from 1000h upwards free. Once
relocated, COMPASS takes up about 7K. On cold start it is necessary to specify
start addresses for both source file and object code (this is a default value
only and can be changed at any time by an ORG directive in the source). It is
also possible to specify the symbol table and workspace area. So, providing
you have enough memory it should be possible to arrange things so that you can
always keep the required area of memory free for the object code.
When you are testing the assembled program while the assembler is still
in RAM it is often the case that the program will not do as intended and may
corrupt part of the assembler. On return to COMPASS , however, a checksum
routine is carried out so that if COMPASS has been corrupted a message is
displayed. It is then necessary to reload COMPASS.
As I have already mentioned, COMPASS compresses the source code. It does
this by using a 1-byte code for each keyword. Assembly speed is good and Level
9 claim 3000 lines per minute, but since I can’t count that fast, I’ll just
take their word for it! During assembly, any errors are displayed on the
listing and assembly is resumed (unlike ZAP80 and RAVEN which abort assembly
at the first error).
Lines are entered with line numbers and editing is carried out using the
NAS-SYS screen-editing. The line-numbering system adopted by Level 9 is a
little strange to say the least. Firstly, numbers are in HEX and they appear
on the far left of the assembly listing next to the address field. Two columns
of Hex numbers make reading a little confusing. Secondly, it is not possible
to enter lines in increments other than one but it is possible to insert lines
using the Insert command, which also automatically numbers the inserted lines
and renumbers all succeeding lines.
Commands are entered using single characters and include listing (number
of lines listed at a time may be set), string search, assemble (with listing
options), and tape read, write and verify which merely use the NAS-SYS
routines and therefore do not allow file names. NAS-SYS restart instructions
and subroutine calls are not supported. For listing to a printer the NAS-SYS
‘X’ or ‘U’ commands have to be used.
The manual is mainly just a guide to the facilities available and does
not attempt to teach the use of an assembler. This is also true of the other
two manuals. However, there is some useful information given which should
allow you to add extra commands to COMPASS.