From d73480c27a6961414773c536441d8ed7aeb5d843 Mon Sep 17 00:00:00 2001 From: Kyle J Cardoza Date: Tue, 16 Jul 2024 01:22:47 -0400 Subject: [PATCH] Implemented vera_reset() --- src/kernel/hardware/vera/vera.c | 9 +++--- src/kernel/hardware/vera/vera_lowlevel.s | 37 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/kernel/hardware/vera/vera.c b/src/kernel/hardware/vera/vera.c index f15eb4f..21bab06 100644 --- a/src/kernel/hardware/vera/vera.c +++ b/src/kernel/hardware/vera/vera.c @@ -54,12 +54,9 @@ void vera_mem_clear(uint32_t dest, size_t length) { } } -void vera_reset(void) { - uint8_t ctrl = vera_ctrl_read(); - vera_ctrl_write(ctrl | (1 << 7)); -} - void vera_init(void) { + vera_reset(); + vera_mem_write(VERA_PALETTE_BASE, &vera_palette, 0x200); vera_mem_write(TEXT_CONSOLE_TILES, &vera_font_0, 0x1000); vera_mem_set(TEXT_CONSOLE0_VRAM, 0x00, 0x4000); @@ -83,4 +80,6 @@ void vera_init(void) { vera_ien_write(0b00000000); vera_isr_write(0b00000111); vera_dc_video_write(0b00010001); + + vera_mem_write(TEXT_CONSOLE0_VRAM, (void *)(0xC00000), 0x4000); } diff --git a/src/kernel/hardware/vera/vera_lowlevel.s b/src/kernel/hardware/vera/vera_lowlevel.s index 23187e5..5cb3a8b 100644 --- a/src/kernel/hardware/vera/vera_lowlevel.s +++ b/src/kernel/hardware/vera/vera_lowlevel.s @@ -7,8 +7,10 @@ #include "macros.h" #include "kernel/hardware/65c816.h" +#include "kernel/hardware/w65c265s.h" #include "kernel/hardware/vera.h" + .public vera_reset .public vera_addr_l_read .public vera_addr_l_write .public vera_addr_m_read @@ -84,6 +86,41 @@ .section farcode,text +vera_reset: + pha + phy + short_a + + ; Turn off the VERA. + lda #1 << 2 + trb PD4 + + ; Now we delay a while. + ldy ##0x1FFF +delay_y1 + dey + bne delay_y1 + + ; Turn on the VERA. + lda #1 << 2 + tsb PD4 + + ; Now we delay another while. + ldy ##0xFFFF +delay_y2 + dey + bne delay_y2 + + ldy ##0xBFFF +delay_y3 + dey + bne delay_y3 + + long_a + ply + pla + rtl + vera_addr_l_read: short_a lda long:VERA_ADDRx_L