Optimize raster mutliplexer
This commit is contained in:
parent
01365c38b7
commit
c3e89d5d32
|
@ -24,6 +24,8 @@ __asm irq0
|
||||||
tya
|
tya
|
||||||
pha
|
pha
|
||||||
|
|
||||||
|
asl $d019
|
||||||
|
|
||||||
ldx nextIRQ
|
ldx nextIRQ
|
||||||
l1:
|
l1:
|
||||||
lda rasterIRQNext, x
|
lda rasterIRQNext, x
|
||||||
|
@ -39,7 +41,6 @@ l1:
|
||||||
|
|
||||||
ji:
|
ji:
|
||||||
jsr $0000
|
jsr $0000
|
||||||
jx:
|
|
||||||
|
|
||||||
inc nextIRQ
|
inc nextIRQ
|
||||||
ldx nextIRQ
|
ldx nextIRQ
|
||||||
|
@ -47,42 +48,17 @@ jx:
|
||||||
lda rasterIRQNext, x
|
lda rasterIRQNext, x
|
||||||
cmp #$ff
|
cmp #$ff
|
||||||
beq e2
|
beq e2
|
||||||
|
// carry is cleared at this point
|
||||||
|
|
||||||
tay
|
tay
|
||||||
|
|
||||||
sec
|
|
||||||
sbc #3
|
|
||||||
cmp $d012
|
|
||||||
bcc l1
|
|
||||||
|
|
||||||
dey
|
dey
|
||||||
|
sbc #2
|
||||||
|
cmp $d012
|
||||||
|
bcc l1
|
||||||
|
|
||||||
sty $d012
|
sty $d012
|
||||||
w1:
|
|
||||||
jmp ex
|
|
||||||
|
|
||||||
e2:
|
|
||||||
ldx npos
|
|
||||||
stx tpos
|
|
||||||
inc rirq_count
|
|
||||||
|
|
||||||
bit $d011
|
|
||||||
bmi e1
|
|
||||||
|
|
||||||
sta $d012
|
|
||||||
|
|
||||||
asl $d019
|
|
||||||
jmp ex
|
|
||||||
|
|
||||||
e1:
|
|
||||||
ldx #0
|
|
||||||
stx nextIRQ
|
|
||||||
lda rasterIRQNext, x
|
|
||||||
sec
|
|
||||||
sbc #1
|
|
||||||
sta $d012
|
|
||||||
|
|
||||||
ex:
|
ex:
|
||||||
asl $d019
|
|
||||||
|
|
||||||
pla
|
pla
|
||||||
tay
|
tay
|
||||||
|
@ -91,6 +67,26 @@ ex:
|
||||||
pla
|
pla
|
||||||
rti
|
rti
|
||||||
|
|
||||||
|
e2:
|
||||||
|
|
||||||
|
ldx npos
|
||||||
|
stx tpos
|
||||||
|
inc rirq_count
|
||||||
|
|
||||||
|
bit $d011
|
||||||
|
bmi e1
|
||||||
|
|
||||||
|
sta $d012
|
||||||
|
jmp ex
|
||||||
|
|
||||||
|
e1:
|
||||||
|
ldx #0
|
||||||
|
stx nextIRQ
|
||||||
|
ldy rasterIRQNext
|
||||||
|
dey
|
||||||
|
sty $d012
|
||||||
|
jmp ex
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm irq1
|
__asm irq1
|
||||||
|
@ -125,7 +121,7 @@ jx:
|
||||||
tay
|
tay
|
||||||
|
|
||||||
sec
|
sec
|
||||||
sbc #3
|
sbc #4
|
||||||
cmp $d012
|
cmp $d012
|
||||||
bcc l1
|
bcc l1
|
||||||
|
|
||||||
|
@ -344,7 +340,9 @@ void rirq_sort(void)
|
||||||
rasterIRQNext[i] = rasterIRQRows[rasterIRQIndex[i]];
|
rasterIRQNext[i] = rasterIRQRows[rasterIRQIndex[i]];
|
||||||
|
|
||||||
npos++;
|
npos++;
|
||||||
vic.raster = rasterIRQNext[nextIRQ] - 1;
|
byte yp = rasterIRQNext[nextIRQ];
|
||||||
|
if (yp != 0xff)
|
||||||
|
vic.raster = yp - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rirq_start(void)
|
void rirq_start(void)
|
||||||
|
|
Loading…
Reference in New Issue