TMS7000  Assembler/Linker Operational Notes

V3.1 88.005 TMDS Release

1. If you plan to link modules make sure to use the RORG Assembler Directive
  in your assembler file instead of AORG.  If you must locate your program
  segment at an absolute starting address you can use the PROG command in
  your linker control file.  More on the PROG command and RORG can be found
  in the TMS7000 FAMILY DATA MANUAL.

2. The Assembler will abort if the $ASG directive is used to assign a string
  that is longer than 6 characters to a symbol.

3. Care should be taken to not inadvertantly run macro names and parameters
  togather because the assembler will truncate the macro name and not
  generate an error or warning.

4. The description of the TASK command in section 3.3 of the Link Editor
  users guide suggest that if a TASK name is not provided the IDT name of the
  first module will be used.  This is incorrect.  If a TASK name is not
  provided the task will be named MAIN.

5. The COPY directive should not be used within a macro definition because the
  code is inserted at the end of the macro instead of directly after the COPY
  directive.  In future versions the COPY directive will not be allowed in
  macros.

6. The users guide incorrectly implies that the macro name should be included
  with the $END command to end a macro definition.  Any text on the line
  after the $END command is simply a comment.

7. The MLIB directive on the PC has the format:
           MLIB 'e:'
  The MLIB directive defines the disk ID  of the disk containing the macros
  (Ex. a:,b:,e:, etc.).  The macros need to be located in the same directory
  that the source files are in or they can be located on another disk.  Also
  macros should have no extensions such as .asm, .mac, etc.

8. Care should be taken to insure that all macros are concluded with a $END.
  No error will be given but unexpected results could occur.

9. It should be noted that if the program counter reaches >FFFF, the next
  increment will cause the counter to start at >0000 without warning or
  error message.

10.It should be noted that when using unary operators in an expression the
  assembler will give a WARNING - TRAILING OPERANDS message if you put two
  identical operators togather such as a++b or a--b.  This situation can
  be resolved by putting the unary operator in parenthesis such as
  a+(+b) or a-(-b).

11.The CSEG directive documentation wrongly suggest that there is an
  optional <exp> that will do memory alignment.  The directive should
  have the format:
         [<label>]  CSEG  ['<string>' [<comment>]]

12.It should be noted that hex constants are not sign extended meaning that
  given >F0 as an 8-bit quantity does not give you >FFF0 in a 16-bit
  quantity but gives you >00F0.  This is important when considering
  expressions.