Yes, they're sharing a 32k eeprom with ph2 being used to select the appropriate half. This is of course still a gedankensexperiment at present.
The fun is the timing of the blanking and syncs. Because I'm not generating any signals directly from the eeprom, the processor needs to drive some IO to do it and I'm not sure quite how that works the blanking (the syncs are easy).
Thinks: assume three flip-flops addressed at 0x0000, 0x0002, and 0x0004 - A0 is used as the data input and RnW as the clock (suitably qualified by the address decode of course). Writing to the base address clears the q output; writing one higher sets it. The flip-flops provide blanking, vsync, and hsync respectively. Every clock rising edge (from the video proc) latches the contents of the currently addressed ram location and starts clocking it out during the next clock cycle.
if I start a video line at (say) 0x5000/0xb000 and the first instruction at 0xb000 is sta #1 then I *think* the timing and address happens like this:
Code:
[time ][addr. ][data]
[clock 0][0xb000][0x85] (sta #1, 3 clocks)
[clock 1][0xb001][0x01] (0x3000 data output by serial)
[clock 2][0xb001][0x01] (0x3001 data output by serial - blanking disabled)
[clock 3][0xb002][0xa9] (lda #0, 2 clocks - 0x3002 data output by serial)
[clock 4][0xb003][0x00] (0x3003 data output by serial)
...
[clock42][0xb02a][0x85] (0x3029 data output by serial)
[clock43][0xb02b][0x00] (0x302a data output by serial)
[clock44][0xb02b][0x00] (0x302a data output by serial, blanking enabled)
// do line sync stuff, inc line count
So as far as I can see, the video won't appear until clock 3, and it will show data from 0x3002 (for the first line) and I think I end up duplicating a character at the end of the line, so it'll need to be zeroed. So I may need as many as 45 memory addresses to output 40 characters, so I'm looking at 45 * 240 = 10,800 bytes (0x9b40) for the video memory. Which fits in the 12k I have available, with a little space for the code to actually drive it.
Using the 1.8432Mhz system clock, I get 59 clock cycles per so I can't just output every character and zero for blanking; it has to be active.
Neil