Files
open-roms/src/kernal/board_m65/mega65_map_helpers.s
T

120 lines
1.2 KiB
ArmAsm

;; #LAYOUT# M65 KERNAL_0 #TAKE
;; #LAYOUT# * * #IGNORE
;
; ROM mapping routines for MEGA65
;
; Available memory maps:
; - NORMAL - nothing mapped in
; - KERNAL_1 - for calling KERNAL_1 segment code
; - DOS_1 - for swiching to DOS context
; - NORMAL_from_DOS_1 - for switching bact from DOS context
map_NORMAL:
php
pha
phx
phy
phz
lda #$00
; FALLTROUGH
map_NORMAL_common:
tax
tay
taz
; FALLTROUGH
map_end:
map
eom
; FALLTROUGH
map_end_no_eom:
plz
ply
plx
pla
plp
rts
map_KERNAL_1:
php
pha
phx
phy
phz
lda #$00
tay
taz
ldx #$42 ; $4000 <- map 8KB from $24000
bra map_end
map_DOS_1:
php
pha
phx
phy
phz
lda #$80
tab ; from now on, zeropage starts from $C000
ldy #$80
lda #$30
taz ; $8000 <- map 16KB RAM from $10000
lda #$C0
ldx #$C1 ; $4000 <- map 16KB ROM from $20000
map
bra map_end_no_eom ; no EOM, we do not want interrupts within DOS!
map_NORMAL_from_DOS_1:
php
pha
phx
phy
phz
lda #$00
tab
bra map_NORMAL_common
map_MON_1:
php
pha
phx
phy
phz
lda #$00
tay
taz
lda #$C0
ldx #$42 ; $4000 <- map 8KB from $30000
map
bra map_end