barnacle wrote:
I've considering that, but if I can get enough pins from the Pico it's handy to have a 'chip' big enough to see and hang scope probes on. The extra three bucks would probably be worth it just to save sorting out the external flash chip, regulator, and USB parts. Also, the rp2040 package is not one I'm comfortable soldering; I can do it, but I suspect I'd kill some before I got one running.
I note that there's a cloneish part referred to as the purple pico which has - I think - an extra io pin or two.
I'll see if I can track that one down.
Quote:
There's always the possibility of using two picos - one for high-colour video and one for general IO, or one for each colour channel.
Erph, maybe, coordinating between two Picos might get tricky though.
Quote:
The snag is that the rp2040 has only enough memory for four bits at 640 x 480, and that resolution is a minimum for me. You could get eight bits at 640 x 350 or (just) 640 x 400... I haven't investigated, but it's possible that three or four bits at 800 x 600 is also possible; I've seen higher resolutions but they mostly seem to be beam chasing designs.
It's always the old question of how much ram do I need to get the resolution I want, and how can I include efficiently in the 6502 memory space? With a full-colour 24-bit VGA, you're looking at a meg on a screen; an 8MHz 6502 is going to take a couple of seconds just to move that much data, irrespective of any processing...
4-bpp @ 640x480 is what the original VGA supported; that takes up about 150KB of space. As I recall it was plane mapped in that mode.
VGA also supported a 320x200 8-bpp mode, that was a flat memory map of one byte per pixel.
Then there was the undocumented mystical "Mode-X" which was a plane mapped 320x240 8-bpp mode if my memory serves me correctly.
Looking at some of the details of the old Michael Abrash black book; VGA divided it's memory into 4 planes, which was used to do some quick copying (4 bytes at a time) from one place to another in memory.
The other handy thing about it was that if you knew you're doing a fill for example, you could set it up where you could write to all 4 planes at one time. Thus effectively setting 4 pixels for the price of one write.
Obviously though, there are other ways around all of this. The TMS9918A, and other video chips did not always have nearly enough RAM to pull off a completely flat bit mapped display.
Quote:
One thing I have not seen many examples of is a bus interface to the 6502/6800 bus (or even 8080). Most of the examples say 'look, pretty colours' but they're mostly internally generated.
Yea, I'm still poking about for that part of the puzzle. The datasheet says it's possible to interface to a 6800 or 8080 bus, but doesn't go into any detail on how. The thing that I'm trying to wrap my head around is that I would presumably need at the very minimum 10 of the 26 pins available to do it in parallel.
8 Data pins
1 R~W pin
1 ~CS/strobe
or
8 data
1 read strobe
1 write strobe
I have considered maybe using a '299, at which point I could dedicate one of the IO state machines to pushing bits in and out; but I think that would require me to run a pretty beefy clock rate if I wanted to keep with 8 to 16 MHz
I'm sure there are other clever ways the data could be split up and delivered into the RP2040. (Maybe split 4 bits at a time?)