SUBX bug

Peter Jakacki wrote: »BTW, I found a bug with SUBX too, is there one place where we can report these bugs or observations.
I found the (possibly same) bug as well. SUBX seems to be ignoring C.
Here's my test code:
dat
org
or dirb, #$FF
mov t1hi, #2 ' 64-bit number: $0000000200000005
mov t1lo, #5
mov t2hi, #1 ' 64-bit number: $0000000100000006
mov t2lo, #6
sub t1lo, t2lo wc ' -> $FFFFFFFF, C -> 1
setbc outb, #0
subx t1hi, t2hi ' -> $00000001 (should be $0000000)
cmp t1hi, #0 wz
setbz outb, #1
loop jmp #loop
t1hi long 0
t1lo long 0
t2hi long 0
t2lo long 0
GRN1 should be lighting up, since (2-(1+C)) should be zero. If you change t1hi to #1, then it lights up.
Note: ADDX seems to be fine. I have not yet tested SUBSX or ADDSX.
Edit: changed the code to explicitly test t1hi, since Z is dependent on the prior value of Z for SUBX. Bug still exists.
Comments
Yes, it works for all three examples in the P1 truth table.
subx tos1,tos1
with this:long $F<<28+%0001101000<<18+tos1<<9+tos1
The > operator in Tachyon uses this and I also confirmed correct operation
TF2$ 7FFF.FFFF 8000.0000 > . -1 ok TF2$ 7FFF.F000 7FFF.FFFF > . 0 ok TF2$ 7FFF.F000 8000.0000 > . -1 ok TF2$ 30 3A > . 0 ok TF2$ 3A 30 > . -1 ok TF2$ 3A 3A > . 0 ok TF2$
orgh $1000 org asmtest subs adra,adrb subx adra,adrb long $f1a3edf7
returns the following in my disassemblerPropeller 2 - Disassembler V1.0 ------------------------------- 01000: 1111_0001110_000_111110110_111110111 SUBS ADRA,ADRB 01004: 1111_0001110_000_111110110_111110111 SUBS ADRA,ADRB 01008: 1111_0001101_000_111110110_111110111 SUBX ADRA,ADRB