Hi again
first, the clone running in an Alhambra board with quite a lot of messy wires:
And next some details:
The "wired" VGA interface is identical to the AP-VGA, but with lower resistor values (180ohm instead of 470 ohm, and 560ohm instead of 1K). As we can see the image is brighter than Charli's video.
The level shifting in the keyboard signals is done with a series diode and a pull-up in the FPGA pin. I think this is more than really needed and a 10K series resistor could be enough...
And about the internals, the system runs with a 25MHz clock from a PLL. This clock is divided by 2 to get the pixel clock for the video module, and by 7 to get the 3.57MHz of the CPU. The only block that runs with the 25MHz clock is an SPI flash controller with cache that maps the computer ROM into the SPI flash of the board.
The video controller emulates the MC6847 video modes but not all of them, just the two modes used in the computer, that are:
A text mode with 32x16 characters. The character generator ROM is synthesized using about 240 logic cells and stores 64 characters with 5x8 pixels that are in fact displayed inside 8x12 pixel blocks (in reality 2x24 pixels as lines are doubled in the VGA). The semigraphic characters are also displayed with their colors.
A graphics mode with 128x64 pixels and 4 colors where each memory pixel is displayed as a block of 2x3 pixels (2x6 pixels in reality)
The colors are only approximate, mainly because I'm using a CGA palette, more or less:
The dark green and dark orange color are simply black (a lot easier to code and much better contrast on the screen)
The orange color is instead a bit pinky (red + white)
The only peripheral still not implemented is the cassette port.
Source code is included (verilog only...)
Nice Day everybody