/* Conversion of files between different charsets and surfaces. Copyright © 1993, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const recode_ucs2 petscii_c64en_uc[256] = { /* 0 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF100, 0xFFFF, 0xFFFF, /* 8 */ 0xF118, 0xF119, 0xFFFF, 0xFFFF, 0xFFFF, 0x000D, 0x000E, 0xFFFF, /* 16 */ 0xFFFF, 0xF11C, 0xF11A, 0xF120, 0x007F, 0xFFFF, 0xFFFF, 0xFFFF, /* 24 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF101, 0xF11D, 0xF102, 0xF103, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x00A3, 0x005D, 0x2191, 0x2190, /* 96 */ 0x2501, 0x2660, 0x2502, 0x2501, 0xF122, 0xF123, 0xF124, 0xF126, /* 104 */ 0xF128, 0x256E, 0x2570, 0x256F, 0xF12A, 0x2572, 0x2571, 0xF12B, /* 112 */ 0xF12C, 0x25CF, 0xF125, 0x2665, 0xF127, 0x256D, 0x2573, 0x25CB, /* 120 */ 0x2663, 0xF129, 0x2666, 0x253C, 0xF12E, 0x2502, 0x03C0, 0x25E5, /* 128 */ 0xFFFF, 0xF104, 0xFFFF, 0xFFFF, 0xFFFF, 0xF110, 0xF112, 0xF114, /* 136 */ 0xF116, 0xF111, 0xF113, 0xF115, 0xF117, 0x000A, 0x000F, 0xFFFF, /* 144 */ 0xF105, 0xF11E, 0xF11B, 0x000C, 0xF121, 0xF106, 0xF107, 0xF108, /* 152 */ 0xF109, 0xF10A, 0xF10B, 0xF10C, 0xF10D, 0xF11F, 0xF10E, 0xF10F, /* 160 */ 0x00A0, 0x258C, 0x2584, 0x2594, 0x2581, 0x258F, 0x2592, 0x2595, /* 168 */ 0xF12F, 0x25E4, 0xF130, 0x251C, 0xF134, 0x2514, 0x2510, 0x2582, /* 176 */ 0x250C, 0x2534, 0x252C, 0x2524, 0x258E, 0x258D, 0xF131, 0xF132, /* 184 */ 0xF133, 0x2583, 0xF12D, 0xF135, 0xF136, 0x2518, 0xF137, 0xF138, /* 192 */ 0x2501, 0x2660, 0x2502, 0x2501, 0xF122, 0xF123, 0xF124, 0xF126, /* 200 */ 0xF128, 0x256E, 0x2570, 0x256F, 0xF12A, 0x2572, 0x2571, 0xF12B, /* 208 */ 0xF12C, 0x25CF, 0xF125, 0x2665, 0xF127, 0x256D, 0x2573, 0x25CB, /* 216 */ 0x2663, 0xF129, 0x2666, 0x253C, 0xF12E, 0x2502, 0x03C0, 0x25E5, /* 224 */ 0x00A0, 0x258C, 0x2584, 0x2594, 0x2581, 0x258F, 0x2592, 0x2595, /* 232 */ 0xF12F, 0x25E4, 0xF130, 0x251C, 0xF134, 0x2514, 0x2510, 0x2582, /* 240 */ 0x250C, 0x2534, 0x252C, 0x2524, 0x258E, 0x258D, 0xF131, 0xF132, /* 248 */ 0xF133, 0x2583, 0xF12D, 0xF135, 0xF136, 0x2518, 0xF137, 0x03C0 }; static const recode_ucs2 petscii_c64en_lc[256] = { /* 0 */ 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF100, 0xFFFF, 0xFFFF, /* 8 */ 0xF118, 0xF119, 0xFFFF, 0xFFFF, 0xFFFF, 0x000D, 0x000E, 0xFFFF, /* 16 */ 0xFFFF, 0xF11C, 0xF11A, 0xF120, 0x007F, 0xFFFF, 0xFFFF, 0xFFFF, /* 24 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF101, 0xF11D, 0xF102, 0xF103, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 72 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 80 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 88 */ 0x0078, 0x0079, 0x007A, 0x005B, 0x00A3, 0x005D, 0x2191, 0x2190, /* 96 */ 0x2501, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 104 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 112 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 120 */ 0x0058, 0x0059, 0x005A, 0x253C, 0xF12E, 0x2502, 0x2592, 0xF139, /* 128 */ 0xFFFF, 0xF104, 0xFFFF, 0xFFFF, 0xFFFF, 0xF110, 0xF112, 0xF114, /* 136 */ 0xF116, 0xF111, 0xF113, 0xF115, 0xF117, 0x000A, 0x000F, 0xFFFF, /* 144 */ 0xF105, 0xF11E, 0xF11B, 0x000C, 0xF121, 0xF106, 0xF107, 0xF108, /* 152 */ 0xF109, 0xF10A, 0xF10B, 0xF10C, 0xF10D, 0xF11F, 0xF10E, 0xF10F, /* 160 */ 0x00A0, 0x258C, 0x2584, 0x2594, 0x2581, 0x258F, 0x2592, 0x2595, /* 168 */ 0xF12F, 0x25E4, 0xF130, 0x251C, 0xF134, 0x2514, 0x2510, 0x2582, /* 176 */ 0x250C, 0x2534, 0x252C, 0x2524, 0x258E, 0x258D, 0xF131, 0xF132, /* 184 */ 0xF133, 0x2583, 0x2713, 0xF135, 0xF136, 0x2518, 0xF137, 0xF138, /* 192 */ 0x2501, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 200 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 208 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 216 */ 0x0058, 0x0059, 0x005A, 0x253C, 0xF12E, 0x2502, 0x2592, 0xF139, /* 224 */ 0x00A0, 0x258C, 0x2584, 0x2594, 0x2581, 0x258F, 0x2592, 0x2595, /* 232 */ 0xF12F, 0x25E4, 0xF130, 0x251C, 0xF134, 0x2514, 0x2510, 0x2582, /* 240 */ 0x250C, 0x2534, 0x252C, 0x2524, 0x258E, 0x258D, 0xF131, 0xF132, /* 248 */ 0xF133, 0x2583, 0x2713, 0xF135, 0xF136, 0x2518, 0xF137, 0x2592 }; static struct strip_data petscii_c64en_uc_table = { petscii_c64en_uc, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; static struct strip_data petscii_c64en_lc_table = { petscii_c64en_lc, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; bool module_petscii (RECODE_OUTER outer) { bool returncode; RECODE_ALIAS alias; returncode = declare_strip_data (outer, &petscii_c64en_uc_table, "PETSCII-EN-UC") && declare_strip_data (outer, &petscii_c64en_lc_table, "PETSCII-EN-LC") && declare_alias (outer, "c64uppercase", "PETSCII-EN-UC") && declare_alias (outer, "c64lowercase", "PETSCII-EN-LC"); if (!returncode) return false; if (alias = declare_alias (outer, "pet", "PETSCII-EN-LC"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; if (alias = declare_alias (outer, "petscii", "PETSCII-EN-LC"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; return true; } void delmodule_petscii (RECODE_OUTER outer) { }