N3310LCD library demo

Dependencies:   N3310LCD mbed

Fork of N3310LCD by Petras Saduikis

Committer:
snatch59
Date:
Mon Dec 07 17:24:52 2009 +0000
Revision:
0:36fb749b83c7

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
snatch59 0:36fb749b83c7 1 /*
snatch59 0:36fb749b83c7 2 * N3310LCD. A program to interface mbed with the nuelectronics
snatch59 0:36fb749b83c7 3 * Nokia 3310 LCD shield from www.nuelectronics.com. Ported from
snatch59 0:36fb749b83c7 4 * the nuelectronics Arduino code.
snatch59 0:36fb749b83c7 5 *
snatch59 0:36fb749b83c7 6 * Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk>
snatch59 0:36fb749b83c7 7 *
snatch59 0:36fb749b83c7 8 * This file is part of N3310LCD.
snatch59 0:36fb749b83c7 9 *
snatch59 0:36fb749b83c7 10 * N3310LCD is free software: you can redistribute it and/or modify
snatch59 0:36fb749b83c7 11 * it under the terms of the GNU General Public License as published by
snatch59 0:36fb749b83c7 12 * the Free Software Foundation, either version 3 of the License, or
snatch59 0:36fb749b83c7 13 * (at your option) any later version.
snatch59 0:36fb749b83c7 14 *
snatch59 0:36fb749b83c7 15 * N3310LCD is distributed in the hope that it will be useful,
snatch59 0:36fb749b83c7 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
snatch59 0:36fb749b83c7 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
snatch59 0:36fb749b83c7 18 * GNU General Public License for more details.
snatch59 0:36fb749b83c7 19 *
snatch59 0:36fb749b83c7 20 * You should have received a copy of the GNU General Public License
snatch59 0:36fb749b83c7 21 * along with N3310LCD. If not, see <http://www.gnu.org/licenses/>.
snatch59 0:36fb749b83c7 22 */
snatch59 0:36fb749b83c7 23
snatch59 0:36fb749b83c7 24 #ifndef SNATCH59_N3310FONTS_H
snatch59 0:36fb749b83c7 25 #define SNATCH59_N3310FONTS_H
snatch59 0:36fb749b83c7 26
snatch59 0:36fb749b83c7 27 // 6 x 8 font
snatch59 0:36fb749b83c7 28 // 1 pixel space at left and bottom
snatch59 0:36fb749b83c7 29 // index = ASCII - 32
snatch59 0:36fb749b83c7 30
snatch59 0:36fb749b83c7 31 unsigned char font6_8[][6] =
snatch59 0:36fb749b83c7 32 {
snatch59 0:36fb749b83c7 33 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
snatch59 0:36fb749b83c7 34 { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
snatch59 0:36fb749b83c7 35 { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
snatch59 0:36fb749b83c7 36 { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
snatch59 0:36fb749b83c7 37 { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
snatch59 0:36fb749b83c7 38 { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // %
snatch59 0:36fb749b83c7 39 { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
snatch59 0:36fb749b83c7 40 { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
snatch59 0:36fb749b83c7 41 { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
snatch59 0:36fb749b83c7 42 { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
snatch59 0:36fb749b83c7 43 { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
snatch59 0:36fb749b83c7 44 { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
snatch59 0:36fb749b83c7 45 { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,
snatch59 0:36fb749b83c7 46 { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
snatch59 0:36fb749b83c7 47 { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
snatch59 0:36fb749b83c7 48 { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
snatch59 0:36fb749b83c7 49 { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
snatch59 0:36fb749b83c7 50 { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
snatch59 0:36fb749b83c7 51 { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
snatch59 0:36fb749b83c7 52 { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
snatch59 0:36fb749b83c7 53 { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
snatch59 0:36fb749b83c7 54 { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
snatch59 0:36fb749b83c7 55 { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
snatch59 0:36fb749b83c7 56 { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
snatch59 0:36fb749b83c7 57 { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
snatch59 0:36fb749b83c7 58 { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
snatch59 0:36fb749b83c7 59 { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
snatch59 0:36fb749b83c7 60 { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
snatch59 0:36fb749b83c7 61 { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
snatch59 0:36fb749b83c7 62 { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
snatch59 0:36fb749b83c7 63 { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
snatch59 0:36fb749b83c7 64 { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
snatch59 0:36fb749b83c7 65 { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
snatch59 0:36fb749b83c7 66 { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A
snatch59 0:36fb749b83c7 67 { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
snatch59 0:36fb749b83c7 68 { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
snatch59 0:36fb749b83c7 69 { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
snatch59 0:36fb749b83c7 70 { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
snatch59 0:36fb749b83c7 71 { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
snatch59 0:36fb749b83c7 72 { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
snatch59 0:36fb749b83c7 73 { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
snatch59 0:36fb749b83c7 74 { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
snatch59 0:36fb749b83c7 75 { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
snatch59 0:36fb749b83c7 76 { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
snatch59 0:36fb749b83c7 77 { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
snatch59 0:36fb749b83c7 78 { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
snatch59 0:36fb749b83c7 79 { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
snatch59 0:36fb749b83c7 80 { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
snatch59 0:36fb749b83c7 81 { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
snatch59 0:36fb749b83c7 82 { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
snatch59 0:36fb749b83c7 83 { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
snatch59 0:36fb749b83c7 84 { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
snatch59 0:36fb749b83c7 85 { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
snatch59 0:36fb749b83c7 86 { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
snatch59 0:36fb749b83c7 87 { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
snatch59 0:36fb749b83c7 88 { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
snatch59 0:36fb749b83c7 89 { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
snatch59 0:36fb749b83c7 90 { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
snatch59 0:36fb749b83c7 91 { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
snatch59 0:36fb749b83c7 92 { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
snatch59 0:36fb749b83c7 93 { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55
snatch59 0:36fb749b83c7 94 { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
snatch59 0:36fb749b83c7 95 { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
snatch59 0:36fb749b83c7 96 { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
snatch59 0:36fb749b83c7 97 { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
snatch59 0:36fb749b83c7 98 { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
snatch59 0:36fb749b83c7 99 { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
snatch59 0:36fb749b83c7 100 { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
snatch59 0:36fb749b83c7 101 { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
snatch59 0:36fb749b83c7 102 { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
snatch59 0:36fb749b83c7 103 { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
snatch59 0:36fb749b83c7 104 { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g
snatch59 0:36fb749b83c7 105 { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
snatch59 0:36fb749b83c7 106 { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
snatch59 0:36fb749b83c7 107 { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j
snatch59 0:36fb749b83c7 108 { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
snatch59 0:36fb749b83c7 109 { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
snatch59 0:36fb749b83c7 110 { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
snatch59 0:36fb749b83c7 111 { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
snatch59 0:36fb749b83c7 112 { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
snatch59 0:36fb749b83c7 113 { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p
snatch59 0:36fb749b83c7 114 { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q
snatch59 0:36fb749b83c7 115 { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
snatch59 0:36fb749b83c7 116 { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
snatch59 0:36fb749b83c7 117 { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
snatch59 0:36fb749b83c7 118 { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
snatch59 0:36fb749b83c7 119 { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
snatch59 0:36fb749b83c7 120 { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
snatch59 0:36fb749b83c7 121 { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
snatch59 0:36fb749b83c7 122 { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y
snatch59 0:36fb749b83c7 123 { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
snatch59 0:36fb749b83c7 124 { 0x00,0x00, 0x06, 0x09, 0x09, 0x06 } // horiz lines
snatch59 0:36fb749b83c7 125 };
snatch59 0:36fb749b83c7 126
snatch59 0:36fb749b83c7 127
snatch59 0:36fb749b83c7 128 //******* VERY LARGE FONTS **********
snatch59 0:36fb749b83c7 129 //used here for displaying numbers 0 - 9 and '+', '-', '.'
snatch59 0:36fb749b83c7 130
snatch59 0:36fb749b83c7 131 unsigned char big_number[13][3][16] =
snatch59 0:36fb749b83c7 132 {
snatch59 0:36fb749b83c7 133 0,128,192,224,224,96,224,224, //'0'
snatch59 0:36fb749b83c7 134 192,128,0,0,0,0,0,0
snatch59 0:36fb749b83c7 135 ,
snatch59 0:36fb749b83c7 136 112,255,255,1,0,0,0,0,
snatch59 0:36fb749b83c7 137 255,255,254,0,0,0,0,0
snatch59 0:36fb749b83c7 138 ,
snatch59 0:36fb749b83c7 139 0,15,31,60,56,48,56,56,
snatch59 0:36fb749b83c7 140 31,15,3,0,0,0,0,0
snatch59 0:36fb749b83c7 141 ,
snatch59 0:36fb749b83c7 142
snatch59 0:36fb749b83c7 143 0,0,0,0,128,224,224,0, //'1'
snatch59 0:36fb749b83c7 144 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 145 ,
snatch59 0:36fb749b83c7 146 0,0,3,3,3,255,255,0,
snatch59 0:36fb749b83c7 147 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 148 ,
snatch59 0:36fb749b83c7 149 0,0,56,56,56,63,63,56,
snatch59 0:36fb749b83c7 150 56,56,0,0,0,0,0,0
snatch59 0:36fb749b83c7 151 ,
snatch59 0:36fb749b83c7 152
snatch59 0:36fb749b83c7 153 0,192,192,224,96,96,224,224, //'2'
snatch59 0:36fb749b83c7 154 192,128,0,0,0,0,0,0
snatch59 0:36fb749b83c7 155 ,
snatch59 0:36fb749b83c7 156 0,1,0,0,128,192,224,249,
snatch59 0:36fb749b83c7 157 63,31,0,0,0,0,0,0
snatch59 0:36fb749b83c7 158 ,
snatch59 0:36fb749b83c7 159 0,60,62,63,63,59,57,56,
snatch59 0:36fb749b83c7 160 56,56,56,0,0,0,0,0
snatch59 0:36fb749b83c7 161 ,
snatch59 0:36fb749b83c7 162
snatch59 0:36fb749b83c7 163 0,192,224,224,96,96,224,224, //'3'
snatch59 0:36fb749b83c7 164 192,192,0,0,0,0,0,0
snatch59 0:36fb749b83c7 165 ,
snatch59 0:36fb749b83c7 166 0,1,0,0,48,48,56,125,
snatch59 0:36fb749b83c7 167 239,207,0,0,0,0,0,0
snatch59 0:36fb749b83c7 168 ,
snatch59 0:36fb749b83c7 169 0,28,56,56,48,48,56,60,
snatch59 0:36fb749b83c7 170 31,15,1,0,0,0,0,0
snatch59 0:36fb749b83c7 171 ,
snatch59 0:36fb749b83c7 172
snatch59 0:36fb749b83c7 173 0,0,0,0,0,128,192,224, //'4'
snatch59 0:36fb749b83c7 174 224,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 175 ,
snatch59 0:36fb749b83c7 176 224,240,248,222,207,199,193,255,
snatch59 0:36fb749b83c7 177 255,192,192,0,0,0,0,0
snatch59 0:36fb749b83c7 178 ,
snatch59 0:36fb749b83c7 179 0,0,0,0,0,0,0,63,
snatch59 0:36fb749b83c7 180 63,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 181 ,
snatch59 0:36fb749b83c7 182
snatch59 0:36fb749b83c7 183 0,224,224,224,224,224,224,224, //'5'
snatch59 0:36fb749b83c7 184 224,224,224,0,0,0,0,0
snatch59 0:36fb749b83c7 185 ,
snatch59 0:36fb749b83c7 186 0,63,63,63,56,56,48,112,
snatch59 0:36fb749b83c7 187 240,224,0,0,0,0,0,0
snatch59 0:36fb749b83c7 188 ,
snatch59 0:36fb749b83c7 189 0,28,56,56,48,48,56,60,
snatch59 0:36fb749b83c7 190 31,15,1,0,0,0,0,0
snatch59 0:36fb749b83c7 191 ,
snatch59 0:36fb749b83c7 192
snatch59 0:36fb749b83c7 193 0,0,128,192,192,224,96,96, //'6'
snatch59 0:36fb749b83c7 194 224,224,0,0,0,0,0,0
snatch59 0:36fb749b83c7 195 ,
snatch59 0:36fb749b83c7 196 224,254,255,55,57,24,24,56,
snatch59 0:36fb749b83c7 197 240,240,192,0,0,0,0,0
snatch59 0:36fb749b83c7 198 ,
snatch59 0:36fb749b83c7 199 0,15,31,28,56,48,48,56,
snatch59 0:36fb749b83c7 200 31,15,7,0,0,0,0,0
snatch59 0:36fb749b83c7 201 ,
snatch59 0:36fb749b83c7 202
snatch59 0:36fb749b83c7 203 0,224,224,224,224,224,224,224, //'7'
snatch59 0:36fb749b83c7 204 224,224,224,0,0,0,0,0
snatch59 0:36fb749b83c7 205 ,
snatch59 0:36fb749b83c7 206 0,0,0,0,128,224,248,126,
snatch59 0:36fb749b83c7 207 31,7,1,0,0,0,0,0
snatch59 0:36fb749b83c7 208 ,
snatch59 0:36fb749b83c7 209 0,0,56,62,31,7,1,0,
snatch59 0:36fb749b83c7 210 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 211 ,
snatch59 0:36fb749b83c7 212
snatch59 0:36fb749b83c7 213 0,128,192,224,224,96,96,224, //'8'
snatch59 0:36fb749b83c7 214 192,192,0,0,0,0,0,0
snatch59 0:36fb749b83c7 215 ,
snatch59 0:36fb749b83c7 216 0,207,255,127,56,48,112,112,
snatch59 0:36fb749b83c7 217 255,239,199,0,0,0,0,0
snatch59 0:36fb749b83c7 218 ,
snatch59 0:36fb749b83c7 219 3,15,31,60,56,48,48,56,
snatch59 0:36fb749b83c7 220 31,31,15,0,0,0,0,0
snatch59 0:36fb749b83c7 221 ,
snatch59 0:36fb749b83c7 222
snatch59 0:36fb749b83c7 223 0,128,192,224,224,96,224,224, //'9'
snatch59 0:36fb749b83c7 224 192,128,0,0,0,0,0,0
snatch59 0:36fb749b83c7 225 ,
snatch59 0:36fb749b83c7 226 12,63,127,241,224,192,192,225,
snatch59 0:36fb749b83c7 227 255,255,254,0,0,0,0,0
snatch59 0:36fb749b83c7 228 ,
snatch59 0:36fb749b83c7 229 0,0,56,48,48,56,56,30,
snatch59 0:36fb749b83c7 230 15,7,0,0,0,0,0,0
snatch59 0:36fb749b83c7 231 ,
snatch59 0:36fb749b83c7 232
snatch59 0:36fb749b83c7 233
snatch59 0:36fb749b83c7 234 0,0,0,0,0,0,0,0, //'.'
snatch59 0:36fb749b83c7 235 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 236 ,
snatch59 0:36fb749b83c7 237 0,0,0,0,0,0,0,0,
snatch59 0:36fb749b83c7 238 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 239 ,
snatch59 0:36fb749b83c7 240 60,60,60,0,0,0,0,0,
snatch59 0:36fb749b83c7 241 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 242 ,
snatch59 0:36fb749b83c7 243
snatch59 0:36fb749b83c7 244 0,0,0,0,0,0,0,0, //'+'
snatch59 0:36fb749b83c7 245 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 246 ,
snatch59 0:36fb749b83c7 247 0,0,64,64,64,64,64,254,
snatch59 0:36fb749b83c7 248 254,64,64,64,64,64,0,0
snatch59 0:36fb749b83c7 249 ,
snatch59 0:36fb749b83c7 250 0,0,0,0,0,0,0,15,
snatch59 0:36fb749b83c7 251 15,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 252 ,
snatch59 0:36fb749b83c7 253
snatch59 0:36fb749b83c7 254 0,0,0,0,0,0,0,0, //'-'
snatch59 0:36fb749b83c7 255 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 256 ,
snatch59 0:36fb749b83c7 257 0,64,64,64,64,64,64,0,
snatch59 0:36fb749b83c7 258 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 259 ,
snatch59 0:36fb749b83c7 260 0,0,0,0,0,0,0,0,
snatch59 0:36fb749b83c7 261 0,0,0,0,0,0,0,0
snatch59 0:36fb749b83c7 262 };
snatch59 0:36fb749b83c7 263
snatch59 0:36fb749b83c7 264 #endif