QMAC v0.10 and QLINK v0.05

This is a file giving a list of the changes made to the original GST versions
of the macro assembler and linker, and should be read in conjunction with the
original manual.

QMAC changes
============

To simplify entering filenames, the TK2 DATA default (if present) is added to
source filenames and INCLUDEd filenames if the supplied name cannot be found.
If this still fails, the name is tried again with the TK2 PROG default and a
user configured sub-directory. (INCLUDEd files only). The intention is that
you set prog_use to point at the assembler directory, and a sub-directory
within that contains commonly included files which are not program specific,
such as the QDOS INCLUDE files on this disc. Include files which are specific
to a single program should be kept in the same place as the source files for
the program, and data_use points to them.
        -----------------------------------------------------------
A new OPT directive has been added. This allows you to change some assembler
OPTions on a line by line basis. The current OPTions are :-

OPT BRS or OPT BRL      This sets the default branch size. If you enter
                        BRA label, this will be treated as BRA.S or BRA.L
                        depending on the setting of this OPTion

OPT PC or OPT ABS       This sets the default addressing mode to ABSolute or
                        PC relative addressing

OPT MEX or OPT NOMEX    This turns macro expansion on and off, and overrides
                        the NOEXPAND directive often hidden in macro libraries.
                        It is an OPTion so it can be turned on and off around
                        individual blocks of code if required. This prevents
                        all occurrences of a given macro being expanded when
                        it's only one occurrence you are interested in.
        ------------------------------------------------------------
A Qjump standard configure block has been added to the program to allow these
OPTions (among other things) to be configured to your favourite settings. You
can also configure :-

Window details -        size/position/colours/banner headline

Command line options -  list/nolist/errors
                        bin/nobin
                        sym/nosym
                        link/nolink

Output file type -      ( 0 for extensions, device drivers etc, 1 for jobs )
                        This is supplied configured to type 0. This is
                        different to the original MAC which always produced
                        type 1 files. See FILETYPE directive later.

Pause on quitting -     how many 50ths of a second to wait before disappearing.
                        This is needed when running under the pointer
                        environment to give you a chance to read the
                        terminating messages.

File name extensions -  input and output file extensions. The original MAC used
                        to insist on input files being called _asm, relocatable
                        files as _rel, listing files as _list, and output files
                        as _bin. These are the configured defaults as supplied,
                        but you can set your own, or even set no extension if
                        you wish. If you do this, it's up to you to make sure
                        all files have unique names. The assembler will get
                        very confused if you don't.
                        Include (and incbin) directory is set to INCLUDE_
        ------------------------------------------------------------
A new assembler directive INCBIN has been added to allow binary files to be
added to the output stream. This is particuarly useful when including large
data tables, fonts, screen pictures etc. Example :-

label   INCBIN  loadscreen_scr
        ------------------------------------------------------------
User symbols now have up to 32 significant characters. The previous MAC limit
was 8 characters. This change means that some sources which used to assemble
under MAC may need changes to long names to assemble correctly under QMAC.
User symbols may also begin with a leading full stop or underscore.
        ------------------------------------------------------------
A new command line option -NOWINDS has been added to allow the assembler to do
it's work invisibly, without opening any windows.
        ------------------------------------------------------------
One channel may optionally be passed to the assembler, which will be used as
the report channel. If a channel is passed this way, the -NOWINDS option is
set for you to prevent further screen channels being opened. This is
particuarly useful when driving the assembler from a front-end MAKE utility.
Example :- EX QMAC,#1;'testfile'    will report progress to basic's #1
        ------------------------------------------------------------
A new conditional assembly construct has been added, which is nestable down to
256 levels, which should be enough for most occasions. It is useful if you want
to produce several different versions of code from one source with only minor
changes, eg a rom version and a ram version of the same file. Example :-
        GENIF   romversion = 1
            dc.l  $4afb0001     etc.
        ENDGEN
        GENIF   romversion <> 1
            bra.s start
        ENDGEN
        ------------------------------------------------------------
A new command line option -FILETYPE, and assembler directive FILETYPE have
been added to override the configured filetype setting on a 'per file' basis.
        ------------------------------------------------------------
A new command line option -DATA, and assembler directive DATA have
been added to override the configured dataspace setting on a 'per file' basis.
Example :- EX QMAC;'testfile -filetype 1 -data 4K'
        ------------------------------------------------------------
A new NOT operator has been added, symbol ^
        ------------------------------------------------------------
DS.x on the end of a section now works correctly!
        ------------------------------------------------------------
A new group of data files has been added called SMS**_in, the files contain
the SMS2 equivalants of the QDOS parameters contained in the files QDOS1_in and
QDOS2_in.

          SMS1_in  - contains the QDOS error keys
          SMS2_in  - contains the system variables
          SMS3_in  - contains the SuperBASIC variables
          SMS4_in  - contains the offsets in BASIC channel definition
          SMS5_in  - contains the job header and save area definitions
          SMS6_in  - contains the memory block table definitions
          SMS7_in  - contains the channel definition header for all channels
          SMS8_in  - contains the file system channel channel definition block
          SMS9_in  - contains screen driver data block definition
          SMS10_in - contains the io queue header definitions
          SMS11_in - contains the arithmetic interpreter operation codes
          SMS12_in - contains the commands for use with the IPC
          SMS13_in - contains the system hardware keys
          SMS14_in - contains the system trap definitions - trap 1
          SMS15_in - contains the io allocation trap definitions - trap 2
          SMS16_in - contains the io sub-system trap definitions - trap 3
          SMS17_in - contains the vectored routines

        ------------------------------------------------------------
QLINK changes
=============

These changes are largely the same as those provided for QMAC.

Data default added to filenames as above. Libraries are also searched for
in a user defined sub-directory off the program default.

Configure block added with options to set window details/filetype/extensions/
pause on quitting/program dataspace/command line options.

-FILETYPE command line option and FILETYPE directive added.

-DATA command line option added.

-NOWINDS option and channel passing added as above.

Input buffer increased to match assembler and allow longer command lines

OFFSET on the end of a file now works properly
