�* �Reading this pseudo variable will return the program counter at the start of the current input line. Assignment to this variable is possible when .FEATURE pc_assignment is used. Note: You should not use assignments to *, use .ORG instead. *https://cc65.github.io/doc/ca65.html#ss9.1.asize �&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: ; Reverse Subtract with Accumulator ; A = memory - A .macro rsb param .if .asize = 8 eor #$ff .else eor #$ffff .endif sec adc param .endmacro See also: .ISIZE *https://cc65.github.io/doc/ca65.html#ss9.2.cpu �MReading this pseudo variable will give a constant integer value that tells which CPU is currently enabled. It can also tell which instruction set the CPU is able to translate. The value read from the pseudo variable should be further examined by using one of the constants defined by the "cpu" macro package (see .MACPACK). It may be used to replace the .IFPxx pseudo instructions or to construct even more complex expressions. Example: .macpack cpu .if (.cpu .bitand CPU_ISET_65816) phx phy .else txa pha tya pha .endif *https://cc65.github.io/doc/ca65.html#ss9.3.isize �<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: .ASIZE *https://cc65.github.io/doc/ca65.html#ss9.4.paramcount �%This builtin pseudo variable is only available in macros. It is replaced by the actual number of parameters that were given in the macro invocation. Example: .macro foo arg1, arg2, arg3 3 .error "Too few parameters for macro foo" .endif ... .endmacro See section Macros. *https://cc65.github.io/doc/ca65.html#ss9.5.time �
Reading this pseudo variable will give a constant integer value that represents the current time in POSIX standard (as seconds since the Epoch). It may be used to encode the time of translation somewhere in the created code. Example: .dword .time ; Place time here *https://cc65.github.io/doc/ca65.html#ss9.6.version �gReading this pseudo variable will give the assembler version according to the following formula: (VER_MAJOR * 0x100) + VER_MINOR The upper 8 bits are the major-, the lower 8 bits are the minor version. Example: For example, version 47.11 of the assembler would have this macro defined as 0x2f0b. Note: until 2.19 this pseudo variable was defined as (VER_MAJOR * 0x100) + VER_MINOR * 0x10 - which resulted in broken values starting at version 2.16 of the assembler. For this reason the value of this pseudo variable is considered purely informal - you should not use it to check for a specific assembler version and use different code according to the detected version - please update your code to work with the recent version of the assembler instead (There is very little reason to not use the most recent version - and even less to support older versions in your code). *https://cc65.github.io/doc/ca65.html#ss9.7 .addrsize ��The .ADDRSIZE function is used to return the internal address size associated with a symbol. This can be helpful in macros when knowing the address size of a symbol can help with custom instructions. Example: .macro myLDA foo .if .ADDRSIZE(foo) = 1 ;do custom command based on zeropage addressing: .byte 0A5h, foo .elseif .ADDRSIZE(foo) = 2 ;do custom command based on absolute addressing: .byte 0ADh .word foo .elseif .ADDRSIZE(foo) = 0 ; no address size defined for this symbol: .out .sprintf("Error, address size unknown for symbol %s", .string(foo)) .endif .endmacro +https://cc65.github.io/doc/ca65.html#ss10.1.bank �{The .BANK function is used to support systems with banked memory. The argument is an expression with exactly one segment reference -- usually a label. The function result is the value of the bank attribute assigned to the run memory area of the segment. Please see the linker documentation for more information about memory areas and their attributes. The value of .BANK can be used to switch memory so that a memory bank containing specific data is available. The bank attribute is a 32-bit integer, and so is the result of the .BANK function. You will have to use .LOBYTE or similar functions to address just part of it. Please note that .BANK always will get evaluated in the link stage, so an expression containing .BANK never can be used where a constant, known result is expected (for example, with .RES). Example: .segment "BANK1" .proc banked_func_1 ... .endproc +https://cc65.github.io/doc/ca65.html#ss10.2 .bankbyte �The function returns the bank byte (that is, bits 16-23) of its argument. It works identical to the '^' operator. See: .HIBYTE .LOBYTE +https://cc65.github.io/doc/ca65.html#ss10.3.blank �EBuiltin function. The function evaluates its argument in parentheses and yields "false" if the argument is non blank (there is an argument), and "true" if there is no argument. The token list that makes up the function argument may optionally be enclosed in curly braces. This allows the inclusion of tokens that would otherwise terminate the list (the closing right parenthesis). The curly braces are not considered part of the list, a list just consisting of curly braces is considered to be empty. As an example, the .IFBLANK statement may be replaced by .if .blank({arg}) +https://cc65.github.io/doc/ca65.html#ss10.4.concat ��Builtin string function. The function allows to concatenate a list of string constants separated by commas. The result is a string constant that is the concatenation of all arguments. This function is most useful in macros and when used together with the .STRING builtin function. The function may be used in any case where a string constant is expected. Example: .include .concat ("myheader", ".", "inc") This is the same as the command .include "myheader.inc"