How to draw an image in GLCD

65 views
Skip to first unread message

majid ebru

unread,
Nov 8, 2015, 3:51:55 AM11/8/15
to jallib

Hi

i read that in JAL is an instracture " glcd_drwa_image"

but i don't see sample it.

How can i to draw an image in GLCD?

thankyou


include 18f4620

pragma target clock  
8_000_000                   -- Fosc

pragma target OSC     hs
--pragma target WDT     disabled
pragma target LVP     disabled

-- GRAPHIC_LCD IO definition ------------------------
var volatile byte GLCD_DATAPRT     is portB
var volatile byte GLCD_DATAPRT_DIR is portB_direction

var volatile bit GLCD_DI  is pin_c3
var volatile bit GLCD_RW  is pin_c2
var volatile bit GLCD_E   is pin_c1
var volatile bit GLCD_CS1 is pin_c5
var volatile bit GLCD_CS2 is pin_c4
var volatile bit GLCD_RST is pin_c0

var volatile bit GLCD_DI_DIRECTION  is pin_c3_direction
var volatile bit GLCD_RW_DIRECTION  is pin_c2_direction
var volatile bit GLCD_E_DIRECTION   is pin_c1_direction
var volatile bit GLCD_CS1_DIRECTION is pin_c5_direction
var volatile bit GLCD_CS2_DIRECTION is pin_c4_direction
var volatile bit GLCD_RST_DIRECTION is pin_c0_direction

--const GLCD_CLIPPING = TRUE                         -- enable clipping (of ellipse)

enable_digital_io
()                                -- all pins digital I/O

include delay
include math
include
print

include glcd_6x6_font
include glcd_5x7_font                              
-- font to be used
include glcd_font                                  
-- common font stuff
glcd_font_use
(FONT_5X7)                            -- activate font

include glcd_ks0108                                
-- glcd device dependent library
include glcd_common                                
-- device independent glcd library

glcd_init
()                                        -- initialize display

const byte str[] = "GLCD_TEST "

glcd_background_color
= GLCD_white                 -- background color

var byte i = 0
var sword dy = 0

   glcd_clear_screen
()
   
for GLCD_X_PIXELS / 5 using i loop
      glcd_write_char
(i*5, 0, "A" + i )             -- draw range of characters
   
end loop
   delay_100ms
(2)
    glcd_clear_screen
()
const byte image11[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x00,
0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFE, 0x00,
0x00, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x3E, 0x00, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFC, 0x7E, 0x00,
0x00, 0x03, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0x00, 0x80, 0x01, 0xFF, 0xFC, 0x07, 0xFC, 0x1E, 0x00,
0x00, 0x03, 0xE0, 0x01, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x1F, 0x80,
0x00, 0x03, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x80,
0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x80,
0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x80,
0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80,
0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x80,
0x00, 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFF, 0xFE, 0x00,
0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xFF, 0xFE, 0x00,
0x00, 0x00, 0xFF, 0xFE, 0x07, 0xFF, 0xF1, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFE, 0x3F, 0xFC, 0x00,
0x00, 0x00, 0x7F, 0xF0, 0x00, 0xFF, 0xC0, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x07, 0xF0, 0x00,
0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF1, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF1, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};


glcd_draw_image
(image11,0,0,64,128)
 delay_100ms
(5)
 
forever loop
--nop
end loop


majid ebru

unread,
Sep 3, 2021, 12:30:57 PM9/3/21
to jallib

Hi

Can somebody help me ?!?🙏🙏🙏🙏

Rob CJ

unread,
Sep 3, 2021, 1:23:32 PM9/3/21
to jallib
Hi Majid,

To start with you should be clear is what is going wrong. A statement  like 'it does not work' does not help. You must be more specific.

I saw in your code that you did not define the required pragmas so your program will not work (since by default the extended instruction is enabled but the JAL compiler does not support that).

When you start you must set the pragmas right and the easiest way to do that is to look for a sample file for your PIC in the sample directory. For all devices there is at least one or more blink samples.

Next to that you seem to you a crystal (pragma HS) but are you using an 8 MHz crystal?

The pragmas below come from the blink_hs sample file for your PIC which assumes a crystal of 20 MHz but you can change the target clock if you are using an 8 MHz crystal. If you are not using a crystal, have a look at the intosc blink sample file for your PIC.

-- This program assumes that a 20 MHz resonator or crystal
-- is connected to pins OSC1 and OSC2.
pragma target clock 20_000_000      -- oscillator frequency
--
pragma target OSC      HS                        -- crystal or resonator
pragma target WDT      CONTROL                   -- watchdog
pragma target XINST    DISABLED                  -- do not use extended instructionset
pragma target DEBUG    DISABLED                  -- no debugging
pragma target BROWNOUT DISABLED                  -- no brownout reset
pragma target FCMEN    DISABLED                  -- no clock monitoring
pragma target IESO     DISABLED                  -- no int/ext osc switching
pragma target LVP      ENABLED                   -- low voltage programming
pragma target MCLR     EXTERNAL                  -- external reset

Kind regards,

Rob




Van: jal...@googlegroups.com <jal...@googlegroups.com> namens majid ebru <majid...@gmail.com>
Verzonden: vrijdag 3 september 2021 18:30
Aan: jallib <jal...@googlegroups.com>
Onderwerp: [jallib] Re: How to draw an image in GLCD
 
--
You received this message because you are subscribed to the Google Groups "jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jallib+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jallib/75592baf-e429-421a-ae21-eb9db2d5ebb7n%40googlegroups.com.
Message has been deleted
Message has been deleted

majid ebru

unread,
Sep 4, 2021, 4:06:34 AM9/4/21
to jallib
Hi Rob

thank you very very much.

I changed it but I still don't see the image

i have error "unknown pragma target: wdt pragma" so i disabled that.

i coped " image"  from  "18f4620_glcd_touch_stm032qvt_003.jal" sample files.


this is my program :

include 18f4520

pragma target clock   8_000_000                  -- Fosc
pragma target OSC      HS                        -- crystal or resonator
--pragma target WDT      CONTROL                   -- watchdog

pragma target XINST    DISABLED                  -- do not use extended instructionset
pragma target DEBUG    DISABLED                  -- no debugging
pragma target BROWNOUT DISABLED                  -- no brownout reset
pragma target FCMEN    DISABLED                  -- no clock monitoring
pragma target IESO     DISABLED                  -- no int/ext osc switching
pragma target LVP      ENABLED                   -- low voltage programming
pragma target MCLR     EXTERNAL                  -- external reset
------------------------------------------------------------------
alias FlashLED1 is pin_c0
pin_c0_direction = output
FlashLED1 = 0
------------------------------------------------------------------

-- GRAPHIC_LCD IO definition ------------------------
var volatile byte GLCD_DATAPRT     is portD
var volatile byte GLCD_DATAPRT_DIR is portD_direction

alias GLCD_E    is pin_b0
alias GLCD_RW    is pin_b1
alias GLCD_DI    is pin_b2
alias GLCD_CS1    is pin_b3
alias GLCD_CS2    is pin_b4
alias GLCD_RST    is pin_b5
--
alias GLCD_CS1_DIRECTION    is    pin_b3_direction
alias GLCD_CS2_DIRECTION    is    pin_b4_direction
alias GLCD_RST_DIRECTION    is    pin_b5_direction
alias GLCD_E_DIRECTION        is    pin_b0_direction
alias GLCD_RW_DIRECTION        is    pin_b1_direction
alias GLCD_DI_DIRECTION        is    pin_b2_direction


--const GLCD_CLIPPING = TRUE                       -- enable clipping (of ellipse)

enable_digital_io()                                -- all pins digital I/O

include delay
include math
include print

include glcd_6x8_font

include glcd_5x7_font                              -- font to be used
include glcd_font                                  -- common font stuff
glcd_font_use(FONT_5X7)                            -- activate font

include glcd_ks0108                                -- glcd device dependent library
include glcd_common                                -- device independent glcd library

glcd_init()                                        -- initialize display
glcd_background_color = GLCD_white                 -- background color
glcd_clear_screen()

const byte image[3200] = {
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,0x7D,0xEF,
   0xBA,0xD6,0xB6,0xB5,0xF3,0x9C,0xB2,0x94,0xB3,0x9C,0xB2,0x94,0x34,0xA5,0xF7,0xBD,
   0xFB,0xDE,0x7D,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,0xFB,0xDE,0xF3,0x9C,0xCB,0x5A,
   0xC7,0x39,0x04,0x21,0x82,0x10,0x42,0x10,0x42,0x10,0x41,0x08,0x83,0x18,0x45,0x29,
   0xC7,0x39,0x0C,0x63,0x75,0xAD,0x3C,0xE7,0xBE,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3C,0xE7,0xB2,0x94,0x08,0x42,0xC3,0x18,0x82,0x10,
   0x04,0x21,0x45,0x29,0x86,0x31,0x86,0x31,0x86,0x31,0x86,0x31,0x45,0x29,0x04,0x21,
   0x82,0x10,0x41,0x08,0xC3,0x18,0x08,0x42,0xF3,0x9C,0x3C,0xE7,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFB,0xDE,0x0C,0x63,0xC3,0x18,0xC3,0x18,0x45,0x29,0xC7,0x39,
   0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0xC7,0x39,0xC7,0x39,
   0x86,0x31,0x86,0x31,0x04,0x21,0x41,0x08,0x82,0x10,0xCB,0x5A,0xBA,0xD6,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFB,0xDE,0xCB,0x5A,0x82,0x10,0x45,0x29,0xC7,0x39,0x08,0x42,0x08,0x42,
   0x09,0x4A,0x49,0x4A,0x49,0x4A,0x49,0x4A,0x49,0x4A,0x49,0x4A,0x08,0x42,0xC7,0x39,
   0xC7,0x39,0xC7,0x39,0x86,0x31,0x45,0x29,0x83,0x18,0x00,0x00,0xC8,0x41,0x38,0xC6,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0x7D,0xEF,0x8E,0x73,0x82,0x10,0x45,0x29,0xC7,0x39,0x08,0x42,0x09,0x4A,0x8A,0x52,
   0x30,0x84,0xCF,0x7B,0x8A,0x52,0x49,0x4A,0x4A,0x52,0x49,0x4A,0xCB,0x5A,0xCF,0x7B,
   0x0C,0x63,0x08,0x42,0xC7,0x39,0x86,0x31,0x45,0x29,0xC3,0x18,0x00,0x00,0x49,0x4A,
   0xBA,0xD6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xF3,0x9C,0xC3,0x18,0x04,0x21,0xC7,0x39,0x08,0x42,0x49,0x4A,0x49,0x4A,0x72,0x94,
   0x7D,0xEF,0x7D,0xEF,0xB2,0x94,0x4A,0x52,0x49,0x4A,0x8A,0x52,0x75,0xAD,0xBE,0xF7,
   0xBA,0xD6,0x4D,0x6B,0xC7,0x39,0xC7,0x39,0x86,0x31,0x45,0x29,0xC3,0x18,0x41,0x08,
   0xCF,0x7B,0x7C,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA,0xD6,
   0x08,0x42,0x82,0x10,0xC7,0x39,0x08,0x42,0x49,0x4A,0x49,0x4A,0x8E,0x73,0xFB,0xDE,
   0xFF,0xFF,0xBE,0xF7,0xBA,0xD6,0x8E,0x73,0x08,0x42,0x30,0x84,0x3C,0xE7,0x7D,0xEF,
   0xFF,0xFF,0xB6,0xB5,0x49,0x4A,0xC7,0x39,0x86,0x31,0x45,0x29,0x04,0x21,0x41,0x08,
   0x45,0x29,0xB6,0xB5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,0x71,0x8C,
   0x41,0x08,0x45,0x29,0x08,0x42,0x49,0x4A,0x49,0x4A,0x4A,0x52,0xB2,0x94,0xBE,0xF7,
   0xBE,0xF7,0xB2,0x94,0xCF,0x7B,0xCF,0x7B,0x49,0x4A,0xB6,0xB5,0xF3,0x9C,0x0C,0x63,
   0x38,0xC6,0xBA,0xD6,0x0C,0x63,0x87,0x39,0xC7,0x39,0x86,0x31,0x45,0x29,0xC3,0x18,
   0x41,0x08,0x30,0x84,0x7D,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3C,0xE7,0xCB,0x5A,
   0x41,0x08,0xC7,0x39,0x08,0x42,0x49,0x4A,0x4A,0x52,0x8A,0x52,0xF3,0x9C,0xFF,0xFF,
   0x7D,0xEF,0xC7,0x39,0xC3,0x18,0x0C,0x63,0xCB,0x5A,0xB6,0xB5,0xB2,0x94,0xCB,0x5A,
   0x75,0xAD,0xFA,0xD6,0x4D,0x6B,0x87,0x39,0xC7,0x39,0x86,0x31,0x45,0x29,0x04,0x21,
   0x41,0x08,0x8A,0x52,0x79,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x38,0xC6,0x86,0x31,
   0x04,0x21,0xC8,0x41,0x49,0x4A,0x49,0x4A,0x4A,0x52,0x49,0x4A,0xB1,0x8C,0xBE,0xF7,
   0xBE,0xF7,0xB2,0x94,0xCF,0x7B,0xCF,0x7B,0x49,0x4A,0x74,0xA5,0x7D,0xEF,0x7C,0xE7,
   0xBE,0xF7,0x79,0xCE,0x0C,0x63,0xC7,0x39,0xC7,0x39,0x86,0x31,0x45,0x29,0x04,0x21,
   0x82,0x10,0x45,0x29,0x75,0xAD,0xBE,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x34,0xA5,0x82,0x10,
   0x86,0x31,0x08,0x42,0x49,0x4A,0x49,0x4A,0x8A,0x52,0x49,0x4A,0x4D,0x6B,0xBA,0xD6,
   0xFF,0xFF,0xFF,0xFF,0x79,0xCE,0x0D,0x63,0xC7,0x39,0xCF,0x7B,0x7D,0xEF,0xFF,0xFF,
   0xFF,0xFF,0x75,0xAD,0x08,0x42,0x86,0x31,0xC7,0x39,0x86,0x31,0x45,0x29,0x45,0x29,
   0xC3,0x18,0xC3,0x18,0xB2,0x94,0x7D,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,0xB2,0x8C,0x41,0x08,
   0xC7,0x39,0x08,0x42,0x49,0x4A,0x49,0x4A,0x8A,0x52,0x8A,0x52,0x4A,0x4A,0xD0,0x7B,
   0x7A,0xC6,0x7B,0xBE,0x90,0x6B,0xC9,0x39,0x88,0x31,0xC9,0x39,0xB3,0x84,0xBB,0xC6,
   0xF8,0xB5,0xCC,0x5A,0x86,0x31,0xC7,0x39,0xC7,0x39,0x86,0x31,0x45,0x29,0x45,0x29,
   0xC4,0x20,0x41,0x08,0x30,0x84,0x3C,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3C,0xE7,0x8A,0x4A,0xC3,0x10,
   0xC7,0x39,0x08,0x42,0x49,0x4A,0x49,0x4A,0x4A,0x4A,0x4A,0x42,0x09,0x3A,0x08,0x4A,
   0x09,0x6B,0x49,0x7B,0xC6,0x7A,0x05,0x83,0x46,0x83,0xC5,0x7A,0xC6,0x72,0x09,0x7B,
   0x48,0x5A,0x87,0x31,0x88,0x21,0x88,0x29,0x86,0x31,0x86,0x31,0x45,0x29,0x45,0x29,
   0x04,0x21,0x41,0x08,0x4A,0x4A,0xBA,0xD6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xC5,0x82,0x50,0x05,0x41,
   0xC7,0x29,0x08,0x42,0x49,0x4A,0x4A,0x42,0x49,0x4A,0x09,0x7B,0x88,0x9B,0xC6,0xB3,
   0x21,0xD4,0xA0,0xDC,0xE1,0xE4,0x61,0xED,0x61,0xED,0x21,0xED,0xA0,0xE4,0x20,0xDC,
   0x80,0xCB,0x43,0xAB,0xC4,0x82,0x06,0x5A,0x47,0x21,0x46,0x29,0x45,0x29,0x04,0x29,
   0x04,0x19,0x82,0x10,0x82,0x18,0xF3,0x9C,0x7D,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0xEF,0x4D,0x93,0x00,0xA0,0x82,0xB8,
   0xC7,0x31,0x09,0x32,0x49,0x4A,0x86,0x7A,0x43,0xC3,0x6B,0xED,0xF4,0xF6,0xEB,0xFD,
   0x20,0xFD,0x20,0xFD,0x60,0xFD,0xA0,0xFD,0xA0,0xFD,0x60,0xFD,0x60,0xFD,0x20,0xFD,
   0xE0,0xFC,0xA0,0xFC,0x60,0xF4,0xC1,0xDB,0x83,0x9A,0xC5,0x49,0x45,0x29,0x04,0x19,
   0xC4,0x20,0x82,0x38,0x00,0x50,0xCB,0x6A,0xBA,0xD6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xEE,0x04,0xA1,0x00,0xC0,0x00,0xF0,
   0xC3,0xA0,0xC8,0x41,0x49,0x42,0x05,0x9B,0x20,0xFC,0xA4,0xFC,0x69,0xFD,0xE8,0xFD,
   0x63,0xFD,0x20,0xFD,0x60,0xFD,0x60,0xFD,0x60,0xFD,0x20,0xFD,0x20,0xFD,0xE0,0xFC,
   0xE0,0xFC,0xA0,0xFC,0x60,0xFC,0x20,0xFC,0x41,0xD3,0xC5,0x49,0x45,0x19,0xC4,0x38,
   0x82,0x68,0x41,0x88,0x00,0x70,0x49,0x5A,0x79,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xF6,0x82,0xC0,0x00,0xD0,0x86,0xC1,
   0x46,0xF1,0x41,0xC8,0x45,0x79,0x89,0x52,0x88,0x62,0x86,0x6A,0xC6,0x7A,0xC4,0xBB,
   0xE1,0xFC,0x60,0xFD,0x60,0xFD,0xA0,0xFD,0xA0,0xFD,0x60,0xFD,0x60,0xFD,0xE0,0xFC,
   0x60,0xE4,0x03,0x93,0x84,0x72,0x44,0x6A,0xC5,0x41,0x45,0x29,0xC3,0x58,0x41,0xA8,
   0x40,0x98,0x00,0xB0,0x00,0x60,0x0C,0x6B,0x79,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0xEF,0xCE,0x83,0x82,0x88,0x00,0xF8,0xC4,0xD8,
   0x0C,0xF3,0x8A,0xFA,0x82,0xE8,0x82,0xB0,0x45,0x69,0xC7,0x51,0x08,0x42,0x08,0x3A,
   0x86,0x5A,0x83,0x9B,0xA2,0xBC,0x22,0xCD,0x21,0xCD,0xA1,0xC4,0x22,0xB4,0xC4,0x7A,
   0x06,0x3A,0x86,0x29,0x45,0x29,0x05,0x31,0xC4,0x50,0x41,0x90,0x00,0xC0,0x00,0xA8,
   0x00,0xA0,0x00,0xA8,0x00,0x30,0x4A,0x4A,0xBA,0xD6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0x7D,0xEF,0x8E,0x73,0xC3,0x18,0x05,0x39,0x82,0xA8,0x00,0xF8,
   0xC3,0xF8,0x4D,0xFB,0x4D,0xFB,0xC7,0xF9,0xC3,0xF0,0x82,0xD8,0xC3,0xB0,0x04,0x81,
   0x45,0x61,0x46,0x51,0x86,0x49,0x86,0x49,0x46,0x41,0x45,0x41,0x45,0x41,0x45,0x41,
   0x05,0x49,0x04,0x61,0x82,0x90,0x41,0xB0,0x00,0xD0,0x00,0xC8,0x00,0xA8,0x00,0xA8,
   0x00,0xB8,0x41,0x58,0x82,0x10,0x82,0x10,0xB2,0x94,0xBE,0xF7,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xBE,0xF7,0xCF,0x7B,0x82,0x10,0x04,0x21,0x86,0x29,0x86,0x41,0x04,0x99,
   0x40,0xE8,0x41,0xF8,0x86,0xF9,0xCB,0xFA,0x49,0xFA,0x82,0xF8,0x00,0xF8,0x00,0xF0,
   0x00,0xE8,0x41,0xD8,0x41,0xD0,0x41,0xC0,0x41,0xC0,0x41,0xC0,0x41,0xC0,0x41,0xC8,
   0x00,0xD0,0x00,0xE0,0x00,0xE0,0x00,0xD8,0x00,0xD0,0x00,0xB8,0x00,0xA8,0x41,0x88,
   0x82,0x48,0x82,0x10,0x82,0x10,0x00,0x00,0x45,0x29,0x79,0xCE,0xFF,0xFF,0xFF,0xFF,
   0xBE,0xF7,0xF3,0x9C,0x82,0x10,0xC3,0x18,0x45,0x29,0x86,0x31,0xC7,0x31,0x30,0x7C,
   0xF3,0xDC,0x86,0xE1,0x00,0xF0,0x00,0xF8,0x41,0xF8,0x41,0xF8,0x00,0xF8,0x00,0xF8,
   0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,
   0x00,0xE8,0x00,0xE0,0x00,0xE0,0x00,0xD8,0x00,0xC8,0x41,0xA0,0x8A,0x9A,0x0C,0x63,
   0x04,0x11,0x82,0x10,0x82,0x10,0x41,0x08,0x00,0x00,0x4D,0x6B,0x7D,0xEF,0xFF,0xFF,
   0xFB,0xDE,0x08,0x42,0x42,0x10,0x45,0x29,0x86,0x31,0x86,0x31,0x49,0x4A,0x38,0xBE,
   0xFF,0xFF,0x38,0xD6,0x86,0xA9,0x00,0xC8,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0xF8,
   0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF0,0x00,0xF0,
   0x00,0xE8,0x00,0xE0,0x00,0xD0,0xC3,0x98,0x8A,0x8A,0xB2,0xA4,0xBA,0xC6,0xF7,0xB5,
   0x08,0x42,0x41,0x08,0x82,0x10,0x41,0x08,0x00,0x00,0x45,0x29,0xF7,0xBD,0xFF,0xFF,
   0x71,0x8C,0x41,0x08,0x04,0x21,0x45,0x29,0x86,0x31,0x86,0x31,0x0C,0x63,0x3C,0xE7,
   0xFF,0xFF,0x79,0xD6,0x46,0xB9,0x00,0xE0,0x42,0xC8,0x82,0xA8,0x82,0xB0,0x41,0xD8,
   0x82,0xE8,0x82,0xF0,0x41,0xE8,0x41,0xE8,0x41,0xE8,0x41,0xF0,0x41,0xE8,0x41,0xD8,
   0x04,0xC1,0x08,0x92,0x4D,0x8B,0x34,0xA5,0xFB,0xC6,0xFB,0xD6,0xBA,0xCE,0x3C,0xE7,
   0x30,0x84,0xC3,0x18,0x41,0x08,0x41,0x08,0x00,0x00,0x41,0x08,0xCF,0x7B,0x7D,0xEF,
   0x49,0x4A,0x00,0x00,0x04,0x21,0x45,0x29,0x46,0x31,0x86,0x31,0x30,0x84,0xFF,0xFF,
   0xFF,0xF7,0xF7,0xDD,0x09,0xDA,0x83,0xF8,0x01,0xF0,0x42,0xC0,0x82,0x98,0x49,0x9A,
   0xF3,0xB4,0xF3,0xCC,0x71,0xBC,0x8E,0xBB,0x8E,0xBB,0x30,0xBC,0x71,0xBC,0xF3,0xBC,
   0xB6,0xBD,0xFB,0xCE,0xBE,0xE7,0x7D,0xE7,0x3B,0xDF,0xBA,0xD6,0x79,0xCE,0xFB,0xDE,
   0x75,0xAD,0x86,0x31,0x41,0x08,0x41,0x08,0x00,0x00,0x00,0x00,0x49,0x4A,0xFB,0xDE,
   0x04,0x21,0x41,0x08,0x04,0x21,0x45,0x29,0x45,0x29,0x87,0x39,0xB2,0x94,0xFF,0xFF,
   0xBE,0xF7,0x34,0xDD,0x0C,0xEB,0x09,0xFA,0x00,0xF0,0x01,0xD8,0x00,0xD8,0x8B,0xD2,
   0x7D,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xBE,0xFF,0x7D,0xEF,0xFB,0xDE,0xFB,0xDE,0xBA,0xD6,0x79,0xCE,0xBA,0xD6,
   0x78,0xC6,0xC7,0x39,0x00,0x00,0x41,0x08,0x00,0x00,0x00,0x00,0xC7,0x39,0x79,0xCE,
   0x00,0x00,0x82,0x10,0xC3,0x18,0x04,0x21,0x05,0x29,0x86,0x31,0xB3,0x9C,0xFF,0xFF,
   0xFF,0xF7,0x75,0xDD,0xC7,0xE9,0xC7,0xF9,0x01,0xF8,0x01,0xF0,0x00,0xE8,0x49,0xE2,
   0xFB,0xEE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xBE,0xF7,0x7D,0xEF,0xFB,0xDE,0xFB,0xDE,0xBA,0xD6,0x79,0xCE,0xBA,0xD6,
   0xB9,0xCE,0x08,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0x39,0x38,0xC6,
   0x00,0x00,0x82,0x10,0x82,0x10,0x04,0x21,0x04,0x21,0x45,0x29,0x30,0x84,0xFF,0xFF,
   0xFF,0xFF,0x38,0xDE,0xC4,0xD0,0x00,0xF0,0x01,0xF8,0x00,0xF8,0x00,0xF0,0x08,0xD2,
   0xFB,0xE6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xBE,0xF7,0x7D,0xEF,0xFB,0xDE,0xBA,0xD6,0x79,0xCE,0x79,0xCE,0xBA,0xD6,
   0x79,0xCE,0xC7,0x39,0x41,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x31,0x38,0xC6,
   0x00,0x00,0x00,0x00,0xC3,0x18,0xCB,0x5A,0x86,0x31,0xC3,0x18,0xCB,0x5A,0x7D,0xEF,
   0xFF,0xFF,0x7D,0xEF,0xCF,0xBB,0xC3,0xB0,0x41,0xD0,0x41,0xD0,0x82,0xB8,0x4D,0xB3,
   0x7D,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xBE,0xF7,0xBE,0xF7,0x3D,0xEF,0xFB,0xDE,0xBA,0xD6,0x79,0xCE,0x79,0xCE,0xFA,0xD6,
   0xF7,0xBD,0x04,0x21,0x86,0x31,0x04,0x21,0x00,0x00,0x00,0x00,0x86,0x31,0x38,0xC6,
   0x86,0x31,0xC3,0x18,0xCB,0x5A,0x75,0xAD,0xCF,0x7B,0x41,0x08,0x86,0x31,0xF7,0xBD,
   0xFF,0xFF,0xFF,0xFF,0xBE,0xEF,0x74,0xB5,0x30,0x9C,0x30,0x9C,0x72,0xA4,0xBB,0xD6,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xBE,0xF7,0x7D,0xEF,0x3C,0xE7,0xFB,0xDE,0xBA,0xD6,0x79,0xCE,0x79,0xCE,0x3C,0xE7,
   0x71,0x8C,0x81,0x08,0x0C,0x63,0xCF,0x7B,0x82,0x10,0x00,0x00,0x8A,0x52,0x38,0xC6,
   0x75,0xAD,0x71,0x8C,0xB6,0xB5,0x3C,0xE7,0xFB,0xDE,0xC7,0x39,0x00,0x00,0xCF,0x73,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,
   0x7D,0xEF,0x7D,0xEF,0x3B,0xDF,0xFA,0xD6,0x79,0xCE,0x79,0xCE,0xFB,0xDE,0xB9,0xCE,
   0xC7,0x39,0xC4,0x20,0x71,0x8C,0xBA,0xD6,0x71,0x8C,0xCB,0x5A,0xB2,0x94,0xBA,0xD6,
   0xFF,0xFF,0x7D,0xEF,0x7D,0xEF,0xFF,0xFF,0xFF,0xFF,0xB6,0xB5,0x46,0x29,0x05,0x19,
   0x75,0xA5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,
   0x7D,0xEF,0x3C,0xE7,0xFB,0xDE,0xBA,0xD6,0x79,0xCE,0xBA,0xD6,0xFC,0xDE,0x4E,0x63,
   0x42,0x08,0x0C,0x63,0xF7,0xBD,0xBE,0xF7,0xFF,0xFF,0xFB,0xDE,0xFB,0xDE,0xBE,0xF7,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF4,0x9C,0x04,0x21,
   0x05,0x21,0xB6,0xA5,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,0xBE,0xF7,0x7D,0xEF,
   0x3C,0xE7,0xFB,0xDE,0xBA,0xD6,0x79,0xCE,0xFB,0xDE,0xBB,0xD6,0xD1,0x73,0x83,0x18,
   0x86,0x39,0x34,0x9D,0xBD,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xFF,0x35,0xD6,0xEB,0xCC,0x43,0xB3,
   0x40,0x51,0x05,0x19,0xF5,0x8C,0xBE,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBE,0xF7,0xBE,0xF7,0x7D,0xEF,0x7D,0xEF,0x3C,0xE7,
   0xFB,0xDE,0xBA,0xDE,0xBA,0xD6,0x3C,0xDF,0x3A,0xBE,0x4F,0x63,0x82,0x49,0x40,0xA3,
   0x23,0xB4,0xCC,0x83,0x3A,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xF7,0xB5,0xBD,0x82,0x92,0x20,0xF4,0xA0,0xFC,
   0x60,0xE4,0x40,0x82,0x84,0x41,0x8F,0x6B,0x77,0xAD,0x3D,0xE7,0xFF,0xFF,0xFF,0xFF,
   0xFE,0xFF,0xBE,0xF7,0xBE,0xF7,0xBE,0xF7,0x7D,0xEF,0x7D,0xEF,0x3C,0xE7,0xFB,0xDE,
   0xFB,0xDE,0x3D,0xE7,0xBB,0xCE,0x36,0x9D,0x0B,0x6B,0x41,0x6A,0x60,0xC4,0x20,0xFE,
   0x60,0xF5,0x00,0x8B,0xC7,0x6A,0x38,0xC6,0xBE,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0xEF,0x4B,0x7B,0x80,0xB2,0xA0,0xFC,0xA0,0xFC,
   0xE0,0xFC,0xE0,0xFC,0xC0,0xCB,0xC1,0x8A,0x45,0x62,0x4D,0x6B,0xB3,0x94,0xF7,0xBD,
   0x3D,0xDF,0xFF,0xF7,0xFF,0xFF,0xBE,0xF7,0x7D,0xEF,0x7D,0xEF,0x7D,0xE7,0x3D,0xDF,
   0xBA,0xC6,0x75,0xA5,0x8D,0x7B,0x84,0x7A,0x40,0xB3,0xE0,0xEC,0xE0,0xFD,0xE0,0xFD,
   0x60,0xF5,0x20,0xE5,0xA0,0xD4,0x0A,0x6B,0xFB,0xDE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0xEF,0xCC,0x93,0x40,0xEB,0x60,0xFC,0xA0,0xFC,
   0xE0,0xFC,0x20,0xFD,0x60,0xFD,0x20,0xF5,0xA0,0xD4,0xC0,0xBB,0x42,0x9B,0x45,0x8B,
   0x6B,0x9C,0xAE,0x9C,0x71,0x8C,0xB3,0x94,0x33,0x9D,0x34,0xA5,0xF2,0xA4,0xF0,0xB4,
   0xCA,0x9B,0x04,0x9B,0x40,0xBB,0x20,0xE4,0x20,0xFD,0xA0,0xFD,0xA0,0xFD,0xE0,0xFD,
   0xE0,0xFD,0xE0,0xFD,0x20,0xC4,0x88,0x5A,0x38,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x78,0xD6,0x46,0xAB,0x40,0xDB,0x20,0xF4,
   0x60,0xFC,0xA0,0xFC,0xE0,0xFC,0x60,0xFD,0xA0,0xFD,0x60,0xFD,0x20,0xF5,0xA0,0xDC,
   0xC0,0xB3,0xC0,0x51,0x86,0x29,0x0D,0x63,0x8F,0x7B,0x0D,0x5B,0xC7,0x41,0x01,0x82,
   0x00,0xC3,0xC0,0xE3,0x60,0xFC,0xA0,0xFC,0xE0,0xFC,0xE0,0xFC,0x60,0xF5,0x60,0xF5,
   0x20,0xE5,0x80,0x9B,0x86,0x62,0x30,0x84,0x79,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x38,0xC6,0x2D,0x9C,0x05,0x93,
   0x43,0xA3,0x82,0xB3,0xC2,0xBB,0xC2,0xBB,0x22,0xB4,0x82,0xA3,0x42,0x93,0xC3,0x7A,
   0x85,0x62,0x0B,0x63,0x71,0x84,0xB6,0xB5,0x79,0xCE,0x79,0xC6,0xB5,0xAD,0x70,0x94,
   0x4A,0x8B,0x06,0x83,0x04,0x93,0x04,0x9B,0x43,0x9B,0x43,0x9B,0x43,0x93,0x04,0x83,
   0x08,0x73,0x8D,0x73,0xB3,0x94,0x79,0xCE,0x7D,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3C,0xDF,0x38,0xBE,
   0x75,0xB5,0x33,0xA5,0x33,0xA5,0xF3,0x9C,0xF3,0x9C,0xF3,0x9C,0xF3,0x94,0xF3,0x9C,
   0x35,0xA5,0xF8,0xBD,0xFB,0xDE,0xBE,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7E,0xEF,
   0xBB,0xD6,0xF8,0xBD,0xB6,0xAD,0x75,0xAD,0x34,0xA5,0x33,0x9D,0x34,0x9D,0x35,0xA5,
   0xB7,0xAD,0x79,0xC6,0x3C,0xE7,0xBE,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
   }

forever loop
    glcd_draw_image(image,1,1,63,127)
    FlashLED1 = 1
    delay_1s(2)
    glcd_clear_screen()
    FlashLED1 = 0
    delay_1s(2)
end loop

Rob CJ

unread,
Sep 4, 2021, 6:40:21 AM9/4/21
to jal...@googlegroups.com
Hi Majid,

Is the PIC running at all? Are the LEDs flashing?

Kind regards,

Rob


Verzonden: zaterdag 4 september 2021 10:06
Aan: jallib <jal...@googlegroups.com>
Onderwerp: Re: [jallib] Re: How to draw an image in GLCD
 

Rob CJ

unread,
Sep 4, 2021, 8:14:44 AM9/4/21
to jal...@googlegroups.com
Hi Majid,

I had a look and saw that the draw_image function has not been implemented in any of the libraries so that is why it does not work 🙁.

Kind regards,

Rob


Van: jal...@googlegroups.com <jal...@googlegroups.com> namens Rob CJ <rob...@hotmail.com>
Verzonden: zaterdag 4 september 2021 12:40
Aan: jal...@googlegroups.com <jal...@googlegroups.com>
Message has been deleted
Message has been deleted

majid ebru

unread,
Sep 4, 2021, 1:59:42 PM9/4/21
to jallib
i used glcd_draw_image(image,1,1,63,127) in "for loop" command (end of byte array).

at first , LED did not work ,so i checked  my program.

after i changed program then LED worked correctly .

i changed glcd_draw_image(image,0,0,63,127)

i changed 1,1, => 0,0 in " glcd_draw_image" command

now , LED works

Kind regards,

Majid

Rob CJ

unread,
Sep 4, 2021, 2:06:19 PM9/4/21
to jal...@googlegroups.com
Hi Majid,

I only have a Nokia display to test so I added a draw procedure.  You could add this to library of your version to test.

I found out that there are several ways to create a bitmap array. I used the vertical drawing, 1 bit per pixel since I found some examples that used that.

Attached my sample program for the Nokia that draws 4 different images (one is the Arduino Logo, the competition 🙂).

The code below is the code that you should add to the library of your display. The best you can do is make a local copy in the directory where your main program is and add that.

Please let me know if it works for you too. You have to change the resolution in your main program of course to your display.

-- -----------------------------------------------------------------------------
-- Purpose:   Draw an bitmap image from a byte array.
-- Arguments: - bitmap image (byte array)
--            - x- and y-coordinates in pixels of upper left corner of the image
--            - width and height in pixels of the image
-- Notes:     Draws in vertical mode, 1 bit per pixel.
-- -----------------------------------------------------------------------------
procedure glcd_draw_image(byte in image[],
                          byte in x, byte in y,
                          byte in width, byte in height) is

   var word image_index
   var byte x_coord, y_coord, pixel_mask, data

   for height using y_coord loop
      pixel_mask = y_coord % 8
      for width using x_coord loop
         -- Calculate location of the data in the image array.
         image_index = word(x_coord) + (word(y_coord/8) * word(width))
         data = image[image_index]
         if (data & (1<<pixel_mask)) > 0 then
            glcd_write_pixel(x + x_coord, y + y_coord)
         end if 
     end loop
   end loop
   
 end procedure



Verzonden: zaterdag 4 september 2021 19:50

Aan: jallib <jal...@googlegroups.com>
Onderwerp: Re: [jallib] Re: How to draw an image in GLCD
 
Hi Rob CJ

i used glcd_draw_image(image,1,1,63,127) in "for loop" command (end of byte array).

at first , LED does not work ,so i check  my program.

after i changed program then LED worked correctly .

i changed glcd_draw_image(image,0,0,63,127)

i changed 1,1, => 0,0 in " glcd_draw_image" command

now , LED works

Kind regards,

Majid

16f1825_draw_on_nokia.jal

Rob CJ

unread,
Sep 5, 2021, 4:36:31 AM9/5/21
to jal...@googlegroups.com
Hi Madjid,

I  improved the draw image code a bit so that you can make an animation.

Attached two files:
  1. My sample program with an animation thats shows a battery charging by overlaying different images.
  2. The library you are using with the implemented glcd_draw_image procedure that I also used for my Nokia display. Please put this library in your directory, compile your program and let me know if it works. I do not have your display so I could not test it.
If it all works I will add it to Jallib (the ks0108 version and the nokia_5110 version).

Keep in mind to use the right format for your bitmap (vertical 1 bit per pixel). If you have a png or bmp file you can easily convert this to an array for your program using the followig instructions which i also documented in my (draft) sample file. 

The canvas  size here is for my Nokia display, you should use the size of your display.

-- A way to generate the array from a png. Go to: http://javl.github.io/image2cpp/
-- *) Upload your png of jpg file 
-- *) Canvas size: 84 x 48
-- *) Background color: Black
-- *) Invert image colors: Yes (tick)
-- *) Scaling: scale to fit, keep proportions
-- *) Brightness: 128 or higher (what suits you best)
-- *) Code output format must be: Plain bytes
-- *) Draw mode must be: Vertical - 1 bit per pixel. 

Let me know if it works.

Kind regards,

Rob


Verzonden: zaterdag 4 september 2021 20:06
16f1825_draw_on_nokia.jal
glcd_ks0108.jal
Message has been deleted
Message has been deleted

majid ebru

unread,
Sep 6, 2021, 3:49:26 AM9/6/21
to jallib

Hi Rob

thank you

i will test it tonight.

but i can't find "glcd_cache_update()" and "glcd_clear_cache" procedure ??

where are there?

i can't find those in new "glcd_ks0108" ?!

i have to comment those!

Kind regards, Majid

Rob CJ

unread,
Sep 6, 2021, 7:02:52 AM9/6/21
to jal...@googlegroups.com
Hi Majid,

Sorry for the confusion. The cache functions are typical for the Nokia since you cannot read from the display so the data must be  kept in a cache.

For your display that is not needed (and so no cache is available) since you can read the data from the display.

In your case it is sufficient to just call the glcd_draw_image procedure.

I just sent  my example program since you can re-use some of my images for testing because I know these are correct images.

Looking forward to your testresults.

Kind regards,

Rob


Verzonden: maandag 6 september 2021 09:49

majid ebru

unread,
Sep 6, 2021, 3:12:52 PM9/6/21
to jallib
Hi Rob

thank you very very much.

i took photo from GLCD and i attach them.

it worked  very good.

but the speed of draw is slow

images 01 to 05 has drawn line to line.

Kind regards,

majid
09.jpg
05.jpg
01.jpg
11.jpg
10.jpg
06.jpg
03.jpg
08.jpg
04.jpg
02.jpg

majid ebru

unread,
Sep 6, 2021, 3:15:18 PM9/6/21
to jallib
sorry ,

i attach source new program.
18f4520_KS0108.jal

Rob CJ

unread,
Sep 7, 2021, 2:51:23 AM9/7/21
to jal...@googlegroups.com
Hi Majid,

Good to see that it works. The speed is slow because each pixel is written pixel by pixel to and read from the display.

There is a much faster way to do this and that is by using a cache. Using this method the cache is filled pixel by pixel in memory of the PIC first and then it is written in one go to the display as bytes. 

This approach is used this for the Nokia_5110 and the SSD1306 because you cannot read data from these display so you need a cache. I think SSD1306 has the same resolution as your display so it should be doable to implement the same cache approach for your display but I need to update the glcd_ks0108.jal library for that (but cannot test it so you should test it). 

For a cache you need to have sufficient data space in your PIC which I think your PIC has.

So if you need fast writing of images I could implement the cache feature for the ks0108.

Kind regards,

Rob




Verzonden: maandag 6 september 2021 21:15

Rob CJ

unread,
Sep 7, 2021, 1:40:50 PM9/7/21
to jal...@googlegroups.com
Hi Majid,

I implemented a cache version for the ks0108 library but could not test it so I also do not know what the increase in performance will be. It may be possible to make it faster since there is an auto increment feature that I am not using.

If you include this library in the directory where your main program is and you add the statement below to your program before you include this library it will use a cache. You can see it because of the increase in data space.

Add this to your program: 
const bit KS0108_USE_CACHING = TRUE

The compiler result will be different:
Without cache: Data area: 62 of 1536 used
With cache: Data area: 1110 of 1536 used

If you do not define this then the normal operation is used.

BTW. If it does not work, send  an e-mail to me directly so that we do not  keep on spamming jallib. 

If it works, share it with Jallib 🙂

Thanks.

Kind regards,

Rob


Verzonden: maandag 6 september 2021 21:15
glcd_ks0108.jal

majid ebru

unread,
Sep 8, 2021, 5:42:55 PM9/8/21
to jallib
Hi Rob

i use your new lib , but it doesn't work.

i don' have your e-mail and i can't find and see your e-mail in group , so sorry.

my e-mail address is majid.ebru@gmail , if it is possible ,send me an e-mail  , please.

Thank you very much for your time

Kind regards , Majid
Reply all
Reply to author
Forward
0 new messages