[Coco] 6309 andcc z,v ?
Robert Gault
robert.gault at worldnet.att.net
Mon Jun 11 22:47:05 EDT 2007
Roger Taylor wrote:
> While looking through an "as09.exe" assembler test file, I noticed the
> following line:
>
> andcc z,v ; alternate
>
> And the source code assembles without errors! You would think the
> author meant, "exg z,v" but even that is strange unless he means "0,v"
> since "0" is actually the name of a 6309 register. Actually, there's
> two 0 registers, so in CCASM I call them "0" and "00" I think. I might
> add the "z" name in case someone is used to it, but still... what the
> heck is andcc z,v, and what does it do?
>
> Examining the code stream, I see that the opcodes for the above
> instruction are:
>
> $1C $F9
>
> I'm not able right now to spend time running this through a debugger to
> watch the CPU registers, so if anyone wants to check this out and post
> your findings, please let us know what happens!
>
As others have stated, regCC has bits assigned E,F,H,I,N,Z,V,C. The
problem with that notation is interpreting what AND means in this context.
You can AND with either 0 or 1. The instruction ANDCC z,v is ambiguous
in that it does not indicate what value is being used. The Motorola
approved syntax is ANDCC #n and in this context the code could be either
ANDCC #%00000110 or ANDCC #%11111001. Both separate bits z,v from the
rest, but one keeps only z,v and the other keeps all but z,v.
Whatever as09.exe intended, this is not a syntax that should be used
with 6309 code where there actually is a V register.
More information about the Coco
mailing list