64 lines
638 B
C
64 lines
638 B
C
#include "memmap.h"
|
|
|
|
volatile char PLAShadow;
|
|
|
|
__asm DoneTrampoline
|
|
{
|
|
lda PLAShadow
|
|
sta $01
|
|
pla
|
|
tax
|
|
pla
|
|
rti
|
|
}
|
|
|
|
__asm IRQTrampoline
|
|
{
|
|
pha
|
|
txa
|
|
pha
|
|
lda #$36
|
|
sta $01
|
|
|
|
lda #>DoneTrampoline
|
|
pha
|
|
lda #<DoneTrampoline
|
|
pha
|
|
tsx
|
|
lda $0105, x
|
|
pha
|
|
jmp ($fffe)
|
|
}
|
|
|
|
__asm NMITrampoline
|
|
{
|
|
pha
|
|
txa
|
|
pha
|
|
lda #$36
|
|
sta $01
|
|
|
|
lda #>DoneTrampoline
|
|
pha
|
|
lda #<DoneTrampoline
|
|
pha
|
|
tsx
|
|
lda $0105, x
|
|
pha
|
|
jmp ($fffa)
|
|
}
|
|
|
|
void mmap_trampoline(void)
|
|
{
|
|
*((void **)0xfffa) = NMITrampoline;
|
|
*((void **)0xfffe) = IRQTrampoline;
|
|
}
|
|
|
|
#pragma native(mmap_trampoline)
|
|
|
|
void mmap_set(char pla)
|
|
{
|
|
PLAShadow = pla;
|
|
*((volatile char *)0x01) = pla;
|
|
}
|