diff --git a/bin/mega65.rom b/bin/mega65.rom index c828dca1..caea3c1f 100644 Binary files a/bin/mega65.rom and b/bin/mega65.rom differ diff --git a/bin/mega65_pxlfont.rom b/bin/mega65_pxlfont.rom index a04ae20e..c2677815 100644 Binary files a/bin/mega65_pxlfont.rom and b/bin/mega65_pxlfont.rom differ diff --git a/src/kernal/board_m65/fff8.mega65_vector_hyper_reset.s b/src/kernal/board_m65/fff8.mega65_vector_hyper_reset.s new file mode 100644 index 00000000..8cb7c576 --- /dev/null +++ b/src/kernal/board_m65/fff8.mega65_vector_hyper_reset.s @@ -0,0 +1,4 @@ +;; #LAYOUT# M65 KERNAL_0 #TAKE +;; #LAYOUT# * * #IGNORE + +!word m65_hypervisor_reset diff --git a/src/kernal/board_m65/mega65_hypervisor_reset.s b/src/kernal/board_m65/mega65_hypervisor_reset.s new file mode 100644 index 00000000..433240dd --- /dev/null +++ b/src/kernal/board_m65/mega65_hypervisor_reset.s @@ -0,0 +1,34 @@ +;; #LAYOUT# M65 KERNAL_0 #TAKE +;; #LAYOUT# * * #IGNORE + +; Reset (hardware initialization) to be used when Open ROMs is used under hypervisor +; XXX for now this is just a proposal + + +m65_hypervisor_reset: + + ; Proceed like with normal reset, skip problematic parts + + sei ; disable the interrupts, as fast as possible + cld ; Kernal is not designed to operate in decimal mode + + see ; disable extended stack + ldx #$FF ; initial stack size + txs + + ; XXX size-optimize this; share code with regular reset + + jsr m65_reset_part ; initialize MEGA65 specific hardware + + ldx #$28 ; 40 columns, screen disabled for now + stx VIC_SCROLX + + jsr IOINIT_skip_DOS ; DOS needs to map memory over $8000 - not allowed under hypervisor + jsr JRAMTAS + jsr JRESTOR + jsr JCINT + + ; Finished + + cli + rts diff --git a/src/kernal/init/fda3.ioinit.s b/src/kernal/init/fda3.ioinit.s index 98f2cd8b..3acc96a4 100644 --- a/src/kernal/init/fda3.ioinit.s +++ b/src/kernal/init/fda3.ioinit.s @@ -22,6 +22,12 @@ IOINIT: jsr (VK1__IOINIT) jmp m65dos_init ; end by initializing the MEGA65 internal DOS +IOINIT_skip_DOS: + + jsr map_KERNAL_1 + jsr (VK1__IOINIT) + jmp map_NORMAL + } else { ;