//========================================================================== // Name: varicode_table.h // Purpose: Varicode look up table // Created: Nov 24, 2012 // Authors: Clint Turner, KA7OEI, Peter Martinez, G3PLX // // License: // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2.1, // as published by the Free Software Foundation. This program 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 General Public // License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, see . // //========================================================================== /* The following table defines the PKS31 varicode. There are 128 entries, corresponding to ASCII characters 0-127 with two bytes for each entry. The bits for the varicode are to be shifted out MSB-first for both bytes, with the first byte in the table being the first one to be sent. More than one zero in sequence signifies the end of the character (i.e. two zeroes are the intercharacter sequence, so at least two zeroes should always be sent before the next character is sent. This file is constructed with information from the article "PSK31 Fundamentals" by Peter Martinez, G3PLX by Clint Turner, KA7OEI */ unsigned char const varicode_table1[256] = { 0b10101010, 0b11000000, // 0 NUL 0b10110110, 0b11000000, // 1 SOH 0b10111011, 0b01000000, // 2 STX 0b11011101, 0b11000000, // 3 ETX 0b10111010, 0b11000000, // 4 EOT 0b11010111, 0b11000000, // 5 ENQ 0b10111011, 0b11000000, // 6 ACK 0b10111111, 0b01000000, // 7 BEL 0b10111111, 0b11000000, // 8 BS 0b11101111, 0b00000000, // 9 HT 0b11101000, 0b00000000, // 10 LF 0b11011011, 0b11000000, // 11 VT 0b10110111, 0b01000000, // 12 FF 0b11111000, 0b00000000, // 13 CR 0b11011101, 0b01000000, // 14 SO 0b11101010, 0b11000000, // 15 SI 0b10111101, 0b11000000, // 16 DLE 0b10111101, 0b01000000, // 17 DC1 0b11101011, 0b01000000, // 18 DC2 0b11101011, 0b11000000, // 19 DC3 0b11010110, 0b11000000, // 20 DC4 0b11011010, 0b11000000, // 21 NAK 0b11011011, 0b01000000, // 22 SYN 0b11010101, 0b11000000, // 23 ETB 0b11011110, 0b11000000, // 24 CAN 0b11011111, 0b01000000, // 25 EM 0b11101101, 0b11000000, // 26 SUB 0b11010101, 0b01000000, // 27 ESC 0b11010111, 0b01000000, // 28 FS 0b11101110, 0b11000000, // 29 GS 0b10111110, 0b11000000, // 30 RS 0b11011111, 0b11000000, // 31 US 0b10000000, 0b00000000, // 32 SP 0b11111111, 0b10000000, // 33 ! 0b10101111, 0b10000000, // 34 " 0b11111010, 0b10000000, // 35 # 0b11101101, 0b10000000, // 36 $ 0b10110101, 0b01000000, // 37 % 0b10101110, 0b11000000, // 38 & 0b10111111, 0b10000000, // 39 ' 0b11111011, 0b00000000, // 40 ( 0b11110111, 0b00000000, // 41 ) 0b10110111, 0b10000000, // 42 * 0b11101111, 0b10000000, // 43 + 0b11101010, 0b00000000, // 44 , 0b11010100, 0b00000000, // 45 - 0b10101110, 0b00000000, // 46 . 0b11010111, 0b10000000, // 47 / 0b10110111, 0b00000000, // 48 0 0b10111101, 0b00000000, // 49 1 0b11101101, 0b00000000, // 50 2 0b11111111, 0b00000000, // 51 3 0b10111011, 0b10000000, // 52 4 0b10101101, 0b10000000, // 53 5 0b10110101, 0b10000000, // 54 6 0b11010110, 0b10000000, // 55 7 0b11010101, 0b10000000, // 56 8 0b11011011, 0b10000000, // 57 9 0b11110101, 0b00000000, // 58 : 0b11011110, 0b10000000, // 59 ; 0b11110110, 0b10000000, // 60 < 0b10101010, 0b00000000, // 61 = 0b11101011, 0b10000000, // 62 > 0b10101011, 0b11000000, // 63 ? 0b10101111, 0b01000000, // 64 @ 0b11111010, 0b00000000, // 65 A 0b11101011, 0b00000000, // 66 B 0b10101101, 0b00000000, // 67 C 0b10110101, 0b00000000, // 68 D 0b11101110, 0b00000000, // 69 E 0b11011011, 0b00000000, // 70 F 0b11111101, 0b00000000, // 71 G 0b10101010, 0b10000000, // 72 H 0b11111110, 0b00000000, // 73 I 0b11111110, 0b10000000, // 74 J 0b10111110, 0b10000000, // 75 K 0b11010111, 0b00000000, // 76 L 0b10111011, 0b00000000, // 77 M 0b11011101, 0b00000000, // 78 N 0b10101011, 0b00000000, // 79 O 0b11010101, 0b00000000, // 80 P 0b11101110, 0b10000000, // 81 Q 0b10101111, 0b00000000, // 82 R 0b11011110, 0b00000000, // 83 S 0b11011010, 0b00000000, // 84 T 0b10101011, 0b10000000, // 85 U 0b11011010, 0b10000000, // 86 V 0b10101110, 0b10000000, // 87 W 0b10111010, 0b10000000, // 88 X 0b10111101, 0b10000000, // 89 Y 0b10101011, 0b01000000, // 90 Z 0b11111011, 0b10000000, // 91 [ 0b11110111, 0b10000000, // 92 "\" 0b11111101, 0b10000000, // 93 ] 0b10101111, 0b11000000, // 94 ^ 0b10110110, 0b10000000, // 95 _ (underline) 0b10110111, 0b11000000, // 96 ` 0b10110000, 0b00000000, // 97 a 0b10111110, 0b00000000, // 98 b 0b10111100, 0b00000000, // 99 c 0b10110100, 0b00000000, // 100 d 0b11000000, 0b00000000, // 101 e 0b11110100, 0b00000000, // 102 f 0b10110110, 0b00000000, // 103 g 0b10101100, 0b00000000, // 104 h 0b11010000, 0b00000000, // 105 i 0b11110101, 0b10000000, // 106 j 0b10111111, 0b00000000, // 107 k 0b11011000, 0b00000000, // 108 l 0b11101100, 0b00000000, // 109 m 0b11110000, 0b00000000, // 110 n 0b11100000, 0b00000000, // 111 o 0b11111100, 0b00000000, // 112 p 0b11011111, 0b10000000, // 113 q 0b10101000, 0b00000000, // 114 r 0b10111000, 0b00000000, // 115 s 0b10100000, 0b00000000, // 116 t 0b11011100, 0b00000000, // 117 u 0b11110110, 0b00000000, // 118 v 0b11010110, 0b00000000, // 119 w 0b11011111, 0b00000000, // 120 x 0b10111010, 0b00000000, // 121 y 0b11101010, 0b10000000, // 122 z 0b10101101, 0b11000000, // 123 { 0b11011101, 0b10000000, // 124 | 0b10101101, 0b01000000, // 125 } 0b10110101, 0b11000000, // 126 ~ 0b11101101, 0b01000000, // 127 (del) }; // This code was used on FDMDV version 1, and is more compact that Code 1, but only covers a subset // of the ASCII cahacter set char const varicode_table2[] = { ' ' ,0b11000000, 13 ,0b01000000, // CR, end of message '=' ,0b10000000, '1' ,0b11110000, '2' ,0b01110000, '3' ,0b10110000, '4' ,0b11010000, '5' ,0b01010000, '6' ,0b10010000, '7' ,0b11100000, '8' ,0b01100000, '9' ,0b10100000, 'a' ,0b11111100, 'b' ,0b01111100, 'c' ,0b10111100, 'd' ,0b11011100, 'e' ,0b01011100, 'f' ,0b10011100, 'g' ,0b11101100, 'h' ,0b01101100, 'i' ,0b10101100, 'j' ,0b11110100, 'k' ,0b01110100, 'l' ,0b10110100, 'm' ,0b11010100, 'n' ,0b01010100, 'o' ,0b10010100, 'p' ,0b11100100, 'q' ,0b01100100, 'r' ,0b10100100, 's' ,0b11111000, 't' ,0b01111000, 'u' ,0b10111000, 'v' ,0b11011000, 'w' ,0b01011000, 'x' ,0b10011000, 'y' ,0b11101000, 'z' ,0b01101000, '0' ,0b10101000 };