assignments to <tt/*/, use <tt/<ref id=".ORG" name=".ORG">/ instead.
+<sect1><tt>.ASIZE</tt><label id=".ASIZE"><p>
+
+ Reading this pseudo variable will return the current size of the
+ Accumulator in bits.
+
+ For the 65816 instruction set .ASIZE will return either 8 or 16, depending
+ on the current size of the operand in immediate accu addressing mode.
+
+ For all other CPU instruction sets, .ASIZE will always return 8.
+
+ Example:
+
+ <tscreen><verb>
+ ; Reverse Subtract with Accumulator
+ ; A = memory - A
+ .macro rsb param
+ .if .asize = 8
+ eor #$ff
+ .else
+ eor #$ffff
+ .endif
+ sec
+ adc param
+ .endmacro
+ </verb></tscreen>
+
+ See also: <tt><ref id=".ISIZE" name=".ISIZE"></tt>
+
+
<sect1><tt>.CPU</tt><label id=".CPU"><p>
Reading this pseudo variable will give a constant integer value that
</verb></tscreen>
+<sect1><tt>.ISIZE</tt><label id=".ISIZE"><p>
+
+ Reading this pseudo variable will return the current size of the Index
+ register in bits.
+
+ For the 65816 instruction set .ISIZE will return either 8 or 16, depending
+ on the current size of the operand in immediate index addressing mode.
+
+ For all other CPU instruction sets, .ISIZE will always return 8.
+
+ See also: <tt><ref id=".ASIZE" name=".ASIZE"></tt>
+
+
<sect1><tt>.PARAMCOUNT</tt><label id=".PARAMCOUNT"><p>
This builtin pseudo variable is only available in macros. It is replaced by
N = Function (FuncAddrSize);
break;
+ case TOK_ASIZE:
+ if (GetCPU() != CPU_65816) {
+ N = GenLiteralExpr (8);
+ } else {
+ N = GenLiteralExpr (ExtBytes [AM65I_IMM_ACCU] * 8);
+ }
+ NextTok ();
+ break;
+
case TOK_BLANK:
N = Function (FuncBlank);
break;
N = Function (FuncIsMnemonic);
break;
+ case TOK_ISIZE:
+ if (GetCPU() != CPU_65816) {
+ N = GenLiteralExpr (8);
+ } else {
+ N = GenLiteralExpr (ExtBytes [AM65I_IMM_INDEX] * 8);
+ }
+ NextTok ();
+ break;
+
case TOK_LOBYTE:
N = Function (FuncLoByte);
break;
{ ccNone, DoUnexpected }, /* .ADDRSIZE */
{ ccNone, DoAlign },
{ ccNone, DoASCIIZ },
+ { ccNone, DoUnexpected }, /* .ASIZE */
{ ccNone, DoAssert },
{ ccNone, DoAutoImport },
{ ccNone, DoUnexpected }, /* .BANK */
{ ccNone, DoIncBin },
{ ccNone, DoInclude },
{ ccNone, DoInterruptor },
+ { ccNone, DoUnexpected }, /* .ISIZE */
{ ccNone, DoUnexpected }, /* .ISMNEMONIC */
{ ccNone, DoInvalid }, /* .LEFT */
{ ccNone, DoLineCont },
{ ".ALIGN", TOK_ALIGN },
{ ".AND", TOK_BOOLAND },
{ ".ASCIIZ", TOK_ASCIIZ },
+ { ".ASIZE", TOK_ASIZE },
{ ".ASSERT", TOK_ASSERT },
{ ".AUTOIMPORT", TOK_AUTOIMPORT },
{ ".BANK", TOK_BANK },
{ ".INCBIN", TOK_INCBIN },
{ ".INCLUDE", TOK_INCLUDE },
{ ".INTERRUPTOR", TOK_INTERRUPTOR },
+ { ".ISIZE", TOK_ISIZE },
{ ".ISMNEM", TOK_ISMNEMONIC },
{ ".ISMNEMONIC", TOK_ISMNEMONIC },
{ ".LEFT", TOK_LEFT },
TOK_ADDRSIZE,
TOK_ALIGN,
TOK_ASCIIZ,
+ TOK_ASIZE,
TOK_ASSERT,
TOK_AUTOIMPORT,
TOK_BANK,
TOK_INCBIN,
TOK_INCLUDE,
TOK_INTERRUPTOR,
+ TOK_ISIZE,
TOK_ISMNEMONIC,
TOK_LEFT,
TOK_LINECONT,