!!!Cycle neutral branching

General Information

Author: Michael J. Mahon \\
Assembler: generic \\

From Michael J. Mahon:

I've found it useful to devise macros to do certain conditional
operations in constant time. For example, "increment Y if carry set"
(with A volatile) is:
{{{
BCS *+3	  ; Branch to INY
LDA $C8	  ; $C8 = INY
}}}

If Carry is set, the branch takes 3 cycles and the INY 2. If Carry is
clear, the branch takes 2 cycles and the LDA 3. So this CINY macro
always takes 5 cycles.