1
0
mirror of https://github.com/fadden/6502bench.git synced 2026-04-26 12:18:26 +00:00

Correct StdInline behavior for overlapping addresses

The implementation was mapping labels to addresses, then formatting
inline data at the matching address.  This may be incorrect when there
are multiple sections of the file mapped to the same address.  The
correct approach is to record the offsets of the matching labels, and
then do an address-to-offset translation for each JSR.

Also, show a note in the Info window when a JSR has been marked
no-continue by an extension script.

Also, updated Daily Tips.
This commit is contained in:
Andy McFadden
2021-10-27 14:18:52 -07:00
parent a04557762d
commit fa04c98dac
11 changed files with 374 additions and 41 deletions
@@ -50,16 +50,60 @@ L1040 nop
.byte $00
_L10AD nop
jsr _L10B6
jsr _L10C3
jsr InW_test1
.word $1100
nop
jmp LF000
.byte $80
.logical $2000
InW_test1 nop
jsr InW_test1
.word $1200
rts
.byte $80
.here
.logical $2000
InW_test2 nop
jsr InW_test2
.word $1300
rts
.byte $80
.here
.logical $2000
not_inline nop
jsr not_inline
bit not_inline
rts
.byte $81
.here
.logical $0000
InW_na_test .byte $ea
.byte $20
.byte $00
.byte $30
.byte $60
.byte $81
.here
.logical $f000
LF000 jsr _LF008
jsr _LF015
nop
rts
_L10B6 jsr InA1_test
_LF008 jsr InA1_test
.byte $ff
.enc "sg_ascii"
.text "too long"
.byte $ea
_L10C3 jsr InAZ_test
_LF015 jsr InAZ_test
.text "does not end"
.here
@@ -42,15 +42,59 @@ L1040 nop
!byte $00
@L10AD nop
jsr @L10B6
jsr @L10C3
jsr InW_test1
!word $1100
nop
jmp LF000
!byte $80
!pseudopc $2000 {
InW_test1 nop
jsr InW_test1
!word $1200
rts
!byte $80
}
!pseudopc $2000 {
InW_test2 nop
jsr InW_test2
!word $1300
rts
!byte $80
}
!pseudopc $2000 {
not_inline nop
jsr not_inline
bit not_inline
rts
!byte $81
}
!pseudopc $0000 {
InW_na_test !byte $ea
!byte $20
!byte $00
!byte $30
!byte $60
!byte $81
}
!pseudopc $f000 {
LF000 jsr @LF008
jsr @LF015
nop
rts
@L10B6 jsr InA1_test
@LF008 jsr InA1_test
!byte $ff
!text "too long"
!byte $ea
@L10C3 jsr InAZ_test
@LF015 jsr InAZ_test
!text "does not end"
}
@@ -42,15 +42,54 @@ L1040: nop
.byte $00
@L10AD: nop
jsr @L10B6
jsr @L10C3
jsr InW_test1
.word $1100
nop
jmp LF000
.byte $80
.org $2000
InW_test1: nop
jsr InW_test1
.word $1200
rts
.byte $80
.org $2000
InW_test2: nop
jsr InW_test2
.word $1300
rts
.byte $80
.org $2000
not_inline: nop
jsr not_inline
bit not_inline
rts
.byte $81
.org $0000
InW_na_test: .byte $ea
.byte $20
.byte $00
.byte $30
.byte $60
.byte $81
.org $f000
LF000: jsr @LF008
jsr @LF015
nop
rts
@L10B6: jsr InA1_test
@LF008: jsr InA1_test
.byte $ff
.byte "too long"
.byte $ea
@L10C3: jsr InAZ_test
@LF015: jsr InAZ_test
.byte "does not end"
@@ -41,15 +41,54 @@ L1040 nop
dfb $00
:L10AD nop
jsr :L10B6
jsr :L10C3
jsr InW_test1
dw $1100
nop
jmp LF000
dfb $80
org $2000
InW_test1 nop
jsr InW_test1
dw $1200
rts
dfb $80
org $2000
InW_test2 nop
jsr InW_test2
dw $1300
rts
dfb $80
org $2000
not_inline nop
jsr not_inline
bit not_inline
rts
dfb $81
org $0000
InW_na_test dfb $ea
dfb $20
dfb $00
dfb $30
dfb $60
dfb $81
org $f000
LF000 jsr :LF008
jsr :LF015
nop
rts
:L10B6 jsr InA1_test
:LF008 jsr InA1_test
dfb $ff
asc 'too long'
dfb $ea
:L10C3 jsr InAZ_test
:LF015 jsr InAZ_test
asc 'does not end'