Just a quick post about the idea in my head for the video address generation. I was looking to have some form of hardware scrolling ability on my system, i felt this was one of the greatest strengths on the Amiga. Several old computers just use the horizontal and vertical counters to generate the video ram address to read from, while this is quick and easy, it doesnt allow for scrolling.
The idea I think i will roll with to begin with is to store the start address for the screen in a couple of 574 chips. These will be latched into a working copy at the start of the vertical blank. I will then feed these into some sort of counter, using the current address as the data in, clock it with pixel clock and take the output back into the working copy. This should give me an address that goes up by one every pixel.
To add flexibility I was going to take the current working copy and feed it into a set of adder circuits to add a module onto the address at each hsync pulse. Given my history of working with the Amiga, this opens up alot of options for scroll techniques.
It should be possible to allow the cpu to also alter these at runtime via ports etc, allowing for per line (or even more frequently) altering video ram addresses.