1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-11-30 01:50:10 +00:00
6502bench/SourceGen/SGTestData/Expected/1003-flags-and-branches_64tass.S
Andy McFadden 5b75ae35fc Fix ANDImm flag updater
For nonzero values we were leaving Z=prev, which is wrong when Z=0
because the AND result might be zero.  Now if Z=1 we leave it alone,
but if Z=0 we now set it to Z=?.

Test 1003-flags-and-branches was testing for the (incorrect)
behavior, so we're now running into a BRK.  This is fine.
2020-02-01 16:41:44 -08:00

270 lines
4.0 KiB
ArmAsm

.cpu "65816"
* = $1000
.as
.xs
clc
xce
sep #$ff
clv
cld
cli
clc
lda #$80
lda #$01
sed
sei
sec
lda #$ff
adc #$00
sep #$ff
rep #$80
rep #$40
rep #$20
.al
rep #$10
.xl
rep #$08
rep #$04
rep #$02
rep #$01
sep #$00
sep #$ff
.as
.xs
rep #$00
rep #$ff
.al
.xl
lda #$feed
sec
xce
.as
.xs
lda #$ff
rep #$30
lda #$ff
clc
xce
lda #$ff
rep #$20
.al
sep #$10
lda #$0000
ldx #$01
ldy #$02
sep #$20
.as
rep #$10
.xl
lda #$01
ldx #$0000
ldy #$0000
sep #$30
.xs
lda #$00
pha
plp
rep #$80
bpl L105F
.byte $00
.byte $00
L105F sep #$80
bpl _L1065
bmi _L1067
_L1065 .byte $00
.byte $00
_L1067 rep #$40
bvc _L106D
.byte $00
.byte $00
_L106D sep #$40
bvs _L1073
.byte $00
.byte $00
_L1073 rep #$01
bcc _L1079
.byte $00
.byte $00
_L1079 sep #$01
bcs _L107F
.byte $00
.byte $00
_L107F rep #$02
bne _L1085
.byte $00
.byte $00
_L1085 sep #$02
beq _L108B
.byte $00
.byte $00
_L108B sep #$ff
lda #$01
bne _L1093
.byte $00
.byte $db
_L1093 lda #$00
beq _L1099
.byte $00
.byte $db
_L1099 bpl _L109D
.byte $00
.byte $db
_L109D lda #$80
bmi _L10A3
.byte $00
.byte $db
_L10A3 lda #$ff
and #$00
beq _L10AB
.byte $00
.byte $db
_L10AB lda #$00
and #$ff
beq _L10B3
.byte $00
.byte $db
_L10B3 lda #$ff
and #$7f
bne _L10BB
brk
.byte $db
_L10BB bpl _L10BF
.byte $00
.byte $db
_L10BF lda #$ff
and #$80
bmi _L10C7
.byte $00
.byte $db
_L10C7 lda #$00
ora #$00
beq _L10CF
.byte $00
.byte $db
_L10CF ora #$01
bne _L10D5
.byte $00
.byte $db
_L10D5 lda #$00
ora #$7f
bpl _L10DD
.byte $00
.byte $db
_L10DD ora #$80
bmi _L10E3
.byte $00
.byte $db
_L10E3 lda _L10E3
sec
ror a
bmi _L10EC
.byte $00
.byte $dc
_L10EC clc
ror a
bpl _L10F2
.byte $00
.byte $dc
_L10F2 lda #$00
sec
rol a
bne _L10FA
.byte $00
.byte $dc
_L10FA clc
php
sec
plp
bcc _L1102
.byte $00
.byte $00
_L1102 sec
bcs _L1106
_L1105 clc
_L1106 lda $33
beq _L1105
bcs _L110E
lda $44
_L110E nop
rep #$20
.al
sep #$10
jsr _L112A
rep #$30
.xl
jsr _L1130
sep #$30
.as
.xs
jsr _L1130
rep #$20
.al
sep #$10
jsr _L112A
sep #$30
.as
rts
.al
_L112A lda #$1234
ldx #$ff
rts
.as
_L1130 lda #$ff
ldx #$ee
ldy #$dd
rts