Files
open-roms/src/kernal/init/e5a0.setup_vicii.s
T

72 lines
1.5 KiB
ArmAsm

// #LAYOUT# STD * #TAKE
// #LAYOUT# M65 KERNAL_0 #TAKE
// #LAYOUT# M65 KERNAL_1 #TAKE-FLOAT
// #LAYOUT# X16 * #IGNORE
// #LAYOUT# * * #IGNORE
//
// Well-known Kernal routine, described in:
//
// - [CM64] Computes Mapping the Commodore 64 - page 215
//
setup_vicii:
#if (ROM_LAYOUT_M65 && SEGMENT_KERNAL_0)
jsr map_KERNAL_1
jsr_ind VK1__setup_vicii
jmp map_NORMAL
#else
// Clear everything - turn off sprites (observed hanging around after
// running programs and resetting), etc.
lda #$00
ldx #$2E
!:
sta __VIC_BASE, x
dex
bpl !-
#if !CONFIG_MB_MEGA_65 && !CONFIG_MB_ULTIMATE_64
// Disable C128 extra keys - just to be sure they will not interfere with anything
stx VIC_XSCAN
// Disable the C128 2MHz mode, it prevents VIC-II display from working correctly
stx VIC_CLKRATE
#endif
// Set up default IO values
// - [CM64] page 129 - VIC_SCROLY
// - [CM64] pages 140-144 - VIC_SCROLX
// - [CM64] pages 145-146 - VIC_YMCSB
lda #$1B // according to [CM64] page 137 some software assumes oldest bit is 0
sta VIC_SCROLY
lda #$C8
sta VIC_SCROLX // 40 column, etc.
lda #$14
sta VIC_YMCSB
lda #$0F
sta VIC_IRQ // clear all interrupts
// We use a different colour scheme of white text on all blue by default,
// but brand-specific color scheme can also be enabled
lda #CONFIG_COLOR_BG
sta VIC_EXTCOL
sta VIC_BGCOL0
// Setup default I/O devices
jmp clrchn_reset
#endif // ROM layout