sorry richard the result i am seeing does not support what your are saying and the results show on the GLCD and debug terminal show the seqaunce for @ db option and @ dw to be incorrect when using readcode i have at the moment , a it gets 1 byte at a time
remember the whole goel is to
a. not change the font original data sequence of values
b. store only the font data values , and not add any other values to flash to get the data back - unlike pokecode does
try it for your self
this is font chr "0" , where the font is 24 bits wide for (X) and 30 lines (Y)high
LG font values for Common_font routine then are
Y_scan = 29 ' 30 - Y scan lines - 1 - Cos "for " starts at 1
X_scan = 3 ' 3 - X scan x 8 bits ( 24 bits)
Font_lookup = 1 ' Use LG_Font_lookup
gosub Font_Common ' not using flash chip
with poke/peek it works ok with this code
terminal should show the same data format and exact seq as the pokecode data
Code:
' Code for "0" Asci 48 90 real values _
pokecode $00,$00,$00,$00,$FF,$00,$03,$FF,$C0,$0F,$FF,$F0,$1F,$FF,$F8,$1F,$FF,$F8,$3F,$C3,$FC,$3F,$81,$FC,$3F,_
$81,$FC,$7F,$00,$FE,$7F,$00,$FE,$7F,$00,$FE,$7F,$00,$FE,$7F,$00,$FE,$7F,$00,$FE,$7F,$00,$FE,$7F,$00,_
$FE,$7F,$00,$FE,$7F,$00,$FE,$7F,$00,$FE,$3F,$81,$FC,$3F,$81,$FC,$3F,$C3,$FC,$1F,$FF,$F8,$1F,$FF,$F8,_
$0F,$FF,$F0,$03,$FF,$C0,$00,$FF,$00,$00,$00,$00,$00,$00,$00
code to place the code on glcd and terminal - terminal should show the address and data in the same sequance as the data input here
Code:
'=================== FONT COMMON ROUTINE - pokecode use ==========================
' Assumes gl_x, gl_y,X_scan,Y_scan,Font_lookup
' ALL FONTS MUST BE gl_x = 8 , 16 , 24 etc
' Inv_font = 0 = normal 1= inverse
Font_Common:
x_save = gl_x ' save the gl_x start point value
y_save = gl_y ' save the gl_y start point value
gl_yb = y_save + Y_scan ' number of y scans for the char from y starting point(0)
gl_xb = 0
Address = 0
if Font_lookup = 1 then
@ GetAddress _LG_Font_Base, _Font_Base_Address ; gets base start address of LG_font into Font_Base_Address varable
Font_Index = (LG_font - 45)* (90*2) ' remove the ascii chr value 45 offset 0 * font chr length x 2 cos of RETLW INSTRUCTION for each byte read in index
HSEROUT [13,10,"lg Font_Base_Address = ",hex Font_Base_Address," font index = ",dec Font_Index, 13,10] 'debug
endif
if Font_lookup = 2 then ' remove the offset of the first symbol $2D / 45 so start at 0
@ GetAddress _Med_Font_Base, _Font_Base_Address
Font_Index = (Med_font - 45)* (40*2) ' remove the ascii chr value 45 offset * font chr length in index
endif
Address = Font_Base_Address + Font_Index 'gets you to the start of the glyph
for gl_y = y_save to gl_yb ' y scan lines, start to finish values
gl_x = x_save ' clear x position to start point (keep it an 8bit multiple)
gosub gl_gaddr ' Set address
for gl_xb = 1 to X_scan ' gl_x byte x X scan bytes on each line
peekcode Address,gl_byte ' read the indexed byte in
HSEROUT [hex Address,"- ",hex gl_byte, ","]
glcd_msb = gl_byte
glcd_cmd = DATA_WR_INC ' write and increment
gosub send_1 ' send to glcd
Address = Address+2 ' inc address here +2 cos each byte includes intruction code , as data start at 0
next gl_xb ' next byte of font
next gl_y ' next scan line of font
gl_y = y_save ' Restore the Y location
gl_x = x_save ' Restore the X location
return
to use @ db data format the poke code data is changed to this format
Code:
' Code for "0" Asci 48 90 real values _
@ db 0x00,0x00,0x00,0x00,0xFF,0x00,0x03,0xFF,0xC0,0x0F,0xFF,0xF0,0x1F,0xFF,0xF8,0x1F,0xFF,0xF8,0x3F,0xC3,0xFC,0x3F,0x81,0xFC,0x3F
@ db 0x81,0xFC,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00
@ db 0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFE,0x3F,0x81,0xFC,0x3F,0x81,0xFC,0x3F,0xC3,0xFC,0x1F,0xFF,0xF8,0x1F,0xFF,0xF8
@ db 0x0F,0xFF,0xF0,0x03,0xFF,0xC0,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00
routine to get this data out and into the corect sequance - BUT THIS DOES NOT WORK AS THE DATA IS OUT OF SEQUANCE cos of readcode of low high reading
Code:
Font_Common:
x_save = gl_x ' save the gl_x start point value
y_save = gl_y ' save the gl_y start point value
gl_yb = y_save + Y_scan ' number of y scans for the char from y starting point(0)
gl_xb = 0
Address = 0
if Font_lookup = 1 then
@ GetAddress _LG_Font_Base, _Font_Base_Address ; gets base start address of LG_font into Font_Base_Address varable
Font_Index = (LG_font - 45)* 90 ' remove the ascii chr value 45 offset 0 * font chr length
HSEROUT [13,10,"lg Font_Base_Address = ",hex Font_Base_Address," font index = ",dec Font_Index, 13,10] 'debug
endif
if Font_lookup = 2 then ' remove the offset of the first symbol $2D / 45 so start at 0
@ GetAddress _Med_Font_Base, _Font_Base_Address
Font_Index = (Med_font - 45)*40 ' remove the ascii chr value 45 offset * font chr length in index
endif
Address = Font_Base_Address + Font_Index 'gets you to the start of the glyph
for gl_y = y_save to gl_yb ' y scan lines, start to finish values
gl_x = x_save ' clear x position to start point (keep it an 8bit multiple)
gosub gl_gaddr ' Set address
for gl_xb = 1 to X_scan ' gl_xb byte x X scan bytes can be 2 or 3 on each line
readcode Address,gl_byte
HSEROUT [hex Address,"- ",hex gl_byte, ","]
glcd_msb = gl_byte ' put in 1st byte - stored as
glcd_cmd = DATA_WR_INC ' write and increment
gosub send_1 ' send to glcd
Address = Address + 1 ' inc address + 1
next gl_xb ' next byte of font
next gl_y ' next scan line of font
gl_y = y_save ' Restore the Y location
gl_x = x_save ' Restore the X location
return
same data joined to make word values ,
these are stored in flash correct seq in flash as the font data shown here
recovery routine is same as above - and has the same issue readcode gets the data not in correct seq required
Code:
' Code for "0" Asci 48 90 real values _
@ dw 0x0000,0x0000,0xFF00,0x03FF,0xC00F,0xFFF0,0x1FFF,0xF81F,0xFFF8,0x3FC3,0xFC3F,0x81FC ;,0x3F
@ dw 0x3F81,0xFC7F,0x00FE,0x7F00,0xFE7F,0x00FE,0x7F00,0xFE7F,0x00FE,0x7F00,0xFE7F,0x00FE,0x7F00
@ dw 0xFE7F,0x00FE,0x7F00,0xFE7F,0x00FE,0x3F81,0xFC3F,0x81FC,0x3FC3,0xFC1F,0xFFF8,0x1FFF ;,0xF8
@ dw 0xF80F,0xFFF0,0x03FF,0xC000,0xFF00,0x0000,0x0000,0x0000
Bookmarks