39 lines
676 B
ArmAsm
39 lines
676 B
ArmAsm
.MACPACK generic
|
|
|
|
.autoimport
|
|
|
|
.export _init_mapper
|
|
.export _map
|
|
|
|
MAPPER_BASE = $200
|
|
|
|
.code
|
|
|
|
; void init_paging();
|
|
; This should be identity mapped at reset, but we can do it again anyway
|
|
.proc _init_mapper
|
|
ldx #$00
|
|
L1:
|
|
txa
|
|
lsr
|
|
sta MAPPER_BASE,x
|
|
lda #$00
|
|
sta MAPPER_BASE+1,x
|
|
inx
|
|
inx
|
|
cpx #$20
|
|
blt L1
|
|
rts
|
|
.endproc
|
|
|
|
; void map(uint16_t p_page, uint8_t v_page);
|
|
.proc _map
|
|
asl
|
|
tax ; x = v_page * 2
|
|
jsr popa ; low byte of p_page
|
|
sta MAPPER_BASE,x ; write low byte to mm_low
|
|
jsr popa ; high byte of p_page
|
|
sta MAPPER_BASE+1,x ; write high byte to mm_high
|
|
rts
|
|
.endproc
|