So it's been quite a while since I updated my progress with the simulator.
I have moved from the original PI B model to the PI 2 model. This has a 4 core processor and runs at 900MHz. I have the simulator running on core 0 and its getting about 97MHz effective speed. Simple terminal IO is provided by UART0. I have a simple LED blinker running in core 1. This helped me ensure I was managing the cores correctly and that I had the MMU and caches set up. The LED is blinking really fast vs. much slower before the MMU was set up.
In core 2, I have a 320x200 display set up with 63 colors ( 2 bits for each Red, Green, & Blue). I have it set up as 4 addresses in the simulator IO space
$8040 = pixel color - 0x00RRGGBB
$8041 = Y coordinate 0 - 199, above that and the pixel will not get plotted
$8042 = X coordinate low byte
$8043 = X coordinate high byte 0-319, above that and the pixel will not get plotted
A write to $8044 will tell core2 to plot the point.
Reading $8044 indicated if the core is ready to plot the next point. 0=ready, $FF means its busy
I have posted a short demo of a screen saver written in 65C02 assembly. It sets up random start location, box dimensions, and step distances, then proceed to draw boxes using random colors (all 64). It will plot about a 1000 boxes before it clears the screen and repeats.
The speed is amazing considering there's a 163,000 cycle delay after each box is drawn.
I need to create a clear the screen function as the 65C02 cannot efficiently clear the screen.
I may experiment with adding point, line, box, bar (filled box), circle, filled circle, triangle, & filled triangle routines to the video core, and create a command parser to pass the needed data. This will offload a lot of work from the 65C02.
Core 3 will eventually be used to interface the USB sub-system, where I can add keyboard, mouse, Ethernet, and data storage. I need to get a handle on sound generation also. Core 1 is also free if I need to split the workload.
The source is not quite ready, but I am posting a zip file with the saver.bin file and PI2 boot files. Copy the boot files to a FAT-formatted microSD and put that in your PI2. Connect a TTL serial device to UART0, open a terminal with 115200N81; and power up the PI. You should see the SBC monitor startup message. Type U<enter> and then do an XMODEM transfer of the saver.bin file. It will load to address $1000. Type 1000g<enter> to start the screen saver. Press any key to stop it.
Back to the Pi manuals and ARM manuals.
Video here ->
https://youtu.be/CRIty7xRFDgHave fun!
Daryl