我正在尝试创建一个如下所示的 switch 语句,该语句运行良好,直到有东西穿过页面。切换目标是自动生成的,这就是它在另一个文件中的原因。'structure, x' 保存偏移量(大小写开关)。在以下情况下,它将是 00 美元、02 美元、04 美元或 06 美元。
有没有办法确保returnAddr 不在$xx00?(这在这里真的很重要吗?)并且切换列表没有跨越边界?
lda #>returnAddr
pha
lda #<returnAddr-1
pha
; store where we want to go
lda switchlist+1
pha
lda switchlist
clc
adc structure, x
pha
rts ; make call to the proc in the switchlist
returnAddr:
; ...
rts
在另一个文件中(其中 case_x 是函数标签)
switchlist:
.word case_1
.word case_2
.word case_3
.word case_4