Hello.
As some of you know, I already have developed a "Library", which allows to use low-end MCUs with ST7920 graphical LCDs.
The issue is the memory for the character data. The fastest way is to use on-chip EEPROM. Most low-end PICs have only 128/256 bytes of EEPROM, which, considering letter size of 8x8 pixels, allows storage of either 16 or 32 chars, which is not enough.

I tried to use external I2C EEPROM, and it works fine, however, reading speed is slow, due to software I2C, and I was not able to use hardware I2C or SPI on low-end PICs.

I had idea of using parallel EEPROM, but such chips are rare now.

The only solution remains is to use code memory for character data storage. I've implemented it in some way, but code turns out to be too big. Currently I'm doing it in this way:

There's a 8 byte array, in which, data for each letter is written, according to ASCII code of the text, stored in another array. The code looks approximately like this:

Code:
FOR X=0 TO 16 'LENGTH OF THE TEXT BUFFER
Z=TEXTLINE[X] 'READ DATA INTO VARIABLE

IF Z=65 THEN 
ARRAYWRITE FONTLINE, [12,23,34,45,56,78,33,44] 'WRITE FONT BITMAP DATA INTO FONT ARRAY FOR LETTER "A'
ENDIF

IF Z=66 THEN 
ARRAYWRITE FONTLINE, [42,23,34,55,56,78,93,44] 'WRITE FONT BITMAP DATA INTO FONT ARRAY FOR LETTER "B'
ENDIF

This method indeed works, but I need to have individual IF-THEN-ENDIF lines of code for all characters, which makes code too long in lines and too big in size.

So is there any other, more compact way for storing these font data lines into main memory?