Hi Chris,
Nice work! It's like I initially expected then and thinking it thru yet another time it makes sense.... When you write something to the display the DDRAM is loaded with the memory adress (be it the CGROM or CGRAM) of the character to display, not the actual character it self. I should have noticed that since the DDRAM is only 80 bytes...duh...
I wouldn't worry too much about wearing out the CGRAM, it's RAM so it should last "forever".
Instead of first copying the bytes from EEPROM to an array and then from the array to the LCD controller, why not do it byte-by-byte? I think it'll save some code space and RAM:
Code:
LCDOUT $FE, CGLLOC
FOR CGLOOP = CGLOAD to (CGLOAD + 7) 'Sets 1st Memory Address to Read + Next 7
read CGLOOP, CGDATA ' Retrieve byte from EEPROM <- Now only a byte variable instead of an array.
LCDOUT CGDATA
next CGLOOP
Return
/Henrik.
Bookmarks