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

88 lines
1.3 KiB
ArmAsm

;; #LAYOUT# M65 KERNAL_1 #TAKE
;; #LAYOUT# * * #IGNORE
M65_MODESET:
; Carry clear = set native mode; Carry set = set legacy mode
bcc m65_mode65
; FALLTROUGH
m65_mode64:
; Disable interrupts, they might interfere
sei
; Set the magic string to mark legacy mode
jsr m65_clr_magictstr
; Restore VIC-II configuration
jsr viciv_shutdown
jsr vicii_init
; Restore KEYLOG
lda #<scnkey_set_keytab
sta KEYLOG+0
lda #>scnkey_set_keytab
sta KEYLOG+1
; Switch CPU speed to normal
lda #$40
sta CPU_D6510
; Reenable interrupts and quit
cli
rts
m65_mode65:
; Disable interrupts, they might interfere
sei
; Switch CPU speed to normal; VIC-IV register will be used to set the maximum one
lda #$40
sta CPU_D6510
; Set the magic string to mark native mode
lda #$4D ; 'M'
sta M65_MAGICSTR+0
lda #$36 ; '6'
sta M65_MAGICSTR+1
lda #$35 ; '5'
sta M65_MAGICSTR+2
; Initialize VIC-IV
jsr vicii_init
jsr viciv_init
; Initialize various memory structures
jsr m65_native_meminit
; Set C65 keybord handling - XXX check this before enabling
; lda #$02
; sta C65_EXTKEYS_DDR ; output for most keys, input for CAPS LOCK bit
; Set screen mode to 80x50
lda #$02
jsr m65_scrmodeset_internal
; Clear the screen
jmp M65_CLRSCR