1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-12-04 11:49:58 +00:00
6502bench/SourceGen/SGTestData/Expected/20120-char-encoding-a_cc65.S
Andy McFadden 635084db9d Fix DCI string edge case
If a DCI string ended with a string delimiter or non-ASCII character
(e.g. a PETSCII char with no ASCII equivalent), the code generator
output the last byte as a hex value.  This caused an error because it
was outputting the raw hex value, with the high bit already set, which
the assembler did not expect.

This change corrects the behavior for code generation and on-screen
display, and adds a few samples to the regression test suite.

(see issue #102)
2021-08-10 14:08:39 -07:00

304 lines
9.6 KiB
ArmAsm

;Projected edited to format non-char operands as chars.
.setcpu "6502"
; .segment "SEG000"
.org $1000
lda #'A'
lda #'A' | $80
lda #$c1
lda #$41
ldx #'a'
ldx #'a' | $80
ldx #$41
ldx #$01
lda #$7f ;inappropriate format should be ignored
lda #$7f
lda #$7f
lda #$7f
lda #$0d
jmp L144B
.byte 'C'
.byte 'C' | $80
.byte $c3
.byte $43
.word 'd'
.word 'd' | $80
.word $44
.word $04
.dbyt 'E'
.dbyt 'E' | $80
.dbyt $c5
.dbyt $45
.byte $80
.byte "low ASCII str"
.macro HiAscii Arg
.repeat .strlen(Arg), I
.byte .strat(Arg, I) | $80
.endrep
.endmacro
HiAscii "high ASCII str"
.byte $80
.byte $d0,$c5,$d4,$d3,$c3,$c9,$c9,$20,$53,$54,$52
.byte $80
.byte $53,$03,$12,$05,$05,$0e,$20,$43,$0f,$04,$05,$20,$13,$14,$12
.byte $82
.byte $07,"Low ASCII CRLF",$0d,$0a
.byte $82
.byte $87,$c8,$e9,$e7,$e8,$a0,$c1,$d3,$c3,$c9,$c9,$a0,$c3,$d2,$cc,$c6
.byte $8d,$8a
.byte $82
.byte $93,$d0,$c5,$d4,$d3,$c3,$c9,$c9,$20,$57,$49,$54,$48,$20,$96,$43
.byte $4f,$4e,$54,$52,$4f,$4c,$05,$20,$43,$4f,$44,$45,$53,$0d
.byte $83
.byte " !",$22,"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW"
.byte "XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
.byte $83
.byte $a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$aa,$ab,$ac,$ad,$ae,$af
.byte $b0,$b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$ba,$bb,$bc,$bd,$be,$bf
.byte $c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf
.byte $d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$db,$dc,$dd,$de,$df
.byte $e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7,$e8,$e9,$ea,$eb,$ec,$ed,$ee,$ef
.byte $f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa,$fb,$fc,$fd,$fe
.byte $83
.byte $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f
.byte $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f
.byte $40,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf
.byte $d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$5b
.byte $5c
.byte $5d
.byte $5e
.byte $5f
.byte $60
.byte $41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,$50
.byte $51,$52,$53,$54,$55,$56,$57,$58,$59,$5a
.byte $7b
.byte $7c
.byte $7d
.byte $7e
.byte $83
.byte $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f
.byte $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f
.byte $00,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f
.byte $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5a,$1b
.byte $1c
.byte $1d
.byte $1e
.byte $1f
.byte $40
.byte $01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$10
.byte $11,$12,$13,$14,$15,$16,$17,$18,$19,$1a
.byte $7b
.byte $7c
.byte $7d
.byte $7e
.byte $84
.byte $c9,$c9,$c3,$d3,$d4,$c5,$d0,$20,$45,$53,$52,$45,$56,$45,$52
.byte $84
.byte $4e,$55,$4c,$4c,$20,$54,$45,$52,$4d,$20,$d0,$c5,$d4,$d3,$c3,$c9
.byte $c9,$00
.byte $84
.byte $d4,$48,$49,$53,$20,$4e,$55,$4c,$4c,$2d,$54,$45,$52,$4d,$49,$4e
.byte $41,$54,$45,$44,$20,$53,$54,$52,$49,$4e,$47,$20,$49,$53,$20,$54
.byte $4f,$4f,$20,$4c,$4f,$4e,$47,$20,$54,$4f,$20,$46,$49,$54,$20,$4f
.byte $4e,$20,$41,$20,$53,$49,$4e,$47,$4c,$45,$20,$4c,$49,$4e,$45,$2c
.byte $20,$41,$4e,$44,$20,$57,$49,$4c,$4c,$20,$42,$45,$20,$53,$50,$4c
.byte $49,$54,$2e,$00
.byte $84
.byte $13,$d0,$c5,$d4,$d3,$c3,$c9,$c9,$20,$57,$49,$54,$48,$20,$4c,$45
.byte $4e,$47,$54,$48
.byte $84
.byte $14,$00,$d0,$c5,$d4,$d3,$c3,$c9,$c9,$20,$57,$49,$54,$48,$20,$4c
.byte $45,$4e,$47,$54,$48,$32
.byte $84
.byte $50,$45,$54,$20,$44,$43,$c9
.byte $84
.byte $05,$04,$0f,$43,$20,$0e,$05,$05,$12,$03,$53,$20,$05,$13,$12,$05
.byte $16,$05,$12
.byte $84
.byte $0e,$15,$0c,$0c,$2d,$14,$05,$12,$0d,$20,$13,$03,$12,$05,$05,$0e
.byte $20,$03,$0f,$04,$05,$3f,$00
.byte $84
.byte $17,$53,$03,$12,$05,$05,$0e,$20,$43,$0f,$04,$05,$20,$17,$09,$14
.byte $08,$20,$0c,$05,$0e,$07,$14,$08
.byte $84
.byte $18,$00,$53,$03,$12,$05,$05,$0e,$20,$43,$0f,$04,$05,$20,$17,$09
.byte $14,$08,$20,$0c,$05,$0e,$07,$14,$08,$32
.byte $84
.byte $53,$03,$12,$05,$05,$0e,$20,$43,$0f,$04,$05,$20,$44,$43,$c9
.byte $84
.byte $85
.byte $00
.byte $01
.byte $02
.byte $03
.byte $04
.byte $05
.byte $06
.byte $07
.byte $08
.byte $09
.byte $0a
.byte $0b
.byte $0c
.byte $0d
.byte $0e
.byte $0f
.byte $10
.byte $11
.byte $12
.byte $13
.byte $14
.byte $15
.byte $16
.byte $17
.byte $18
.byte $19
.byte $1a
.byte $1b
.byte $1c
.byte $1d
.byte $1e
.byte $1f
.byte " !",$22,"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW"
.byte "XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
.byte $7f
.byte $80
.byte $81
.byte $82
.byte $83
.byte $84
.byte $85
.byte $86
.byte $87
.byte $88
.byte $89
.byte $8a
.byte $8b
.byte $8c
.byte $8d
.byte $8e
.byte $8f
.byte $90
.byte $91
.byte $92
.byte $93
.byte $94
.byte $95
.byte $96
.byte $97
.byte $98
.byte $99
.byte $9a
.byte $9b
.byte $9c
.byte $9d
.byte $9e
.byte $9f
.byte $a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$aa,$ab,$ac,$ad,$ae,$af
.byte $b0,$b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$ba,$bb,$bc,$bd,$be,$bf
.byte $c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf
.byte $d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$db,$dc,$dd,$de,$df
.byte $e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7,$e8,$e9,$ea,$eb,$ec,$ed,$ee,$ef
.byte $f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa,$fb,$fc,$fd,$fe
.byte $ff
L144B: nop
jmp @L14DA
.byte "ASCII escapes \: \\ \r \n \",$22," \' \t"
.byte $80
.byte $d0,$c5,$d4,$d3,$c3,$c9,$c9,$20,$45,$53,$43,$41,$50,$45,$53,$20
.byte $5c
.byte $3a,$20
.byte $5c
.byte $5c
.byte $20
.byte $5c
.byte $52,$20
.byte $5c
.byte $4e,$20
.byte $5c
.byte $22,$20
.byte $5c
.byte $27,$20
.byte $5c
.byte $54
.byte $80
.byte $53,$43,$52,$20,$05,$13,$03,$01,$10,$05,$13,$20
.byte $1c
.byte $3a,$20
.byte $1c
.byte $1c
.byte $20
.byte $1c
.byte $12,$20
.byte $1c
.byte $0e,$20
.byte $1c
.byte $22
.byte $20
.byte $1c
.byte $27
.byte $20
.byte $1c
.byte $14
.byte $80
HiAscii "HIGH escapes \: \\ \r \n \0 \' \t"
.byte $80
@L14DA: nop
jmp @L1587
.byte $86
.byte "Hell",$ef
.byte "H",$c9
.byte $d8
.byte $a1
.byte $86
.byte $c8,$e5,$ec,$ec,$6f
.byte $c8,$49
.byte 'X'
.byte '!'
.byte $86
.byte $48,$45,$4c,$4c,$cf
.byte $48,$c9
.byte $d8
.byte $a1
.byte $86
.byte $c8,$c5,$cc,$cc,$4f
.byte $c8,$49
.byte $58
.byte $21
.byte $86
.byte $48,$05,$0c,$0c,$8f
.byte $48,$c9
.byte $d8
.byte $a1
.byte $86
.byte "ascii",$ff
.byte $86
.byte $22,"A quote1",$a2
.byte "'A quote2",$a7
.byte $86
.byte $a2,$c8,$c1,$a0,$f1,$f5,$ef,$f4,$e5,$b1,$22
.byte $a7,$c8,$c1,$a0,$f1,$f5,$ef,$f4,$e5,$b2,$27
.byte $86
.byte $50,$45,$54,$53,$43,$49,$49,$de
.byte $86
.byte $22,$41,$20,$51,$55,$4f,$54,$45,$31,$a2
.byte $27,$41,$20,$51,$55,$4f,$54,$45,$32,$a7
.byte $86
.byte $dc
.byte $86
.byte $53,$03,$12,$05,$05,$0e,$43,$0f,$04,$05,$9e
.byte $86
.byte $22,$41,$20,$11,$15,$0f,$14,$05,$31,$a2
.byte $27,$41,$20,$11,$15,$0f,$14,$05,$32,$a7
.byte $86
.byte $9c
.byte $86
@L1587: nop
rts