1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-12-01 22:50:35 +00:00
6502bench/SourceGen/SGTestData/Expected/2022-extension-scripts_cc65.S
Andy McFadden 63d7a48705 Fix bug in inline JSR/JSL no-continue handling
JSR/JSL calls with inline data have the option of reporting that
they don't continue, which causes the code analyzer to treat them
as JMPs instead.  There was a bug that was causing the no-continue
flag to be lost in certain circumstances.

The code now explicitly records the plugin's response in an Anattrib
flag.  Test 2022-extension-scripts has been updated with a test case
that exercises this situation.
2020-05-08 17:41:26 -07:00

122 lines
2.5 KiB
ArmAsm

.setcpu "65816"
PrintInlineL1String = $011000
PrintInlineL2String = $012000
PrintInlineDciString = $013000
; .segment "SEG000"
.org $1000
.a8
.i8
clc
xce
sep #$30
jsr PrintInline8String
.byte "01234567"
jsr PrintInlineRev8String
.byte "76543210"
jsr PrintInlineNullString
.asciiz "null-term string"
jsl PrintInlineL1String
.byte $14,"string with length/1"
jsl PrintInlineL2String
.byte $14,$00,"string with length/2"
jsl PrintInlineDciString
.byte "DCI strin",$e7
jsr L1800
jsr L184F
jsr L1848
brk $01
.word data01
brk $02
.word data02
nop
jsr L1085
.byte $24
L1085: .byte $a9
.byte $00
sta $ff
.byte $ea
jmp Next1
PrintInline8String: rts
PrintInlineRev8String: rts
PrintInlineNullString: rts
data01: .word 4386
.dbyt $3344
.dword $88776655
.byte $99,$88,$77,$66
.byte 'f'
.byte 'F' | $80
.byte $40
.byte $c1
.byte $42
.byte $c3
.byte $44
.byte $c5
.byte $46
.byte $c7
.faraddr PrintInlineL2String
.word data02
.byte $80
data02: .word @data03
.byte $80
.macro HiAscii Arg
.repeat .strlen(Arg), I
.byte .strat(Arg, I) | $80
.endrep
.endmacro
@data03: HiAscii "AllEight"
NoCont: pla ;split across address change
pla
rts
L10BA: jsr NoCont
.byte $00
.byte $80
L10BF: jsr NoCont
.byte $00
.byte $80
Next1: jsr L10BA
jsr @L10CF
clc
jsr L10BF
rts
@L10CF: sec
jsr L10BF
rts
.res 300,$00
; .segment "SEG001"
.org $1800
L1800: jsr PrintInlineNullString
per $8778
rtl
.byte $65
.byte $6e
.byte $20
.byte $01
; .segment "SEG002"
.org $1840
.byte "string"
.byte $00
.byte $60
L1848: jsl PrintInlineL2String
asl A
brk $60
L184F: jsr PrintInlineNullString
adc $6e
.byte $64