中断返回时,我正在尝试切换正常程序流:
START
SEI
LDX #<IRQ
LDY #>IRQ
STX $FFFE
STY $FFFF
CLI
LOOP1
INC $D020
JMP LOOP1
LOOP2
INC $D021
JMP LOOP2
IRQ
STA SAVEA+1
STX SAVEX+1
STY SAVEY+1
// Some Routines
LDA #$00
PHA
LDA #<LOOP2
PHA
LDA #>LOOP2
PHA
SAVEA
LDA #$00
SAVEX
LDX #$00
SAVEY
LDY #$00
RTI
我写这段代码是根据源代码:http://6502.org/tutorials/interrupts.html#1.3
但PHA会导致崩溃,如何在中断中将正常流程LOOP1切换到LOOP2?
3条答案
按热度按时间um6iljoc1#
最简单的方法可能是有两个堆栈区--每个任务一个。例如,$100-$17f和$180-$1ff。然后,你可以让中断任务切换代码如下:
fafcakar2#
简单的办法就是:
但是对于更复杂的任务管理,我们必须为每个任务保存A、X、Y寄存器:
q9yhzks03#
我不确定您要做什么,但在我看来,您好像要快速连续地更改Commodore 64的背景颜色。如果您要更改正在执行的操作,实际上有一个更简单的方法:
这比设置一个标志并根据该标志进行分支要少得多。假设您的目标是尽快更新边框颜色/背景颜色,这将大大减少检查条件所花费的时间。