Add additiona raster irq for kernal with potential no IO
This commit is contained in:
parent
3f9d042863
commit
1fa9828f6a
|
@ -248,6 +248,88 @@ ex2:
|
||||||
jmp $ea31
|
jmp $ea31
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__asm irq3
|
||||||
|
{
|
||||||
|
lda $01
|
||||||
|
pha
|
||||||
|
lda #$36
|
||||||
|
sta $01
|
||||||
|
|
||||||
|
lda $d019
|
||||||
|
bpl ex2
|
||||||
|
|
||||||
|
ldx nextIRQ
|
||||||
|
l1:
|
||||||
|
lda rasterIRQNext, x
|
||||||
|
cmp #$ff
|
||||||
|
beq e1
|
||||||
|
|
||||||
|
ldy rasterIRQIndex + 1, x
|
||||||
|
tax
|
||||||
|
lda rasterIRQLow, y
|
||||||
|
sta ji + 1
|
||||||
|
lda rasterIRQHigh, y
|
||||||
|
sta ji + 2
|
||||||
|
|
||||||
|
ji:
|
||||||
|
jsr $0000
|
||||||
|
jx:
|
||||||
|
|
||||||
|
inc nextIRQ
|
||||||
|
ldx nextIRQ
|
||||||
|
|
||||||
|
lda rasterIRQNext, x
|
||||||
|
cmp #$ff
|
||||||
|
beq e2
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
sec
|
||||||
|
sbc #4
|
||||||
|
cmp $d012
|
||||||
|
bcc l1
|
||||||
|
|
||||||
|
dey
|
||||||
|
sty $d012
|
||||||
|
w1:
|
||||||
|
jmp ex
|
||||||
|
|
||||||
|
e2:
|
||||||
|
ldx npos
|
||||||
|
stx tpos
|
||||||
|
inc rirq_count
|
||||||
|
|
||||||
|
bit $d011
|
||||||
|
bmi e1
|
||||||
|
|
||||||
|
sta $d012
|
||||||
|
|
||||||
|
jmp ex
|
||||||
|
|
||||||
|
e1:
|
||||||
|
ldx #0
|
||||||
|
stx nextIRQ
|
||||||
|
lda rasterIRQNext, x
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
sta $d012
|
||||||
|
|
||||||
|
ex:
|
||||||
|
asl $d019
|
||||||
|
pla
|
||||||
|
sta $01
|
||||||
|
|
||||||
|
jmp $ea81
|
||||||
|
|
||||||
|
ex2:
|
||||||
|
LDA $DC0D
|
||||||
|
cli
|
||||||
|
pla
|
||||||
|
sta $01
|
||||||
|
|
||||||
|
jmp $ea31
|
||||||
|
}
|
||||||
|
|
||||||
// 0 lda #data0
|
// 0 lda #data0
|
||||||
// 2 ldy #data1
|
// 2 ldy #data1
|
||||||
// 4 cpx $d012
|
// 4 cpx $d012
|
||||||
|
@ -410,6 +492,23 @@ void rirq_init_kernal(void)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rirq_init_kernal_io(void)
|
||||||
|
{
|
||||||
|
rirq_init_tables();
|
||||||
|
|
||||||
|
__asm
|
||||||
|
{
|
||||||
|
sei
|
||||||
|
}
|
||||||
|
|
||||||
|
*(void **)0x0314 = irq3;
|
||||||
|
|
||||||
|
vic.intr_enable = 1;
|
||||||
|
vic.ctrl1 &= 0x7f;
|
||||||
|
vic.raster = 255;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void rirq_init_io(void)
|
void rirq_init_io(void)
|
||||||
{
|
{
|
||||||
rirq_init_tables();
|
rirq_init_tables();
|
||||||
|
|
|
@ -149,6 +149,8 @@ inline void rirq_init(bool kernalIRQ);
|
||||||
|
|
||||||
void rirq_init_kernal(void);
|
void rirq_init_kernal(void);
|
||||||
|
|
||||||
|
void rirq_init_kernal_io(void);
|
||||||
|
|
||||||
void rirq_init_io(void);
|
void rirq_init_io(void);
|
||||||
|
|
||||||
void rirq_init_memmap(void);
|
void rirq_init_memmap(void);
|
||||||
|
|
|
@ -1739,6 +1739,8 @@ Expression* Parser::ParseInitExpression(Declaration* dtype)
|
||||||
Expression* texp = ParseInitExpression(mdec->mBase);
|
Expression* texp = ParseInitExpression(mdec->mBase);
|
||||||
|
|
||||||
Declaration* cdec = CopyConstantInitializer(mdec->mOffset, mdec->mBase, texp);
|
Declaration* cdec = CopyConstantInitializer(mdec->mOffset, mdec->mBase, texp);
|
||||||
|
if (cdec)
|
||||||
|
{
|
||||||
cdec->mBits = mdec->mBits;
|
cdec->mBits = mdec->mBits;
|
||||||
cdec->mShift = mdec->mShift;
|
cdec->mShift = mdec->mShift;
|
||||||
|
|
||||||
|
@ -1747,6 +1749,7 @@ Expression* Parser::ParseInitExpression(Declaration* dtype)
|
||||||
else
|
else
|
||||||
dec->mParams = cdec;
|
dec->mParams = cdec;
|
||||||
last = cdec;
|
last = cdec;
|
||||||
|
}
|
||||||
|
|
||||||
if (!ConsumeTokenIf(TK_COMMA))
|
if (!ConsumeTokenIf(TK_COMMA))
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue