Re: 65816 long addressing in assembler

From: Steve Judd (sjudd_at_ffd2.com)
Date: 2009-01-03 18:18:45

Hi,

Catching up on 9 months of unread email...

On Mon, 13 Oct 2008, Vanessa Ezekowitz wrote:

> Now, I can't say whether a backslash is the ideal character...  Looking 
at the docs for Sirius (Steve Judd's 65816 assembler), <  ! and > are 
what he uses to force 8, 16, and 24-bit operands, respectively, when used 
with absolute addressing.

From the W65C816S data sheet, section 7, "Recommended W65C816S Assembler 
Syntax Standards":

7.3.3.5 In any location in an operand where an address, or expression 
resulting in an address, can be coded, the assembler shall recognize the 
prefix characters <, |, and >, which force one byte (direct page), two 
byte (absolute), or three byte (long absolute) addressing.  In cases where 
the addressing modes is not forced, the assembler shall assume that the 
address is two bytes unless the assembler is able to determine the type of 
addressing required by context, in which case that addressing mode will be 
used.  Addresses shall be truncated without error in an addressing mode is 
forced which does not require the entire value of the address.  For 
example, LDA $0203 and LDA |$010203 are completely equivalent.  If the 
addressing mode is not forced, and the type of addressing cannot be 
determined from context, the assembler shall assume that a two byte 
address is to be used.  If an instruction does not have a short addressing 
mode (as in LDA < which has no direct page indexed by Y) and a short 
address is used in the operand, the assembler shall automatically extend 
the address by padding the most significant bytes with zeroes in order to 
extend the address to the length needed.  As with immediate address, any 
expression evaluation shall take place before the address is selected; 
thus, the address selection character is used only once, before the 
address of expression.
7.3.3.6 The ! (exclamation point) character should be supported as an 
alternative to the | (vertical bar).

-S

       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail pre-2.1.8.