atari email archive

a collection of messages sent at Atari from 1983 to 1992.

MAC65 7.3

(1 / 1)


Just released, MAC65 7.3. This version has two bugs fixed. One was were
it was incorrectly reporting errors on numbers greater than the current
radix and the other was were it was incorrectly handling null operands
in .BYTE, .WORD and .LONG directives (it should have stuck in 0's).

I've changed the feature where statements with undefined opcodes, macros,
or psuedo-ops were assumed to be .WORD's. Instead an error message will be
printed. If you relied on that feature, you can turn it back on with 

	.ENABL .WORD		;re-enable the .WORD feature

Commas between arguments on .BYTE, .WORD and .LONG are optional now. The
macro case such as:

	.MACRO SOME A B C D E F
	.word B D F
	.ENDM

will not generate errors or extra 0's if, for example, the arguments D and F
are blank. (It will generate a single word of 0 if B is also blank).

The up-arrow character (^) means different things at different places in
the source. In a MACRO argument, it means the following non-space character
is the delimiter to the macro argument. For example:

	macro_call ^\argument with spaces and commas in it\

means to pass all the text between the two '\'s as argument 1 to the macro.
This has been a problem where you want to pass an ^ as an argument to a
macro (such as ^H0F0). I added a funtion whereby you can change the escape
character to something else to avoid these collisions. For example:

	.MESCAPE expression	;expression must resolve to a value
				;between 0x21 to 0x7E
	.MESCAPE '~		;changes it to tilda

The previous escape character is saved (one level of nesting). You can
restore the previous escape character by using the .MESCAPE op without an
argument. For example:

	.MESCAPE '~		;change escape char to tilda
	.INCLUDE FILE		;input file that has ^'s in macro args
	.MESCAPE		;restore the escape char

One other change, which I made under protest and would be happy to put back, is
in the checking of overflow. Values placed into a byte must now be between the
values -128 <= n <= 255 and values placed into a word must be between the values
-32768 <= n <= 65535. It used to allow bytes of -256 <= n <= 255 and words
-65536 <= n <= 65535. You may be irritated with error messages if you use the
^C (1's compliment) operator in any of your expressions that have bits 7 or 
15 set. 

ds
Message 1 of 1

Aug 18, 1988