plasmo wrote:
It still takes 90% of CPU and 40K memory to paint the 640x480 screen. Swapping in 2nd bank of 40K should alleviate the memory shortage. I have to work with the remaining 10% of 25MHz 6502, or a 2.5MHz 6502.
The follow-on from the BBC Micro, the BBC Master had 128KB of RAM - the original 32K of main RAM the rest (shadow RAM) being accessed in different ways.... In normal. BBC Micro compatible mode, the shadow RAM was disabled and video came from the main RAM - variable size, depending on the video mode from 1KB (teletex text) to 20KB (640x256x1).
When you picked a screen mode +128, it then used 20KB of the shadow RAM for the video RAM, so user programs had all the 32KB (minus the usual OS overhead).
So - you're following on in the footsteps of others here!
The down-side is, as usual, the number of cycles needed to manipulate all that 40KB of RAM - if you can change the top-line start address in hardware and arrange the video generator to wrap then you can have super fast scrolling though - so scrolling a line just means clearing the (new) bottom line which ought to be relatively quick.
Clearing the screen, even with line-start lookup tables will still be a bit slow - the lines being 640 pixels or 80 bytes wide and 480 lines deep... There was a lot of loop unrolling in the BBC Micros OS to do that.
Is there any way to do the odd/even cycle thing so the 6502 can carry on running at full speed? I'd guess the RAM must already be fast enough due to the 6502s half cycle access mechanism, but could the CPLD work with it?
Cheers,
-Gordon
_________________
--
Gordon Henderson.
See my
Ruby 6502 and 65816 SBC projects here:
https://projects.drogon.net/ruby/