PokittoLib is the library needed for programming the Pokitto DIY game console (www.pokitto.com)

Dependents:   YATTT sd_map_test cPong SnowDemo ... more

PokittoLib

Library for programming Pokitto hardware

How to Use

  1. Import this library to online compiler (see button "import" on the right hand side
  2. DO NOT import mbed-src anymore, a better version is now included inside PokittoLib
  3. Change My_settings.h according to your project
  4. Start coding!
Committer:
Pokitto
Date:
Wed Dec 25 23:59:52 2019 +0000
Revision:
71:531419862202
Parent:
52:c04087025cab
Changed Mode2 C++ refresh code (graphical errors)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pokitto 52:c04087025cab 1 /*---------------------------------------------------------------------------/
Pokitto 52:c04087025cab 2 / Petit FatFs - FAT file system module include file R0.02 (C)ChaN, 2009
Pokitto 52:c04087025cab 3 /----------------------------------------------------------------------------/
Pokitto 52:c04087025cab 4 / Petit FatFs module is an open source software to implement FAT file system to
Pokitto 52:c04087025cab 5 / small embedded systems. This is a free software and is opened for education,
Pokitto 52:c04087025cab 6 / research and commercial developments under license policy of following trems.
Pokitto 52:c04087025cab 7 /
Pokitto 52:c04087025cab 8 / Copyright (C) 2009, ChaN, all right reserved.
Pokitto 52:c04087025cab 9 /
Pokitto 52:c04087025cab 10 / * The Petit FatFs module is a free software and there is NO WARRANTY.
Pokitto 52:c04087025cab 11 / * No restriction on use. You can use, modify and redistribute it for
Pokitto 52:c04087025cab 12 / personal, non-profit or commercial use UNDER YOUR RESPONSIBILITY.
Pokitto 52:c04087025cab 13 / * Redistributions of source code must retain the above copyright notice.
Pokitto 52:c04087025cab 14 /
Pokitto 52:c04087025cab 15 /----------------------------------------------------------------------------*/
Pokitto 52:c04087025cab 16
Pokitto 52:c04087025cab 17 #include "integer.h"
Pokitto 52:c04087025cab 18
Pokitto 52:c04087025cab 19 /*---------------------------------------------------------------------------/
Pokitto 52:c04087025cab 20 / Petit FatFs Configuration Options
Pokitto 52:c04087025cab 21 /
Pokitto 52:c04087025cab 22 / CAUTION! Do not forget to make clean the project after any changes to
Pokitto 52:c04087025cab 23 / the configuration options.
Pokitto 52:c04087025cab 24 /
Pokitto 52:c04087025cab 25 /----------------------------------------------------------------------------*/
Pokitto 52:c04087025cab 26 #ifndef _FATFS
Pokitto 52:c04087025cab 27 #define _FATFS
Pokitto 52:c04087025cab 28
Pokitto 52:c04087025cab 29 namespace PFFS {
Pokitto 52:c04087025cab 30
Pokitto 52:c04087025cab 31
Pokitto 52:c04087025cab 32 #define _USE_READ 1 /* pf_read(): 0:Remove ,1:Enable */
Pokitto 52:c04087025cab 33
Pokitto 52:c04087025cab 34 #define _USE_DIR 1 /* pf_opendir() and pf_readdir(): 0:Remove ,1:Enable */
Pokitto 52:c04087025cab 35
Pokitto 52:c04087025cab 36 #define _USE_LSEEK 1 /* pf_lseek(): 0:Remove ,1:Enable */
Pokitto 52:c04087025cab 37
Pokitto 52:c04087025cab 38 #define _USE_WRITE 1 /* pf_write(): 0:Remove ,1:Enable */
Pokitto 52:c04087025cab 39
Pokitto 52:c04087025cab 40 #define _FS_FAT32 1 /* 0:Supports FAT12/16 only, 1:Enable FAT32 supprt */
Pokitto 52:c04087025cab 41
Pokitto 52:c04087025cab 42
Pokitto 52:c04087025cab 43 #define _CODE_PAGE 1
Pokitto 52:c04087025cab 44 /* Defines which code page is used for path name. Supported code pages are:
Pokitto 52:c04087025cab 45 / 932, 936, 949, 950, 437, 720, 737, 775, 850, 852, 855, 857, 858, 862, 866,
Pokitto 52:c04087025cab 46 / 874, 1250, 1251, 1252, 1253, 1254, 1255, 1257, 1258 and 1 (ASCII only).
Pokitto 52:c04087025cab 47 / SBCS configurations except for 1 requiers a case conversion table. This
Pokitto 52:c04087025cab 48 / might occupy 128 bytes on the RAM on some platforms, e.g. avr-gcc. */
Pokitto 52:c04087025cab 49
Pokitto 52:c04087025cab 50
Pokitto 52:c04087025cab 51 #define _WORD_ACCESS 0 //jonne 1 gives hard fault with lpc11u68
Pokitto 52:c04087025cab 52 /* The _WORD_ACCESS option defines which access method is used to the word
Pokitto 52:c04087025cab 53 / data in the FAT structure.
Pokitto 52:c04087025cab 54 /
Pokitto 52:c04087025cab 55 / 0: Byte-by-byte access. Always compatible with all platforms.
Pokitto 52:c04087025cab 56 / 1: Word access. Do not choose this unless following condition is met.
Pokitto 52:c04087025cab 57 /
Pokitto 52:c04087025cab 58 / When the byte order on the memory is big-endian or address miss-aligned
Pokitto 52:c04087025cab 59 / word access results incorrect behavior, the _WORD_ACCESS must be set to 0.
Pokitto 52:c04087025cab 60 / If it is not the case, the value can also be set to 1 to improve the
Pokitto 52:c04087025cab 61 / performance and code efficiency. */
Pokitto 52:c04087025cab 62
Pokitto 52:c04087025cab 63
Pokitto 52:c04087025cab 64 /* End of configuration options. Do not change followings without care. */
Pokitto 52:c04087025cab 65 /*--------------------------------------------------------------------------*/
Pokitto 52:c04087025cab 66
Pokitto 52:c04087025cab 67 #if _FS_FAT32
Pokitto 52:c04087025cab 68 #define CLUST DWORD
Pokitto 52:c04087025cab 69 #else
Pokitto 52:c04087025cab 70 #define CLUST WORD
Pokitto 52:c04087025cab 71 #endif
Pokitto 52:c04087025cab 72
Pokitto 52:c04087025cab 73
Pokitto 52:c04087025cab 74 /* File system object structure */
Pokitto 52:c04087025cab 75
Pokitto 52:c04087025cab 76 typedef struct _FATFS_ {
Pokitto 52:c04087025cab 77 BYTE fs_type; /* FAT sub type */
Pokitto 52:c04087025cab 78 BYTE csize; /* Number of sectors per cluster */
Pokitto 52:c04087025cab 79 BYTE flag; /* File status flags */
Pokitto 52:c04087025cab 80 BYTE csect; /* File sector address in the cluster */
Pokitto 52:c04087025cab 81 WORD n_rootdir; /* Number of root directory entries (0 on FAT32) */
Pokitto 52:c04087025cab 82 BYTE* buf; /* Pointer to the disk access buffer */
Pokitto 52:c04087025cab 83 CLUST max_clust; /* Maximum cluster# + 1. Number of clusters is max_clust - 2 */
Pokitto 52:c04087025cab 84 DWORD fatbase; /* FAT start sector */
Pokitto 52:c04087025cab 85 DWORD dirbase; /* Root directory start sector (Cluster# on FAT32) */
Pokitto 52:c04087025cab 86 DWORD database; /* Data start sector */
Pokitto 52:c04087025cab 87 DWORD fptr; /* File R/W pointer */
Pokitto 52:c04087025cab 88 DWORD fsize; /* File size */
Pokitto 52:c04087025cab 89 CLUST org_clust; /* File start cluster */
Pokitto 52:c04087025cab 90 CLUST curr_clust; /* File current cluster */
Pokitto 52:c04087025cab 91 DWORD dsect; /* File current data sector */
Pokitto 52:c04087025cab 92 } FATFS;
Pokitto 52:c04087025cab 93
Pokitto 52:c04087025cab 94
Pokitto 52:c04087025cab 95
Pokitto 52:c04087025cab 96 /* Directory object structure */
Pokitto 52:c04087025cab 97
Pokitto 52:c04087025cab 98 typedef struct _DIR_ {
Pokitto 52:c04087025cab 99 WORD index; /* Current read/write index number */
Pokitto 52:c04087025cab 100 BYTE* fn; /* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */
Pokitto 52:c04087025cab 101 CLUST sclust; /* Table start cluster (0:Static table) */
Pokitto 52:c04087025cab 102 CLUST clust; /* Current cluster */
Pokitto 52:c04087025cab 103 DWORD sect; /* Current sector */
Pokitto 52:c04087025cab 104 } FATDIR;
Pokitto 52:c04087025cab 105
Pokitto 52:c04087025cab 106
Pokitto 52:c04087025cab 107
Pokitto 52:c04087025cab 108 /* File status structure */
Pokitto 52:c04087025cab 109
Pokitto 52:c04087025cab 110 typedef struct _FILINFO_ {
Pokitto 52:c04087025cab 111 DWORD fsize; /* File size */
Pokitto 52:c04087025cab 112 WORD fdate; /* Last modified date */
Pokitto 52:c04087025cab 113 WORD ftime; /* Last modified time */
Pokitto 52:c04087025cab 114 BYTE fattrib; /* Attribute */
Pokitto 52:c04087025cab 115 char fname[13]; /* File name */
Pokitto 52:c04087025cab 116 } FILINFO;
Pokitto 52:c04087025cab 117
Pokitto 52:c04087025cab 118
Pokitto 52:c04087025cab 119
Pokitto 52:c04087025cab 120 /* File function return code (FRESULT) */
Pokitto 52:c04087025cab 121
Pokitto 52:c04087025cab 122 typedef enum {
Pokitto 52:c04087025cab 123 FR_OK = 0, /* 0 */
Pokitto 52:c04087025cab 124 FR_DISK_ERR, /* 1 */
Pokitto 52:c04087025cab 125 FR_NOT_READY, /* 2 */
Pokitto 52:c04087025cab 126 FR_NO_FILE, /* 3 */
Pokitto 52:c04087025cab 127 FR_NO_PATH, /* 4 */
Pokitto 52:c04087025cab 128 FR_NOT_OPENED, /* 5 */
Pokitto 52:c04087025cab 129 FR_NOT_ENABLED, /* 6 */
Pokitto 52:c04087025cab 130 FR_NO_FILESYSTEM /* 7 */
Pokitto 52:c04087025cab 131 } FRESULT;
Pokitto 52:c04087025cab 132
Pokitto 52:c04087025cab 133
Pokitto 52:c04087025cab 134
Pokitto 52:c04087025cab 135 /*--------------------------------------------------------------*/
Pokitto 52:c04087025cab 136 /* Petit FatFs module application interface */
Pokitto 52:c04087025cab 137
Pokitto 52:c04087025cab 138 FRESULT pf_mount (FATFS*); /* Mount/Unmount a logical drive */
Pokitto 52:c04087025cab 139 FRESULT pf_open (const char*); /* Open a file */
Pokitto 52:c04087025cab 140 FRESULT pf_read (void*, WORD, WORD*); /* Read data from the open file */
Pokitto 52:c04087025cab 141 FRESULT pf_write (const void*, WORD, WORD*); /* Write data to the open file */
Pokitto 52:c04087025cab 142 FRESULT pf_lseek (DWORD); /* Move file pointer of the open file */
Pokitto 52:c04087025cab 143 FRESULT pf_opendir (FATDIR*, const char*); /* Open a directory */
Pokitto 52:c04087025cab 144 FRESULT pf_readdir (FATDIR*, FILINFO*); /* Read a directory item from the open directory */
Pokitto 52:c04087025cab 145
Pokitto 52:c04087025cab 146
Pokitto 52:c04087025cab 147
Pokitto 52:c04087025cab 148 /*--------------------------------------------------------------*/
Pokitto 52:c04087025cab 149 /* Flags and offset address */
Pokitto 52:c04087025cab 150
Pokitto 52:c04087025cab 151 /* File status flag (FATFS.flag) */
Pokitto 52:c04087025cab 152
Pokitto 52:c04087025cab 153 #define FA_OPENED 0x01
Pokitto 52:c04087025cab 154 #define FA_WPRT 0x02
Pokitto 52:c04087025cab 155 #define FA__WIP 0x40
Pokitto 52:c04087025cab 156
Pokitto 52:c04087025cab 157
Pokitto 52:c04087025cab 158 /* FAT sub type (FATFS.fs_type) */
Pokitto 52:c04087025cab 159
Pokitto 52:c04087025cab 160 #define FS_FAT12 1
Pokitto 52:c04087025cab 161 #define FS_FAT16 2
Pokitto 52:c04087025cab 162 #define FS_FAT32 3
Pokitto 52:c04087025cab 163
Pokitto 52:c04087025cab 164
Pokitto 52:c04087025cab 165 /* File attribute bits for directory entry */
Pokitto 52:c04087025cab 166
Pokitto 52:c04087025cab 167 #define AM_RDO 0x01 /* Read only */
Pokitto 52:c04087025cab 168 #define AM_HID 0x02 /* Hidden */
Pokitto 52:c04087025cab 169 #define AM_SYS 0x04 /* System */
Pokitto 52:c04087025cab 170 #define AM_VOL 0x08 /* Volume label */
Pokitto 52:c04087025cab 171 #define AM_LFN 0x0F /* LFN entry */
Pokitto 52:c04087025cab 172 #define AM_DIR 0x10 /* Directory */
Pokitto 52:c04087025cab 173 #define AM_ARC 0x20 /* Archive */
Pokitto 52:c04087025cab 174 #define AM_MASK 0x3F /* Mask of defined bits */
Pokitto 52:c04087025cab 175
Pokitto 52:c04087025cab 176
Pokitto 52:c04087025cab 177 /* FatFs refers the members in the FAT structures with byte offset instead
Pokitto 52:c04087025cab 178 / of structure member because there are incompatibility of the packing option
Pokitto 52:c04087025cab 179 / between various compilers. */
Pokitto 52:c04087025cab 180
Pokitto 52:c04087025cab 181 #define BS_jmpBoot 0
Pokitto 52:c04087025cab 182 #define BS_OEMName 3
Pokitto 52:c04087025cab 183 #define BPB_BytsPerSec 11
Pokitto 52:c04087025cab 184 #define BPB_SecPerClus 13
Pokitto 52:c04087025cab 185 #define BPB_RsvdSecCnt 14
Pokitto 52:c04087025cab 186 #define BPB_NumFATs 16
Pokitto 52:c04087025cab 187 #define BPB_RootEntCnt 17
Pokitto 52:c04087025cab 188 #define BPB_TotSec16 19
Pokitto 52:c04087025cab 189 #define BPB_Media 21
Pokitto 52:c04087025cab 190 #define BPB_FATSz16 22
Pokitto 52:c04087025cab 191 #define BPB_SecPerTrk 24
Pokitto 52:c04087025cab 192 #define BPB_NumHeads 26
Pokitto 52:c04087025cab 193 #define BPB_HiddSec 28
Pokitto 52:c04087025cab 194 #define BPB_TotSec32 32
Pokitto 52:c04087025cab 195 #define BS_55AA 510
Pokitto 52:c04087025cab 196
Pokitto 52:c04087025cab 197 #define BS_DrvNum 36
Pokitto 52:c04087025cab 198 #define BS_BootSig 38
Pokitto 52:c04087025cab 199 #define BS_VolID 39
Pokitto 52:c04087025cab 200 #define BS_VolLab 43
Pokitto 52:c04087025cab 201 #define BS_FilSysType 54
Pokitto 52:c04087025cab 202
Pokitto 52:c04087025cab 203 #define BPB_FATSz32 36
Pokitto 52:c04087025cab 204 #define BPB_ExtFlags 40
Pokitto 52:c04087025cab 205 #define BPB_FSVer 42
Pokitto 52:c04087025cab 206 #define BPB_RootClus 44
Pokitto 52:c04087025cab 207 #define BPB_FSInfo 48
Pokitto 52:c04087025cab 208 #define BPB_BkBootSec 50
Pokitto 52:c04087025cab 209 #define BS_DrvNum32 64
Pokitto 52:c04087025cab 210 #define BS_BootSig32 66
Pokitto 52:c04087025cab 211 #define BS_VolID32 67
Pokitto 52:c04087025cab 212 #define BS_VolLab32 71
Pokitto 52:c04087025cab 213 #define BS_FilSysType32 82
Pokitto 52:c04087025cab 214
Pokitto 52:c04087025cab 215 #define MBR_Table 446
Pokitto 52:c04087025cab 216
Pokitto 52:c04087025cab 217 #define DIR_Name 0
Pokitto 52:c04087025cab 218 #define DIR_Attr 11
Pokitto 52:c04087025cab 219 #define DIR_NTres 12
Pokitto 52:c04087025cab 220 #define DIR_CrtTime 14
Pokitto 52:c04087025cab 221 #define DIR_CrtDate 16
Pokitto 52:c04087025cab 222 #define DIR_FstClusHI 20
Pokitto 52:c04087025cab 223 #define DIR_WrtTime 22
Pokitto 52:c04087025cab 224 #define DIR_WrtDate 24
Pokitto 52:c04087025cab 225 #define DIR_FstClusLO 26
Pokitto 52:c04087025cab 226 #define DIR_FileSize 28
Pokitto 52:c04087025cab 227
Pokitto 52:c04087025cab 228
Pokitto 52:c04087025cab 229
Pokitto 52:c04087025cab 230 /*--------------------------------*/
Pokitto 52:c04087025cab 231 /* Multi-byte word access macros */
Pokitto 52:c04087025cab 232
Pokitto 52:c04087025cab 233 #if _WORD_ACCESS == 1 /* Enable word access to the FAT structure */
Pokitto 52:c04087025cab 234 #define LD_WORD(ptr) (WORD)(*(WORD*)(BYTE*)(ptr))
Pokitto 52:c04087025cab 235 #define LD_DWORD(ptr) (DWORD)(*(DWORD*)(BYTE*)(ptr))
Pokitto 52:c04087025cab 236 #define ST_WORD(ptr,val) *(WORD*)(BYTE*)(ptr)=(WORD)(val)
Pokitto 52:c04087025cab 237 #define ST_DWORD(ptr,val) *(DWORD*)(BYTE*)(ptr)=(DWORD)(val)
Pokitto 52:c04087025cab 238 #else /* Use byte-by-byte access to the FAT structure */
Pokitto 52:c04087025cab 239 #define LD_WORD(ptr) (WORD)(((WORD)*(BYTE*)((ptr)+1)<<8)|(WORD)*(BYTE*)(ptr))
Pokitto 52:c04087025cab 240 #define LD_DWORD(ptr) (DWORD)(((DWORD)*(BYTE*)((ptr)+3)<<24)|((DWORD)*(BYTE*)((ptr)+2)<<16)|((WORD)*(BYTE*)((ptr)+1)<<8)|*(BYTE*)(ptr))
Pokitto 52:c04087025cab 241 #define ST_WORD(ptr,val) *(BYTE*)(ptr)=(BYTE)(val); *(BYTE*)((ptr)+1)=(BYTE)((WORD)(val)>>8)
Pokitto 52:c04087025cab 242 #define ST_DWORD(ptr,val) *(BYTE*)(ptr)=(BYTE)(val); *(BYTE*)((ptr)+1)=(BYTE)((WORD)(val)>>8); *(BYTE*)((ptr)+2)=(BYTE)((DWORD)(val)>>16); *(BYTE*)((ptr)+3)=(BYTE)((DWORD)(val)>>24)
Pokitto 52:c04087025cab 243 #endif
Pokitto 52:c04087025cab 244
Pokitto 52:c04087025cab 245
Pokitto 52:c04087025cab 246 /*--------------------------------------------------------*/
Pokitto 52:c04087025cab 247 /* DBCS code ranges and SBCS extend char conversion table */
Pokitto 52:c04087025cab 248
Pokitto 52:c04087025cab 249 #if _CODE_PAGE == 932 /* Japanese Shift-JIS */
Pokitto 52:c04087025cab 250 #define _DF1S 0x81 /* DBC 1st byte range 1 start */
Pokitto 52:c04087025cab 251 #define _DF1E 0x9F /* DBC 1st byte range 1 end */
Pokitto 52:c04087025cab 252 #define _DF2S 0xE0 /* DBC 1st byte range 2 start */
Pokitto 52:c04087025cab 253 #define _DF2E 0xFC /* DBC 1st byte range 2 end */
Pokitto 52:c04087025cab 254 #define _DS1S 0x40 /* DBC 2nd byte range 1 start */
Pokitto 52:c04087025cab 255 #define _DS1E 0x7E /* DBC 2nd byte range 1 end */
Pokitto 52:c04087025cab 256 #define _DS2S 0x80 /* DBC 2nd byte range 2 start */
Pokitto 52:c04087025cab 257 #define _DS2E 0xFC /* DBC 2nd byte range 2 end */
Pokitto 52:c04087025cab 258
Pokitto 52:c04087025cab 259 #elif _CODE_PAGE == 936 /* Simplified Chinese GBK */
Pokitto 52:c04087025cab 260 #define _DF1S 0x81
Pokitto 52:c04087025cab 261 #define _DF1E 0xFE
Pokitto 52:c04087025cab 262 #define _DS1S 0x40
Pokitto 52:c04087025cab 263 #define _DS1E 0x7E
Pokitto 52:c04087025cab 264 #define _DS2S 0x80
Pokitto 52:c04087025cab 265 #define _DS2E 0xFE
Pokitto 52:c04087025cab 266
Pokitto 52:c04087025cab 267 #elif _CODE_PAGE == 949 /* Korean */
Pokitto 52:c04087025cab 268 #define _DF1S 0x81
Pokitto 52:c04087025cab 269 #define _DF1E 0xFE
Pokitto 52:c04087025cab 270 #define _DS1S 0x41
Pokitto 52:c04087025cab 271 #define _DS1E 0x5A
Pokitto 52:c04087025cab 272 #define _DS2S 0x61
Pokitto 52:c04087025cab 273 #define _DS2E 0x7A
Pokitto 52:c04087025cab 274 #define _DS3S 0x81
Pokitto 52:c04087025cab 275 #define _DS3E 0xFE
Pokitto 52:c04087025cab 276
Pokitto 52:c04087025cab 277 #elif _CODE_PAGE == 950 /* Traditional Chinese Big5 */
Pokitto 52:c04087025cab 278 #define _DF1S 0x81
Pokitto 52:c04087025cab 279 #define _DF1E 0xFE
Pokitto 52:c04087025cab 280 #define _DS1S 0x40
Pokitto 52:c04087025cab 281 #define _DS1E 0x7E
Pokitto 52:c04087025cab 282 #define _DS2S 0xA1
Pokitto 52:c04087025cab 283 #define _DS2E 0xFE
Pokitto 52:c04087025cab 284
Pokitto 52:c04087025cab 285 #elif _CODE_PAGE == 437 /* U.S. (OEM) */
Pokitto 52:c04087025cab 286 #define _DF1S 0
Pokitto 52:c04087025cab 287 #define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F,0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 288 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 289 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 290 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 291
Pokitto 52:c04087025cab 292 #elif _CODE_PAGE == 720 /* Arabic (OEM) */
Pokitto 52:c04087025cab 293 #define _DF1S 0
Pokitto 52:c04087025cab 294 #define _EXCVT {0x80,0x81,0x45,0x41,0x84,0x41,0x86,0x43,0x45,0x45,0x45,0x49,0x49,0x8D,0x8E,0x8F,0x90,0x92,0x92,0x93,0x94,0x95,0x49,0x49,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 295 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 296 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 297 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 298
Pokitto 52:c04087025cab 299 #elif _CODE_PAGE == 737 /* Greek (OEM) */
Pokitto 52:c04087025cab 300 #define _DF1S 0
Pokitto 52:c04087025cab 301 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x92,0x92,0x93,0x94,0x95,0x96,0x97,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, \
Pokitto 52:c04087025cab 302 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0xAA,0x92,0x93,0x94,0x95,0x96,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 303 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 304 0x97,0xEA,0xEB,0xEC,0xE4,0xED,0xEE,0xE7,0xE8,0xF1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 305
Pokitto 52:c04087025cab 306 #elif _CODE_PAGE == 775 /* Baltic (OEM) */
Pokitto 52:c04087025cab 307 #define _DF1S 0
Pokitto 52:c04087025cab 308 #define _EXCVT {0x80,0x9A,0x91,0xA0,0x8E,0x95,0x8F,0x80,0xAD,0xED,0x8A,0x8A,0xA1,0x8D,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0x95,0x96,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 309 0xA0,0xA1,0xE0,0xA3,0xA3,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 310 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xA5,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 311 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE3,0xE8,0xE8,0xEA,0xEA,0xEE,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 312
Pokitto 52:c04087025cab 313 #elif _CODE_PAGE == 850 /* Multilingual Latin 1 (OEM) */
Pokitto 52:c04087025cab 314 #define _DF1S 0
Pokitto 52:c04087025cab 315 #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x59,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 316 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 317 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 318 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 319
Pokitto 52:c04087025cab 320 #elif _CODE_PAGE == 852 /* Latin 2 (OEM) */
Pokitto 52:c04087025cab 321 #define _DF1S 0
Pokitto 52:c04087025cab 322 #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xDE,0x8F,0x80,0x9D,0xD3,0x8A,0x8A,0xD7,0x8D,0x8E,0x8F,0x90,0x91,0x91,0xE2,0x99,0x95,0x95,0x97,0x97,0x99,0x9A,0x9B,0x9B,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 323 0xB5,0xD6,0xE0,0xE9,0xA4,0xA4,0xA6,0xA6,0xA8,0xA8,0xAA,0x8D,0xAC,0xB8,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBD,0xBF, \
Pokitto 52:c04087025cab 324 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC6,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,0xD3,0xD2,0xD5,0xD6,0xD7,0xB7,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 325 0xE0,0xE1,0xE2,0xE3,0xE3,0xD5,0xE6,0xE6,0xE8,0xE9,0xE8,0xEB,0xED,0xED,0xDD,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xEB,0xFC,0xFC,0xFE,0xFF}
Pokitto 52:c04087025cab 326
Pokitto 52:c04087025cab 327 #elif _CODE_PAGE == 855 /* Cyrillic (OEM) */
Pokitto 52:c04087025cab 328 #define _DF1S 0
Pokitto 52:c04087025cab 329 #define _EXCVT {0x81,0x81,0x83,0x83,0x85,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8D,0x8D,0x8F,0x8F,0x91,0x91,0x93,0x93,0x95,0x95,0x97,0x97,0x99,0x99,0x9B,0x9B,0x9D,0x9D,0x9F,0x9F, \
Pokitto 52:c04087025cab 330 0xA1,0xA1,0xA3,0xA3,0xA5,0xA5,0xA7,0xA7,0xA9,0xA9,0xAB,0xAB,0xAD,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB6,0xB6,0xB8,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBE,0xBF, \
Pokitto 52:c04087025cab 331 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD3,0xD3,0xD5,0xD5,0xD7,0xD7,0xDD,0xD9,0xDA,0xDB,0xDC,0xDD,0xE0,0xDF, \
Pokitto 52:c04087025cab 332 0xE0,0xE2,0xE2,0xE4,0xE4,0xE6,0xE6,0xE8,0xE8,0xEA,0xEA,0xEC,0xEC,0xEE,0xEE,0xEF,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 333
Pokitto 52:c04087025cab 334 #elif _CODE_PAGE == 857 /* Turkish (OEM) */
Pokitto 52:c04087025cab 335 #define _DF1S 0
Pokitto 52:c04087025cab 336 #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0x98,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x98,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9E, \
Pokitto 52:c04087025cab 337 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 338 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 339 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xDE,0x59,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 340
Pokitto 52:c04087025cab 341 #elif _CODE_PAGE == 858 /* Multilingual Latin 1 + Euro (OEM) */
Pokitto 52:c04087025cab 342 #define _DF1S 0
Pokitto 52:c04087025cab 343 #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x59,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 344 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 345 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 346 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 347
Pokitto 52:c04087025cab 348 #elif _CODE_PAGE == 862 /* Hebrew (OEM) */
Pokitto 52:c04087025cab 349 #define _DF1S 0
Pokitto 52:c04087025cab 350 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 351 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 352 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 353 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 354
Pokitto 52:c04087025cab 355 #elif _CODE_PAGE == 866 /* Russian (OEM) */
Pokitto 52:c04087025cab 356 #define _DF1S 0
Pokitto 52:c04087025cab 357 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 358 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 359 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 360 0x90,0x91,0x92,0x93,0x9d,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 361
Pokitto 52:c04087025cab 362 #elif _CODE_PAGE == 874 /* Thai (OEM, Windows) */
Pokitto 52:c04087025cab 363 #define _DF1S 0
Pokitto 52:c04087025cab 364 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 365 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 366 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 367 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 368
Pokitto 52:c04087025cab 369 #elif _CODE_PAGE == 1250 /* Central Europe (Windows) */
Pokitto 52:c04087025cab 370 #define _DF1S 0
Pokitto 52:c04087025cab 371 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x8D,0x8E,0x8F, \
Pokitto 52:c04087025cab 372 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xA3,0xB4,0xB5,0xB6,0xB7,0xB8,0xA5,0xAA,0xBB,0xBC,0xBD,0xBC,0xAF, \
Pokitto 52:c04087025cab 373 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 374 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xFF}
Pokitto 52:c04087025cab 375
Pokitto 52:c04087025cab 376 #elif _CODE_PAGE == 1251 /* Cyrillic (Windows) */
Pokitto 52:c04087025cab 377 #define _DF1S 0
Pokitto 52:c04087025cab 378 #define _EXCVT {0x80,0x81,0x82,0x82,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x80,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x8D,0x8E,0x8F, \
Pokitto 52:c04087025cab 379 0xA0,0xA2,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB2,0xA5,0xB5,0xB6,0xB7,0xA8,0xB9,0xAA,0xBB,0xA3,0xBD,0xBD,0xAF, \
Pokitto 52:c04087025cab 380 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 381 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF}
Pokitto 52:c04087025cab 382
Pokitto 52:c04087025cab 383 #elif _CODE_PAGE == 1252 /* Latin 1 (Windows) */
Pokitto 52:c04087025cab 384 #define _DF1S 0
Pokitto 52:c04087025cab 385 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xAd,0x9B,0x8C,0x9D,0xAE,0x9F, \
Pokitto 52:c04087025cab 386 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 387 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 388 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0x9F}
Pokitto 52:c04087025cab 389
Pokitto 52:c04087025cab 390 #elif _CODE_PAGE == 1253 /* Greek (Windows) */
Pokitto 52:c04087025cab 391 #define _DF1S 0
Pokitto 52:c04087025cab 392 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 393 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 394 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xA2,0xB8,0xB9,0xBA, \
Pokitto 52:c04087025cab 395 0xE0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xFB,0xBC,0xFD,0xBF,0xFF}
Pokitto 52:c04087025cab 396
Pokitto 52:c04087025cab 397 #elif _CODE_PAGE == 1254 /* Turkish (Windows) */
Pokitto 52:c04087025cab 398 #define _DF1S 0
Pokitto 52:c04087025cab 399 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 400 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 401 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 402 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0x9F}
Pokitto 52:c04087025cab 403
Pokitto 52:c04087025cab 404 #elif _CODE_PAGE == 1255 /* Hebrew (Windows) */
Pokitto 52:c04087025cab 405 #define _DF1S 0
Pokitto 52:c04087025cab 406 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 407 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 408 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 409 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 410
Pokitto 52:c04087025cab 411 #elif _CODE_PAGE == 1256 /* Arabic (Windows) */
Pokitto 52:c04087025cab 412 #define _DF1S 0
Pokitto 52:c04087025cab 413 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x8C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 414 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 415 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 416 0x41,0xE1,0x41,0xE3,0xE4,0xE5,0xE6,0x43,0x45,0x45,0x45,0x45,0xEC,0xED,0x49,0x49,0xF0,0xF1,0xF2,0xF3,0x4F,0xF5,0xF6,0xF7,0xF8,0x55,0xFA,0x55,0x55,0xFD,0xFE,0xFF}
Pokitto 52:c04087025cab 417
Pokitto 52:c04087025cab 418 #elif _CODE_PAGE == 1257 /* Baltic (Windows) */
Pokitto 52:c04087025cab 419 #define _DF1S 0
Pokitto 52:c04087025cab 420 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 421 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xA8,0xB9,0xAA,0xBB,0xBC,0xBD,0xBE,0xAF, \
Pokitto 52:c04087025cab 422 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 423 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xFF}
Pokitto 52:c04087025cab 424
Pokitto 52:c04087025cab 425 #elif _CODE_PAGE == 1258 /* Vietnam (OEM, Windows) */
Pokitto 52:c04087025cab 426 #define _DF1S 0
Pokitto 52:c04087025cab 427 #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0xAC,0x9D,0x9E,0x9F, \
Pokitto 52:c04087025cab 428 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
Pokitto 52:c04087025cab 429 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
Pokitto 52:c04087025cab 430 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xEC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xFE,0x9F}
Pokitto 52:c04087025cab 431
Pokitto 52:c04087025cab 432 #elif _CODE_PAGE == 1 /* ASCII (for only non-LFN cfg) */
Pokitto 52:c04087025cab 433 #define _DF1S 0
Pokitto 52:c04087025cab 434
Pokitto 52:c04087025cab 435 #else
Pokitto 52:c04087025cab 436 #error Unknown code page
Pokitto 52:c04087025cab 437
Pokitto 52:c04087025cab 438 #endif
Pokitto 52:c04087025cab 439
Pokitto 52:c04087025cab 440
Pokitto 52:c04087025cab 441
Pokitto 52:c04087025cab 442 /* Character code support macros */
Pokitto 52:c04087025cab 443
Pokitto 52:c04087025cab 444 #define IsUpper(c) (((c)>='A')&&((c)<='Z'))
Pokitto 52:c04087025cab 445 #define IsLower(c) (((c)>='a')&&((c)<='z'))
Pokitto 52:c04087025cab 446
Pokitto 52:c04087025cab 447 #if _DF1S /* DBCS configuration */
Pokitto 52:c04087025cab 448
Pokitto 52:c04087025cab 449 #ifdef _DF2S /* Two 1st byte areas */
Pokitto 52:c04087025cab 450 #define IsDBCS1(c) (((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) || ((BYTE)(c) >= _DF2S && (BYTE)(c) <= _DF2E))
Pokitto 52:c04087025cab 451 #else /* One 1st byte area */
Pokitto 52:c04087025cab 452 #define IsDBCS1(c) ((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E)
Pokitto 52:c04087025cab 453 #endif
Pokitto 52:c04087025cab 454
Pokitto 52:c04087025cab 455 #ifdef _DS3S /* Three 2nd byte areas */
Pokitto 52:c04087025cab 456 #define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E) || ((BYTE)(c) >= _DS3S && (BYTE)(c) <= _DS3E))
Pokitto 52:c04087025cab 457 #else /* Two 2nd byte areas */
Pokitto 52:c04087025cab 458 #define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E))
Pokitto 52:c04087025cab 459 #endif
Pokitto 52:c04087025cab 460
Pokitto 52:c04087025cab 461 #else /* SBCS configuration */
Pokitto 52:c04087025cab 462
Pokitto 52:c04087025cab 463 #define IsDBCS1(c) 0
Pokitto 52:c04087025cab 464 #define IsDBCS2(c) 0
Pokitto 52:c04087025cab 465
Pokitto 52:c04087025cab 466 #endif /* _DF1S */
Pokitto 52:c04087025cab 467
Pokitto 52:c04087025cab 468 } // namespace PFFS
Pokitto 52:c04087025cab 469
Pokitto 52:c04087025cab 470 #endif /* _FATFS */
Pokitto 52:c04087025cab 471
Pokitto 52:c04087025cab 472