Hello everyone!
Very important progress to report! Finally, success! After 1 week of failure, I've obtained a beautiful...black screen!
However, this means that the horizontal sync signal is correct, because I am using a composite to vga converter box that shows a blue screen if no input is available.
But let's go in order. I implemented the solution mentioned a couple of posts ago, and I went from having random writing issues to having...no writing at all
That is because, as I said, I used inverted Q1 as /OE of the RAM, meaning that I had /WE and /OE go low at the same time, which I understand is no good.
So, I tied /OE to ground and finally I could write with no errors. Success? No, because the video circuit could no longer read data from RAM. I believe that is because che CP signal used to load data from RAM to the video register is PHI2. Before, /OE would go high when the address was multiplexed back to the CPU, meaning that, as GaBuZoMeu said, stray capacitances allowed the data to remain valid even if there was no driver (or so is my understanding).
With /OE tied to ground, there would always be a driver, causing the data to change while it was loaded to the register. No good.
I went back to the drawing board, and rewired the entire glue logic. Now, I have R/W gated with PHI2 and Q1, as described above. /OE is tied to ground, but the video register is loaded after the first quarter of PHI2, when the data is nice and stable, and now everything works as expected. Naturally, I had to write a couple of simple routines to write the horizontal and vertical signal characters on RAM.
I imagine this is all quite confusing, so I will post a timing diagram and a schematic with all the modifications
.
Now that almost all the basic components are properly operational, it is time to get some characters on the screen. I'm designing the font with pen and paper and getting the hex chars to put in the video ROM. Before I do that, however, I must still test the serial shift register I use to generate the actual video signal. I will therefore add a temporary char ROM with some basic test characters and see how it works.
Thanks for all you help.
Kind regards,
Davide