!pr0
!lm12
!rm75
S-C Macro Assembler Version 1.1

A new version of the S-C Macro Assembler is just about ready, and it's going to be great!

I have added many new features, corrected a few problems, and created a special version to take advantage of the extra features of the new Apple //e computer.  Here's a summary of the new items, so far:


!lm+4
!pp-4
New or Extended Features:

1.  The .HS directive now allows optional "." characters before and after each pair of hex digits.  (e.g., .HS ..12..34..AB)  This makes for easier counting of bytes, and allows you to put meaningful comments above or below the .HS lines.

2.  .DO--.FIN can now be nested to 63 levels, rather than just 8 levels.

3.  In EDIT command, the insert mode is now invoked by ^A (ADD), rather than ^I.  The TAB or ^I keys now perform a clear-to-tab function.  Skip-to-tab is still invoked by ^T.

4.  Comment lines may now begin with either "*" or ";".

5.  Added .SE directive, which allows re-definable symbols.

6.  Binary constants are now supported.  The syntax is "%11000011101" (up to 16 bits).

7.  ASCII literals with the high-bit set are now allowed, and are signified with the quotation mark:  LDA #"X generates A9 D8.  Note that a trailing "-mark is optional, just as is a trailing apostrophe with previous ASCII literals.

8.  Blanks are now compressed inside macro skeletons when they are added to the symbol table.  This saves about 30% of the space used by the skeletons.

9.  The TEXT/ <filename> command now outputs the current TAB character (default ctrl-I).  It used to put out control-I no matter what the current TAB character was.

10. During assembly, the assembler now protect $001F-$02FF and $03D0-$07FF, as well as MACLBL thru EOT and MACSTK thru $FFFF.

11. Now allow USER parameters to override memory protection.  $101C-101D contains lower bound, and $101E-101F contains the upper bound of an area the user wants to UN-PROTECT.  (The parameter for the starting page of the symbol table has moved from $101D to $1021, or $D01D to $D021.)

12. Added .PH and .EP directives, to start and end a phase.  With these directives you can assemble a section of code that is intended to be moved and run somewhere else, without having to create a separate Target File.

13. Added .DUMMY and .ED to start and end a dummy section.

14. The TAB character may now be set to any character, including non-control characters, if you so desire.


Fixes to Known Problems:

1.  Eliminated endless loop which occurred when a character > "Z" was typed in column 1 as a command.

2.  .TI now properly spaces at top of each page, and at beginning of symbol table.

3.  .AS and .AT now assemble lower case properly.

4.  Changed the way the relative branches are assembled, so that "*" is equal to the location of the opcode byte.  It used to be the location offset byte, which was non-standard.

5.  Now pass two errors emit the proper number of object bytes, so that false range errors are not indicated.

6.  HIDE now performs MERGE prior to HIDE, in case you forgot to do so.


Features added in support of Apple //e:

1.  The Apple //e version allows you to change between 80- and 40- column screens at will, using PR#3 to go to 80-columns, or ESC-^Q to go to 40-columns.

2.  In both normal input and edit modes, the DELETE key acts like a backspace key.  It is interpreted the same as a left arrow (^H).
!lm-4
!pp0


And there's more!  The release disk will now include 80-column versions of the assembler for the Videx, STB, and ... 80-column cards.

I haven't made up my mind yet about a new price, how we'll handle the upgrades, or how much the charge will be.  We'll have the final details in AAL next month.
