Add additiona raster irq for kernal with potential no IO

This commit is contained in:
drmortalwombat 2024-06-18 20:35:38 +02:00
parent 3f9d042863
commit 1fa9828f6a
3 changed files with 111 additions and 7 deletions

View File

@ -248,6 +248,88 @@ ex2:
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
// 2 ldy #data1
// 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)
{
rirq_init_tables();

View File

@ -149,6 +149,8 @@ inline void rirq_init(bool kernalIRQ);
void rirq_init_kernal(void);
void rirq_init_kernal_io(void);
void rirq_init_io(void);
void rirq_init_memmap(void);

View File

@ -1739,14 +1739,17 @@ Expression* Parser::ParseInitExpression(Declaration* dtype)
Expression* texp = ParseInitExpression(mdec->mBase);
Declaration* cdec = CopyConstantInitializer(mdec->mOffset, mdec->mBase, texp);
cdec->mBits = mdec->mBits;
cdec->mShift = mdec->mShift;
if (cdec)
{
cdec->mBits = mdec->mBits;
cdec->mShift = mdec->mShift;
if (last)
last->mNext = cdec;
else
dec->mParams = cdec;
last = cdec;
if (last)
last->mNext = cdec;
else
dec->mParams = cdec;
last = cdec;
}
if (!ConsumeTokenIf(TK_COMMA))
break;