From 6216a993c31781942224b36dad2593ab276d91fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Tue, 16 May 2017 05:57:05 +0000 Subject: [PATCH] fix FBCS (not ready for burst mode yet) --- BaS_gcc/BaS_gcc.config | 1 + BaS_gcc/sys/BaS.c | 6 +++++- BaS_gcc/sys/mmu.c | 9 +++++++++ BaS_gcc/sys/sysinit.c | 4 ++-- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/BaS_gcc/BaS_gcc.config b/BaS_gcc/BaS_gcc.config index e0284f4..146302d 100644 --- a/BaS_gcc/BaS_gcc.config +++ b/BaS_gcc/BaS_gcc.config @@ -1,2 +1,3 @@ // Add predefined macros for your project here. For example: // #define THE_ANSWER 42 +#define MACHINE_FIREBEE diff --git a/BaS_gcc/sys/BaS.c b/BaS_gcc/sys/BaS.c index dfab8a2..b31dcb2 100644 --- a/BaS_gcc/sys/BaS.c +++ b/BaS_gcc/sys/BaS.c @@ -415,7 +415,7 @@ void BaS(void) uint8_t *src; uint8_t *dst = (uint8_t *) TOS; -#if defined(MACHINE_FIREBEE) /* LITE board has no pic and (currently) no nvram */ +#if defined(MACHINE_FIREBEE) /* LITE board has no pic and (currently) no nvram */ pic_init(); nvram_init(); #endif /* MACHINE_FIREBEE */ @@ -447,6 +447,8 @@ void BaS(void) xprintf("finished\r\n"); + memset((void *) 0x0200, 0x0, 0x0400); + #if defined(MACHINE_FIREBEE) xprintf("IDE reset: "); /* IDE reset */ @@ -484,6 +486,8 @@ static volatile struct atari_video_timing *ver_640x480 = (volatile struct atari_ static volatile struct atari_video_timing *hor_320x240 = (volatile struct atari_video_timing *) 0xf0000418; static volatile struct atari_video_timing *ver_320x240 = (volatile struct atari_video_timing *) 0xf000041c; +#undef VIDEO_25MHZ + #ifdef VIDEO_25MHZ hor_640x480->total = 0x320; /* 800 */ hor_640x480->sync_start = 0x2ba; /* 698 */ diff --git a/BaS_gcc/sys/mmu.c b/BaS_gcc/sys/mmu.c index a8ccd5f..435e6c3 100644 --- a/BaS_gcc/sys/mmu.c +++ b/BaS_gcc/sys/mmu.c @@ -480,6 +480,15 @@ void mmu_init(void) pages[i].execute = 0; pages[i].global = 1; } + else if (addr >= 0xfff00000UL && addr <= 0xffffffffUL) /* Falcon I/O area on the Firebee */ + { + pages[i].cache_mode = CACHE_NOCACHE_PRECISE; + pages[i].supervisor_protect = 1; + pages[i].read = 1; + pages[i].write = 1; + pages[i].execute = 0; + pages[i].global = 1; + } else if (addr >= 0x0UL && addr < 0x00e00000UL) /* ST-RAM, potential video memory */ { pages[i].cache_mode = CACHE_WRITETHROUGH; diff --git a/BaS_gcc/sys/sysinit.c b/BaS_gcc/sys/sysinit.c index ee53d0c..0b4ec56 100644 --- a/BaS_gcc/sys/sysinit.c +++ b/BaS_gcc/sys/sysinit.c @@ -418,8 +418,8 @@ static void init_fbcs() MCF_FBCS1_CSAR = MCF_FBCS_CSAR_BA(0xFFF00000); /* ATARI I/O address range */ MCF_FBCS1_CSCR = MCF_FBCS_CSCR_PS_16 /* 16BIT PORT */ | MCF_FBCS_CSCR_WS(32) /* 32 wait states */ - | MCF_FBCS_CSCR_BSTR /* burst read enable */ - | MCF_FBCS_CSCR_BSTW /* burst write enable */ +// | MCF_FBCS_CSCR_BSTR /* burst read enable */ +// | MCF_FBCS_CSCR_BSTW /* burst write enable */ | MCF_FBCS_CSCR_AA; /* auto /TA acknowledge */ MCF_FBCS1_CSMR = MCF_FBCS_CSMR_BAM_1M | MCF_FBCS_CSMR_V;